Patch "ALSA: hda - Apply clock gate workaround to Skylake, too" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ALSA: hda - Apply clock gate workaround to Skylake, too
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
alsa-hda-apply-clock-gate-workaround-to-skylake-too.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7e31a0159461818a1bda49662921b98a29c1187bMon Sep 17 00:00:00 2001
From: Takashi Iwai <[email protected]>
Date: Mon, 22 Feb 2016 15:18:13 +0100
Subject: ALSA: hda - Apply clock gate workaround to Skylake, too
From: Takashi Iwai <[email protected]>
commit 7e31a0159461818a1bda49662921b98a29c1187b upstream.
Some Skylake machines show the codec probe errors in certain
situations, e.g. HP Z240 desktop fails to probe the onboard Realtek
codec at reloading the snd-hda-intel module like:
snd_hda_intel 0000:00:1f.3: spurious response 0x200:0x2, last cmd=0x000000 snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: lastcmd=0x000f0000 snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x000f0000 snd_hda_intel 0000:00:1f.3: Codec #0 probe error; disabling it...
hdaudio hdaudioC0D2: no AFG or MFG node found
snd_hda_intel 0000:00:1f.3: no codecs initialized
Also, HP G470 G3 suffers from the similar problem, as reported in bugzilla below. On this machine, the codec probe error appears even at a fresh boot.
As Libin suggested, the same workaround used for Broxton in the commit [6639484ddaf6: ALSA: hda - disable dynamic clock gating on Broxton
before reset] can be applied for Skylake in order to fix this problem.
The Intel HW team also confirmed that this is needed for SKL.
This patch makes the workaround applied to both SKL and BXT platforms. The referred macros are moved and one superfluous macro (IS_BROXTON()) is another one (IS_BXT()) as well.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112731
--- sound/pci/hda/hda_intel.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
sound/pci/hda/hda_intel.c +7 -9
@@ -357,7 +357,10 @@ enum { ((pci)->device == 0x0d0c) || \ ((pci)->device == 0x160c)) -#define IS_BROXTON (pci) ((pci)->device == 0x5a98) +#define IS_SKL (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170) +#define IS_SKL_LP (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) +#define IS_BXT (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) +#define IS_SKL_PLUS (pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci))static char *driver_short_names[] = { [AZX_DRIVER_ICH ] ="HDA Intel" ,
@@ -534,13 +537,13 @@ static void hda_intel_init_chip(struct aif (chip->driver_caps &AZX_DCAPS_I915_POWERWELL )snd_hdac_set_codec_wakeup (bus, true); -if (IS_BROXTON (pci)) { +if (IS_SKL_PLUS (pci)) {pci_read_config_dword (pci,INTEL_HDA_CGCTL , &val); val = val & ~INTEL_HDA_CGCTL_MISCBDCGE ;pci_write_config_dword (pci,INTEL_HDA_CGCTL , val); }azx_init_chip (chip, full_reset); -if (IS_BROXTON (pci)) { +if (IS_SKL_PLUS (pci)) {pci_read_config_dword (pci,INTEL_HDA_CGCTL , &val); val = val |INTEL_HDA_CGCTL_MISCBDCGE ;pci_write_config_dword (pci,INTEL_HDA_CGCTL , val);
@@ -549,7 +552,7 @@ static void hda_intel_init_chip(struct asnd_hdac_set_codec_wakeup (bus, false);/* reduce dma latency to avoid noise */ -if (IS_BROXTON (pci)) +if (IS_BXT (pci))bxt_reduce_dma_latency (chip); }
@@ -971,11 +974,6 @@ static int azx_resume(struct device *dev/* put codec down to D3 at hibernation for Intel SKL+; * otherwise BIOS may still access the codec and screw up the driver */ -#define IS_SKL (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170) -#define IS_SKL_LP (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) -#define IS_BXT (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) -#define IS_SKL_PLUS (pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) -static int azx_freeze_noirq (struct device *dev) {struct pci_dev *pci =to_pci_dev (dev);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/alsa-hda-fixing-background-noise-on-dell-inspiron-3162.patch queue-4.4/alsa-hda-apply-clock-gate-workaround-to-skylake-too.patch queue-4.4/bcache-add-a-cond_resched-call-to-gc.patch