Unverified Commit 4ab80a29 authored by Bard Liao's avatar Bard Liao Committed by Mark Brown
Browse files

ASoC: Intel: sof_sdw: correct mach_params->dmic_num



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: 7db9f636 ("ASoC: Intel: sof_sdw: overwrite mach_params->dmic_num")
Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarLiam Girdwood <liam.r.girdwood@intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://patch.msgid.link/20241206075903.195730-2-yung-chuan.liao@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5757b316
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -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
	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. Overwrite it to the actual number of PCH DMICs used in the device.
		 * 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_num;
		mach_params->dmic_num = DMIC_DEFAULT_CHANNELS;
	}

	if (sof_sdw_quirk & SOF_SSP_BT_OFFLOAD_PRESENT)
		bt_num = 1;