Use detection logic based on the PCI class/subclass/prog-if in the HDaudio legacy probe, and add a module parameter to bypass or force the automatic detection should it ever fail (or in case of missing firmware or topology files)
This patchset was tested on 1. an SKL HP device with the DSP disabled 2. a WHL Acer Swift3 laptop 3. APL NUC6 4. KBL NUC7
5 reboot tests were done for each device with the DSP presence detected reliably. The "pci_binding" parameter was also tested on the WHL device.
The dynamic selection adds about 5ms worst case.
[ 2.813741] snd_hda_intel 0000:00:1f.3: The DSP is enabled on this platform, aborting probe [ 2.850588] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
The SOF driver will use exactly the same mechanism, and add a mutual exclusion with the Skylake/SST driver to avoid having 3 drivers for the same PCI ID. Two is complicated enough.
Changes since v1 (Feedback from Takashi) a) added explanations and renamed Kconfigs to SND_HDA_INTEL_DSP_DETECTION_XYZ b) less verbose dev_info c) fixed pci_binding parameter
Pierre-Louis Bossart (2): ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection
include/sound/hdaudio.h | 6 ++++ sound/pci/hda/Kconfig | 62 ++++++++++++++++++++++++++++++++++ sound/pci/hda/hda_controller.h | 2 +- sound/pci/hda/hda_intel.c | 54 +++++++++++++++++++++++++---- sound/soc/intel/Kconfig | 6 ++++ sound/soc/intel/skylake/skl.c | 48 ++++++++++++++++++-------- 6 files changed, 155 insertions(+), 23 deletions(-)
base-commit: ba26f635bf7253b42b08135152b18a2c8082abb7