Merge branch 'xarray' of git://git.infradead.org/users/willy/linux-dax
[linux-2.6-block.git] / sound / pci / intel8x0m.c
index 943a726b1c1b066bc2339d1e410b5af154473309..c84629190cbaf72fecb4769b5fd596a25fce1fbc 100644 (file)
@@ -1171,16 +1171,6 @@ static int snd_intel8x0m_create(struct snd_card *card,
        }
 
  port_inited:
-       if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED,
-                       KBUILD_MODNAME, chip)) {
-               dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);
-               snd_intel8x0m_free(chip);
-               return -EBUSY;
-       }
-       chip->irq = pci->irq;
-       pci_set_master(pci);
-       synchronize_irq(chip->irq);
-
        /* initialize offsets */
        chip->bdbars_count = 2;
        tbl = intel_regs;
@@ -1224,11 +1214,21 @@ static int snd_intel8x0m_create(struct snd_card *card,
        chip->int_sta_reg = ICH_REG_GLOB_STA;
        chip->int_sta_mask = int_sta_masks;
 
+       pci_set_master(pci);
+
        if ((err = snd_intel8x0m_chip_init(chip, 1)) < 0) {
                snd_intel8x0m_free(chip);
                return err;
        }
 
+       if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED,
+                       KBUILD_MODNAME, chip)) {
+               dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);
+               snd_intel8x0m_free(chip);
+               return -EBUSY;
+       }
+       chip->irq = pci->irq;
+
        if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
                snd_intel8x0m_free(chip);
                return err;