Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.22 73 lines 1.4 kB view raw
1/* 2 * sound/oss/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 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 25static int __init probe_adlib(struct address_info *hw_config) 26{ 27 return opl3_detect(hw_config->io_base, hw_config->osp); 28} 29 30static struct address_info cfg; 31 32static int __initdata io = -1; 33 34module_param(io, int, 0); 35 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 51static void __exit cleanup_adlib(void) 52{ 53 sound_unload_synthdev(cfg.slots[0]); 54 55} 56 57module_init(init_adlib); 58module_exit(cleanup_adlib); 59 60#ifndef MODULE 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 73MODULE_LICENSE("GPL");