Re: [PATCH] ASoC: amd: acp: Fix for ACP SOF dmic tplg component load failure

Mario Limonciello
2024-11-04T14:22:35Z

On 11/4/2024 03:13, Venkata Prasad Potturu wrote:
> Stream name mismatch with topology file causes tplg load failure.
>
> As SOF framework assigns dailink->stream name, overriding stream name
> other than link name causes SOF dmic component load failure.
>
> [ 35.474995] snd_sof_amd_acp70 0000:c4:00.5: error: can't connect DAI ACPDMIC0.IN stream acp-dmic-codec
> [ 35.475001] snd_sof_amd_acp70 0000:c4:00.5: failed to add widget type 28 name : ACPDMIC0.IN stream acp-dmic-codec
> [ 35.475013] sof_mach acp70-dsp: ASoC: failed to load widget ACPDMIC0.IN
> [ 35.475018] sof_mach acp70-dsp: ASoC: topology: could not load header: -22
> [ 35.475072] snd_sof_amd_acp70 0000:c4:00.5: error: tplg component load failed -22
> [ 35.475083] snd_sof_amd_acp70 0000:c4:00.5: error: failed to load DSP topology -22
> [ 35.475090] snd_sof_amd_acp70 0000:c4:00.5: ASoC: error at snd_soc_component_probe on 0000:c4:00.5: -22
> [ 35.475117] sof_mach acp70-dsp: ASoC: failed to instantiate card -22
> [ 35.475254] sof_mach acp70-dsp: error -EINVAL: Failed to register card(sof-acp70-dsp)
> [ 35.475261] sof_mach acp70-dsp: probe with driver sof_mach failed with error -22
>
> Fixes: b2385de2ae11 ("ASoC: amd: acp: Add stream name to ACP PDM DMIC devices")
>
> Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>

Thanks. I was aiming to sort out (null) from `arecord -l` but
functionality is more important.

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>

Mark,

Up to you but alternatively, you can also drop my existing patch and
force push your for-next branch.

> ---
> sound/soc/amd/acp/acp-mach-common.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/sound/soc/amd/acp/acp-mach-common.c b/sound/soc/amd/acp/acp-mach-common.c
> index 67aa0ad83486..d314253207d5 100644
> --- a/sound/soc/amd/acp/acp-mach-common.c
> +++ b/sound/soc/amd/acp/acp-mach-common.c
> @@ -1561,7 +1561,6 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
>
> if (drv_data->dmic_cpu_id == DMIC) {
> links[i].name = "acp-dmic-codec";
> - links[i].stream_name = "DMIC capture";
> links[i].id = DMIC_BE_ID;
> links[i].codecs = dmic_codec;
> links[i].num_codecs = ARRAY_SIZE(dmic_codec);