Re: [GIT PULL] sound updates for 4.21

From: Ingo Molnar
Date: Fri Dec 28 2018 - 07:43:11 EST



* Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Thu, Dec 20, 2018 at 7:38 AM Takashi Iwai <tiwai@xxxxxxx> wrote:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git tags/sound-4.21-rc1
>
> Hmm.
>
> It turns out that commit c337104b1a16 ("ALSA: HD-Audio: SKL+: abort
> probe if DSP is present and Skylake driver selected") causes my laptop
> (XPS13 9350) to no longer suspend.

Just a wild guess, I can see two ways in which that commit could make a
difference on your setup:

1)

If any of these is not set in your .config:

+ select SND_HDA_INTEL_DSP_DETECTION_SKL if SND_SOC_INTEL_SKL
+ select SND_HDA_INTEL_DSP_DETECTION_APL if SND_SOC_INTEL_APL
+ select SND_HDA_INTEL_DSP_DETECTION_KBL if SND_SOC_INTEL_KBL
+ select SND_HDA_INTEL_DSP_DETECTION_GLK if SND_SOC_INTEL_GLK
+ select SND_HDA_INTEL_DSP_DETECTION_CNL if SND_SOC_INTEL_CNL
+ select SND_HDA_INTEL_DSP_DETECTION_CFL if SND_SOC_INTEL_CFL

I.e. I'd enable all of the SND_SOC_INTEL_* options to cover this angle.

2)

There's the added logic of checking whether the DSP is enabled:

+ /* check if this driver can be used on SKL+ Intel platforms */
+ if ((pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) &&
+ pci->class != 0x040300)
+ return -ENODEV;
+

if pci->class is not 0x040300 the driver could end up not detecting the
device while previously it would.

That code goes through several transformations later on - but the hack
below should make the commit an invariant. I think. Totally untested
though.

Thanks,

Ingo


==============>

sound/pci/hda/hda_intel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index e42cc2230977..f9e9c87f6d15 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -2056,7 +2056,7 @@ static int azx_probe(struct pci_dev *pci,
if (pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) {
switch (skl_pci_binding) {
case SND_SKL_PCI_BIND_AUTO:
- if (pci->class != 0x040300) {
+ if (0 && pci->class != 0x040300) {
dev_info(&pci->dev, "The DSP is enabled on this platform, aborting probe\n");
return -ENODEV;
}