[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87wme2irbo.wl-kuninori.morimoto.gx@renesas.com>
Date: Thu, 6 Feb 2025 23:30:51 +0000
From: Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>
To: Laurentiu Mihalcea <laurentiumihalcea111@...il.com>
Cc: Mark Brown <broonie@...nel.org>,
Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
linux-sound@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH RFC] ASoC: simple-card-utils: always find dlc using result of graph_get_dai_id()
Hi Laurentiu
Thank you for the patch
> If the number of ports is 1, the DAI name will be the one corresponding
> to dai_drv[0]. If ARRAY_SIZE(dai_drv) > 1, this means users are forced
> to specify all ports corresponding to the DAIs. For instance:
>
> (it is assumed that ARRAY_SIZE(dai_drv) is 2)
>
> [snippet taken from DTS]
> dai: my_dai@...ecafe {
> /* some more properties go here */
>
> ports {
> #address-cells = <1>;
> #size-cells = <0>;
>
> port@0 {
> reg = <0>;
> endpoint {
> /* specify remote here */
> };
> };
>
> port@1 {
> reg = <1>;
> endpoint {
> /* specify remote here */
> };
> };
> };
> };
> [/snippet taken from DTS]
>
> This is problematic when users don't want to connect all ports. In the
> above example, we're forced to specify all ports even if we want to
> "connect" only port@1, for instance, to a remote endpoint.
>
> Generally speaking, assuming that ARRAY_SIZE(dai_drv) is N, and we want to
> connect a single port: i, we'd need to specify at least two ports in the
> DTS so that "of_graph_get_endpoint_count(node) > 1" is evaluated to true
> and the ID resulting from "graph_get_dai_id()" is taken into account.
?? I think this is not a issue ?
> Fix this by always using 1 as the number of arguments passed to
> snd_soc_get_dlc(). This way, snd_soc_get_dlc() will use the ID computed
> by graph_get_dai_id(), which takes the value of the 'reg' property into
> account if specified.
>
> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@....com>
> ---
> sound/soc/generic/simple-card-utils.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
> index dd414634b4ac..a592617e1b0e 100644
> --- a/sound/soc/generic/simple-card-utils.c
> +++ b/sound/soc/generic/simple-card-utils.c
> @@ -1103,7 +1103,7 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep,
> /* Get dai->name */
> args.np = node;
> args.args[0] = graph_get_dai_id(ep);
> - args.args_count = (of_graph_get_endpoint_count(node) > 1);
> + args.args_count = 1;
>
> /*
> * FIXME
It breaks existing many drivers / connections.
And I'm not 100% understand the situation.
Can I confirm ? your HW has N ports/DAIs, but want to use 2nd
port/DAI only for example. It is OK so far.
But you want to indicate only 1 port (= 2nd port) on DT,
and, your driver registers N DAI drivers anyway ?
If my assumption was correct, why you don't indicate N ports in DT ?
You need to do is not hack to utils, but update your driver to match
DT count and register driver count ?
Thank you for your help !!
Best regards
---
Kuninori Morimoto
Powered by blists - more mailing lists