[PATCH] ASoC: audio-graph: respawn Platform Support

Olivier MOYSAN olivier.moysan at foss.st.com
Wed Sep 1 10:36:20 CEST 2021


Thanks Kuninori

On 8/30/21 2:44 AM, Kuninori Morimoto wrote:
> 
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> 
> commit 63f2f9cceb09f8 ("ASoC: audio-graph: remove Platform support")
> removed Platform support from audio-graph, because it doesn't have
> "plat" support on DT (simple-card has).
> But, Platform support is needed if user is using
> snd_dmaengine_pcm_register() which adds generic DMA as Platform.
> And this Platform dev is using CPU dev.
> 
> Without this patch, at least STM32MP15 audio sound card is no more
> functional (v5.13 or later). This patch respawn Platform Support on
> audio-graph again.
> 
> Reported-by: Olivier MOYSAN <olivier.moysan at foss.st.com>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com

Tested-by: Olivier MOYSAN <olivier.moysan at foss.st.com>

> ---
> This patch needs Olivier's Tested-by
> 
>   sound/soc/generic/audio-graph-card.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
> index 5e71382467e8..546f6fd0609e 100644
> --- a/sound/soc/generic/audio-graph-card.c
> +++ b/sound/soc/generic/audio-graph-card.c
> @@ -285,6 +285,7 @@ static int graph_dai_link_of_dpcm(struct asoc_simple_priv *priv,
>   	if (li->cpu) {
>   		struct snd_soc_card *card = simple_priv_to_card(priv);
>   		struct snd_soc_dai_link_component *cpus = asoc_link_to_cpu(dai_link, 0);
> +		struct snd_soc_dai_link_component *platforms = asoc_link_to_platform(dai_link, 0);
>   		int is_single_links = 0;
>   
>   		/* Codec is dummy */
> @@ -313,6 +314,7 @@ static int graph_dai_link_of_dpcm(struct asoc_simple_priv *priv,
>   			dai_link->no_pcm = 1;
>   
>   		asoc_simple_canonicalize_cpu(cpus, is_single_links);
> +		asoc_simple_canonicalize_platform(platforms, cpus);
>   	} else {
>   		struct snd_soc_codec_conf *cconf = simple_props_to_codec_conf(dai_props, 0);
>   		struct snd_soc_dai_link_component *codecs = asoc_link_to_codec(dai_link, 0);
> @@ -366,6 +368,7 @@ static int graph_dai_link_of(struct asoc_simple_priv *priv,
>   	struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, li->link);
>   	struct snd_soc_dai_link_component *cpus = asoc_link_to_cpu(dai_link, 0);
>   	struct snd_soc_dai_link_component *codecs = asoc_link_to_codec(dai_link, 0);
> +	struct snd_soc_dai_link_component *platforms = asoc_link_to_platform(dai_link, 0);
>   	char dai_name[64];
>   	int ret, is_single_links = 0;
>   
> @@ -383,6 +386,7 @@ static int graph_dai_link_of(struct asoc_simple_priv *priv,
>   		 "%s-%s", cpus->dai_name, codecs->dai_name);
>   
>   	asoc_simple_canonicalize_cpu(cpus, is_single_links);
> +	asoc_simple_canonicalize_platform(platforms, cpus);
>   
>   	ret = graph_link_init(priv, cpu_ep, codec_ep, li, dai_name);
>   	if (ret < 0)
> @@ -608,6 +612,7 @@ static int graph_count_noml(struct asoc_simple_priv *priv,
>   
>   	li->num[li->link].cpus		= 1;
>   	li->num[li->link].codecs	= 1;
> +	li->num[li->link].platforms     = 1;
>   
>   	li->link += 1; /* 1xCPU-Codec */
>   
> @@ -630,6 +635,7 @@ static int graph_count_dpcm(struct asoc_simple_priv *priv,
>   
>   	if (li->cpu) {
>   		li->num[li->link].cpus		= 1;
> +		li->num[li->link].platforms     = 1;
>   
>   		li->link++; /* 1xCPU-dummy */
>   	} else {
> 


More information about the Alsa-devel mailing list