Jaroslav, I found a case where the logic doesn't seem to work as intended.
the code currently scans through the table looking for a PCI ID match, and a DMI match for quirks.
On a KBL NUC device with the DSP enabled, we go through the entire list without finding a match, which means we return the _ANY flag. so if we try to probe the snd-soc-skl driver, the checks will allow the driver to continue, despite this configuration not being supported.
It was my understanding that we would always load the legacy driver *unless* there is a match in the table? If yes, there we can change the default this way:
@@ -333,7 +355,7 @@ int snd_intel_dsp_driver_probe(struct pci_dev *pci) /* find the configuration for the specific device */ cfg = snd_intel_dsp_find_config(pci, config_table, ARRAY_SIZE(config_table)); if (!cfg) - return SND_INTEL_DSP_DRIVER_ANY; + return SND_INTEL_DSP_DRIVER_LEGACY;
Or we need to add a case where we force the legacy in the table for each platform.
I would prefer to add another entry to the configuration table without .flags (or .flags = 0) with a comment, why the legacy driver is selected by default even if the DSP is present.
Ah yes, flags == 0 would mean legacy indeed. Will send a patch, thanks for the idea.