On 12/31/18 7:43 AM, Azat Khuzhin wrote:
+/* CFL and later models, preferring ASoC when DSP is available */ +#define IS_CFL_PLUS(pci) \ + ((pci)->vendor == 0x8086 && \ + ((pci)->device == 0xa348 || \ + (pci)->device == 0x9dc8 || \ + (pci)->device == 0x34c8)) + static char *driver_short_names[] = { [AZX_DRIVER_ICH] = "HDA Intel", [AZX_DRIVER_PCH] = "HDA Intel PCH", @@ -2056,7 +2063,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 (pci->class != 0x040300 && IS_CFL_PLUS(pci)) { dev_info(&pci->dev, "The DSP is enabled on this platform, aborting probe\n"); return -ENODEV; }lenovo thinkpad carbon 6th gen - no sound after this patch, and this patch should fix sound issue for it (not tested, just checking the condition and pci attrs) But what interesting is that I cannot remove snd_soc_skl module without reboot (to adjust "pci_binding=1" so make sound works), because kernel hang after short period doing it: # rmmod snd_soc_skl_ssp_clk # rmmod snd_soc_skl WARN_ON triggered on rmmod:
This is unfortunately a known issue with this driver, Takashi and I had a couple of email threads on this. Even without errors removing the module doesn't seem to release all resources. I don't like this at all, and for the Sound Open Firmware (SOF) driver I mandated module load-unload as a functional requirement along with zero warnings w/ Sparse, Coccinelle and friends, but on this legacy code I am afraid there is no simple fix - at least not in a merge window or a single kernel cycle.

