| From 175b20ef83ab7a8fc116555f5b384465c96a1c10 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Mon, 13 Apr 2020 10:20:30 +0200 |
| Subject: [PATCH] ALSA: hda: Honor PM disablement in PM freeze and thaw_noirq |
| ops |
| |
| commit 10db5bccc390e8e4bd9fcd1fbd4f1b23f271a405 upstream. |
| |
| freeze_noirq and thaw_noirq need to check the PM availability like |
| other PM ops. There are cases where the device got disabled due to |
| the error, and the PM operation should be ignored for that. |
| |
| Fixes: 3e6db33aaf1d ("ALSA: hda - Set SKL+ hda controller power at freeze() and thaw()") |
| BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043 |
| Link: https://lore.kernel.org/r/20200413082034.25166-3-tiwai@suse.de |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c |
| index 5e2aedad412c..90ad9504f7af 100644 |
| --- a/sound/pci/hda/hda_intel.c |
| +++ b/sound/pci/hda/hda_intel.c |
| @@ -1068,6 +1068,8 @@ static int azx_freeze_noirq(struct device *dev) |
| struct azx *chip = card->private_data; |
| struct pci_dev *pci = to_pci_dev(dev); |
| |
| + if (!azx_is_pm_ready(card)) |
| + return 0; |
| if (chip->driver_type == AZX_DRIVER_SKL) |
| pci_set_power_state(pci, PCI_D3hot); |
| |
| @@ -1080,6 +1082,8 @@ static int azx_thaw_noirq(struct device *dev) |
| struct azx *chip = card->private_data; |
| struct pci_dev *pci = to_pci_dev(dev); |
| |
| + if (!azx_is_pm_ready(card)) |
| + return 0; |
| if (chip->driver_type == AZX_DRIVER_SKL) |
| pci_set_power_state(pci, PCI_D0); |
| |
| -- |
| 2.7.4 |
| |