xref: /onnv-gate/usr/src/uts/common/io/sdcard/impl/sda_mod.c (revision 12426:cdff5d2ea989)
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