From: Trevor Wu Date: Mon, 31 Jul 2023 21:32:40 +0000 (-0500) Subject: ASoC: SOF: ipc3: update dai_link_fixup for SOF_DAI_MEDIATEK_AFE X-Git-Tag: v6.6.7~1940^2^2~164 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ed19c4a9b1024c4069d3d9f4daa3eb26a622069d;p=platform%2Fkernel%2Flinux-starfive.git ASoC: SOF: ipc3: update dai_link_fixup for SOF_DAI_MEDIATEK_AFE For MediaTek AFE, DAI DMA can support different bitwidths compared to the BE DAI. Therefore, it is preferable to obtain the BE frame format from the DAI_CONFIG. Reviewed-by: Yaochun Hung Reviewed-by: Daniel Baluta Signed-off-by: Trevor Wu Signed-off-by: Pierre-Louis Bossart Link: https://lore.kernel.org/r/20230731213242.434594-5-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown --- diff --git a/sound/soc/sof/ipc3-pcm.c b/sound/soc/sof/ipc3-pcm.c index 304faf6..cb58ee8 100644 --- a/sound/soc/sof/ipc3-pcm.c +++ b/sound/soc/sof/ipc3-pcm.c @@ -309,6 +309,23 @@ static int sof_ipc3_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, channels->min = private->dai_config->afe.channels; channels->max = private->dai_config->afe.channels; + snd_mask_none(fmt); + + switch (private->dai_config->afe.format) { + case SOF_IPC_FRAME_S16_LE: + snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S16_LE); + break; + case SOF_IPC_FRAME_S24_4LE: + snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S24_LE); + break; + case SOF_IPC_FRAME_S32_LE: + snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S32_LE); + break; + default: + dev_err(component->dev, "Not available format!\n"); + return -EINVAL; + } + dev_dbg(component->dev, "rate_min: %d rate_max: %d\n", rate->min, rate->max); dev_dbg(component->dev, "channels_min: %d channels_max: %d\n", channels->min, channels->max);