| From 5da97aa1b64e106d34c4d8686043b2723cfdddd8 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Sun, 1 Oct 2017 23:49:03 +0000 |
| Subject: [PATCH 0141/1795] ASoC: rsnd: makes volume ramp rate list generic |
| |
| DVC is supporting Volume Ramp Rate, and MIX has Volume Ramp |
| but not yet supported. To support MIX Volume Ramp, we want to |
| share Rate List since DVC/MIX are using almost same list. |
| This patch move DVC specific Volume Ramp Rate List to core.c. |
| |
| 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 f3c26ac61c09862f0037fe484a98da0364f02ec3) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| sound/soc/sh/rcar/core.c | 27 +++++++++++++++++++++++++++ |
| sound/soc/sh/rcar/dvc.c | 33 ++++----------------------------- |
| sound/soc/sh/rcar/rsnd.h | 7 +++++-- |
| 3 files changed, 36 insertions(+), 31 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c |
| index 9896e736fa5c..642c438d880a 100644 |
| --- a/sound/soc/sh/rcar/core.c |
| +++ b/sound/soc/sh/rcar/core.c |
| @@ -1253,6 +1253,33 @@ struct rsnd_kctrl_cfg *rsnd_kctrl_init_s(struct rsnd_kctrl_cfg_s *cfg) |
| return &cfg->cfg; |
| } |
| |
| +const char * const volume_ramp_rate[] = { |
| + "128 dB/1 step", /* 00000 */ |
| + "64 dB/1 step", /* 00001 */ |
| + "32 dB/1 step", /* 00010 */ |
| + "16 dB/1 step", /* 00011 */ |
| + "8 dB/1 step", /* 00100 */ |
| + "4 dB/1 step", /* 00101 */ |
| + "2 dB/1 step", /* 00110 */ |
| + "1 dB/1 step", /* 00111 */ |
| + "0.5 dB/1 step", /* 01000 */ |
| + "0.25 dB/1 step", /* 01001 */ |
| + "0.125 dB/1 step", /* 01010 */ |
| + "0.125 dB/2 steps", /* 01011 */ |
| + "0.125 dB/4 steps", /* 01100 */ |
| + "0.125 dB/8 steps", /* 01101 */ |
| + "0.125 dB/16 steps", /* 01110 */ |
| + "0.125 dB/32 steps", /* 01111 */ |
| + "0.125 dB/64 steps", /* 10000 */ |
| + "0.125 dB/128 steps", /* 10001 */ |
| + "0.125 dB/256 steps", /* 10010 */ |
| + "0.125 dB/512 steps", /* 10011 */ |
| + "0.125 dB/1024 steps", /* 10100 */ |
| + "0.125 dB/2048 steps", /* 10101 */ |
| + "0.125 dB/4096 steps", /* 10110 */ |
| + "0.125 dB/8192 steps", /* 10111 = VOLUME_RAMP_MAX_DVC */ |
| +}; |
| + |
| int rsnd_kctrl_new(struct rsnd_mod *mod, |
| struct rsnd_dai_stream *io, |
| struct snd_soc_pcm_runtime *rtd, |
| diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c |
| index bb22850e8fe6..4ef318ac73d5 100644 |
| --- a/sound/soc/sh/rcar/dvc.c |
| +++ b/sound/soc/sh/rcar/dvc.c |
| @@ -61,33 +61,6 @@ struct rsnd_dvc { |
| ((pos) = (struct rsnd_dvc *)(priv)->dvc + i); \ |
| i++) |
| |
| -static const char * const dvc_ramp_rate[] = { |
| - "128 dB/1 step", /* 00000 */ |
| - "64 dB/1 step", /* 00001 */ |
| - "32 dB/1 step", /* 00010 */ |
| - "16 dB/1 step", /* 00011 */ |
| - "8 dB/1 step", /* 00100 */ |
| - "4 dB/1 step", /* 00101 */ |
| - "2 dB/1 step", /* 00110 */ |
| - "1 dB/1 step", /* 00111 */ |
| - "0.5 dB/1 step", /* 01000 */ |
| - "0.25 dB/1 step", /* 01001 */ |
| - "0.125 dB/1 step", /* 01010 */ |
| - "0.125 dB/2 steps", /* 01011 */ |
| - "0.125 dB/4 steps", /* 01100 */ |
| - "0.125 dB/8 steps", /* 01101 */ |
| - "0.125 dB/16 steps", /* 01110 */ |
| - "0.125 dB/32 steps", /* 01111 */ |
| - "0.125 dB/64 steps", /* 10000 */ |
| - "0.125 dB/128 steps", /* 10001 */ |
| - "0.125 dB/256 steps", /* 10010 */ |
| - "0.125 dB/512 steps", /* 10011 */ |
| - "0.125 dB/1024 steps", /* 10100 */ |
| - "0.125 dB/2048 steps", /* 10101 */ |
| - "0.125 dB/4096 steps", /* 10110 */ |
| - "0.125 dB/8192 steps", /* 10111 */ |
| -}; |
| - |
| static void rsnd_dvc_activation(struct rsnd_mod *mod) |
| { |
| rsnd_mod_write(mod, DVC_SWRSR, 0); |
| @@ -298,7 +271,8 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, |
| rsnd_kctrl_accept_anytime, |
| rsnd_dvc_volume_update, |
| &dvc->rup, |
| - dvc_ramp_rate); |
| + volume_ramp_rate, |
| + VOLUME_RAMP_MAX_DVC); |
| if (ret < 0) |
| return ret; |
| |
| @@ -308,7 +282,8 @@ static int rsnd_dvc_pcm_new(struct rsnd_mod *mod, |
| rsnd_kctrl_accept_anytime, |
| rsnd_dvc_volume_update, |
| &dvc->rdown, |
| - dvc_ramp_rate); |
| + volume_ramp_rate, |
| + VOLUME_RAMP_MAX_DVC); |
| |
| if (ret < 0) |
| return ret; |
| diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h |
| index c99672f522dd..e9baa13c3a57 100644 |
| --- a/sound/soc/sh/rcar/rsnd.h |
| +++ b/sound/soc/sh/rcar/rsnd.h |
| @@ -663,9 +663,12 @@ int rsnd_kctrl_new(struct rsnd_mod *mod, |
| rsnd_kctrl_new(mod, io, rtd, name, accept, update, rsnd_kctrl_init_s(cfg), \ |
| NULL, 1, max) |
| |
| -#define rsnd_kctrl_new_e(mod, io, rtd, name, accept, update, cfg, texts) \ |
| +#define rsnd_kctrl_new_e(mod, io, rtd, name, accept, update, cfg, texts, size) \ |
| rsnd_kctrl_new(mod, io, rtd, name, accept, update, rsnd_kctrl_init_s(cfg), \ |
| - texts, 1, ARRAY_SIZE(texts)) |
| + texts, 1, size) |
| + |
| +extern const char * const volume_ramp_rate[]; |
| +#define VOLUME_RAMP_MAX_DVC (0x17 + 1) |
| |
| /* |
| * R-Car SSI |
| -- |
| 2.19.0 |
| |