linux/sound/hda
Takashi Iwai f8b4061987 ALSA: hda: intel-dsp-config: Prefer legacy driver as fallback
commit 161a0c617a upstream.

When config table entries don't match with the device to be probed,
currently we fall back to SND_INTEL_DSP_DRIVER_ANY, which means to
allow any drivers to bind with it.

This was set so with the assumption (or hope) that all controller
drivers should cover the devices generally, but in practice, this
caused a problem as reported recently.  Namely, when a specific
kconfig for SOF isn't set for the modern Intel chips like Alderlake,
a wrong driver (AVS) got probed and failed.  This is because we have
entries like:

 #if IS_ENABLED(CONFIG_SND_SOC_SOF_ALDERLAKE)
 /* Alder Lake / Raptor Lake */
 	{
 		.flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
 		.device = PCI_DEVICE_ID_INTEL_HDA_ADL_S,
 	},
 ....
 #endif

so this entry is effective only when CONFIG_SND_SOC_SOF_ALDERLAKE is
set.  If not set, there is no matching entry, hence it returns
SND_INTEL_DSP_DRIVER_ANY as fallback.  OTOH, if the kconfig is set, it
explicitly falls back to SND_INTEL_DSP_DRIVER_LEGACY when no DMIC or
SoundWire is found -- that was the working scenario.  That being said,
the current setup may be broken for modern Intel chips that are
supposed to work with either SOF or legacy driver when the
corresponding kconfig were missing.

For addressing the problem above, this patch changes the fallback
driver to the legacy driver, i.e. return SND_INTEL_DSP_DRIVER_LEGACY
type as much as possible.  When CONFIG_SND_HDA_INTEL is also disabled,
the fallback is set to SND_INTEL_DSP_DRIVER_ANY type, just to be sure.

Reported-by: Askar Safin <safinaskar@gmail.com>
Closes: https://lore.kernel.org/all/20251014034156.4480-1-safinaskar@gmail.com/
Tested-by: Askar Safin <safinaskar@gmail.com>
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20251210131553.184404-1-tiwai@suse.de
Signed-off-by: Askar Safin <safinaskar@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-17 16:31:29 +01:00
..
ext ALSA: hda: Use *-y instead of *-objs in Makefile 2024-05-08 18:17:42 +02:00
array.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
hda_bus_type.c ALSA: core: fix up bus match const issues. 2025-06-19 15:31:33 +02:00
hdac_bus.c ALSA: hda: Skip event processing for unregistered codecs 2022-07-15 16:26:50 +02:00
hdac_component.c ALSA: hda/i915 - fix list corruption with concurrent probes 2020-10-09 16:46:04 +02:00
hdac_controller.c ALSA: hda: hdac_controller: Implement support for use_pio_for_commands mode 2024-04-18 08:38:54 +02:00
hdac_device.c ALSA: hda/senarytech: add senarytech codec support 2024-06-18 11:59:08 +02:00
hdac_i915.c ALSA: hda: Skip i915 initialization on CNL/LKF-based platforms 2024-03-04 09:17:02 +01:00
hdac_regmap.c ALSA: hda: Use regcache_reg_cached() rather than open coding 2023-07-18 15:05:12 +01:00
hdac_stream.c ALSA: hda: Add missing parameter description for snd_hdac_stream_timecounter_init() 2024-10-03 09:24:45 +02:00
hdac_sysfs.c ALSA: hda: make kobj_type structure constant 2023-02-11 09:37:42 +01:00
hdmi_chmap.c ALSA: hda: Add input value sanity checks to HDMI channel map controls 2024-06-18 12:00:19 +02:00
intel-dsp-config.c ALSA: hda: intel-dsp-config: Prefer legacy driver as fallback 2026-01-17 16:31:29 +01:00
intel-nhlt.c ALSA: hda: intel-nhlt: add intel_nhlt_ssp_device_type() function 2024-03-22 12:40:46 +01:00
intel-sdw-acpi.c ALSA/hda: intel-sdw-acpi: add support for sdw-manager-list property read 2024-10-15 07:54:16 +02:00
Kconfig ALSA: hda: Allow the default preallocation for x86 again 2024-09-07 10:42:03 +02:00
local.h ALSA: hda: Unexport some local helper functions 2020-05-16 08:29:49 +02:00
Makefile ALSA: hda: Use *-y instead of *-objs in Makefile 2024-05-08 18:17:42 +02:00
trace.c ALSA: hda - Re-add tracepoints to HD-audio core driver 2015-03-23 13:17:58 +01:00
trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00