| From 1b2cc117f049d4b30c5ce3801b5f841a48268da8 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Sun, 1 Oct 2017 23:48:29 +0000 |
| Subject: [PATCH 0139/1795] ASoC: rsnd: DVC kctrl sets once |
| |
| Same DVC might be used few times if system/platform is using MIX. |
| For example below case. |
| |
| DAI0 playback = <&src0 &ctu02 &mix0 &dvc0 &ssi0>; |
| DAI1 playback = <&src2 &ctu03 &mix0 &dvc0 &ssi0>; |
| |
| This case, ALSA will have DVC,0 and DVC,1 kcontrol interfaces, |
| but these are same DVC. This is confusing. |
| This patch adds new flags and avoid such case. |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| (cherry picked from commit b918f1bc7f1ce463d6fbb6ebf3db36bd302bded8) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| sound/soc/sh/rcar/dvc.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c |
| index 1743ade3cc55..bb22850e8fe6 100644 |
| --- a/sound/soc/sh/rcar/dvc.c |
| +++ b/sound/soc/sh/rcar/dvc.c |
| @@ -44,8 +44,11 @@ struct rsnd_dvc { |
| struct rsnd_kctrl_cfg_s ren; /* Ramp Enable */ |
| struct rsnd_kctrl_cfg_s rup; /* Ramp Rate Up */ |
| struct rsnd_kctrl_cfg_s rdown; /* Ramp Rate Down */ |
| + u32 flags; |
| }; |
| |
| +#define KCTRL_INITIALIZED (1 << 0) |
| + |
| #define rsnd_dvc_get(priv, id) ((struct rsnd_dvc *)(priv->dvc) + id) |
| #define rsnd_dvc_nr(priv) ((priv)->dvc_nr) |
| |
| @@ -254,6 +257,9 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, |
| int channels = rsnd_rdai_channels_get(rdai); |
| int ret; |
| |
| + if (rsnd_flags_has(dvc, KCTRL_INITIALIZED)) |
| + return 0; |
| + |
| /* Volume */ |
| ret = rsnd_kctrl_new_m(mod, io, rtd, |
| is_play ? |
| @@ -307,6 +313,8 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, |
| if (ret < 0) |
| return ret; |
| |
| + rsnd_flags_set(dvc, KCTRL_INITIALIZED); |
| + |
| return 0; |
| } |
| |
| -- |
| 2.19.0 |
| |