[1/1] ASoC: rsnd: allow to register kctrl with different cfg
diff mbox series

Message ID 20190201030225.11391-1-jiada_wang@mentor.com
State New, archived
Headers show
Series
  • [1/1] ASoC: rsnd: allow to register kctrl with different cfg
Related show

Commit Message

Jiada Wang Feb. 1, 2019, 3:02 a.m. UTC
Currently kctrl with same name can only be created once,
but in "MIX Playback Volume" case, same kctrl is used to
control different MIX volume for different dai-link.

this patch by check kctrl's cfg, allow to create kctrl
with same name but different cfg.

Fixes: commit 9c698e8481a1 ("ASoC: rsnd: tidyup registering method for rsnd_kctrl_new()")

Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
---
 sound/soc/sh/rcar/core.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Kuninori Morimoto Feb. 1, 2019, 7:39 a.m. UTC | #1
Hi Mark

> Currently kctrl with same name can only be created once,
> but in "MIX Playback Volume" case, same kctrl is used to
> control different MIX volume for different dai-link.
> 
> this patch by check kctrl's cfg, allow to create kctrl
> with same name but different cfg.
> 
> Fixes: commit 9c698e8481a1 ("ASoC: rsnd: tidyup registering method for rsnd_kctrl_new()")
> 
> Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
> ---

I and Jiada discussed about this issue locally,
and agreed we can use my patch instead of this.
I will post it soon, so, please drop this patch.

Best regards
---
Kuninori Morimoto

Patch
diff mbox series

diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 79659f7b32b9..909ee0948da1 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -1526,14 +1526,15 @@  int rsnd_kctrl_new(struct rsnd_mod *mod,
 	int ret;
 
 	/*
-	 * 1) Avoid duplicate register (ex. MIXer case)
+	 * 1) Avoid duplicate register (ex. DVC case)
 	 * 2) re-register if card was rebinded
 	 */
 	list_for_each_entry(kctrl, &card->controls, list) {
 		struct rsnd_kctrl_cfg *c = kctrl->private_data;
 
 		if (strcmp(kctrl->id.name, name) == 0 &&
-		    c->mod == mod)
+		    c->mod == mod &&
+		    &c->val == &cfg->val)
 			return 0;
 	}