nfsd4: fix bare destroy_session null dereference
[safe/jmp/linux-2.6] / sound / pci / ens1370.c
index 72d85a5..c7fba53 100644 (file)
@@ -443,14 +443,14 @@ struct ensoniq {
 
 static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id);
 
-static struct pci_device_id snd_audiopci_ids[] = {
+static DEFINE_PCI_DEVICE_TABLE(snd_audiopci_ids) = {
 #ifdef CHIP1370
-       { 0x1274, 0x5000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },   /* ES1370 */
+       { PCI_VDEVICE(ENSONIQ, 0x5000), 0, },   /* ES1370 */
 #endif
 #ifdef CHIP1371
-       { 0x1274, 0x1371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },   /* ES1371 */
-       { 0x1274, 0x5880, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },   /* ES1373 - CT5880 */
-       { 0x1102, 0x8938, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },   /* Ectiva EV1938 */
+       { PCI_VDEVICE(ENSONIQ, 0x1371), 0, },   /* ES1371 */
+       { PCI_VDEVICE(ENSONIQ, 0x5880), 0, },   /* ES1373 - CT5880 */
+       { PCI_VDEVICE(ECTIVA, 0x8938), 0, },    /* Ectiva EV1938 */
 #endif
        { 0, }
 };
@@ -522,7 +522,7 @@ static unsigned int snd_es1371_wait_src_ready(struct ensoniq * ensoniq)
                        return r;
                cond_resched();
        }
-       snd_printk(KERN_ERR "wait source ready timeout 0x%lx [0x%x]\n",
+       snd_printk(KERN_ERR "wait src ready timeout 0x%lx [0x%x]\n",
                   ES_REG(ensoniq, 1371_SMPRATE), r);
        return 0;
 }
@@ -584,7 +584,8 @@ static void snd_es1370_codec_write(struct snd_ak4531 *ak4531,
        unsigned long end_time = jiffies + HZ / 10;
 
 #if 0
-       printk("CODEC WRITE: reg = 0x%x, val = 0x%x (0x%x), creg = 0x%x\n",
+       printk(KERN_DEBUG
+              "CODEC WRITE: reg = 0x%x, val = 0x%x (0x%x), creg = 0x%x\n",
               reg, val, ES_1370_CODEC_WRITE(reg, val), ES_REG(ensoniq, 1370_CODEC));
 #endif
        do {
@@ -1629,26 +1630,27 @@ static int __devinit snd_ensoniq_1371_mixer(struct ensoniq *ensoniq,
        memset(&ac97, 0, sizeof(ac97));
        ac97.private_data = ensoniq;
        ac97.private_free = snd_ensoniq_mixer_free_ac97;
+       ac97.pci = ensoniq->pci;
        ac97.scaps = AC97_SCAP_AUDIO;
        if ((err = snd_ac97_mixer(pbus, &ac97, &ensoniq->u.es1371.ac97)) < 0)
                return err;
        if (has_spdif > 0 ||
            (!has_spdif && es1371_quirk_lookup(ensoniq, es1371_spdif_present))) {
                struct snd_kcontrol *kctl;
-               int i, index = 0;
+               int i, is_spdif = 0;
 
                ensoniq->spdif_default = ensoniq->spdif_stream =
                        SNDRV_PCM_DEFAULT_CON_SPDIF;
                outl(ensoniq->spdif_default, ES_REG(ensoniq, CHANNEL_STATUS));
 
                if (ensoniq->u.es1371.ac97->ext_id & AC97_EI_SPDIF)
-                       index++;
+                       is_spdif++;
 
                for (i = 0; i < ARRAY_SIZE(snd_es1371_mixer_spdif); i++) {
                        kctl = snd_ctl_new1(&snd_es1371_mixer_spdif[i], ensoniq);
                        if (!kctl)
                                return -ENOMEM;
-                       kctl->id.index = index;
+                       kctl->id.index = is_spdif;
                        err = snd_ctl_add(card, kctl);
                        if (err < 0)
                                return err;
@@ -1910,7 +1912,8 @@ static int snd_ensoniq_free(struct ensoniq *ensoniq)
        outl(0, ES_REG(ensoniq, CONTROL));      /* switch everything off */
        outl(0, ES_REG(ensoniq, SERIAL));       /* clear serial interface */
 #endif
-       synchronize_irq(ensoniq->irq);
+       if (ensoniq->irq >= 0)
+               synchronize_irq(ensoniq->irq);
        pci_set_power_state(ensoniq->pci, 3);
       __hw_end:
 #ifdef CHIP1370
@@ -2407,9 +2410,9 @@ static int __devinit snd_audiopci_probe(struct pci_dev *pci,
                return -ENOENT;
        }
 
-       card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
-       if (card == NULL)
-               return -ENOMEM;
+       err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       if (err < 0)
+               return err;
 
        if ((err = snd_ensoniq_create(card, pci, &ensoniq)) < 0) {
                snd_card_free(card);