]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: Intel: sof_sdw: correct mach_params->dmic_num
authorBard Liao <yung-chuan.liao@linux.intel.com>
Fri, 6 Dec 2024 07:58:54 +0000 (15:58 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 9 Dec 2024 13:12:00 +0000 (13:12 +0000)
mach_params->dmic_num will be used to set the cfg-mics value of
card->components string which should be the dmic channels. However
dmic_num is dmic link number and could be set due to the SOC_SDW_PCH_DMIC
quirk. Set mach_params->dmic_num to the default value if the dmic link
is created due to the SOC_SDW_PCH_DMIC quirk.

Fixes: 7db9f6361170 ("ASoC: Intel: sof_sdw: overwrite mach_params->dmic_num")
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://patch.msgid.link/20241206075903.195730-2-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/boards/sof_sdw.c

index 810be7c949a5cea04a56dbb13507d80a6540678d..b58b9d85b56e09f3b0b8beb53e09b55eaf2f333b 100644 (file)
@@ -22,6 +22,8 @@ static int quirk_override = -1;
 module_param_named(quirk, quirk_override, int, 0444);
 MODULE_PARM_DESC(quirk, "Board-specific quirk override");
 
+#define DMIC_DEFAULT_CHANNELS 2
+
 static void log_quirks(struct device *dev)
 {
        if (SOC_SDW_JACK_JDSRC(sof_sdw_quirk))
@@ -1106,17 +1108,19 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
                hdmi_num = SOF_PRE_TGL_HDMI_COUNT;
 
        /* enable dmic01 & dmic16k */
-       if (sof_sdw_quirk & SOC_SDW_PCH_DMIC || mach_params->dmic_num) {
-               if (ctx->ignore_internal_dmic)
-                       dev_warn(dev, "Ignoring PCH DMIC\n");
-               else
-                       dmic_num = 2;
+       if (ctx->ignore_internal_dmic) {
+               dev_warn(dev, "Ignoring internal DMIC\n");
+               mach_params->dmic_num = 0;
+       } else if (mach_params->dmic_num) {
+               dmic_num = 2;
+       } else if (sof_sdw_quirk & SOC_SDW_PCH_DMIC) {
+               dmic_num = 2;
+               /*
+                * mach_params->dmic_num will be used to set the cfg-mics value of
+                * card->components string. Set it to the default value.
+                */
+               mach_params->dmic_num = DMIC_DEFAULT_CHANNELS;
        }
-       /*
-        * mach_params->dmic_num will be used to set the cfg-mics value of card->components
-        * string. Overwrite it to the actual number of PCH DMICs used in the device.
-        */
-       mach_params->dmic_num = dmic_num;
 
        if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
                bt_num = 1;