diff mbox series

ASoC: qcom: Set dai_link id to each dai_link

Message ID 1541684500-32728-1-git-send-email-rohitkr@codeaurora.org (mailing list archive)
State Accepted
Commit 67fd1437d11620de8768b22fe20942e752ed52e9
Headers show
Series ASoC: qcom: Set dai_link id to each dai_link | expand

Commit Message

Rohit Kumar Nov. 8, 2018, 1:41 p.m. UTC
Frontend dai_link id is used for closing ADM sessions.
During concurrent usecase when one session is closed,
it closes other ADM session associated with other usecase
too. Dai_link->id should always point to Frontend dai id.
Set cpu_dai id as dai_link id to fix the issue.

Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>
---
 sound/soc/qcom/common.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Srinivas Kandagatla Nov. 8, 2018, 1:56 p.m. UTC | #1
Hi Rohit,

On 08/11/18 13:41, Rohit kumar wrote:
> Frontend dai_link id is used for closing ADM sessions.
> During concurrent usecase when one session is closed,
> it closes other ADM session associated with other usecase
> too. Dai_link->id should always point to Frontend dai id.
> Set cpu_dai id as dai_link id to fix the issue.
> 
Nice catch! thanks for fixing this!

> Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>

Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> ---
>   sound/soc/qcom/common.c | 9 ++++++---
>   1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
> index eb1b9da..4715527 100644
> --- a/sound/soc/qcom/common.c
> +++ b/sound/soc/qcom/common.c
> @@ -13,6 +13,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
>   	struct device_node *cpu = NULL;
>   	struct device *dev = card->dev;
>   	struct snd_soc_dai_link *link;
> +	struct of_phandle_args args;
>   	int ret, num_links;
>   
>   	ret = snd_soc_of_parse_card_name(card, "model");
> @@ -47,12 +48,14 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
>   			goto err;
>   		}
>   
> -		link->cpu_of_node = of_parse_phandle(cpu, "sound-dai", 0);
> -		if (!link->cpu_of_node) {
> +		ret = of_parse_phandle_with_args(cpu, "sound-dai",
> +					"#sound-dai-cells", 0, &args);
> +		if (ret) {
>   			dev_err(card->dev, "error getting cpu phandle\n");
> -			ret = -EINVAL;
>   			goto err;
>   		}
> +		link->cpu_of_node = args.np;
> +		link->id = args.args[0];
>   
>   		ret = snd_soc_of_get_dai_name(cpu, &link->cpu_dai_name);
>   		if (ret) {
>
diff mbox series

Patch

diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
index eb1b9da..4715527 100644
--- a/sound/soc/qcom/common.c
+++ b/sound/soc/qcom/common.c
@@ -13,6 +13,7 @@  int qcom_snd_parse_of(struct snd_soc_card *card)
 	struct device_node *cpu = NULL;
 	struct device *dev = card->dev;
 	struct snd_soc_dai_link *link;
+	struct of_phandle_args args;
 	int ret, num_links;
 
 	ret = snd_soc_of_parse_card_name(card, "model");
@@ -47,12 +48,14 @@  int qcom_snd_parse_of(struct snd_soc_card *card)
 			goto err;
 		}
 
-		link->cpu_of_node = of_parse_phandle(cpu, "sound-dai", 0);
-		if (!link->cpu_of_node) {
+		ret = of_parse_phandle_with_args(cpu, "sound-dai",
+					"#sound-dai-cells", 0, &args);
+		if (ret) {
 			dev_err(card->dev, "error getting cpu phandle\n");
-			ret = -EINVAL;
 			goto err;
 		}
+		link->cpu_of_node = args.np;
+		link->id = args.args[0];
 
 		ret = snd_soc_of_get_dai_name(cpu, &link->cpu_dai_name);
 		if (ret) {