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.


Reply via email to