1 /* 2 * sound/adlib_card.c 3 * 4 * Detection routine for the AdLib card. 5 * 6 * Copyright (C) by Hannu Savolainen 1993-1997 7 * 8 * OSS/Free for Linux is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) 9 * Version 2 (June 1991). See the "COPYING" file distributed with this software 10 * for more info. 11 */ 12 13 #include <linux/module.h> 14 #include <linux/init.h> 15 16 #include "sound_config.h" 17 18 #include "opl3.h" 19 attach_adlib_card(struct address_info * hw_config)20static void __init attach_adlib_card(struct address_info *hw_config) 21 { 22 hw_config->slots[0] = opl3_init(hw_config->io_base, hw_config->osp, THIS_MODULE); 23 } 24 probe_adlib(struct address_info * hw_config)25static int __init probe_adlib(struct address_info *hw_config) 26 { 27 return opl3_detect(hw_config->io_base, hw_config->osp); 28 } 29 30 static struct address_info cfg; 31 32 static int __initdata io = -1; 33 34 MODULE_PARM(io, "i"); 35 init_adlib(void)36static int __init init_adlib(void) 37 { 38 cfg.io_base = io; 39 40 if (cfg.io_base == -1) { 41 printk(KERN_ERR "adlib: must specify I/O address.\n"); 42 return -EINVAL; 43 } 44 if (probe_adlib(&cfg) == 0) 45 return -ENODEV; 46 attach_adlib_card(&cfg); 47 48 return 0; 49 } 50 cleanup_adlib(void)51static void __exit cleanup_adlib(void) 52 { 53 sound_unload_synthdev(cfg.slots[0]); 54 55 } 56 57 module_init(init_adlib); 58 module_exit(cleanup_adlib); 59 60 #ifndef MODULE setup_adlib(char * str)61static int __init setup_adlib(char *str) 62 { 63 /* io */ 64 int ints[2]; 65 str = get_options(str, ARRAY_SIZE(ints), ints); 66 67 io = ints[1]; 68 69 return 1; 70 } 71 __setup("adlib=", setup_adlib); 72 #endif 73 MODULE_LICENSE("GPL"); 74