So in theory all we need to add is a new table entry in skl.c, e.g. with the following untested code. I'll have to check if this is correct offline but it'd allow you to test the probe part.
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index ac0b4ff21acc..375f4b60e515 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -1098,6 +1098,9 @@ static const struct pci_device_id skl_ids[] = { /* CNL */ { PCI_DEVICE(0x8086, 0x9dc8), .driver_data = (unsigned long)&snd_soc_acpi_intel_cnl_machines}, + /* CFL */ + { PCI_DEVICE(0x8086, 0xa348), + .driver_data = (unsigned long)&snd_soc_acpi_intel_cnl_machines} { 0, } };
I've already tried it but this doesn't seem enough. The similar addition for 0xa348 is needed in skl-messages.c for clk setup. (BTW, reloading the module after this error triggered the leftover sysfs entries; you can try to inject the error and reproduce it.)
After these changes, the driver was loaded, but it still complains about the lack of firmware (both SOF and fallback one). The binding with HDMI codec seems working, but the analog one is still missing.
Is this lack of firmware or firmware that won't boot due to configuration issues?
If you can share the dmesg log somewhere it'd be interesting, I am trying to help fix support for WHL and CFL *should* be similar (I haven't checked the actual specs though).