diff options
Diffstat (limited to 'SOURCES/0001-ALSA-hda-Workaround-for-spurious-wakeups-on-some-Int.patch')
-rw-r--r-- | SOURCES/0001-ALSA-hda-Workaround-for-spurious-wakeups-on-some-Int.patch | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/SOURCES/0001-ALSA-hda-Workaround-for-spurious-wakeups-on-some-Int.patch b/SOURCES/0001-ALSA-hda-Workaround-for-spurious-wakeups-on-some-Int.patch deleted file mode 100644 index 1a36632..0000000 --- a/SOURCES/0001-ALSA-hda-Workaround-for-spurious-wakeups-on-some-Int.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 2b796b34a3b9ade3307304121a726d318641415a Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <tiwai@suse.de> -Date: Mon, 27 Jul 2020 17:19:18 +0200 -Subject: [PATCH] ALSA: hda: Workaround for spurious wakeups on some Intel - platforms - -We've received a regression report on Intel HD-audio controller that -wakes up immediately after S3 suspend. The bisection leads to the -commit c4c8dd6ef807 ("ALSA: hda: Skip controller resume if not -needed"). This commit replaces the system-suspend to use -pm_runtime_force_suspend() instead of the direct call of -__azx_runtime_suspend(). However, by some really mysterious reason, -pm_runtime_force_suspend() causes a spurious wakeup (although it calls -the same __azx_runtime_suspend() internally). - -As an ugly workaround for now, revert the behavior to call -__azx_runtime_suspend() and __azx_runtime_resume() for those old Intel -platforms that may exhibit such a problem, while keeping the new -standard pm_runtime_force_suspend() and pm_runtime_force_resume() -pair for the remaining chips. - -Fixes: c4c8dd6ef807 ("ALSA: hda: Skip controller resume if not needed") -BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=208649 -Cc: <stable@vger.kernel.org> -Signed-off-by: Takashi Iwai <tiwai@suse.de> ---- - sound/pci/hda/hda_controller.h | 2 +- - sound/pci/hda/hda_intel.c | 17 ++++++++++++++--- - 2 files changed, 15 insertions(+), 4 deletions(-) - -diff --git a/sound/pci/hda/hda_controller.h b/sound/pci/hda/hda_controller.h -index fe171685492d..be63ead8161f 100644 ---- a/sound/pci/hda/hda_controller.h -+++ b/sound/pci/hda/hda_controller.h -@@ -41,7 +41,7 @@ - /* 24 unused */ - #define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */ - #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ --/* 27 unused */ -+#define AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP (1 << 27) /* Workaround for spurious wakeups after suspend */ - #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */ - #define AZX_DCAPS_NO_MSI64 (1 << 29) /* Stick to 32-bit MSIs */ - #define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */ -diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c -index 9ba1fb8f0b7f..fb65450d8de1 100644 ---- a/sound/pci/hda/hda_intel.c -+++ b/sound/pci/hda/hda_intel.c -@@ -297,7 +297,8 @@ enum { - /* PCH for HSW/BDW; with runtime PM */ - /* no i915 binding for this as HSW/BDW has another controller for HDMI */ - #define AZX_DCAPS_INTEL_PCH \ -- (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME) -+ (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\ -+ AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) - - /* HSW HDMI */ - #define AZX_DCAPS_INTEL_HASWELL \ -@@ -1026,7 +1027,14 @@ static int azx_suspend(struct device *dev) - chip = card->private_data; - bus = azx_bus(chip); - snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); -- pm_runtime_force_suspend(dev); -+ /* An ugly workaround: direct call of __azx_runtime_suspend() and -+ * __azx_runtime_resume() for old Intel platforms that suffer from -+ * spurious wakeups after S3 suspend -+ */ -+ if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) -+ __azx_runtime_suspend(chip); -+ else -+ pm_runtime_force_suspend(dev); - if (bus->irq >= 0) { - free_irq(bus->irq, chip); - bus->irq = -1; -@@ -1055,7 +1063,10 @@ static int azx_resume(struct device *dev) - if (azx_acquire_irq(chip, 1) < 0) - return -EIO; - -- pm_runtime_force_resume(dev); -+ if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) -+ __azx_runtime_resume(chip, false); -+ else -+ pm_runtime_force_resume(dev); - snd_power_change_state(card, SNDRV_CTL_POWER_D0); - - trace_azx_resume(chip); --- -2.26.2 - |