17302Sgdamore@opensolaris.org /*
27302Sgdamore@opensolaris.org * CDDL HEADER START
37302Sgdamore@opensolaris.org *
47302Sgdamore@opensolaris.org * The contents of this file are subject to the terms of the
57302Sgdamore@opensolaris.org * Common Development and Distribution License (the "License").
67302Sgdamore@opensolaris.org * You may not use this file except in compliance with the License.
77302Sgdamore@opensolaris.org *
87302Sgdamore@opensolaris.org * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97302Sgdamore@opensolaris.org * or http://www.opensolaris.org/os/licensing.
107302Sgdamore@opensolaris.org * See the License for the specific language governing permissions
117302Sgdamore@opensolaris.org * and limitations under the License.
127302Sgdamore@opensolaris.org *
137302Sgdamore@opensolaris.org * When distributing Covered Code, include this CDDL HEADER in each
147302Sgdamore@opensolaris.org * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157302Sgdamore@opensolaris.org * If applicable, add the following below this CDDL HEADER, with the
167302Sgdamore@opensolaris.org * fields enclosed by brackets "[]" replaced with your own identifying
177302Sgdamore@opensolaris.org * information: Portions Copyright [yyyy] [name of copyright owner]
187302Sgdamore@opensolaris.org *
197302Sgdamore@opensolaris.org * CDDL HEADER END
207302Sgdamore@opensolaris.org */
217302Sgdamore@opensolaris.org /*
22*12426Sgdamore@opensolaris.org * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
237302Sgdamore@opensolaris.org */
247302Sgdamore@opensolaris.org
257302Sgdamore@opensolaris.org /*
267302Sgdamore@opensolaris.org * SD card module support.
277302Sgdamore@opensolaris.org */
287302Sgdamore@opensolaris.org
297302Sgdamore@opensolaris.org #include <sys/modctl.h>
307302Sgdamore@opensolaris.org #include <sys/sdcard/sda_impl.h>
317302Sgdamore@opensolaris.org
327302Sgdamore@opensolaris.org /*
337302Sgdamore@opensolaris.org * Static Variables.
347302Sgdamore@opensolaris.org */
357302Sgdamore@opensolaris.org
367302Sgdamore@opensolaris.org static struct modlmisc modlmisc = {
377302Sgdamore@opensolaris.org &mod_miscops,
387302Sgdamore@opensolaris.org "SD Card Architecture",
397302Sgdamore@opensolaris.org };
407302Sgdamore@opensolaris.org
417302Sgdamore@opensolaris.org static struct modlinkage modlinkage = {
427302Sgdamore@opensolaris.org MODREV_1, { &modlmisc, NULL }
437302Sgdamore@opensolaris.org };
447302Sgdamore@opensolaris.org
457302Sgdamore@opensolaris.org /*
467302Sgdamore@opensolaris.org * DDI entry points.
477302Sgdamore@opensolaris.org */
487302Sgdamore@opensolaris.org
497302Sgdamore@opensolaris.org int
_init(void)507302Sgdamore@opensolaris.org _init(void)
517302Sgdamore@opensolaris.org {
527302Sgdamore@opensolaris.org int rv;
537302Sgdamore@opensolaris.org
547302Sgdamore@opensolaris.org sda_cmd_init();
557302Sgdamore@opensolaris.org
567302Sgdamore@opensolaris.org if ((rv = mod_install(&modlinkage)) != 0) {
577302Sgdamore@opensolaris.org sda_cmd_fini();
587302Sgdamore@opensolaris.org }
597302Sgdamore@opensolaris.org
607302Sgdamore@opensolaris.org return (rv);
617302Sgdamore@opensolaris.org }
627302Sgdamore@opensolaris.org
637302Sgdamore@opensolaris.org int
_fini(void)647302Sgdamore@opensolaris.org _fini(void)
657302Sgdamore@opensolaris.org {
667302Sgdamore@opensolaris.org int rv;
677302Sgdamore@opensolaris.org
687302Sgdamore@opensolaris.org if ((rv = mod_remove(&modlinkage)) == 0) {
697302Sgdamore@opensolaris.org sda_cmd_fini();
707302Sgdamore@opensolaris.org }
717302Sgdamore@opensolaris.org return (rv);
727302Sgdamore@opensolaris.org }
737302Sgdamore@opensolaris.org
747302Sgdamore@opensolaris.org int
_info(struct modinfo * modinfop)757302Sgdamore@opensolaris.org _info(struct modinfo *modinfop)
767302Sgdamore@opensolaris.org {
777302Sgdamore@opensolaris.org return (mod_info(&modlinkage, modinfop));
787302Sgdamore@opensolaris.org }
79