On Mon, 31 Dec 2018 00:17:58 +0100,
Pierre-Louis Bossart wrote:
OK, then how about applying the PCI class check only for such onesBTW, one thing I'd really like to avoid is to rearrange the probeAgree, mucking with the probe isn't something we should look into,
procedure of the legacy HDA driver (so that we can get codec_mask
during pci probe() call). The async probe is the result of the many
struggles with the various and complex configurations. Moving the
codec probe to the beginning isn't trivial and quite risky to break
something else.
especially with this Skylake driver being eventually deprecated once
SOF is at feature parity. This set of autodetection patches for 4.21
was really targeting CFL/WHL+ devices, where the DSP usage is
mandatory when directly-attached digital microphones are used. For
Skylake and kabylake using the legacy by default is just fine.
like the patch below? The macro isn't sexy and can be replaced with
another way, but you have an idea.
thanks,
Takashi
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -380,6 +380,13 @@ enum {
#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
#define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
+/* 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;
}