ALSA: fm801: PCI core handles power state for us
authorAndy Shevchenko <andy.shevchenko@gmail.com>
Wed, 7 Jan 2015 22:39:17 +0000 (00:39 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 8 Jan 2015 07:25:38 +0000 (08:25 +0100)
There is no need to repeat the work that is already done in the PCI
driver core. The patch removes excerpts from suspend and resume
callbacks.

Note that there is no more calls performed to enable or disable a PCI
device during suspend-resume cycle. Nowadays they seems to be
superflous. Someone can read more in [1].

[1] https://www.kernel.org/doc/ols/2009/ols2009-pages-319-330.pdf

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/fm801.c

index dd6f23fbbdf90d36882b501dd2beaac51521bd4a..1a0494eff0c6b2eaba79f04a6f58fff05e28ff38 100644 (file)
@@ -1375,7 +1375,6 @@ static unsigned char saved_regs[] = {
 
 static int snd_fm801_suspend(struct device *dev)
 {
-       struct pci_dev *pci = to_pci_dev(dev);
        struct snd_card *card = dev_get_drvdata(dev);
        struct fm801 *chip = card->private_data;
        int i;
@@ -1387,29 +1386,15 @@ static int snd_fm801_suspend(struct device *dev)
        for (i = 0; i < ARRAY_SIZE(saved_regs); i++)
                chip->saved_regs[i] = inw(chip->port + saved_regs[i]);
        /* FIXME: tea575x suspend */
-
-       pci_disable_device(pci);
-       pci_save_state(pci);
-       pci_set_power_state(pci, PCI_D3hot);
        return 0;
 }
 
 static int snd_fm801_resume(struct device *dev)
 {
-       struct pci_dev *pci = to_pci_dev(dev);
        struct snd_card *card = dev_get_drvdata(dev);
        struct fm801 *chip = card->private_data;
        int i;
 
-       pci_set_power_state(pci, PCI_D0);
-       pci_restore_state(pci);
-       if (pci_enable_device(pci) < 0) {
-               dev_err(dev, "pci_enable_device failed, disabling device\n");
-               snd_card_disconnect(card);
-               return -EIO;
-       }
-       pci_set_master(pci);
-
        snd_fm801_chip_init(chip, 1);
        snd_ac97_resume(chip->ac97);
        snd_ac97_resume(chip->ac97_sec);