diff options
Diffstat (limited to 'sound/pci')
58 files changed, 199 insertions, 774 deletions
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 5ca0939e422..ff3af6e77d6 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig @@ -228,7 +228,7 @@ config SND_OXYGEN Say Y here to include support for sound cards based on the C-Media CMI8788 (Oxygen HD Audio) chip: * Asound A-8788 - * Asus Xonar DG + * Asus Xonar DG/DGX * AuzenTech X-Meridian * AuzenTech X-Meridian 2G * Bgears b-Enspirer diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c index 9d91d61902b..e672ff4df2d 100644 --- a/sound/pci/ad1889.c +++ b/sound/pci/ad1889.c @@ -1062,17 +1062,4 @@ static struct pci_driver ad1889_pci_driver = { .remove = __devexit_p(snd_ad1889_remove), }; -static int __init -alsa_ad1889_init(void) -{ - return pci_register_driver(&ad1889_pci_driver); -} - -static void __exit -alsa_ad1889_fini(void) -{ - pci_unregister_driver(&ad1889_pci_driver); -} - -module_init(alsa_ad1889_init); -module_exit(alsa_ad1889_fini); +module_pci_driver(ad1889_pci_driver); diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index bdd6164e9c7..9dfc27bf6cc 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c @@ -2294,7 +2294,7 @@ static void __devexit snd_ali_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver ali5451_driver = { .name = KBUILD_MODNAME, .id_table = snd_ali_ids, .probe = snd_ali_probe, @@ -2305,15 +2305,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_ali_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_ali_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ali_init) -module_exit(alsa_card_ali_exit) +module_pci_driver(ali5451_driver); diff --git a/sound/pci/als300.c b/sound/pci/als300.c index 8196e229b2d..59d65388faf 100644 --- a/sound/pci/als300.c +++ b/sound/pci/als300.c @@ -852,7 +852,7 @@ static int __devinit snd_als300_probe(struct pci_dev *pci, return 0; } -static struct pci_driver driver = { +static struct pci_driver als300_driver = { .name = KBUILD_MODNAME, .id_table = snd_als300_ids, .probe = snd_als300_probe, @@ -863,15 +863,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_als300_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_als300_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_als300_init) -module_exit(alsa_card_als300_exit) +module_pci_driver(als300_driver); diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c index 3269b8011ea..7d7f2598c74 100644 --- a/sound/pci/als4000.c +++ b/sound/pci/als4000.c @@ -1036,7 +1036,7 @@ static int snd_als4000_resume(struct pci_dev *pci) #endif /* CONFIG_PM */ -static struct pci_driver driver = { +static struct pci_driver als4000_driver = { .name = KBUILD_MODNAME, .id_table = snd_als4000_ids, .probe = snd_card_als4000_probe, @@ -1047,15 +1047,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_als4000_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_als4000_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_als4000_init) -module_exit(alsa_card_als4000_exit) +module_pci_driver(als4000_driver); diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index 590682f115e..156a94f8a12 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c @@ -1700,7 +1700,7 @@ static void __devexit snd_atiixp_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver atiixp_driver = { .name = KBUILD_MODNAME, .id_table = snd_atiixp_ids, .probe = snd_atiixp_probe, @@ -1711,16 +1711,4 @@ static struct pci_driver driver = { #endif }; - -static int __init alsa_card_atiixp_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_atiixp_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_atiixp_init) -module_exit(alsa_card_atiixp_exit) +module_pci_driver(atiixp_driver); diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c index 524d35f3123..30a4fd96ce7 100644 --- a/sound/pci/atiixp_modem.c +++ b/sound/pci/atiixp_modem.c @@ -1331,7 +1331,7 @@ static void __devexit snd_atiixp_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver atiixp_modem_driver = { .name = KBUILD_MODNAME, .id_table = snd_atiixp_ids, .probe = snd_atiixp_probe, @@ -1342,16 +1342,4 @@ static struct pci_driver driver = { #endif }; - -static int __init alsa_card_atiixp_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_atiixp_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_atiixp_init) -module_exit(alsa_card_atiixp_exit) +module_pci_driver(atiixp_modem_driver); diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c index f13ad536b2d..ffc376f9f4e 100644 --- a/sound/pci/au88x0/au88x0.c +++ b/sound/pci/au88x0/au88x0.c @@ -375,24 +375,11 @@ static void __devexit snd_vortex_remove(struct pci_dev *pci) } // pci_driver definition -static struct pci_driver driver = { +static struct pci_driver vortex_driver = { .name = KBUILD_MODNAME, .id_table = snd_vortex_ids, .probe = snd_vortex_probe, .remove = __devexit_p(snd_vortex_remove), }; -// initialization of the module -static int __init alsa_card_vortex_init(void) -{ - return pci_register_driver(&driver); -} - -// clean up the module -static void __exit alsa_card_vortex_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_vortex_init) -module_exit(alsa_card_vortex_exit) +module_pci_driver(vortex_driver); diff --git a/sound/pci/aw2/aw2-alsa.c b/sound/pci/aw2/aw2-alsa.c index 1c523193146..0f804741825 100644 --- a/sound/pci/aw2/aw2-alsa.c +++ b/sound/pci/aw2/aw2-alsa.c @@ -112,8 +112,6 @@ struct aw2 { /********************************* * FUNCTION DECLARATIONS ********************************/ -static int __init alsa_card_aw2_init(void); -static void __exit alsa_card_aw2_exit(void); static int snd_aw2_dev_free(struct snd_device *device); static int __devinit snd_aw2_create(struct snd_card *card, struct pci_dev *pci, struct aw2 **rchip); @@ -171,13 +169,15 @@ static DEFINE_PCI_DEVICE_TABLE(snd_aw2_ids) = { MODULE_DEVICE_TABLE(pci, snd_aw2_ids); /* pci_driver definition */ -static struct pci_driver driver = { +static struct pci_driver aw2_driver = { .name = KBUILD_MODNAME, .id_table = snd_aw2_ids, .probe = snd_aw2_probe, .remove = __devexit_p(snd_aw2_remove), }; +module_pci_driver(aw2_driver); + /* operators for playback PCM alsa interface */ static struct snd_pcm_ops snd_aw2_playback_ops = { .open = snd_aw2_pcm_playback_open, @@ -217,23 +217,6 @@ static struct snd_kcontrol_new aw2_control __devinitdata = { * FUNCTION IMPLEMENTATIONS ********************************/ -/* initialization of the module */ -static int __init alsa_card_aw2_init(void) -{ - snd_printdd(KERN_DEBUG "aw2: Load aw2 module\n"); - return pci_register_driver(&driver); -} - -/* clean up the module */ -static void __exit alsa_card_aw2_exit(void) -{ - snd_printdd(KERN_DEBUG "aw2: Unload aw2 module\n"); - pci_unregister_driver(&driver); -} - -module_init(alsa_card_aw2_init); -module_exit(alsa_card_aw2_exit); - /* component-destructor */ static int snd_aw2_dev_free(struct snd_device *device) { diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c index 496f14c1a73..f0b4d7493af 100644 --- a/sound/pci/azt3328.c +++ b/sound/pci/azt3328.c @@ -2862,7 +2862,7 @@ snd_azf3328_resume(struct pci_dev *pci) #endif /* CONFIG_PM */ -static struct pci_driver driver = { +static struct pci_driver azf3328_driver = { .name = KBUILD_MODNAME, .id_table = snd_azf3328_ids, .probe = snd_azf3328_probe, @@ -2873,23 +2873,4 @@ static struct pci_driver driver = { #endif }; -static int __init -alsa_card_azf3328_init(void) -{ - int err; - snd_azf3328_dbgcallenter(); - err = pci_register_driver(&driver); - snd_azf3328_dbgcallleave(); - return err; -} - -static void __exit -alsa_card_azf3328_exit(void) -{ - snd_azf3328_dbgcallenter(); - pci_unregister_driver(&driver); - snd_azf3328_dbgcallleave(); -} - -module_init(alsa_card_azf3328_init) -module_exit(alsa_card_azf3328_exit) +module_pci_driver(azf3328_driver); diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c index 62d6163fc9d..b6a95eeca09 100644 --- a/sound/pci/bt87x.c +++ b/sound/pci/bt87x.c @@ -836,8 +836,6 @@ static struct { {0x7063, 0x2000}, /* pcHDTV HD-2000 TV */ }; -static struct pci_driver driver; - /* return the id of the card, or a negative value if it's blacklisted */ static int __devinit snd_bt87x_detect_card(struct pci_dev *pci) { @@ -964,24 +962,11 @@ static DEFINE_PCI_DEVICE_TABLE(snd_bt87x_default_ids) = { { } }; -static struct pci_driver driver = { +static struct pci_driver bt87x_driver = { .name = KBUILD_MODNAME, .id_table = snd_bt87x_ids, .probe = snd_bt87x_probe, .remove = __devexit_p(snd_bt87x_remove), }; -static int __init alsa_card_bt87x_init(void) -{ - if (load_all) - driver.id_table = snd_bt87x_default_ids; - return pci_register_driver(&driver); -} - -static void __exit alsa_card_bt87x_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_bt87x_init) -module_exit(alsa_card_bt87x_exit) +module_pci_driver(bt87x_driver); diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c index 08d6ebfe5a6..e76d68a7081 100644 --- a/sound/pci/ca0106/ca0106_main.c +++ b/sound/pci/ca0106/ca0106_main.c @@ -1932,7 +1932,7 @@ static DEFINE_PCI_DEVICE_TABLE(snd_ca0106_ids) = { MODULE_DEVICE_TABLE(pci, snd_ca0106_ids); // pci_driver definition -static struct pci_driver driver = { +static struct pci_driver ca0106_driver = { .name = KBUILD_MODNAME, .id_table = snd_ca0106_ids, .probe = snd_ca0106_probe, @@ -1943,17 +1943,4 @@ static struct pci_driver driver = { #endif }; -// initialization of the module -static int __init alsa_card_ca0106_init(void) -{ - return pci_register_driver(&driver); -} - -// clean up the module -static void __exit alsa_card_ca0106_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ca0106_init) -module_exit(alsa_card_ca0106_exit) +module_pci_driver(ca0106_driver); diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c index 19b06269adc..3815bd4c677 100644 --- a/sound/pci/cmipci.c +++ b/sound/pci/cmipci.c @@ -3398,7 +3398,7 @@ static int snd_cmipci_resume(struct pci_dev *pci) } #endif /* CONFIG_PM */ -static struct pci_driver driver = { +static struct pci_driver cmipci_driver = { .name = KBUILD_MODNAME, .id_table = snd_cmipci_ids, .probe = snd_cmipci_probe, @@ -3409,15 +3409,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_cmipci_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_cmipci_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_cmipci_init) -module_exit(alsa_card_cmipci_exit) +module_pci_driver(cmipci_driver); diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c index a9f368f60df..33506ee569b 100644 --- a/sound/pci/cs4281.c +++ b/sound/pci/cs4281.c @@ -2084,7 +2084,7 @@ static int cs4281_resume(struct pci_dev *pci) } #endif /* CONFIG_PM */ -static struct pci_driver driver = { +static struct pci_driver cs4281_driver = { .name = KBUILD_MODNAME, .id_table = snd_cs4281_ids, .probe = snd_cs4281_probe, @@ -2095,15 +2095,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_cs4281_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_cs4281_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_cs4281_init) -module_exit(alsa_card_cs4281_exit) +module_pci_driver(cs4281_driver); diff --git a/sound/pci/cs46xx/cs46xx.c b/sound/pci/cs46xx/cs46xx.c index 819d79d0586..6cc7404e0e8 100644 --- a/sound/pci/cs46xx/cs46xx.c +++ b/sound/pci/cs46xx/cs46xx.c @@ -161,7 +161,7 @@ static void __devexit snd_card_cs46xx_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver cs46xx_driver = { .name = KBUILD_MODNAME, .id_table = snd_cs46xx_ids, .probe = snd_card_cs46xx_probe, @@ -172,15 +172,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_cs46xx_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_cs46xx_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_cs46xx_init) -module_exit(alsa_card_cs46xx_exit) +module_pci_driver(cs46xx_driver); diff --git a/sound/pci/cs5530.c b/sound/pci/cs5530.c index c47cabff2bf..f1e4229993a 100644 --- a/sound/pci/cs5530.c +++ b/sound/pci/cs5530.c @@ -291,23 +291,11 @@ static int __devinit snd_cs5530_probe(struct pci_dev *pci, return 0; } -static struct pci_driver driver = { +static struct pci_driver cs5530_driver = { .name = KBUILD_MODNAME, .id_table = snd_cs5530_ids, .probe = snd_cs5530_probe, .remove = __devexit_p(snd_cs5530_remove), }; -static int __init alsa_card_cs5530_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_cs5530_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_cs5530_init) -module_exit(alsa_card_cs5530_exit) - +module_pci_driver(cs5530_driver); diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535audio.c index a2fb2173e98..2c9697cf0a1 100644 --- a/sound/pci/cs5535audio/cs5535audio.c +++ b/sound/pci/cs5535audio/cs5535audio.c @@ -394,7 +394,7 @@ static void __devexit snd_cs5535audio_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver cs5535audio_driver = { .name = KBUILD_MODNAME, .id_table = snd_cs5535audio_ids, .probe = snd_cs5535audio_probe, @@ -405,18 +405,7 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_cs5535audio_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_cs5535audio_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_cs5535audio_init) -module_exit(alsa_card_cs5535audio_exit) +module_pci_driver(cs5535audio_driver); MODULE_AUTHOR("Jaya Kumar"); MODULE_LICENSE("GPL"); diff --git a/sound/pci/ctxfi/xfi.c b/sound/pci/ctxfi/xfi.c index 15d95d2bace..75aa2c33841 100644 --- a/sound/pci/ctxfi/xfi.c +++ b/sound/pci/ctxfi/xfi.c @@ -154,15 +154,4 @@ static struct pci_driver ct_driver = { #endif }; -static int __init ct_card_init(void) -{ - return pci_register_driver(&ct_driver); -} - -static void __exit ct_card_exit(void) -{ - pci_unregister_driver(&ct_driver); -} - -module_init(ct_card_init) -module_exit(ct_card_exit) +module_pci_driver(ct_driver); diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index 595c11f904b..0f8eda1dafd 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c @@ -2328,7 +2328,7 @@ static void __devexit snd_echo_remove(struct pci_dev *pci) ******************************************************************************/ /* pci_driver definition */ -static struct pci_driver driver = { +static struct pci_driver echo_driver = { .name = KBUILD_MODNAME, .id_table = snd_echo_ids, .probe = snd_echo_probe, @@ -2339,22 +2339,4 @@ static struct pci_driver driver = { #endif /* CONFIG_PM */ }; - - -/* initialization of the module */ -static int __init alsa_card_echo_init(void) -{ - return pci_register_driver(&driver); -} - - - -/* clean up the module */ -static void __exit alsa_card_echo_exit(void) -{ - pci_unregister_driver(&driver); -} - - -module_init(alsa_card_echo_init) -module_exit(alsa_card_echo_exit) +module_pci_driver(echo_driver); diff --git a/sound/pci/emu10k1/emu10k1.c b/sound/pci/emu10k1/emu10k1.c index 790c65d980c..7fdbbe4d996 100644 --- a/sound/pci/emu10k1/emu10k1.c +++ b/sound/pci/emu10k1/emu10k1.c @@ -263,7 +263,7 @@ static int snd_emu10k1_resume(struct pci_dev *pci) } #endif -static struct pci_driver driver = { +static struct pci_driver emu10k1_driver = { .name = KBUILD_MODNAME, .id_table = snd_emu10k1_ids, .probe = snd_card_emu10k1_probe, @@ -274,15 +274,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_emu10k1_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_emu10k1_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_emu10k1_init) -module_exit(alsa_card_emu10k1_exit) +module_pci_driver(emu10k1_driver); diff --git a/sound/pci/emu10k1/emu10k1x.c b/sound/pci/emu10k1/emu10k1x.c index 47a651cb6e8..5c8978b2c4d 100644 --- a/sound/pci/emu10k1/emu10k1x.c +++ b/sound/pci/emu10k1/emu10k1x.c @@ -1612,24 +1612,11 @@ static DEFINE_PCI_DEVICE_TABLE(snd_emu10k1x_ids) = { MODULE_DEVICE_TABLE(pci, snd_emu10k1x_ids); // pci_driver definition -static struct pci_driver driver = { +static struct pci_driver emu10k1x_driver = { .name = KBUILD_MODNAME, .id_table = snd_emu10k1x_ids, .probe = snd_emu10k1x_probe, .remove = __devexit_p(snd_emu10k1x_remove), }; -// initialization of the module -static int __init alsa_card_emu10k1x_init(void) -{ - return pci_register_driver(&driver); -} - -// clean up the module -static void __exit alsa_card_emu10k1x_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_emu10k1x_init) -module_exit(alsa_card_emu10k1x_exit) +module_pci_driver(emu10k1x_driver); diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c index 47a245e8419..3821c81d1c9 100644 --- a/sound/pci/ens1370.c +++ b/sound/pci/ens1370.c @@ -2488,7 +2488,7 @@ static void __devexit snd_audiopci_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver ens137x_driver = { .name = KBUILD_MODNAME, .id_table = snd_audiopci_ids, .probe = snd_audiopci_probe, @@ -2499,15 +2499,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_ens137x_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_ens137x_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ens137x_init) -module_exit(alsa_card_ens137x_exit) +module_pci_driver(ens137x_driver); diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c index 53eb76b4110..82c8d8c5c52 100644 --- a/sound/pci/es1938.c +++ b/sound/pci/es1938.c @@ -1882,7 +1882,7 @@ static void __devexit snd_es1938_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver es1938_driver = { .name = KBUILD_MODNAME, .id_table = snd_es1938_ids, .probe = snd_es1938_probe, @@ -1893,15 +1893,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_es1938_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_es1938_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_es1938_init) -module_exit(alsa_card_es1938_exit) +module_pci_driver(es1938_driver); diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c index a8faae1c85e..67f47d89195 100644 --- a/sound/pci/es1968.c +++ b/sound/pci/es1968.c @@ -2898,7 +2898,7 @@ static void __devexit snd_es1968_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver es1968_driver = { .name = KBUILD_MODNAME, .id_table = snd_es1968_ids, .probe = snd_es1968_probe, @@ -2909,15 +2909,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_es1968_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_es1968_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_es1968_init) -module_exit(alsa_card_es1968_exit) +module_pci_driver(es1968_driver); diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c index a416ea8af3e..f6966232275 100644 --- a/sound/pci/fm801.c +++ b/sound/pci/fm801.c @@ -1416,7 +1416,7 @@ static int snd_fm801_resume(struct pci_dev *pci) } #endif -static struct pci_driver driver = { +static struct pci_driver fm801_driver = { .name = KBUILD_MODNAME, .id_table = snd_fm801_ids, .probe = snd_card_fm801_probe, @@ -1427,15 +1427,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_fm801_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_fm801_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_fm801_init) -module_exit(alsa_card_fm801_exit) +module_pci_driver(fm801_driver); diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 2fb935d9dcc..41ca803a1ff 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -334,78 +334,67 @@ static hda_nid_t *lookup_conn_list(struct snd_array *array, hda_nid_t nid) return NULL; } +/* read the connection and add to the cache */ +static int read_and_add_raw_conns(struct hda_codec *codec, hda_nid_t nid) +{ + hda_nid_t list[HDA_MAX_CONNECTIONS]; + int len; + + len = snd_hda_get_raw_connections(codec, nid, list, ARRAY_SIZE(list)); + if (len < 0) + return len; + return snd_hda_override_conn_list(codec, nid, len, list); +} + /** - * snd_hda_get_conn_list - get connection list + * snd_hda_get_connections - copy connection list * @codec: the HDA codec * @nid: NID to parse - * @listp: the pointer to store NID list + * @conn_list: connection list array; when NULL, checks only the size + * @max_conns: max. number of connections to store * * Parses the connection list of the given widget and stores the list * of NIDs. * * Returns the number of connections, or a negative error code. */ -int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid, - const hda_nid_t **listp) +int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, + hda_nid_t *conn_list, int max_conns) { struct snd_array *array = &codec->conn_lists; - int len, err; - hda_nid_t list[HDA_MAX_CONNECTIONS]; + int len; hda_nid_t *p; bool added = false; again: + mutex_lock(&codec->hash_mutex); + len = -1; /* if the connection-list is already cached, read it */ p = lookup_conn_list(array, nid); if (p) { - if (listp) - *listp = p + 2; - return p[1]; + len = p[1]; + if (conn_list && len > max_conns) { + snd_printk(KERN_ERR "hda_codec: " + "Too many connections %d for NID 0x%x\n", + len, nid); + mutex_unlock(&codec->hash_mutex); + return -EINVAL; + } + if (conn_list && len) + memcpy(conn_list, p + 2, len * sizeof(hda_nid_t)); } + mutex_unlock(&codec->hash_mutex); + if (len >= 0) + return len; if (snd_BUG_ON(added)) return -EINVAL; - /* read the connection and add to the cache */ - len = snd_hda_get_raw_connections(codec, nid, list, HDA_MAX_CONNECTIONS); + len = read_and_add_raw_conns(codec, nid); if (len < 0) return len; - err = snd_hda_override_conn_list(codec, nid, len, list); - if (err < 0) - return err; added = true; goto again; } -EXPORT_SYMBOL_HDA(snd_hda_get_conn_list); - -/** - * snd_hda_get_connections - copy connection list - * @codec: the HDA codec - * @nid: NID to parse - * @conn_list: connection list array - * @max_conns: max. number of connections to store - * - * Parses the connection list of the given widget and stores the list - * of NIDs. - * - * Returns the number of connections, or a negative error code. - */ -int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, - hda_nid_t *conn_list, int max_conns) -{ - const hda_nid_t *list; - int len = snd_hda_get_conn_list(codec, nid, &list); - - if (len <= 0) - return len; - if (len > max_conns) { - snd_printk(KERN_ERR "hda_codec: " - "Too many connections %d for NID 0x%x\n", - len, nid); - return -EINVAL; - } - memcpy(conn_list, list, len * sizeof(hda_nid_t)); - return len; -} EXPORT_SYMBOL_HDA(snd_hda_get_connections); /** @@ -543,6 +532,7 @@ int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int len, hda_nid_t *p; int i, old_used; + mutex_lock(&codec->hash_mutex); p = lookup_conn_list(array, nid); if (p) *p = -1; /* invalidate the old entry */ @@ -553,10 +543,12 @@ int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int len, for (i = 0; i < len; i++) if (!add_conn_list(array, list[i])) goto error_add; + mutex_unlock(&codec->hash_mutex); return 0; error_add: array->used = old_used; + mutex_unlock(&codec->hash_mutex); return -ENOMEM; } EXPORT_SYMBOL_HDA(snd_hda_override_conn_list); diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index be91cdbb162..4fc3960c859 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h @@ -911,10 +911,13 @@ int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid, hda_nid_t *start_id); int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, hda_nid_t *conn_list, int max_conns); +static inline int +snd_hda_get_num_conns(struct hda_codec *codec, hda_nid_t nid) +{ + return snd_hda_get_connections(codec, nid, NULL, 0); +} int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid, hda_nid_t *conn_list, int max_conns); -int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid, - const hda_nid_t **listp); int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int nums, const hda_nid_t *list); int snd_hda_get_conn_index(struct hda_codec *codec, hda_nid_t mux, diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index d0627723f7a..2b6392be451 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -817,11 +817,13 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus, { struct azx *chip = bus->private_data; unsigned long timeout; + unsigned long loopcounter; int do_poll = 0; again: timeout = jiffies + msecs_to_jiffies(1000); - for (;;) { + + for (loopcounter = 0;; loopcounter++) { if (chip->polling_mode || do_poll) { spin_lock_irq(&chip->reg_lock); azx_update_rirb(chip); @@ -837,7 +839,7 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus, } if (time_after(jiffies, timeout)) break; - if (bus->needs_damn_long_delay) + if (bus->needs_damn_long_delay || loopcounter > 3000) msleep(2); /* temporary workaround */ else { udelay(10); @@ -2746,6 +2748,8 @@ static struct snd_pci_quirk probe_mask_list[] __devinitdata = { /* forced codec slots */ SND_PCI_QUIRK(0x1043, 0x1262, "ASUS W5Fm", 0x103), SND_PCI_QUIRK(0x1046, 0x1262, "ASUS W5F", 0x103), + /* WinFast VP200 H (Teradici) user reported broken communication */ + SND_PCI_QUIRK(0x3a21, 0x040d, "WinFast VP200 H", 0x101), {} }; @@ -3386,7 +3390,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { MODULE_DEVICE_TABLE(pci, azx_ids); /* pci_driver definition */ -static struct pci_driver driver = { +static struct pci_driver azx_driver = { .name = KBUILD_MODNAME, .id_table = azx_ids, .probe = azx_probe, @@ -3397,15 +3401,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_azx_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_azx_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_azx_init) -module_exit(alsa_card_azx_exit) +module_pci_driver(azx_driver); diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 152f458afd2..ff71dcef08e 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -6,7 +6,7 @@ * Copyright (c) 2004 Kailang Yang <kailang@realtek.com.tw> * PeiSen Hou <pshou@realtek.com.tw> * Takashi Iwai <tiwai@suse.de> - * Jonathan Woithe <jwoithe@physics.adelaide.edu.au> + * Jonathan Woithe <jwoithe@just42.net> * * This driver is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -349,7 +349,7 @@ static int alc_mux_select(struct hda_codec *codec, unsigned int adc_idx, nid = get_capsrc(spec, adc_idx); /* no selection? */ - num_conns = snd_hda_get_conn_list(codec, nid, NULL); + num_conns = snd_hda_get_num_conns(codec, nid); if (num_conns <= 1) return 1; @@ -2543,7 +2543,6 @@ static int alc_auto_fill_adc_caps(struct hda_codec *codec) nid = codec->start_nid; for (i = 0; i < codec->num_nodes; i++, nid++) { hda_nid_t src; - const hda_nid_t *list; unsigned int caps = get_wcaps(codec, nid); int type = get_wcaps_type(caps); @@ -2561,13 +2560,14 @@ static int alc_auto_fill_adc_caps(struct hda_codec *codec) cap_nids[nums] = src; break; } - n = snd_hda_get_conn_list(codec, src, &list); + n = snd_hda_get_num_conns(codec, src); if (n > 1) { cap_nids[nums] = src; break; } else if (n != 1) break; - src = *list; + if (snd_hda_get_connections(codec, src, &src, 1) != 1) + break; } if (++nums >= max_nums) break; @@ -2708,7 +2708,7 @@ static void alc_auto_init_analog_input(struct hda_codec *codec) /* mute all loopback inputs */ if (spec->mixer_nid) { - int nums = snd_hda_get_conn_list(codec, spec->mixer_nid, NULL); + int nums = snd_hda_get_num_conns(codec, spec->mixer_nid); for (i = 0; i < nums; i++) snd_hda_codec_write(codec, spec->mixer_nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, @@ -3338,7 +3338,7 @@ static int alc_auto_add_sw_ctl(struct hda_codec *codec, if (wid_type == AC_WID_PIN || wid_type == AC_WID_AUD_OUT) { type = ALC_CTL_WIDGET_MUTE; val = HDA_COMPOSE_AMP_VAL(nid, chs, 0, HDA_OUTPUT); - } else if (snd_hda_get_conn_list(codec, nid, NULL) == 1) { + } else if (snd_hda_get_num_conns(codec, nid) == 1) { type = ALC_CTL_WIDGET_MUTE; val = HDA_COMPOSE_AMP_VAL(nid, chs, 0, HDA_INPUT); } else { @@ -3898,7 +3898,7 @@ static void alc_remove_invalid_adc_nids(struct hda_codec *codec) nums = 0; for (n = 0; n < spec->num_adc_nids; n++) { hda_nid_t cap = spec->private_capsrc_nids[n]; - int num_conns = snd_hda_get_conn_list(codec, cap, NULL); + int num_conns = snd_hda_get_num_conns(codec, cap); for (i = 0; i < imux->num_items; i++) { hda_nid_t pin = spec->imux_pins[i]; if (pin) { @@ -4027,7 +4027,7 @@ static void select_or_unmute_capsrc(struct hda_codec *codec, hda_nid_t cap, if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) { snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx, HDA_AMP_MUTE, 0); - } else if (snd_hda_get_conn_list(codec, cap, NULL) > 1) { + } else if (snd_hda_get_num_conns(codec, cap) > 1) { snd_hda_codec_write_cache(codec, cap, 0, AC_VERB_SET_CONNECT_SEL, idx); } diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index b04179be620..7db8228f1b8 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -222,6 +222,7 @@ struct sigmatel_spec { unsigned char aloopback_shift; /* power management */ + unsigned int power_map_bits; unsigned int num_pwrs; const hda_nid_t *pwr_nids; const hda_nid_t *dac_list; @@ -315,6 +316,9 @@ struct sigmatel_spec { struct hda_vmaster_mute_hook vmaster_mute; }; +#define AC_VERB_IDT_SET_POWER_MAP 0x7ec +#define AC_VERB_IDT_GET_POWER_MAP 0xfec + static const hda_nid_t stac9200_adc_nids[1] = { 0x03, }; @@ -4232,13 +4236,6 @@ static void stac_store_hints(struct hda_codec *codec) val = snd_hda_get_bool_hint(codec, "eapd_switch"); if (val >= 0) spec->eapd_switch = val; - get_int_hint(codec, "gpio_led_polarity", &spec->gpio_led_polarity); - if (get_int_hint(codec, "gpio_led", &spec->gpio_led)) { - spec->gpio_mask |= spec->gpio_led; - spec->gpio_dir |= spec->gpio_led; - if (spec->gpio_led_polarity) - spec->gpio_data |= spec->gpio_led; - } } static void stac_issue_unsol_events(struct hda_codec *codec, int num_pins, @@ -4372,10 +4369,18 @@ static int stac92xx_init(struct hda_codec *codec) hda_nid_t nid = spec->pwr_nids[i]; int pinctl, def_conf; + def_conf = snd_hda_codec_get_pincfg(codec, nid); + def_conf = get_defcfg_connect(def_conf); + if (def_conf == AC_JACK_PORT_NONE) { + /* power off unused ports */ + stac_toggle_power_map(codec, nid, 0); + continue; + } /* power on when no jack detection is available */ /* or when the VREF is used for controlling LED */ if (!spec->hp_detect || - spec->vref_mute_led_nid == nid) { + spec->vref_mute_led_nid == nid || + !is_jack_detectable(codec, nid)) { stac_toggle_power_map(codec, nid, 1); continue; } @@ -4393,15 +4398,6 @@ static int stac92xx_init(struct hda_codec *codec) stac_toggle_power_map(codec, nid, 1); continue; } - def_conf = snd_hda_codec_get_pincfg(codec, nid); - def_conf = get_defcfg_connect(def_conf); - /* skip any ports that don't have jacks since presence - * detection is useless */ - if (def_conf != AC_JACK_PORT_COMPLEX) { - if (def_conf != AC_JACK_PORT_NONE) - stac_toggle_power_map(codec, nid, 1); - continue; - } if (enable_pin_detect(codec, nid, STAC_PWR_EVENT)) { stac_issue_unsol_event(codec, nid); continue; @@ -4414,6 +4410,12 @@ static int stac92xx_init(struct hda_codec *codec) /* sync mute LED */ snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + + /* sync the power-map */ + if (spec->num_pwrs) + snd_hda_codec_write(codec, codec->afg, 0, + AC_VERB_IDT_SET_POWER_MAP, + spec->power_map_bits); if (spec->dac_list) stac92xx_power_down(codec); return 0; @@ -4659,14 +4661,18 @@ static void stac_toggle_power_map(struct hda_codec *codec, hda_nid_t nid, idx = 1 << idx; - val = snd_hda_codec_read(codec, codec->afg, 0, 0x0fec, 0x0) & 0xff; + val = spec->power_map_bits; if (enable) val &= ~idx; else val |= idx; /* power down unused output ports */ - snd_hda_codec_write(codec, codec->afg, 0, 0x7ec, val); + if (val != spec->power_map_bits) { + spec->power_map_bits = val; + snd_hda_codec_write(codec, codec->afg, 0, + AC_VERB_IDT_SET_POWER_MAP, val); + } } static void stac92xx_pin_sense(struct hda_codec *codec, hda_nid_t nid) @@ -4843,6 +4849,11 @@ static int find_mute_led_cfg(struct hda_codec *codec, int default_polarity) struct sigmatel_spec *spec = codec->spec; const struct dmi_device *dev = NULL; + if (get_int_hint(codec, "gpio_led", &spec->gpio_led)) { + get_int_hint(codec, "gpio_led_polarity", + &spec->gpio_led_polarity); + return 1; + } if ((codec->subsystem_id >> 16) == PCI_VENDOR_ID_HP) { while ((dev = dmi_find_device(DMI_DEV_TYPE_OEM_STRING, NULL, dev))) { @@ -4929,7 +4940,8 @@ static void stac92hd_proc_hook(struct snd_info_buffer *buffer, { if (nid == codec->afg) snd_iprintf(buffer, "Power-Map: 0x%02x\n", - snd_hda_codec_read(codec, nid, 0, 0x0fec, 0x0)); + snd_hda_codec_read(codec, nid, 0, + AC_VERB_IDT_GET_POWER_MAP, 0)); } static void analog_loop_proc_hook(struct snd_info_buffer *buffer, diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index db272fb5e57..82b368068e0 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -485,7 +485,7 @@ static void activate_output_mix(struct hda_codec *codec, struct nid_path *path, if (!path) return; - num = snd_hda_get_conn_list(codec, mix_nid, NULL); + num = snd_hda_get_num_conns(codec, mix_nid); for (i = 0; i < num; i++) { if (i == idx) val = AMP_IN_UNMUTE(i); diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c index 132a86e09d0..5be2e120a14 100644 --- a/sound/pci/ice1712/ice1712.c +++ b/sound/pci/ice1712/ice1712.c @@ -2803,22 +2803,11 @@ static void __devexit snd_ice1712_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver ice1712_driver = { .name = KBUILD_MODNAME, .id_table = snd_ice1712_ids, .probe = snd_ice1712_probe, .remove = __devexit_p(snd_ice1712_remove), }; -static int __init alsa_card_ice1712_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_ice1712_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ice1712_init) -module_exit(alsa_card_ice1712_exit) +module_pci_driver(ice1712_driver); diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c index 812d10e43ae..a01a00d1cf4 100644 --- a/sound/pci/ice1712/ice1724.c +++ b/sound/pci/ice1712/ice1724.c @@ -2873,7 +2873,7 @@ static int snd_vt1724_resume(struct pci_dev *pci) } #endif -static struct pci_driver driver = { +static struct pci_driver vt1724_driver = { .name = KBUILD_MODNAME, .id_table = snd_vt1724_ids, .probe = snd_vt1724_probe, @@ -2884,15 +2884,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_ice1724_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_ice1724_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ice1724_init) -module_exit(alsa_card_ice1724_exit) +module_pci_driver(vt1724_driver); diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index e0a4263baa2..f4e2dd4da8c 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c @@ -3338,7 +3338,7 @@ static void __devexit snd_intel8x0_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver intel8x0_driver = { .name = KBUILD_MODNAME, .id_table = snd_intel8x0_ids, .probe = snd_intel8x0_probe, @@ -3349,16 +3349,4 @@ static struct pci_driver driver = { #endif }; - -static int __init alsa_card_intel8x0_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_intel8x0_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_intel8x0_init) -module_exit(alsa_card_intel8x0_exit) +module_pci_driver(intel8x0_driver); diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c index d689913a61b..fc27a6a69e7 100644 --- a/sound/pci/intel8x0m.c +++ b/sound/pci/intel8x0m.c @@ -1324,7 +1324,7 @@ static void __devexit snd_intel8x0m_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver intel8x0m_driver = { .name = KBUILD_MODNAME, .id_table = snd_intel8x0m_ids, .probe = snd_intel8x0m_probe, @@ -1335,16 +1335,4 @@ static struct pci_driver driver = { #endif }; - -static int __init alsa_card_intel8x0m_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_intel8x0m_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_intel8x0m_init) -module_exit(alsa_card_intel8x0m_exit) +module_pci_driver(intel8x0m_driver); diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c index 8fea45ab588..e69ce5f9c31 100644 --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c @@ -2476,22 +2476,11 @@ static void __devexit snd_korg1212_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver korg1212_driver = { .name = KBUILD_MODNAME, .id_table = snd_korg1212_ids, .probe = snd_korg1212_probe, .remove = __devexit_p(snd_korg1212_remove), }; -static int __init alsa_card_korg1212_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_korg1212_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_korg1212_init) -module_exit(alsa_card_korg1212_exit) +module_pci_driver(korg1212_driver); diff --git a/sound/pci/lola/lola.c b/sound/pci/lola/lola.c index 37598273685..ac15166bee6 100644 --- a/sound/pci/lola/lola.c +++ b/sound/pci/lola/lola.c @@ -770,22 +770,11 @@ static DEFINE_PCI_DEVICE_TABLE(lola_ids) = { MODULE_DEVICE_TABLE(pci, lola_ids); /* pci_driver definition */ -static struct pci_driver driver = { +static struct pci_driver lola_driver = { .name = KBUILD_MODNAME, .id_table = lola_ids, .probe = lola_probe, .remove = __devexit_p(lola_remove), }; -static int __init alsa_card_lola_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_lola_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_lola_init) -module_exit(alsa_card_lola_exit) +module_pci_driver(lola_driver); diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c index d94c0c292bd..d1ab4370673 100644 --- a/sound/pci/lx6464es/lx6464es.c +++ b/sound/pci/lx6464es/lx6464es.c @@ -1141,24 +1141,11 @@ static void __devexit snd_lx6464es_remove(struct pci_dev *pci) } -static struct pci_driver driver = { +static struct pci_driver lx6464es_driver = { .name = KBUILD_MODNAME, .id_table = snd_lx6464es_ids, .probe = snd_lx6464es_probe, .remove = __devexit_p(snd_lx6464es_remove), }; - -/* module initialization */ -static int __init mod_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit mod_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(mod_init); -module_exit(mod_exit); +module_pci_driver(lx6464es_driver); diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c index 78229b0dad2..deef2139958 100644 --- a/sound/pci/maestro3.c +++ b/sound/pci/maestro3.c @@ -2837,7 +2837,7 @@ static void __devexit snd_m3_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver m3_driver = { .name = KBUILD_MODNAME, .id_table = snd_m3_ids, .probe = snd_m3_probe, @@ -2848,15 +2848,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_m3_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_m3_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_m3_init) -module_exit(alsa_card_m3_exit) +module_pci_driver(m3_driver); diff --git a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c index 487837c01c9..0762610c99c 100644 --- a/sound/pci/mixart/mixart.c +++ b/sound/pci/mixart/mixart.c @@ -1380,22 +1380,11 @@ static void __devexit snd_mixart_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver mixart_driver = { .name = KBUILD_MODNAME, .id_table = snd_mixart_ids, .probe = snd_mixart_probe, .remove = __devexit_p(snd_mixart_remove), }; -static int __init alsa_card_mixart_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_mixart_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_mixart_init) -module_exit(alsa_card_mixart_exit) +module_pci_driver(mixart_driver); diff --git a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c index ade2c64bd60..8159b05ee94 100644 --- a/sound/pci/nm256/nm256.c +++ b/sound/pci/nm256/nm256.c @@ -1742,7 +1742,7 @@ static void __devexit snd_nm256_remove(struct pci_dev *pci) } -static struct pci_driver driver = { +static struct pci_driver nm256_driver = { .name = KBUILD_MODNAME, .id_table = snd_nm256_ids, .probe = snd_nm256_probe, @@ -1753,16 +1753,4 @@ static struct pci_driver driver = { #endif }; - -static int __init alsa_card_nm256_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_nm256_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_nm256_init) -module_exit(alsa_card_nm256_exit) +module_pci_driver(nm256_driver); diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c index eab663eef11..610275bfbae 100644 --- a/sound/pci/oxygen/oxygen.c +++ b/sound/pci/oxygen/oxygen.c @@ -94,6 +94,7 @@ enum { MODEL_2CH_OUTPUT, MODEL_HG2PCI, MODEL_XONAR_DG, + MODEL_XONAR_DGX, }; static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = { @@ -109,6 +110,8 @@ static DEFINE_PCI_DEVICE_TABLE(oxygen_ids) = { { OXYGEN_PCI_SUBID(0x1a58, 0x0910), .driver_data = MODEL_CMEDIA_REF }, /* Asus Xonar DG */ { OXYGEN_PCI_SUBID(0x1043, 0x8467), .driver_data = MODEL_XONAR_DG }, + /* Asus Xonar DGX */ + { OXYGEN_PCI_SUBID(0x1043, 0x8521), .driver_data = MODEL_XONAR_DGX }, /* PCI 2.0 HD Audio */ { OXYGEN_PCI_SUBID(0x13f6, 0x8782), .driver_data = MODEL_2CH_OUTPUT }, /* Kuroutoshikou CMI8787-HG2PCI */ @@ -827,6 +830,11 @@ static int __devinit get_oxygen_model(struct oxygen *chip, break; case MODEL_XONAR_DG: chip->model = model_xonar_dg; + chip->model.shortname = "Xonar DG"; + break; + case MODEL_XONAR_DGX: + chip->model = model_xonar_dg; + chip->model.shortname = "Xonar DGX"; break; } if (id->driver_data == MODEL_MERIDIAN || @@ -870,15 +878,4 @@ static struct pci_driver oxygen_driver = { #endif }; -static int __init alsa_card_oxygen_init(void) -{ - return pci_register_driver(&oxygen_driver); -} - -static void __exit alsa_card_oxygen_exit(void) -{ - pci_unregister_driver(&oxygen_driver); -} - -module_init(alsa_card_oxygen_init) -module_exit(alsa_card_oxygen_exit) +module_pci_driver(oxygen_driver); diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c index 3fdee495017..19962c6d38c 100644 --- a/sound/pci/oxygen/virtuoso.c +++ b/sound/pci/oxygen/virtuoso.c @@ -100,15 +100,4 @@ static struct pci_driver xonar_driver = { .shutdown = oxygen_pci_shutdown, }; -static int __init alsa_card_xonar_init(void) -{ - return pci_register_driver(&xonar_driver); -} - -static void __exit alsa_card_xonar_exit(void) -{ - pci_unregister_driver(&xonar_driver); -} - -module_init(alsa_card_xonar_init) -module_exit(alsa_card_xonar_exit) +module_pci_driver(xonar_driver); diff --git a/sound/pci/oxygen/xonar_dg.c b/sound/pci/oxygen/xonar_dg.c index 793bdf03d7e..77acd790ea4 100644 --- a/sound/pci/oxygen/xonar_dg.c +++ b/sound/pci/oxygen/xonar_dg.c @@ -1,5 +1,5 @@ /* - * card driver for the Xonar DG + * card driver for the Xonar DG/DGX * * Copyright (c) Clemens Ladisch <clemens@ladisch.de> * @@ -17,8 +17,8 @@ */ /* - * Xonar DG - * -------- + * Xonar DG/DGX + * ------------ * * CMI8788: * @@ -581,7 +581,6 @@ static void dump_cs4245_registers(struct oxygen *chip, } struct oxygen_model model_xonar_dg = { - .shortname = "Xonar DG", .longname = "C-Media Oxygen HD Audio", .chip = "CMI8786", .init = dg_init, diff --git a/sound/pci/pcxhr/pcxhr.c b/sound/pci/pcxhr/pcxhr.c index fd1809ab73b..0435f45e951 100644 --- a/sound/pci/pcxhr/pcxhr.c +++ b/sound/pci/pcxhr/pcxhr.c @@ -1607,22 +1607,11 @@ static void __devexit pcxhr_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver pcxhr_driver = { .name = KBUILD_MODNAME, .id_table = pcxhr_ids, .probe = pcxhr_probe, .remove = __devexit_p(pcxhr_remove), }; -static int __init pcxhr_module_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit pcxhr_module_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(pcxhr_module_init) -module_exit(pcxhr_module_exit) +module_pci_driver(pcxhr_driver); diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c index 0481d94aac9..cbeb3f77350 100644 --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c @@ -1837,8 +1837,7 @@ static int snd_riptide_free(struct snd_riptide *chip) } if (chip->irq >= 0) free_irq(chip->irq, chip); - if (chip->fw_entry) - release_firmware(chip->fw_entry); + release_firmware(chip->fw_entry); release_and_free_resource(chip->res_port); kfree(chip); return 0; diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c index b4819d5e41d..46b3629dda2 100644 --- a/sound/pci/rme32.c +++ b/sound/pci/rme32.c @@ -1984,22 +1984,11 @@ static void __devexit snd_rme32_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver rme32_driver = { .name = KBUILD_MODNAME, .id_table = snd_rme32_ids, .probe = snd_rme32_probe, .remove = __devexit_p(snd_rme32_remove), }; -static int __init alsa_card_rme32_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_rme32_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_rme32_init) -module_exit(alsa_card_rme32_exit) +module_pci_driver(rme32_driver); diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c index ba894158e76..9b98dc40698 100644 --- a/sound/pci/rme96.c +++ b/sound/pci/rme96.c @@ -2395,22 +2395,11 @@ static void __devexit snd_rme96_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver rme96_driver = { .name = KBUILD_MODNAME, .id_table = snd_rme96_ids, .probe = snd_rme96_probe, .remove = __devexit_p(snd_rme96_remove), }; -static int __init alsa_card_rme96_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_rme96_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_rme96_init) -module_exit(alsa_card_rme96_exit) +module_pci_driver(rme96_driver); diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c index 0b2aea2ce17..0d6930c4f4b 100644 --- a/sound/pci/rme9652/hdsp.c +++ b/sound/pci/rme9652/hdsp.c @@ -5636,22 +5636,11 @@ static void __devexit snd_hdsp_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver hdsp_driver = { .name = KBUILD_MODNAME, .id_table = snd_hdsp_ids, .probe = snd_hdsp_probe, .remove = __devexit_p(snd_hdsp_remove), }; -static int __init alsa_card_hdsp_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_hdsp_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_hdsp_init) -module_exit(alsa_card_hdsp_exit) +module_pci_driver(hdsp_driver); diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index bc030a2088d..0a5027b9471 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c @@ -6918,23 +6918,11 @@ static void __devexit snd_hdspm_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver hdspm_driver = { .name = KBUILD_MODNAME, .id_table = snd_hdspm_ids, .probe = snd_hdspm_probe, .remove = __devexit_p(snd_hdspm_remove), }; - -static int __init alsa_card_hdspm_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_hdspm_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_hdspm_init) -module_exit(alsa_card_hdspm_exit) +module_pci_driver(hdspm_driver); diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c index b737d1619cc..a15fc100ab0 100644 --- a/sound/pci/rme9652/rme9652.c +++ b/sound/pci/rme9652/rme9652.c @@ -2631,22 +2631,11 @@ static void __devexit snd_rme9652_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver rme9652_driver = { .name = KBUILD_MODNAME, .id_table = snd_rme9652_ids, .probe = snd_rme9652_probe, .remove = __devexit_p(snd_rme9652_remove), }; -static int __init alsa_card_hammerfall_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_hammerfall_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_hammerfall_init) -module_exit(alsa_card_hammerfall_exit) +module_pci_driver(rme9652_driver); diff --git a/sound/pci/sis7019.c b/sound/pci/sis7019.c index ff500a87f76..1552642765d 100644 --- a/sound/pci/sis7019.c +++ b/sound/pci/sis7019.c @@ -1488,15 +1488,4 @@ static struct pci_driver sis7019_driver = { #endif }; -static int __init sis7019_init(void) -{ - return pci_register_driver(&sis7019_driver); -} - -static void __exit sis7019_exit(void) -{ - pci_unregister_driver(&sis7019_driver); -} - -module_init(sis7019_init); -module_exit(sis7019_exit); +module_pci_driver(sis7019_driver); diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c index 54cc802050f..baa9946bedf 100644 --- a/sound/pci/sonicvibes.c +++ b/sound/pci/sonicvibes.c @@ -1530,22 +1530,11 @@ static void __devexit snd_sonic_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver sonicvibes_driver = { .name = KBUILD_MODNAME, .id_table = snd_sonic_ids, .probe = snd_sonic_probe, .remove = __devexit_p(snd_sonic_remove), }; -static int __init alsa_card_sonicvibes_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_sonicvibes_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_sonicvibes_init) -module_exit(alsa_card_sonicvibes_exit) +module_pci_driver(sonicvibes_driver); diff --git a/sound/pci/trident/trident.c b/sound/pci/trident/trident.c index 5f1def7f45e..611983ec732 100644 --- a/sound/pci/trident/trident.c +++ b/sound/pci/trident/trident.c @@ -172,7 +172,7 @@ static void __devexit snd_trident_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver trident_driver = { .name = KBUILD_MODNAME, .id_table = snd_trident_ids, .probe = snd_trident_probe, @@ -183,15 +183,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_trident_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_trident_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_trident_init) -module_exit(alsa_card_trident_exit) +module_pci_driver(trident_driver); diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 75630408c6d..b5afab48943 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c @@ -2619,7 +2619,7 @@ static void __devexit snd_via82xx_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver via82xx_driver = { .name = KBUILD_MODNAME, .id_table = snd_via82xx_ids, .probe = snd_via82xx_probe, @@ -2630,15 +2630,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_via82xx_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_via82xx_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_via82xx_init) -module_exit(alsa_card_via82xx_exit) +module_pci_driver(via82xx_driver); diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c index 5efcbcac506..59fd47ed0a3 100644 --- a/sound/pci/via82xx_modem.c +++ b/sound/pci/via82xx_modem.c @@ -1223,7 +1223,7 @@ static void __devexit snd_via82xx_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver via82xx_modem_driver = { .name = KBUILD_MODNAME, .id_table = snd_via82xx_modem_ids, .probe = snd_via82xx_probe, @@ -1234,15 +1234,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_via82xx_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_via82xx_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_via82xx_init) -module_exit(alsa_card_via82xx_exit) +module_pci_driver(via82xx_modem_driver); diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c index 6a534bfe127..1ea1f656a5d 100644 --- a/sound/pci/vx222/vx222.c +++ b/sound/pci/vx222/vx222.c @@ -289,7 +289,7 @@ static int snd_vx222_resume(struct pci_dev *pci) } #endif -static struct pci_driver driver = { +static struct pci_driver vx222_driver = { .name = KBUILD_MODNAME, .id_table = snd_vx222_ids, .probe = snd_vx222_probe, @@ -300,15 +300,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_vx222_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_vx222_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_vx222_init) -module_exit(alsa_card_vx222_exit) +module_pci_driver(vx222_driver); diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c index 94ab728f5ca..9a1d01d653a 100644 --- a/sound/pci/ymfpci/ymfpci.c +++ b/sound/pci/ymfpci/ymfpci.c @@ -350,7 +350,7 @@ static void __devexit snd_card_ymfpci_remove(struct pci_dev *pci) pci_set_drvdata(pci, NULL); } -static struct pci_driver driver = { +static struct pci_driver ymfpci_driver = { .name = KBUILD_MODNAME, .id_table = snd_ymfpci_ids, .probe = snd_card_ymfpci_probe, @@ -361,15 +361,4 @@ static struct pci_driver driver = { #endif }; -static int __init alsa_card_ymfpci_init(void) -{ - return pci_register_driver(&driver); -} - -static void __exit alsa_card_ymfpci_exit(void) -{ - pci_unregister_driver(&driver); -} - -module_init(alsa_card_ymfpci_init) -module_exit(alsa_card_ymfpci_exit) +module_pci_driver(ymfpci_driver); |