Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Wed, 12 Apr 2006 16:54:39 +0000 (09:54 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 12 Apr 2006 16:54:39 +0000 (09:54 -0700)
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [ISDN]: Static overruns in drivers/isdn/i4l/isdn_ppp.c
  [WAN]: Remove broken and unmaintained Sangoma drivers.
  [BRIDGE] ebtables: fix allocation in net/bridge/netfilter/ebtables.c
  [DCCP]: Fix leak in net/dccp/ipv4.c
  [BRIDGE]: receive link-local on disabled ports.
  [IPv6] reassembly: Always compute hash under the fragment lock.

32 files changed:
include/sound/pcm.h
sound/core/oss/pcm_oss.c
sound/core/pcm.c
sound/core/pcm_native.c
sound/isa/ad1848/ad1848.c
sound/isa/adlib.c
sound/isa/cmi8330.c
sound/isa/cs423x/cs4231.c
sound/isa/cs423x/cs4236.c
sound/isa/es1688/es1688.c
sound/isa/es18xx.c
sound/isa/gus/gusclassic.c
sound/isa/gus/gusextreme.c
sound/isa/gus/gusmax.c
sound/isa/gus/interwave.c
sound/isa/opl3sa2.c
sound/isa/opti9xx/miro.c
sound/isa/opti9xx/opti92x-ad1848.c
sound/isa/sb/sb16.c
sound/isa/sb/sb8.c
sound/isa/sgalaxy.c
sound/isa/sscape.c
sound/isa/wavefront/wavefront.c
sound/pci/ac97/ac97_codec.c
sound/pci/au88x0/au88x0.h
sound/pci/au88x0/au88x0_core.c
sound/pci/au88x0/au88x0_eq.c
sound/pci/au88x0/au88x0_pcm.c
sound/pci/emu10k1/emu10k1_main.c
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_sigmatel.c
sound/pci/via82xx.c

index 66b1f08..df70e75 100644 (file)
@@ -367,7 +367,7 @@ struct snd_pcm_substream {
        struct snd_pcm_group self_group;        /* fake group for non linked substream (with substream lock inside) */
        struct snd_pcm_group *group;            /* pointer to current group */
        /* -- assigned files -- */
-       struct snd_pcm_file *file;
+       void *file;
        struct file *ffile;
        void (*pcm_release)(struct snd_pcm_substream *);
 #if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE)
@@ -898,7 +898,6 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples);
 const unsigned char *snd_pcm_format_silence_64(snd_pcm_format_t format);
 int snd_pcm_format_set_silence(snd_pcm_format_t format, void *buf, unsigned int frames);
 snd_pcm_format_t snd_pcm_build_linear_format(int width, int unsignd, int big_endian);
-const char *snd_pcm_format_name(snd_pcm_format_t format);
 
 void snd_pcm_set_ops(struct snd_pcm * pcm, int direction, struct snd_pcm_ops *ops);
 void snd_pcm_set_sync(struct snd_pcm_substream *substream);
index 91114c7..c5978d6 100644 (file)
@@ -1682,7 +1682,7 @@ static void snd_pcm_oss_init_substream(struct snd_pcm_substream *substream,
        substream->oss.setup = *setup;
        if (setup->nonblock)
                substream->ffile->f_flags |= O_NONBLOCK;
-       else
+       else if (setup->block)
                substream->ffile->f_flags &= ~O_NONBLOCK;
        runtime = substream->runtime;
        runtime->oss.params = 1;
@@ -1757,10 +1757,11 @@ static int snd_pcm_oss_open_file(struct file *file,
                }
 
                pcm_oss_file->streams[idx] = substream;
+               substream->file = pcm_oss_file;
                snd_pcm_oss_init_substream(substream, &setup[idx], minor);
        }
        
-       if (! pcm_oss_file->streams[0] && pcm_oss_file->streams[1]) {
+       if (!pcm_oss_file->streams[0] && !pcm_oss_file->streams[1]) {
                snd_pcm_oss_release_file(pcm_oss_file);
                return -EINVAL;
        }
@@ -1809,7 +1810,7 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file)
                err = -EFAULT;
                goto __error;
        }
-       memset(setup, 0, sizeof(*setup));
+       memset(setup, 0, sizeof(setup));
        if (file->f_mode & FMODE_WRITE)
                snd_pcm_oss_look_for_setup(pcm, SNDRV_PCM_STREAM_PLAYBACK,
                                           task_name, &setup[0]);
index 5d7eb12..122e10a 100644 (file)
@@ -196,7 +196,7 @@ static char *snd_pcm_format_names[] = {
        FORMAT(U18_3BE),
 };
 
-const char *snd_pcm_format_name(snd_pcm_format_t format)
+static const char *snd_pcm_format_name(snd_pcm_format_t format)
 {
        return snd_pcm_format_names[format];
 }
index 964e4c4..0860c5a 100644 (file)
@@ -2007,14 +2007,16 @@ static void pcm_release_private(struct snd_pcm_substream *substream)
 void snd_pcm_release_substream(struct snd_pcm_substream *substream)
 {
        snd_pcm_drop(substream);
-       if (substream->pcm_release)
-               substream->pcm_release(substream);
        if (substream->hw_opened) {
                if (substream->ops->hw_free != NULL)
                        substream->ops->hw_free(substream);
                substream->ops->close(substream);
                substream->hw_opened = 0;
        }
+       if (substream->pcm_release) {
+               substream->pcm_release(substream);
+               substream->pcm_release = NULL;
+       }
        snd_pcm_detach_substream(substream);
 }
 
index 326a057..99908e4 100644 (file)
@@ -193,9 +193,11 @@ static int __init alsa_card_ad1848_init(void)
                        continue;
                device = platform_device_register_simple(SND_AD1848_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -204,14 +206,10 @@ static int __init alsa_card_ad1848_init(void)
 #ifdef MODULE
                printk(KERN_ERR "AD1848 soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_ad1848_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_ad1848_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_ad1848_exit(void)
index a253a14..1124344 100644 (file)
@@ -43,8 +43,7 @@ static int __devinit snd_adlib_probe(struct platform_device *device)
        struct snd_card *card;
        struct snd_opl3 *opl3;
 
-       int error;
-       int i = device->id;
+       int error, i = device->id;
 
        if (port[i] == SNDRV_AUTO_PORT) {
                snd_printk(KERN_ERR DRV_NAME ": please specify port\n");
@@ -95,8 +94,7 @@ static int __devinit snd_adlib_probe(struct platform_device *device)
        return 0;
 
 out1:  snd_card_free(card);
- out0: error = -EINVAL; /* FIXME: should be the original error code */
-       return error;
+out0:  return error;
 }
 
 static int __devexit snd_adlib_remove(struct platform_device *device)
@@ -134,6 +132,11 @@ static int __init alsa_card_adlib_init(void)
                if (IS_ERR(device))
                        continue;
 
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
+               }
+
                devices[i] = device;
                cards++;
        }
index bc0f5eb..3c1e9fd 100644 (file)
@@ -699,9 +699,11 @@ static int __init alsa_card_cmi8330_init(void)
                        continue;
                device = platform_device_register_simple(CMI8330_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                cards++;
@@ -719,14 +721,10 @@ static int __init alsa_card_cmi8330_init(void)
 #ifdef MODULE
                snd_printk(KERN_ERR "CMI8330 not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_cmi8330_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_cmi8330_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_cmi8330_exit(void)
index a30dcd9..397310f 100644 (file)
@@ -209,9 +209,11 @@ static int __init alsa_card_cs4231_init(void)
                        continue;
                device = platform_device_register_simple(SND_CS4231_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -220,14 +222,10 @@ static int __init alsa_card_cs4231_init(void)
 #ifdef MODULE
                printk(KERN_ERR "CS4231 soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_cs4231_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_cs4231_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_cs4231_exit(void)
index 382bb17..f7fa779 100644 (file)
@@ -780,9 +780,11 @@ static int __init alsa_card_cs423x_init(void)
                        continue;
                device = platform_device_register_simple(CS423X_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                snd_cs423x_devices++;
@@ -802,14 +804,10 @@ static int __init alsa_card_cs423x_init(void)
 #ifdef MODULE
                printk(KERN_ERR IDENT " soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_cs423x_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_cs423x_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_cs423x_exit(void)
index 2b69fc8..e90689e 100644 (file)
@@ -213,9 +213,11 @@ static int __init alsa_card_es1688_init(void)
                        continue;
                device = platform_device_register_simple(ES1688_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -224,14 +226,10 @@ static int __init alsa_card_es1688_init(void)
 #ifdef MODULE
                printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_es1688_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_es1688_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_es1688_exit(void)
index 9fbc185..a36ec1d 100644 (file)
@@ -2391,9 +2391,11 @@ static int __init alsa_card_es18xx_init(void)
                        continue;
                device = platform_device_register_simple(ES18XX_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                cards++;
@@ -2411,14 +2413,10 @@ static int __init alsa_card_es18xx_init(void)
 #ifdef MODULE
                snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_es18xx_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_es18xx_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_es18xx_exit(void)
index 26dccfe..37057a3 100644 (file)
@@ -253,9 +253,11 @@ static int __init alsa_card_gusclassic_init(void)
                        continue;
                device = platform_device_register_simple(GUSCLASSIC_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -264,14 +266,10 @@ static int __init alsa_card_gusclassic_init(void)
 #ifdef MODULE
                printk(KERN_ERR "GUS Classic soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_gusclassic_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_gusclassic_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_gusclassic_exit(void)
index 31dc205..05852fc 100644 (file)
@@ -363,9 +363,11 @@ static int __init alsa_card_gusextreme_init(void)
                        continue;
                device = platform_device_register_simple(GUSEXTREME_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -374,14 +376,10 @@ static int __init alsa_card_gusextreme_init(void)
 #ifdef MODULE
                printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_gusextreme_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_gusextreme_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_gusextreme_exit(void)
index cafb9b6..fcf2c8f 100644 (file)
@@ -390,9 +390,11 @@ static int __init alsa_card_gusmax_init(void)
                        continue;
                device = platform_device_register_simple(GUSMAX_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -401,14 +403,10 @@ static int __init alsa_card_gusmax_init(void)
 #ifdef MODULE
                printk(KERN_ERR "GUS MAX soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_gusmax_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_gusmax_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_gusmax_exit(void)
index de71b7a..4298d33 100644 (file)
@@ -947,9 +947,11 @@ static int __init alsa_card_interwave_init(void)
 #endif
                device = platform_device_register_simple(INTERWAVE_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                cards++;
@@ -966,14 +968,10 @@ static int __init alsa_card_interwave_init(void)
 #ifdef MODULE
                printk(KERN_ERR "InterWave soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_interwave_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_interwave_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_interwave_exit(void)
index c906e20..6d88905 100644 (file)
@@ -962,9 +962,11 @@ static int __init alsa_card_opl3sa2_init(void)
 #endif
                device = platform_device_register_simple(OPL3SA2_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                snd_opl3sa2_devices++;
@@ -983,14 +985,10 @@ static int __init alsa_card_opl3sa2_init(void)
 #ifdef MODULE
                snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_opl3sa2_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_opl3sa2_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_opl3sa2_exit(void)
index 09384d0..83d64bc 100644 (file)
@@ -1436,8 +1436,11 @@ static int __init alsa_card_miro_init(void)
        if ((error = platform_driver_register(&snd_miro_driver)) < 0)
                return error;
        device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
-       if (! IS_ERR(device))
-               return 0;
+       if (! IS_ERR(device)) {
+               if (platform_get_drvdata(device))
+                       return 0;
+               platform_device_unregister(device);
+       }
 #ifdef MODULE
        printk(KERN_ERR "no miro soundcard found\n");
 #endif
index 65b28cb..8ee0d70 100644 (file)
@@ -2099,8 +2099,11 @@ static int __init alsa_card_opti9xx_init(void)
                        return error;
                device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
                if (!IS_ERR(device)) {
-                       snd_opti9xx_platform_device = device;
-                       return 0;
+                       if (platform_get_drvdata(device)) {
+                               snd_opti9xx_platform_device = device;
+                               return 0;
+                       }
+                       platform_device_unregister(device);
                }
                platform_driver_unregister(&snd_opti9xx_driver);
        }
index 21ea659..6333f90 100644 (file)
@@ -720,9 +720,11 @@ static int __init alsa_card_sb16_init(void)
                        continue;
                device = platform_device_register_simple(SND_SB16_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                cards++;
@@ -745,14 +747,10 @@ static int __init alsa_card_sb16_init(void)
                snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n");
 #endif
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_sb16_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_sb16_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_sb16_exit(void)
index 3efa23d..141400c 100644 (file)
@@ -264,9 +264,11 @@ static int __init alsa_card_sb8_init(void)
                        continue;
                device = platform_device_register_simple(SND_SB8_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -275,14 +277,10 @@ static int __init alsa_card_sb8_init(void)
 #ifdef MODULE
                snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_sb8_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_sb8_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_sb8_exit(void)
index a60e66a..09c8e8c 100644 (file)
@@ -366,9 +366,11 @@ static int __init alsa_card_sgalaxy_init(void)
                        continue;
                device = platform_device_register_simple(SND_SGALAXY_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                devices[i] = device;
                cards++;
@@ -377,14 +379,10 @@ static int __init alsa_card_sgalaxy_init(void)
 #ifdef MODULE
                snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_sgalaxy_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_sgalaxy_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_sgalaxy_exit(void)
index 48e5552..d2a856f 100644 (file)
@@ -1427,8 +1427,8 @@ static int __init sscape_manual_probe(void)
                    dma[i] == SNDRV_AUTO_DMA) {
                        printk(KERN_INFO
                               "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n");
-                       ret = -ENXIO;
-                       goto errout;
+                       sscape_unregister_all();
+                       return -ENXIO;
                }
 
                /*
@@ -1436,17 +1436,15 @@ static int __init sscape_manual_probe(void)
                 */
                device = platform_device_register_simple(SSCAPE_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       ret = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
        }
        return 0;
-
- errout:
-       sscape_unregister_all();
-       return ret;
 }
 
 static void sscape_exit(void)
index 2f13cd5..7ae86f8 100644 (file)
@@ -722,9 +722,11 @@ static int __init alsa_card_wavefront_init(void)
 #endif
                device = platform_device_register_simple(WAVEFRONT_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       err = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
                cards++;
@@ -742,14 +744,10 @@ static int __init alsa_card_wavefront_init(void)
 #ifdef MODULE
                printk (KERN_ERR "No WaveFront cards found or devices busy\n");
 #endif
-               err = -ENODEV;
-               goto errout;
+               snd_wavefront_unregister_all();
+               return -ENODEV;
        }
        return 0;
-
- errout:
-       snd_wavefront_unregister_all();
-       return err;
 }
 
 static void __exit alsa_card_wavefront_exit(void)
index 278319b..d052007 100644 (file)
@@ -160,6 +160,7 @@ static const struct ac97_codec_id snd_ac97_codec_ids[] = {
 { 0x54584e20, 0xffffffff, "TLC320AD9xC",       NULL,           NULL },
 { 0x56494161, 0xffffffff, "VIA1612A",          NULL,           NULL }, // modified ICE1232 with S/PDIF
 { 0x56494170, 0xffffffff, "VIA1617A",          patch_vt1617a,  NULL }, // modified VT1616 with S/PDIF
+{ 0x56494182, 0xffffffff, "VIA1618",           NULL,           NULL },
 { 0x57454301, 0xffffffff, "W83971D",           NULL,           NULL },
 { 0x574d4c00, 0xffffffff, "WM9701A",           NULL,           NULL },
 { 0x574d4C03, 0xffffffff, "WM9703,WM9707,WM9708,WM9717", patch_wolfson03, NULL},
index d65ccb1..f078b71 100644 (file)
@@ -19,7 +19,6 @@
 
 #ifdef __KERNEL__
 #include <sound/driver.h>
-#include <linux/init.h>
 #include <linux/pci.h>
 #include <asm/io.h>
 #include <sound/core.h>
@@ -277,14 +276,14 @@ static void vortex_Vort3D_InitializeSource(a3dsrc_t * a, int en);
 #endif
 
 /* Driver stuff. */
-static int __devinit vortex_gameport_register(vortex_t * card);
+static int vortex_gameport_register(vortex_t * card);
 static void vortex_gameport_unregister(vortex_t * card);
 #ifndef CHIP_AU8820
-static int __devinit vortex_eq_init(vortex_t * vortex);
-static int __devexit vortex_eq_free(vortex_t * vortex);
+static int vortex_eq_init(vortex_t * vortex);
+static int vortex_eq_free(vortex_t * vortex);
 #endif
 /* ALSA stuff. */
-static int __devinit snd_vortex_new_pcm(vortex_t * vortex, int idx, int nr);
-static int __devinit snd_vortex_mixer(vortex_t * vortex);
-static int __devinit snd_vortex_midi(vortex_t * vortex);
+static int snd_vortex_new_pcm(vortex_t * vortex, int idx, int nr);
+static int snd_vortex_mixer(vortex_t * vortex);
+static int snd_vortex_midi(vortex_t * vortex);
 #endif
index 9cac02e..4347e6a 100644 (file)
@@ -2658,7 +2658,7 @@ static void vortex_spdif_init(vortex_t * vortex, int spdif_sr, int spdif_mode)
 
 /* Initialization */
 
-static int vortex_core_init(vortex_t * vortex)
+static int __devinit vortex_core_init(vortex_t * vortex)
 {
 
        printk(KERN_INFO "Vortex: init.... ");
index 64fbfbb..0c86a31 100644 (file)
@@ -885,7 +885,7 @@ static char *EqBandLabels[10] __devinitdata = {
 };
 
 /* ALSA driver entry points. Init and exit. */
-static int vortex_eq_init(vortex_t * vortex)
+static int __devinit vortex_eq_init(vortex_t * vortex)
 {
        struct snd_kcontrol *kcontrol;
        int err, i;
index 6a13ca1..7b5baa1 100644 (file)
@@ -506,7 +506,7 @@ static int __devinit snd_vortex_new_pcm(vortex_t * chip, int idx, int nr)
        int i;
        int err, nr_capt;
 
-       if ((chip == 0) || (idx < 0) || (idx > VORTEX_PCM_LAST))
+       if ((chip == 0) || (idx < 0) || (idx >= VORTEX_PCM_LAST))
                return -ENODEV;
 
        /* idx indicates which kind of PCM device. ADB, SPDIF, I2S and A3D share the 
index 31cb9b4..6bfa084 100644 (file)
@@ -843,8 +843,11 @@ static struct snd_emu_chip_details emu_chip_details[] = {
         .spdif_bug = 1,
         .ac97_chip = 1} ,
        /* Tested by shane-alsa@cm.nu 5th Nov 2005 */
+       /* The 0x20061102 does have SB0350 written on it
+        * Just like 0x20021102
+        */
        {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20061102,
-        .driver = "Audigy2", .name = "Audigy 2 [2006]", 
+        .driver = "Audigy2", .name = "Audigy 2 [SB0350b]", 
         .id = "Audigy2",
         .emu10k2_chip = 1,
         .ca0102_chip = 1,
index 2bfe37e..bcfca15 100644 (file)
@@ -801,6 +801,10 @@ static struct hda_board_config ad1986a_cfg_tbl[] = {
          .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */
        { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213,
          .config = AD1986A_LAPTOP_EAPD }, /* ASUS A6J */
+       { .pci_subvendor = 0x1043, .pci_subdevice = 0x11f7,
+         .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5A */
+       { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af,
+         .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */
        {}
 };
 
@@ -1330,6 +1334,8 @@ static struct hda_board_config ad1981_cfg_tbl[] = {
          .config = AD1981_HP }, /* HP nx6320 */
        { .pci_subvendor = 0x103c, .pci_subdevice = 0x309f,
          .config = AD1981_HP }, /* HP nx9420 AngelFire */
+       { .pci_subvendor = 0x103c, .pci_subdevice = 0x30a2,
+         .config = AD1981_HP }, /* HP nx9420 AngelFire */
        { .modelname = "basic", .config = AD1981_BASIC },
        {}
 };
index abe9493..7152607 100644 (file)
@@ -310,6 +310,9 @@ static struct hda_board_config stac922x_cfg_tbl[] = {
          .pci_subdevice = 0x0b0b,
          .config = STAC_D945GTP3 },    /* Intel D945PSN - 3 Stack, 9221 A1 */
        { .pci_subvendor = PCI_VENDOR_ID_INTEL,
+         .pci_subdevice = 0x0707,
+         .config = STAC_D945GTP5 },    /* Intel D945PSV - 5 Stack */
+       { .pci_subvendor = PCI_VENDOR_ID_INTEL,
          .pci_subdevice = 0x0404,
          .config = STAC_D945GTP5 },    /* Intel D945GTP - 5 Stack */
        { .pci_subvendor = PCI_VENDOR_ID_INTEL,
index 1e7398d..0f171dd 100644 (file)
@@ -2333,6 +2333,7 @@ static int __devinit check_dxs_list(struct pci_dev *pci)
                { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */
                { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */
                { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC },
+               { .subvendor = 0x1019, .subdevice = 0xaa01, .action = VIA_DXS_SRC }, /* ECS K8T890-A */
                { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */
                { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */
                { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/