summaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
authorTakashi Iwai2015-02-19 17:35:32 +0100
committerTakashi Iwai2015-02-26 15:37:02 +0100
commit55ed9cd1feee80764937913afe760161b86cfb11 (patch)
treed5e76b6e55acce0fcc32c4cf3fcd5f617c20b6d6 /sound/pci/hda/hda_intel.c
parentALSA: hda - Drop power_save value indirection in hda_bus (diff)
downloadkernel-qcow2-linux-55ed9cd1feee80764937913afe760161b86cfb11.tar.gz
kernel-qcow2-linux-55ed9cd1feee80764937913afe760161b86cfb11.tar.xz
kernel-qcow2-linux-55ed9cd1feee80764937913afe760161b86cfb11.zip
ALSA: hda - Replace bus pm_notify with the standard runtime PM framework
Now the final bit of runtime PM cleanup: instead of manual notification of the power up/down of the codec via hda_bus pm_notify ops, use the standard runtime PM feature. The child codec device will kick off the runtime PM of the parent (PCI) device upon suspend/resume automatically. For managing whether the link can be really turned off, we use the bit flags bus->codec_powered instead of the earlier bus->power_keep_link_on. flag. Each codec driver is responsible to set/clear the bit flag, and the controller device can be turned off only when all these bits are cleared. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 40540048b002..738d332351d5 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -918,7 +918,8 @@ static int azx_runtime_idle(struct device *dev)
if (chip->disabled || hda->init_failed)
return 0;
- if (!power_save_controller || !azx_has_pm_runtime(chip))
+ if (!power_save_controller || !azx_has_pm_runtime(chip) ||
+ chip->bus->codec_powered)
return -EBUSY;
return 0;
@@ -1084,7 +1085,6 @@ static int azx_free(struct azx *chip)
azx_stop_chip(chip);
}
- pci->dev.power.ignore_children = 0; /* FIXME */
if (chip->irq >= 0)
free_irq(chip->irq, (void*)chip);
if (chip->msi)
@@ -1794,7 +1794,6 @@ static int azx_probe(struct pci_dev *pci,
return err;
}
- pci->dev.power.ignore_children = 1; /* FIXME */
err = azx_create(card, pci, dev, pci_id->driver_data,
&pci_hda_ops, &chip);
if (err < 0)