ASoC: Intel: avs: Ignore codecs with no suppoting driver
authorCezary Rojewski <cezary.rojewski@intel.com>
Mon, 26 Feb 2024 12:44:30 +0000 (13:44 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 4 Mar 2024 08:17:02 +0000 (09:17 +0100)
HDMI codecs which are present and functional from audio perspective lack
i915 support on drm side what results in -ENODEV during the probing
sequence. There is no reason to perform recovery procedure e.g.: reset
the HDAudio controller if this is the case.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240226124432.1203798-4-cezary.rojewski@intel.com
sound/soc/intel/avs/core.c

index db78eb2f0108071736b6bafa5e77f874b15f3375..565878eb42cd2fb9b76bf9ab6f6fc8e183940dc1 100644 (file)
@@ -144,7 +144,7 @@ static int probe_codec(struct hdac_bus *bus, int addr)
        /* configure effectively creates new ASoC component */
        ret = snd_hda_codec_configure(codec);
        if (ret < 0) {
-               dev_err(bus->dev, "failed to config codec %d\n", ret);
+               dev_warn(bus->dev, "failed to config codec #%d: %d\n", addr, ret);
                return ret;
        }
 
@@ -153,15 +153,16 @@ static int probe_codec(struct hdac_bus *bus, int addr)
 
 static void avs_hdac_bus_probe_codecs(struct hdac_bus *bus)
 {
-       int c;
+       int ret, c;
 
        /* First try to probe all given codec slots */
        for (c = 0; c < HDA_MAX_CODECS; c++) {
                if (!(bus->codec_mask & BIT(c)))
                        continue;
 
-               if (!probe_codec(bus, c))
-                       /* success, continue probing */
+               ret = probe_codec(bus, c);
+               /* Ignore codecs with no supporting driver. */
+               if (!ret || ret == -ENODEV)
                        continue;
 
                /*