X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=sound%2Fpci%2Friptide%2Friptide.c;h=952625dead58ef56973f48fbbe122cc63fd8a58e;hb=b643b0fdbc59cf6bbb086974b29d2571e9e9f646;hp=fe210c853442c8c551aa0193bb1bfba3c95d82f5;hpb=cdb8355add9b1d87ecfcb58b12879897dc1e3e36;p=linux-2.6-omap-h63xx.git diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c index fe210c85344..952625dead5 100644 --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c @@ -1178,9 +1178,9 @@ static int riptide_suspend(struct pci_dev *pci, pm_message_t state) snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); snd_ac97_suspend(chip->ac97); - pci_set_power_state(pci, PCI_D3hot); pci_disable_device(pci); pci_save_state(pci); + pci_set_power_state(pci, pci_choose_state(pci, state)); return 0; } @@ -1189,9 +1189,14 @@ static int riptide_resume(struct pci_dev *pci) struct snd_card *card = pci_get_drvdata(pci); struct snd_riptide *chip = card->private_data; - pci_restore_state(pci); - pci_enable_device(pci); pci_set_power_state(pci, PCI_D0); + pci_restore_state(pci); + if (pci_enable_device(pci) < 0) { + printk(KERN_ERR "riptide: pci_enable_device failed, " + "disabling device\n"); + snd_card_disconnect(card); + return -EIO; + } pci_set_master(pci); snd_riptide_initialize(chip); snd_ac97_resume(chip->ac97); @@ -1736,7 +1741,7 @@ snd_riptide_pcm(struct snd_riptide *chip, int device, struct snd_pcm **rpcm) } static irqreturn_t -snd_riptide_interrupt(int irq, void *dev_id, struct pt_regs *regs) +snd_riptide_interrupt(int irq, void *dev_id) { struct snd_riptide *chip = dev_id; struct cmdif *cif = chip->cif; @@ -1751,8 +1756,7 @@ snd_riptide_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (chip->rmidi && IS_MPUIRQ(cif->hwport)) { chip->handled_irqs++; snd_mpu401_uart_interrupt(irq, - chip->rmidi->private_data, - regs); + chip->rmidi->private_data); } SET_AIACK(cif->hwport); } @@ -1895,9 +1899,8 @@ snd_riptide_create(struct snd_card *card, struct pci_dev *pci, hwport = (struct riptideport *)chip->port; UNSET_AIE(hwport); - if (request_irq - (pci->irq, snd_riptide_interrupt, IRQF_DISABLED | IRQF_SHARED, - "RIPTIDE", chip)) { + if (request_irq(pci->irq, snd_riptide_interrupt, IRQF_SHARED, + "RIPTIDE", chip)) { snd_printk(KERN_ERR "Riptide: unable to grab IRQ %d\n", pci->irq); snd_riptide_free(chip); @@ -1916,6 +1919,8 @@ snd_riptide_create(struct snd_card *card, struct pci_dev *pci, return err; } + snd_card_set_dev(card, &pci->dev); + *rchip = chip; return 0; }