diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-04-18 05:39:10 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-04-18 05:39:10 -0400 |
commit | b2b4b9a7c09ad66e095b13c97946a96f2dc8284e (patch) | |
tree | fb856b5998df266bd83e6e64b8884287e812845a /sound | |
parent | 875999c5539999f61a45620aae0c3e5fb1d2b035 (diff) | |
parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) |
Merge branch 'upstream'
Diffstat (limited to 'sound')
31 files changed, 162 insertions, 169 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index 91114c7aeff5..c5978d6c6080 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c | |||
@@ -1682,7 +1682,7 @@ static void snd_pcm_oss_init_substream(struct snd_pcm_substream *substream, | |||
1682 | substream->oss.setup = *setup; | 1682 | substream->oss.setup = *setup; |
1683 | if (setup->nonblock) | 1683 | if (setup->nonblock) |
1684 | substream->ffile->f_flags |= O_NONBLOCK; | 1684 | substream->ffile->f_flags |= O_NONBLOCK; |
1685 | else | 1685 | else if (setup->block) |
1686 | substream->ffile->f_flags &= ~O_NONBLOCK; | 1686 | substream->ffile->f_flags &= ~O_NONBLOCK; |
1687 | runtime = substream->runtime; | 1687 | runtime = substream->runtime; |
1688 | runtime->oss.params = 1; | 1688 | runtime->oss.params = 1; |
@@ -1757,10 +1757,11 @@ static int snd_pcm_oss_open_file(struct file *file, | |||
1757 | } | 1757 | } |
1758 | 1758 | ||
1759 | pcm_oss_file->streams[idx] = substream; | 1759 | pcm_oss_file->streams[idx] = substream; |
1760 | substream->file = pcm_oss_file; | ||
1760 | snd_pcm_oss_init_substream(substream, &setup[idx], minor); | 1761 | snd_pcm_oss_init_substream(substream, &setup[idx], minor); |
1761 | } | 1762 | } |
1762 | 1763 | ||
1763 | if (! pcm_oss_file->streams[0] && pcm_oss_file->streams[1]) { | 1764 | if (!pcm_oss_file->streams[0] && !pcm_oss_file->streams[1]) { |
1764 | snd_pcm_oss_release_file(pcm_oss_file); | 1765 | snd_pcm_oss_release_file(pcm_oss_file); |
1765 | return -EINVAL; | 1766 | return -EINVAL; |
1766 | } | 1767 | } |
@@ -1809,7 +1810,7 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file) | |||
1809 | err = -EFAULT; | 1810 | err = -EFAULT; |
1810 | goto __error; | 1811 | goto __error; |
1811 | } | 1812 | } |
1812 | memset(setup, 0, sizeof(*setup)); | 1813 | memset(setup, 0, sizeof(setup)); |
1813 | if (file->f_mode & FMODE_WRITE) | 1814 | if (file->f_mode & FMODE_WRITE) |
1814 | snd_pcm_oss_look_for_setup(pcm, SNDRV_PCM_STREAM_PLAYBACK, | 1815 | snd_pcm_oss_look_for_setup(pcm, SNDRV_PCM_STREAM_PLAYBACK, |
1815 | task_name, &setup[0]); | 1816 | task_name, &setup[0]); |
diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 5d7eb123b999..122e10a61ab9 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c | |||
@@ -196,7 +196,7 @@ static char *snd_pcm_format_names[] = { | |||
196 | FORMAT(U18_3BE), | 196 | FORMAT(U18_3BE), |
197 | }; | 197 | }; |
198 | 198 | ||
199 | const char *snd_pcm_format_name(snd_pcm_format_t format) | 199 | static const char *snd_pcm_format_name(snd_pcm_format_t format) |
200 | { | 200 | { |
201 | return snd_pcm_format_names[format]; | 201 | return snd_pcm_format_names[format]; |
202 | } | 202 | } |
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 964e4c47a7f1..0860c5a84502 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c | |||
@@ -2007,14 +2007,16 @@ static void pcm_release_private(struct snd_pcm_substream *substream) | |||
2007 | void snd_pcm_release_substream(struct snd_pcm_substream *substream) | 2007 | void snd_pcm_release_substream(struct snd_pcm_substream *substream) |
2008 | { | 2008 | { |
2009 | snd_pcm_drop(substream); | 2009 | snd_pcm_drop(substream); |
2010 | if (substream->pcm_release) | ||
2011 | substream->pcm_release(substream); | ||
2012 | if (substream->hw_opened) { | 2010 | if (substream->hw_opened) { |
2013 | if (substream->ops->hw_free != NULL) | 2011 | if (substream->ops->hw_free != NULL) |
2014 | substream->ops->hw_free(substream); | 2012 | substream->ops->hw_free(substream); |
2015 | substream->ops->close(substream); | 2013 | substream->ops->close(substream); |
2016 | substream->hw_opened = 0; | 2014 | substream->hw_opened = 0; |
2017 | } | 2015 | } |
2016 | if (substream->pcm_release) { | ||
2017 | substream->pcm_release(substream); | ||
2018 | substream->pcm_release = NULL; | ||
2019 | } | ||
2018 | snd_pcm_detach_substream(substream); | 2020 | snd_pcm_detach_substream(substream); |
2019 | } | 2021 | } |
2020 | 2022 | ||
diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c index 326a057f752f..99908e44124d 100644 --- a/sound/isa/ad1848/ad1848.c +++ b/sound/isa/ad1848/ad1848.c | |||
@@ -193,9 +193,11 @@ static int __init alsa_card_ad1848_init(void) | |||
193 | continue; | 193 | continue; |
194 | device = platform_device_register_simple(SND_AD1848_DRIVER, | 194 | device = platform_device_register_simple(SND_AD1848_DRIVER, |
195 | i, NULL, 0); | 195 | i, NULL, 0); |
196 | if (IS_ERR(device)) { | 196 | if (IS_ERR(device)) |
197 | err = PTR_ERR(device); | 197 | continue; |
198 | goto errout; | 198 | if (!platform_get_drvdata(device)) { |
199 | platform_device_unregister(device); | ||
200 | continue; | ||
199 | } | 201 | } |
200 | devices[i] = device; | 202 | devices[i] = device; |
201 | cards++; | 203 | cards++; |
@@ -204,14 +206,10 @@ static int __init alsa_card_ad1848_init(void) | |||
204 | #ifdef MODULE | 206 | #ifdef MODULE |
205 | printk(KERN_ERR "AD1848 soundcard not found or device busy\n"); | 207 | printk(KERN_ERR "AD1848 soundcard not found or device busy\n"); |
206 | #endif | 208 | #endif |
207 | err = -ENODEV; | 209 | snd_ad1848_unregister_all(); |
208 | goto errout; | 210 | return -ENODEV; |
209 | } | 211 | } |
210 | return 0; | 212 | return 0; |
211 | |||
212 | errout: | ||
213 | snd_ad1848_unregister_all(); | ||
214 | return err; | ||
215 | } | 213 | } |
216 | 214 | ||
217 | static void __exit alsa_card_ad1848_exit(void) | 215 | static void __exit alsa_card_ad1848_exit(void) |
diff --git a/sound/isa/adlib.c b/sound/isa/adlib.c index a253a14e6a45..1124344ed948 100644 --- a/sound/isa/adlib.c +++ b/sound/isa/adlib.c | |||
@@ -43,8 +43,7 @@ static int __devinit snd_adlib_probe(struct platform_device *device) | |||
43 | struct snd_card *card; | 43 | struct snd_card *card; |
44 | struct snd_opl3 *opl3; | 44 | struct snd_opl3 *opl3; |
45 | 45 | ||
46 | int error; | 46 | int error, i = device->id; |
47 | int i = device->id; | ||
48 | 47 | ||
49 | if (port[i] == SNDRV_AUTO_PORT) { | 48 | if (port[i] == SNDRV_AUTO_PORT) { |
50 | snd_printk(KERN_ERR DRV_NAME ": please specify port\n"); | 49 | snd_printk(KERN_ERR DRV_NAME ": please specify port\n"); |
@@ -95,8 +94,7 @@ static int __devinit snd_adlib_probe(struct platform_device *device) | |||
95 | return 0; | 94 | return 0; |
96 | 95 | ||
97 | out1: snd_card_free(card); | 96 | out1: snd_card_free(card); |
98 | out0: error = -EINVAL; /* FIXME: should be the original error code */ | 97 | out0: return error; |
99 | return error; | ||
100 | } | 98 | } |
101 | 99 | ||
102 | static int __devexit snd_adlib_remove(struct platform_device *device) | 100 | static int __devexit snd_adlib_remove(struct platform_device *device) |
@@ -134,6 +132,11 @@ static int __init alsa_card_adlib_init(void) | |||
134 | if (IS_ERR(device)) | 132 | if (IS_ERR(device)) |
135 | continue; | 133 | continue; |
136 | 134 | ||
135 | if (!platform_get_drvdata(device)) { | ||
136 | platform_device_unregister(device); | ||
137 | continue; | ||
138 | } | ||
139 | |||
137 | devices[i] = device; | 140 | devices[i] = device; |
138 | cards++; | 141 | cards++; |
139 | } | 142 | } |
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c index bc0f5ebf5d3c..3c1e9fd56fe0 100644 --- a/sound/isa/cmi8330.c +++ b/sound/isa/cmi8330.c | |||
@@ -699,9 +699,11 @@ static int __init alsa_card_cmi8330_init(void) | |||
699 | continue; | 699 | continue; |
700 | device = platform_device_register_simple(CMI8330_DRIVER, | 700 | device = platform_device_register_simple(CMI8330_DRIVER, |
701 | i, NULL, 0); | 701 | i, NULL, 0); |
702 | if (IS_ERR(device)) { | 702 | if (IS_ERR(device)) |
703 | err = PTR_ERR(device); | 703 | continue; |
704 | goto errout; | 704 | if (!platform_get_drvdata(device)) { |
705 | platform_device_unregister(device); | ||
706 | continue; | ||
705 | } | 707 | } |
706 | platform_devices[i] = device; | 708 | platform_devices[i] = device; |
707 | cards++; | 709 | cards++; |
@@ -719,14 +721,10 @@ static int __init alsa_card_cmi8330_init(void) | |||
719 | #ifdef MODULE | 721 | #ifdef MODULE |
720 | snd_printk(KERN_ERR "CMI8330 not found or device busy\n"); | 722 | snd_printk(KERN_ERR "CMI8330 not found or device busy\n"); |
721 | #endif | 723 | #endif |
722 | err = -ENODEV; | 724 | snd_cmi8330_unregister_all(); |
723 | goto errout; | 725 | return -ENODEV; |
724 | } | 726 | } |
725 | return 0; | 727 | return 0; |
726 | |||
727 | errout: | ||
728 | snd_cmi8330_unregister_all(); | ||
729 | return err; | ||
730 | } | 728 | } |
731 | 729 | ||
732 | static void __exit alsa_card_cmi8330_exit(void) | 730 | static void __exit alsa_card_cmi8330_exit(void) |
diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c index a30dcd962525..397310f358b7 100644 --- a/sound/isa/cs423x/cs4231.c +++ b/sound/isa/cs423x/cs4231.c | |||
@@ -209,9 +209,11 @@ static int __init alsa_card_cs4231_init(void) | |||
209 | continue; | 209 | continue; |
210 | device = platform_device_register_simple(SND_CS4231_DRIVER, | 210 | device = platform_device_register_simple(SND_CS4231_DRIVER, |
211 | i, NULL, 0); | 211 | i, NULL, 0); |
212 | if (IS_ERR(device)) { | 212 | if (IS_ERR(device)) |
213 | err = PTR_ERR(device); | 213 | continue; |
214 | goto errout; | 214 | if (!platform_get_drvdata(device)) { |
215 | platform_device_unregister(device); | ||
216 | continue; | ||
215 | } | 217 | } |
216 | devices[i] = device; | 218 | devices[i] = device; |
217 | cards++; | 219 | cards++; |
@@ -220,14 +222,10 @@ static int __init alsa_card_cs4231_init(void) | |||
220 | #ifdef MODULE | 222 | #ifdef MODULE |
221 | printk(KERN_ERR "CS4231 soundcard not found or device busy\n"); | 223 | printk(KERN_ERR "CS4231 soundcard not found or device busy\n"); |
222 | #endif | 224 | #endif |
223 | err = -ENODEV; | 225 | snd_cs4231_unregister_all(); |
224 | goto errout; | 226 | return -ENODEV; |
225 | } | 227 | } |
226 | return 0; | 228 | return 0; |
227 | |||
228 | errout: | ||
229 | snd_cs4231_unregister_all(); | ||
230 | return err; | ||
231 | } | 229 | } |
232 | 230 | ||
233 | static void __exit alsa_card_cs4231_exit(void) | 231 | static void __exit alsa_card_cs4231_exit(void) |
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c index 382bb17ef49f..f7fa779347ff 100644 --- a/sound/isa/cs423x/cs4236.c +++ b/sound/isa/cs423x/cs4236.c | |||
@@ -780,9 +780,11 @@ static int __init alsa_card_cs423x_init(void) | |||
780 | continue; | 780 | continue; |
781 | device = platform_device_register_simple(CS423X_DRIVER, | 781 | device = platform_device_register_simple(CS423X_DRIVER, |
782 | i, NULL, 0); | 782 | i, NULL, 0); |
783 | if (IS_ERR(device)) { | 783 | if (IS_ERR(device)) |
784 | err = PTR_ERR(device); | 784 | continue; |
785 | goto errout; | 785 | if (!platform_get_drvdata(device)) { |
786 | platform_device_unregister(device); | ||
787 | continue; | ||
786 | } | 788 | } |
787 | platform_devices[i] = device; | 789 | platform_devices[i] = device; |
788 | snd_cs423x_devices++; | 790 | snd_cs423x_devices++; |
@@ -802,14 +804,10 @@ static int __init alsa_card_cs423x_init(void) | |||
802 | #ifdef MODULE | 804 | #ifdef MODULE |
803 | printk(KERN_ERR IDENT " soundcard not found or device busy\n"); | 805 | printk(KERN_ERR IDENT " soundcard not found or device busy\n"); |
804 | #endif | 806 | #endif |
805 | err = -ENODEV; | 807 | snd_cs423x_unregister_all(); |
806 | goto errout; | 808 | return -ENODEV; |
807 | } | 809 | } |
808 | return 0; | 810 | return 0; |
809 | |||
810 | errout: | ||
811 | snd_cs423x_unregister_all(); | ||
812 | return err; | ||
813 | } | 811 | } |
814 | 812 | ||
815 | static void __exit alsa_card_cs423x_exit(void) | 813 | static void __exit alsa_card_cs423x_exit(void) |
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c index 2b69fc829265..e90689ee162f 100644 --- a/sound/isa/es1688/es1688.c +++ b/sound/isa/es1688/es1688.c | |||
@@ -213,9 +213,11 @@ static int __init alsa_card_es1688_init(void) | |||
213 | continue; | 213 | continue; |
214 | device = platform_device_register_simple(ES1688_DRIVER, | 214 | device = platform_device_register_simple(ES1688_DRIVER, |
215 | i, NULL, 0); | 215 | i, NULL, 0); |
216 | if (IS_ERR(device)) { | 216 | if (IS_ERR(device)) |
217 | err = PTR_ERR(device); | 217 | continue; |
218 | goto errout; | 218 | if (!platform_get_drvdata(device)) { |
219 | platform_device_unregister(device); | ||
220 | continue; | ||
219 | } | 221 | } |
220 | devices[i] = device; | 222 | devices[i] = device; |
221 | cards++; | 223 | cards++; |
@@ -224,14 +226,10 @@ static int __init alsa_card_es1688_init(void) | |||
224 | #ifdef MODULE | 226 | #ifdef MODULE |
225 | printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n"); | 227 | printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n"); |
226 | #endif | 228 | #endif |
227 | err = -ENODEV; | 229 | snd_es1688_unregister_all(); |
228 | goto errout; | 230 | return -ENODEV; |
229 | } | 231 | } |
230 | return 0; | 232 | return 0; |
231 | |||
232 | errout: | ||
233 | snd_es1688_unregister_all(); | ||
234 | return err; | ||
235 | } | 233 | } |
236 | 234 | ||
237 | static void __exit alsa_card_es1688_exit(void) | 235 | static void __exit alsa_card_es1688_exit(void) |
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c index 9fbc185b4cc2..a36ec1daa5cb 100644 --- a/sound/isa/es18xx.c +++ b/sound/isa/es18xx.c | |||
@@ -2391,9 +2391,11 @@ static int __init alsa_card_es18xx_init(void) | |||
2391 | continue; | 2391 | continue; |
2392 | device = platform_device_register_simple(ES18XX_DRIVER, | 2392 | device = platform_device_register_simple(ES18XX_DRIVER, |
2393 | i, NULL, 0); | 2393 | i, NULL, 0); |
2394 | if (IS_ERR(device)) { | 2394 | if (IS_ERR(device)) |
2395 | err = PTR_ERR(device); | 2395 | continue; |
2396 | goto errout; | 2396 | if (!platform_get_drvdata(device)) { |
2397 | platform_device_unregister(device); | ||
2398 | continue; | ||
2397 | } | 2399 | } |
2398 | platform_devices[i] = device; | 2400 | platform_devices[i] = device; |
2399 | cards++; | 2401 | cards++; |
@@ -2411,14 +2413,10 @@ static int __init alsa_card_es18xx_init(void) | |||
2411 | #ifdef MODULE | 2413 | #ifdef MODULE |
2412 | snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n"); | 2414 | snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n"); |
2413 | #endif | 2415 | #endif |
2414 | err = -ENODEV; | 2416 | snd_es18xx_unregister_all(); |
2415 | goto errout; | 2417 | return -ENODEV; |
2416 | } | 2418 | } |
2417 | return 0; | 2419 | return 0; |
2418 | |||
2419 | errout: | ||
2420 | snd_es18xx_unregister_all(); | ||
2421 | return err; | ||
2422 | } | 2420 | } |
2423 | 2421 | ||
2424 | static void __exit alsa_card_es18xx_exit(void) | 2422 | static void __exit alsa_card_es18xx_exit(void) |
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c index 26dccfea2437..37057a37dc30 100644 --- a/sound/isa/gus/gusclassic.c +++ b/sound/isa/gus/gusclassic.c | |||
@@ -253,9 +253,11 @@ static int __init alsa_card_gusclassic_init(void) | |||
253 | continue; | 253 | continue; |
254 | device = platform_device_register_simple(GUSCLASSIC_DRIVER, | 254 | device = platform_device_register_simple(GUSCLASSIC_DRIVER, |
255 | i, NULL, 0); | 255 | i, NULL, 0); |
256 | if (IS_ERR(device)) { | 256 | if (IS_ERR(device)) |
257 | err = PTR_ERR(device); | 257 | continue; |
258 | goto errout; | 258 | if (!platform_get_drvdata(device)) { |
259 | platform_device_unregister(device); | ||
260 | continue; | ||
259 | } | 261 | } |
260 | devices[i] = device; | 262 | devices[i] = device; |
261 | cards++; | 263 | cards++; |
@@ -264,14 +266,10 @@ static int __init alsa_card_gusclassic_init(void) | |||
264 | #ifdef MODULE | 266 | #ifdef MODULE |
265 | printk(KERN_ERR "GUS Classic soundcard not found or device busy\n"); | 267 | printk(KERN_ERR "GUS Classic soundcard not found or device busy\n"); |
266 | #endif | 268 | #endif |
267 | err = -ENODEV; | 269 | snd_gusclassic_unregister_all(); |
268 | goto errout; | 270 | return -ENODEV; |
269 | } | 271 | } |
270 | return 0; | 272 | return 0; |
271 | |||
272 | errout: | ||
273 | snd_gusclassic_unregister_all(); | ||
274 | return err; | ||
275 | } | 273 | } |
276 | 274 | ||
277 | static void __exit alsa_card_gusclassic_exit(void) | 275 | static void __exit alsa_card_gusclassic_exit(void) |
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c index 31dc20501d0c..05852fcc613b 100644 --- a/sound/isa/gus/gusextreme.c +++ b/sound/isa/gus/gusextreme.c | |||
@@ -363,9 +363,11 @@ static int __init alsa_card_gusextreme_init(void) | |||
363 | continue; | 363 | continue; |
364 | device = platform_device_register_simple(GUSEXTREME_DRIVER, | 364 | device = platform_device_register_simple(GUSEXTREME_DRIVER, |
365 | i, NULL, 0); | 365 | i, NULL, 0); |
366 | if (IS_ERR(device)) { | 366 | if (IS_ERR(device)) |
367 | err = PTR_ERR(device); | 367 | continue; |
368 | goto errout; | 368 | if (!platform_get_drvdata(device)) { |
369 | platform_device_unregister(device); | ||
370 | continue; | ||
369 | } | 371 | } |
370 | devices[i] = device; | 372 | devices[i] = device; |
371 | cards++; | 373 | cards++; |
@@ -374,14 +376,10 @@ static int __init alsa_card_gusextreme_init(void) | |||
374 | #ifdef MODULE | 376 | #ifdef MODULE |
375 | printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n"); | 377 | printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n"); |
376 | #endif | 378 | #endif |
377 | err = -ENODEV; | 379 | snd_gusextreme_unregister_all(); |
378 | goto errout; | 380 | return -ENODEV; |
379 | } | 381 | } |
380 | return 0; | 382 | return 0; |
381 | |||
382 | errout: | ||
383 | snd_gusextreme_unregister_all(); | ||
384 | return err; | ||
385 | } | 383 | } |
386 | 384 | ||
387 | static void __exit alsa_card_gusextreme_exit(void) | 385 | static void __exit alsa_card_gusextreme_exit(void) |
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c index cafb9b67fa72..fcf2c8fe6f94 100644 --- a/sound/isa/gus/gusmax.c +++ b/sound/isa/gus/gusmax.c | |||
@@ -390,9 +390,11 @@ static int __init alsa_card_gusmax_init(void) | |||
390 | continue; | 390 | continue; |
391 | device = platform_device_register_simple(GUSMAX_DRIVER, | 391 | device = platform_device_register_simple(GUSMAX_DRIVER, |
392 | i, NULL, 0); | 392 | i, NULL, 0); |
393 | if (IS_ERR(device)) { | 393 | if (IS_ERR(device)) |
394 | err = PTR_ERR(device); | 394 | continue; |
395 | goto errout; | 395 | if (!platform_get_drvdata(device)) { |
396 | platform_device_unregister(device); | ||
397 | continue; | ||
396 | } | 398 | } |
397 | devices[i] = device; | 399 | devices[i] = device; |
398 | cards++; | 400 | cards++; |
@@ -401,14 +403,10 @@ static int __init alsa_card_gusmax_init(void) | |||
401 | #ifdef MODULE | 403 | #ifdef MODULE |
402 | printk(KERN_ERR "GUS MAX soundcard not found or device busy\n"); | 404 | printk(KERN_ERR "GUS MAX soundcard not found or device busy\n"); |
403 | #endif | 405 | #endif |
404 | err = -ENODEV; | 406 | snd_gusmax_unregister_all(); |
405 | goto errout; | 407 | return -ENODEV; |
406 | } | 408 | } |
407 | return 0; | 409 | return 0; |
408 | |||
409 | errout: | ||
410 | snd_gusmax_unregister_all(); | ||
411 | return err; | ||
412 | } | 410 | } |
413 | 411 | ||
414 | static void __exit alsa_card_gusmax_exit(void) | 412 | static void __exit alsa_card_gusmax_exit(void) |
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c index de71b7a99c83..4298d339e786 100644 --- a/sound/isa/gus/interwave.c +++ b/sound/isa/gus/interwave.c | |||
@@ -947,9 +947,11 @@ static int __init alsa_card_interwave_init(void) | |||
947 | #endif | 947 | #endif |
948 | device = platform_device_register_simple(INTERWAVE_DRIVER, | 948 | device = platform_device_register_simple(INTERWAVE_DRIVER, |
949 | i, NULL, 0); | 949 | i, NULL, 0); |
950 | if (IS_ERR(device)) { | 950 | if (IS_ERR(device)) |
951 | err = PTR_ERR(device); | 951 | continue; |
952 | goto errout; | 952 | if (!platform_get_drvdata(device)) { |
953 | platform_device_unregister(device); | ||
954 | continue; | ||
953 | } | 955 | } |
954 | platform_devices[i] = device; | 956 | platform_devices[i] = device; |
955 | cards++; | 957 | cards++; |
@@ -966,14 +968,10 @@ static int __init alsa_card_interwave_init(void) | |||
966 | #ifdef MODULE | 968 | #ifdef MODULE |
967 | printk(KERN_ERR "InterWave soundcard not found or device busy\n"); | 969 | printk(KERN_ERR "InterWave soundcard not found or device busy\n"); |
968 | #endif | 970 | #endif |
969 | err = -ENODEV; | 971 | snd_interwave_unregister_all(); |
970 | goto errout; | 972 | return -ENODEV; |
971 | } | 973 | } |
972 | return 0; | 974 | return 0; |
973 | |||
974 | errout: | ||
975 | snd_interwave_unregister_all(); | ||
976 | return err; | ||
977 | } | 975 | } |
978 | 976 | ||
979 | static void __exit alsa_card_interwave_exit(void) | 977 | static void __exit alsa_card_interwave_exit(void) |
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c index c906e205d7d5..6d889052c32c 100644 --- a/sound/isa/opl3sa2.c +++ b/sound/isa/opl3sa2.c | |||
@@ -962,9 +962,11 @@ static int __init alsa_card_opl3sa2_init(void) | |||
962 | #endif | 962 | #endif |
963 | device = platform_device_register_simple(OPL3SA2_DRIVER, | 963 | device = platform_device_register_simple(OPL3SA2_DRIVER, |
964 | i, NULL, 0); | 964 | i, NULL, 0); |
965 | if (IS_ERR(device)) { | 965 | if (IS_ERR(device)) |
966 | err = PTR_ERR(device); | 966 | continue; |
967 | goto errout; | 967 | if (!platform_get_drvdata(device)) { |
968 | platform_device_unregister(device); | ||
969 | continue; | ||
968 | } | 970 | } |
969 | platform_devices[i] = device; | 971 | platform_devices[i] = device; |
970 | snd_opl3sa2_devices++; | 972 | snd_opl3sa2_devices++; |
@@ -983,14 +985,10 @@ static int __init alsa_card_opl3sa2_init(void) | |||
983 | #ifdef MODULE | 985 | #ifdef MODULE |
984 | snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n"); | 986 | snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n"); |
985 | #endif | 987 | #endif |
986 | err = -ENODEV; | 988 | snd_opl3sa2_unregister_all(); |
987 | goto errout; | 989 | return -ENODEV; |
988 | } | 990 | } |
989 | return 0; | 991 | return 0; |
990 | |||
991 | errout: | ||
992 | snd_opl3sa2_unregister_all(); | ||
993 | return err; | ||
994 | } | 992 | } |
995 | 993 | ||
996 | static void __exit alsa_card_opl3sa2_exit(void) | 994 | static void __exit alsa_card_opl3sa2_exit(void) |
diff --git a/sound/isa/opti9xx/miro.c b/sound/isa/opti9xx/miro.c index 09384d03dc31..83d64bc07ff0 100644 --- a/sound/isa/opti9xx/miro.c +++ b/sound/isa/opti9xx/miro.c | |||
@@ -1436,8 +1436,11 @@ static int __init alsa_card_miro_init(void) | |||
1436 | if ((error = platform_driver_register(&snd_miro_driver)) < 0) | 1436 | if ((error = platform_driver_register(&snd_miro_driver)) < 0) |
1437 | return error; | 1437 | return error; |
1438 | device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); | 1438 | device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); |
1439 | if (! IS_ERR(device)) | 1439 | if (! IS_ERR(device)) { |
1440 | return 0; | 1440 | if (platform_get_drvdata(device)) |
1441 | return 0; | ||
1442 | platform_device_unregister(device); | ||
1443 | } | ||
1441 | #ifdef MODULE | 1444 | #ifdef MODULE |
1442 | printk(KERN_ERR "no miro soundcard found\n"); | 1445 | printk(KERN_ERR "no miro soundcard found\n"); |
1443 | #endif | 1446 | #endif |
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c index 65b28cbc0ebd..8ee0d70536f9 100644 --- a/sound/isa/opti9xx/opti92x-ad1848.c +++ b/sound/isa/opti9xx/opti92x-ad1848.c | |||
@@ -2099,8 +2099,11 @@ static int __init alsa_card_opti9xx_init(void) | |||
2099 | return error; | 2099 | return error; |
2100 | device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); | 2100 | device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0); |
2101 | if (!IS_ERR(device)) { | 2101 | if (!IS_ERR(device)) { |
2102 | snd_opti9xx_platform_device = device; | 2102 | if (platform_get_drvdata(device)) { |
2103 | return 0; | 2103 | snd_opti9xx_platform_device = device; |
2104 | return 0; | ||
2105 | } | ||
2106 | platform_device_unregister(device); | ||
2104 | } | 2107 | } |
2105 | platform_driver_unregister(&snd_opti9xx_driver); | 2108 | platform_driver_unregister(&snd_opti9xx_driver); |
2106 | } | 2109 | } |
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c index 21ea65925a9e..6333f900eaee 100644 --- a/sound/isa/sb/sb16.c +++ b/sound/isa/sb/sb16.c | |||
@@ -720,9 +720,11 @@ static int __init alsa_card_sb16_init(void) | |||
720 | continue; | 720 | continue; |
721 | device = platform_device_register_simple(SND_SB16_DRIVER, | 721 | device = platform_device_register_simple(SND_SB16_DRIVER, |
722 | i, NULL, 0); | 722 | i, NULL, 0); |
723 | if (IS_ERR(device)) { | 723 | if (IS_ERR(device)) |
724 | err = PTR_ERR(device); | 724 | continue; |
725 | goto errout; | 725 | if (!platform_get_drvdata(device)) { |
726 | platform_device_unregister(device); | ||
727 | continue; | ||
726 | } | 728 | } |
727 | platform_devices[i] = device; | 729 | platform_devices[i] = device; |
728 | cards++; | 730 | cards++; |
@@ -745,14 +747,10 @@ static int __init alsa_card_sb16_init(void) | |||
745 | snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n"); | 747 | snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n"); |
746 | #endif | 748 | #endif |
747 | #endif | 749 | #endif |
748 | err = -ENODEV; | 750 | snd_sb16_unregister_all(); |
749 | goto errout; | 751 | return -ENODEV; |
750 | } | 752 | } |
751 | return 0; | 753 | return 0; |
752 | |||
753 | errout: | ||
754 | snd_sb16_unregister_all(); | ||
755 | return err; | ||
756 | } | 754 | } |
757 | 755 | ||
758 | static void __exit alsa_card_sb16_exit(void) | 756 | static void __exit alsa_card_sb16_exit(void) |
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c index 3efa23d303c3..141400c01426 100644 --- a/sound/isa/sb/sb8.c +++ b/sound/isa/sb/sb8.c | |||
@@ -264,9 +264,11 @@ static int __init alsa_card_sb8_init(void) | |||
264 | continue; | 264 | continue; |
265 | device = platform_device_register_simple(SND_SB8_DRIVER, | 265 | device = platform_device_register_simple(SND_SB8_DRIVER, |
266 | i, NULL, 0); | 266 | i, NULL, 0); |
267 | if (IS_ERR(device)) { | 267 | if (IS_ERR(device)) |
268 | err = PTR_ERR(device); | 268 | continue; |
269 | goto errout; | 269 | if (!platform_get_drvdata(device)) { |
270 | platform_device_unregister(device); | ||
271 | continue; | ||
270 | } | 272 | } |
271 | devices[i] = device; | 273 | devices[i] = device; |
272 | cards++; | 274 | cards++; |
@@ -275,14 +277,10 @@ static int __init alsa_card_sb8_init(void) | |||
275 | #ifdef MODULE | 277 | #ifdef MODULE |
276 | snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n"); | 278 | snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n"); |
277 | #endif | 279 | #endif |
278 | err = -ENODEV; | 280 | snd_sb8_unregister_all(); |
279 | goto errout; | 281 | return -ENODEV; |
280 | } | 282 | } |
281 | return 0; | 283 | return 0; |
282 | |||
283 | errout: | ||
284 | snd_sb8_unregister_all(); | ||
285 | return err; | ||
286 | } | 284 | } |
287 | 285 | ||
288 | static void __exit alsa_card_sb8_exit(void) | 286 | static void __exit alsa_card_sb8_exit(void) |
diff --git a/sound/isa/sgalaxy.c b/sound/isa/sgalaxy.c index a60e66afbf90..09c8e8c6b5e3 100644 --- a/sound/isa/sgalaxy.c +++ b/sound/isa/sgalaxy.c | |||
@@ -366,9 +366,11 @@ static int __init alsa_card_sgalaxy_init(void) | |||
366 | continue; | 366 | continue; |
367 | device = platform_device_register_simple(SND_SGALAXY_DRIVER, | 367 | device = platform_device_register_simple(SND_SGALAXY_DRIVER, |
368 | i, NULL, 0); | 368 | i, NULL, 0); |
369 | if (IS_ERR(device)) { | 369 | if (IS_ERR(device)) |
370 | err = PTR_ERR(device); | 370 | continue; |
371 | goto errout; | 371 | if (!platform_get_drvdata(device)) { |
372 | platform_device_unregister(device); | ||
373 | continue; | ||
372 | } | 374 | } |
373 | devices[i] = device; | 375 | devices[i] = device; |
374 | cards++; | 376 | cards++; |
@@ -377,14 +379,10 @@ static int __init alsa_card_sgalaxy_init(void) | |||
377 | #ifdef MODULE | 379 | #ifdef MODULE |
378 | snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n"); | 380 | snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n"); |
379 | #endif | 381 | #endif |
380 | err = -ENODEV; | 382 | snd_sgalaxy_unregister_all(); |
381 | goto errout; | 383 | return -ENODEV; |
382 | } | 384 | } |
383 | return 0; | 385 | return 0; |
384 | |||
385 | errout: | ||
386 | snd_sgalaxy_unregister_all(); | ||
387 | return err; | ||
388 | } | 386 | } |
389 | 387 | ||
390 | static void __exit alsa_card_sgalaxy_exit(void) | 388 | static void __exit alsa_card_sgalaxy_exit(void) |
diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c index 48e5552d3444..d2a856f0fde2 100644 --- a/sound/isa/sscape.c +++ b/sound/isa/sscape.c | |||
@@ -1427,8 +1427,8 @@ static int __init sscape_manual_probe(void) | |||
1427 | dma[i] == SNDRV_AUTO_DMA) { | 1427 | dma[i] == SNDRV_AUTO_DMA) { |
1428 | printk(KERN_INFO | 1428 | printk(KERN_INFO |
1429 | "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n"); | 1429 | "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n"); |
1430 | ret = -ENXIO; | 1430 | sscape_unregister_all(); |
1431 | goto errout; | 1431 | return -ENXIO; |
1432 | } | 1432 | } |
1433 | 1433 | ||
1434 | /* | 1434 | /* |
@@ -1436,17 +1436,15 @@ static int __init sscape_manual_probe(void) | |||
1436 | */ | 1436 | */ |
1437 | device = platform_device_register_simple(SSCAPE_DRIVER, | 1437 | device = platform_device_register_simple(SSCAPE_DRIVER, |
1438 | i, NULL, 0); | 1438 | i, NULL, 0); |
1439 | if (IS_ERR(device)) { | 1439 | if (IS_ERR(device)) |
1440 | ret = PTR_ERR(device); | 1440 | continue; |
1441 | goto errout; | 1441 | if (!platform_get_drvdata(device)) { |
1442 | platform_device_unregister(device); | ||
1443 | continue; | ||
1442 | } | 1444 | } |
1443 | platform_devices[i] = device; | 1445 | platform_devices[i] = device; |
1444 | } | 1446 | } |
1445 | return 0; | 1447 | return 0; |
1446 | |||
1447 | errout: | ||
1448 | sscape_unregister_all(); | ||
1449 | return ret; | ||
1450 | } | 1448 | } |
1451 | 1449 | ||
1452 | static void sscape_exit(void) | 1450 | static void sscape_exit(void) |
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c index 2f13cd5d4dcb..7ae86f82c3fa 100644 --- a/sound/isa/wavefront/wavefront.c +++ b/sound/isa/wavefront/wavefront.c | |||
@@ -722,9 +722,11 @@ static int __init alsa_card_wavefront_init(void) | |||
722 | #endif | 722 | #endif |
723 | device = platform_device_register_simple(WAVEFRONT_DRIVER, | 723 | device = platform_device_register_simple(WAVEFRONT_DRIVER, |
724 | i, NULL, 0); | 724 | i, NULL, 0); |
725 | if (IS_ERR(device)) { | 725 | if (IS_ERR(device)) |
726 | err = PTR_ERR(device); | 726 | continue; |
727 | goto errout; | 727 | if (!platform_get_drvdata(device)) { |
728 | platform_device_unregister(device); | ||
729 | continue; | ||
728 | } | 730 | } |
729 | platform_devices[i] = device; | 731 | platform_devices[i] = device; |
730 | cards++; | 732 | cards++; |
@@ -742,14 +744,10 @@ static int __init alsa_card_wavefront_init(void) | |||
742 | #ifdef MODULE | 744 | #ifdef MODULE |
743 | printk (KERN_ERR "No WaveFront cards found or devices busy\n"); | 745 | printk (KERN_ERR "No WaveFront cards found or devices busy\n"); |
744 | #endif | 746 | #endif |
745 | err = -ENODEV; | 747 | snd_wavefront_unregister_all(); |
746 | goto errout; | 748 | return -ENODEV; |
747 | } | 749 | } |
748 | return 0; | 750 | return 0; |
749 | |||
750 | errout: | ||
751 | snd_wavefront_unregister_all(); | ||
752 | return err; | ||
753 | } | 751 | } |
754 | 752 | ||
755 | static void __exit alsa_card_wavefront_exit(void) | 753 | static void __exit alsa_card_wavefront_exit(void) |
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 278319bbdea1..d05200741ac3 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -160,6 +160,7 @@ static const struct ac97_codec_id snd_ac97_codec_ids[] = { | |||
160 | { 0x54584e20, 0xffffffff, "TLC320AD9xC", NULL, NULL }, | 160 | { 0x54584e20, 0xffffffff, "TLC320AD9xC", NULL, NULL }, |
161 | { 0x56494161, 0xffffffff, "VIA1612A", NULL, NULL }, // modified ICE1232 with S/PDIF | 161 | { 0x56494161, 0xffffffff, "VIA1612A", NULL, NULL }, // modified ICE1232 with S/PDIF |
162 | { 0x56494170, 0xffffffff, "VIA1617A", patch_vt1617a, NULL }, // modified VT1616 with S/PDIF | 162 | { 0x56494170, 0xffffffff, "VIA1617A", patch_vt1617a, NULL }, // modified VT1616 with S/PDIF |
163 | { 0x56494182, 0xffffffff, "VIA1618", NULL, NULL }, | ||
163 | { 0x57454301, 0xffffffff, "W83971D", NULL, NULL }, | 164 | { 0x57454301, 0xffffffff, "W83971D", NULL, NULL }, |
164 | { 0x574d4c00, 0xffffffff, "WM9701A", NULL, NULL }, | 165 | { 0x574d4c00, 0xffffffff, "WM9701A", NULL, NULL }, |
165 | { 0x574d4C03, 0xffffffff, "WM9703,WM9707,WM9708,WM9717", patch_wolfson03, NULL}, | 166 | { 0x574d4C03, 0xffffffff, "WM9703,WM9707,WM9708,WM9717", patch_wolfson03, NULL}, |
diff --git a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h index d65ccb1866a0..f078b716d2b0 100644 --- a/sound/pci/au88x0/au88x0.h +++ b/sound/pci/au88x0/au88x0.h | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | #include <sound/driver.h> | 21 | #include <sound/driver.h> |
22 | #include <linux/init.h> | ||
23 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
24 | #include <asm/io.h> | 23 | #include <asm/io.h> |
25 | #include <sound/core.h> | 24 | #include <sound/core.h> |
@@ -277,14 +276,14 @@ static void vortex_Vort3D_InitializeSource(a3dsrc_t * a, int en); | |||
277 | #endif | 276 | #endif |
278 | 277 | ||
279 | /* Driver stuff. */ | 278 | /* Driver stuff. */ |
280 | static int __devinit vortex_gameport_register(vortex_t * card); | 279 | static int vortex_gameport_register(vortex_t * card); |
281 | static void vortex_gameport_unregister(vortex_t * card); | 280 | static void vortex_gameport_unregister(vortex_t * card); |
282 | #ifndef CHIP_AU8820 | 281 | #ifndef CHIP_AU8820 |
283 | static int __devinit vortex_eq_init(vortex_t * vortex); | 282 | static int vortex_eq_init(vortex_t * vortex); |
284 | static int __devexit vortex_eq_free(vortex_t * vortex); | 283 | static int vortex_eq_free(vortex_t * vortex); |
285 | #endif | 284 | #endif |
286 | /* ALSA stuff. */ | 285 | /* ALSA stuff. */ |
287 | static int __devinit snd_vortex_new_pcm(vortex_t * vortex, int idx, int nr); | 286 | static int snd_vortex_new_pcm(vortex_t * vortex, int idx, int nr); |
288 | static int __devinit snd_vortex_mixer(vortex_t * vortex); | 287 | static int snd_vortex_mixer(vortex_t * vortex); |
289 | static int __devinit snd_vortex_midi(vortex_t * vortex); | 288 | static int snd_vortex_midi(vortex_t * vortex); |
290 | #endif | 289 | #endif |
diff --git a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c index 9cac02e93b25..4347e6abc1d5 100644 --- a/sound/pci/au88x0/au88x0_core.c +++ b/sound/pci/au88x0/au88x0_core.c | |||
@@ -2658,7 +2658,7 @@ static void vortex_spdif_init(vortex_t * vortex, int spdif_sr, int spdif_mode) | |||
2658 | 2658 | ||
2659 | /* Initialization */ | 2659 | /* Initialization */ |
2660 | 2660 | ||
2661 | static int vortex_core_init(vortex_t * vortex) | 2661 | static int __devinit vortex_core_init(vortex_t * vortex) |
2662 | { | 2662 | { |
2663 | 2663 | ||
2664 | printk(KERN_INFO "Vortex: init.... "); | 2664 | printk(KERN_INFO "Vortex: init.... "); |
diff --git a/sound/pci/au88x0/au88x0_eq.c b/sound/pci/au88x0/au88x0_eq.c index 64fbfbbaf816..0c86a31c4336 100644 --- a/sound/pci/au88x0/au88x0_eq.c +++ b/sound/pci/au88x0/au88x0_eq.c | |||
@@ -885,7 +885,7 @@ static char *EqBandLabels[10] __devinitdata = { | |||
885 | }; | 885 | }; |
886 | 886 | ||
887 | /* ALSA driver entry points. Init and exit. */ | 887 | /* ALSA driver entry points. Init and exit. */ |
888 | static int vortex_eq_init(vortex_t * vortex) | 888 | static int __devinit vortex_eq_init(vortex_t * vortex) |
889 | { | 889 | { |
890 | struct snd_kcontrol *kcontrol; | 890 | struct snd_kcontrol *kcontrol; |
891 | int err, i; | 891 | int err, i; |
diff --git a/sound/pci/au88x0/au88x0_pcm.c b/sound/pci/au88x0/au88x0_pcm.c index 6a13ca1d545e..7b5baa173859 100644 --- a/sound/pci/au88x0/au88x0_pcm.c +++ b/sound/pci/au88x0/au88x0_pcm.c | |||
@@ -506,7 +506,7 @@ static int __devinit snd_vortex_new_pcm(vortex_t * chip, int idx, int nr) | |||
506 | int i; | 506 | int i; |
507 | int err, nr_capt; | 507 | int err, nr_capt; |
508 | 508 | ||
509 | if ((chip == 0) || (idx < 0) || (idx > VORTEX_PCM_LAST)) | 509 | if ((chip == 0) || (idx < 0) || (idx >= VORTEX_PCM_LAST)) |
510 | return -ENODEV; | 510 | return -ENODEV; |
511 | 511 | ||
512 | /* idx indicates which kind of PCM device. ADB, SPDIF, I2S and A3D share the | 512 | /* idx indicates which kind of PCM device. ADB, SPDIF, I2S and A3D share the |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index 31cb9b48bb59..6bfa08436efa 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
@@ -843,8 +843,11 @@ static struct snd_emu_chip_details emu_chip_details[] = { | |||
843 | .spdif_bug = 1, | 843 | .spdif_bug = 1, |
844 | .ac97_chip = 1} , | 844 | .ac97_chip = 1} , |
845 | /* Tested by shane-alsa@cm.nu 5th Nov 2005 */ | 845 | /* Tested by shane-alsa@cm.nu 5th Nov 2005 */ |
846 | /* The 0x20061102 does have SB0350 written on it | ||
847 | * Just like 0x20021102 | ||
848 | */ | ||
846 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20061102, | 849 | {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20061102, |
847 | .driver = "Audigy2", .name = "Audigy 2 [2006]", | 850 | .driver = "Audigy2", .name = "Audigy 2 [SB0350b]", |
848 | .id = "Audigy2", | 851 | .id = "Audigy2", |
849 | .emu10k2_chip = 1, | 852 | .emu10k2_chip = 1, |
850 | .ca0102_chip = 1, | 853 | .ca0102_chip = 1, |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 2bfe37e8543c..bcfca159c6a2 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -801,6 +801,10 @@ static struct hda_board_config ad1986a_cfg_tbl[] = { | |||
801 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ | 801 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ |
802 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, | 802 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, |
803 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS A6J */ | 803 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS A6J */ |
804 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x11f7, | ||
805 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5A */ | ||
806 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, | ||
807 | .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ | ||
804 | {} | 808 | {} |
805 | }; | 809 | }; |
806 | 810 | ||
@@ -1330,6 +1334,8 @@ static struct hda_board_config ad1981_cfg_tbl[] = { | |||
1330 | .config = AD1981_HP }, /* HP nx6320 */ | 1334 | .config = AD1981_HP }, /* HP nx6320 */ |
1331 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x309f, | 1335 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x309f, |
1332 | .config = AD1981_HP }, /* HP nx9420 AngelFire */ | 1336 | .config = AD1981_HP }, /* HP nx9420 AngelFire */ |
1337 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x30a2, | ||
1338 | .config = AD1981_HP }, /* HP nx9420 AngelFire */ | ||
1333 | { .modelname = "basic", .config = AD1981_BASIC }, | 1339 | { .modelname = "basic", .config = AD1981_BASIC }, |
1334 | {} | 1340 | {} |
1335 | }; | 1341 | }; |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index abe9493f0a2c..715260787953 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -310,6 +310,9 @@ static struct hda_board_config stac922x_cfg_tbl[] = { | |||
310 | .pci_subdevice = 0x0b0b, | 310 | .pci_subdevice = 0x0b0b, |
311 | .config = STAC_D945GTP3 }, /* Intel D945PSN - 3 Stack, 9221 A1 */ | 311 | .config = STAC_D945GTP3 }, /* Intel D945PSN - 3 Stack, 9221 A1 */ |
312 | { .pci_subvendor = PCI_VENDOR_ID_INTEL, | 312 | { .pci_subvendor = PCI_VENDOR_ID_INTEL, |
313 | .pci_subdevice = 0x0707, | ||
314 | .config = STAC_D945GTP5 }, /* Intel D945PSV - 5 Stack */ | ||
315 | { .pci_subvendor = PCI_VENDOR_ID_INTEL, | ||
313 | .pci_subdevice = 0x0404, | 316 | .pci_subdevice = 0x0404, |
314 | .config = STAC_D945GTP5 }, /* Intel D945GTP - 5 Stack */ | 317 | .config = STAC_D945GTP5 }, /* Intel D945GTP - 5 Stack */ |
315 | { .pci_subvendor = PCI_VENDOR_ID_INTEL, | 318 | { .pci_subvendor = PCI_VENDOR_ID_INTEL, |
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 1e7398de2865..0f171dd1377b 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c | |||
@@ -2333,6 +2333,7 @@ static int __devinit check_dxs_list(struct pci_dev *pci) | |||
2333 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ | 2333 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ |
2334 | { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ | 2334 | { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ |
2335 | { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC }, | 2335 | { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC }, |
2336 | { .subvendor = 0x1019, .subdevice = 0xaa01, .action = VIA_DXS_SRC }, /* ECS K8T890-A */ | ||
2336 | { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ | 2337 | { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ |
2337 | { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ | 2338 | { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ |
2338 | { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ | 2339 | { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ |