| From 687afbcc6d83aadcaf4947e5b589e75258c542f7 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Wed, 11 Oct 2017 04:42:34 +0000 |
| Subject: [PATCH 0143/1795] ASoC: rsnd: add rsnd_kctrl_xxx() macro |
| |
| Current CTU/MIX/DVC are directly using rsnd_kctrl_cfg_m/s to control |
| val etc, but it is difficult to read/understand. |
| And there was no uniformity in access method. |
| This patch adds new rsnd_kctrl_xxx() and implements uniformed access |
| method. |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| (cherry picked from commit 3a9fa27be507b19107a8b3fe03a67e8145aea88c) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| sound/soc/sh/rcar/ctu.c | 80 ++++++++++++++++++++-------------------- |
| sound/soc/sh/rcar/dvc.c | 19 +++++----- |
| sound/soc/sh/rcar/mix.c | 10 ++--- |
| sound/soc/sh/rcar/rsnd.h | 4 ++ |
| 4 files changed, 59 insertions(+), 54 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/ctu.c b/sound/soc/sh/rcar/ctu.c |
| index ad07ba8c3720..d201d551866d 100644 |
| --- a/sound/soc/sh/rcar/ctu.c |
| +++ b/sound/soc/sh/rcar/ctu.c |
| @@ -133,7 +133,7 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io, |
| int i; |
| |
| for (i = 0; i < RSND_MAX_CHANNELS; i++) { |
| - u32 val = ctu->pass.val[i]; |
| + u32 val = rsnd_kctrl_valm(ctu->pass, i); |
| |
| cpmdr |= val << (28 - (i * 4)); |
| |
| @@ -150,44 +150,44 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io, |
| rsnd_mod_write(mod, CTU_SCMDR, scmdr); |
| |
| if (scmdr > 0) { |
| - rsnd_mod_write(mod, CTU_SV00R, ctu->sv0.val[0]); |
| - rsnd_mod_write(mod, CTU_SV01R, ctu->sv0.val[1]); |
| - rsnd_mod_write(mod, CTU_SV02R, ctu->sv0.val[2]); |
| - rsnd_mod_write(mod, CTU_SV03R, ctu->sv0.val[3]); |
| - rsnd_mod_write(mod, CTU_SV04R, ctu->sv0.val[4]); |
| - rsnd_mod_write(mod, CTU_SV05R, ctu->sv0.val[5]); |
| - rsnd_mod_write(mod, CTU_SV06R, ctu->sv0.val[6]); |
| - rsnd_mod_write(mod, CTU_SV07R, ctu->sv0.val[7]); |
| + rsnd_mod_write(mod, CTU_SV00R, rsnd_kctrl_valm(ctu->sv0, 0)); |
| + rsnd_mod_write(mod, CTU_SV01R, rsnd_kctrl_valm(ctu->sv0, 1)); |
| + rsnd_mod_write(mod, CTU_SV02R, rsnd_kctrl_valm(ctu->sv0, 2)); |
| + rsnd_mod_write(mod, CTU_SV03R, rsnd_kctrl_valm(ctu->sv0, 3)); |
| + rsnd_mod_write(mod, CTU_SV04R, rsnd_kctrl_valm(ctu->sv0, 4)); |
| + rsnd_mod_write(mod, CTU_SV05R, rsnd_kctrl_valm(ctu->sv0, 5)); |
| + rsnd_mod_write(mod, CTU_SV06R, rsnd_kctrl_valm(ctu->sv0, 6)); |
| + rsnd_mod_write(mod, CTU_SV07R, rsnd_kctrl_valm(ctu->sv0, 7)); |
| } |
| if (scmdr > 1) { |
| - rsnd_mod_write(mod, CTU_SV10R, ctu->sv1.val[0]); |
| - rsnd_mod_write(mod, CTU_SV11R, ctu->sv1.val[1]); |
| - rsnd_mod_write(mod, CTU_SV12R, ctu->sv1.val[2]); |
| - rsnd_mod_write(mod, CTU_SV13R, ctu->sv1.val[3]); |
| - rsnd_mod_write(mod, CTU_SV14R, ctu->sv1.val[4]); |
| - rsnd_mod_write(mod, CTU_SV15R, ctu->sv1.val[5]); |
| - rsnd_mod_write(mod, CTU_SV16R, ctu->sv1.val[6]); |
| - rsnd_mod_write(mod, CTU_SV17R, ctu->sv1.val[7]); |
| + rsnd_mod_write(mod, CTU_SV10R, rsnd_kctrl_valm(ctu->sv1, 0)); |
| + rsnd_mod_write(mod, CTU_SV11R, rsnd_kctrl_valm(ctu->sv1, 1)); |
| + rsnd_mod_write(mod, CTU_SV12R, rsnd_kctrl_valm(ctu->sv1, 2)); |
| + rsnd_mod_write(mod, CTU_SV13R, rsnd_kctrl_valm(ctu->sv1, 3)); |
| + rsnd_mod_write(mod, CTU_SV14R, rsnd_kctrl_valm(ctu->sv1, 4)); |
| + rsnd_mod_write(mod, CTU_SV15R, rsnd_kctrl_valm(ctu->sv1, 5)); |
| + rsnd_mod_write(mod, CTU_SV16R, rsnd_kctrl_valm(ctu->sv1, 6)); |
| + rsnd_mod_write(mod, CTU_SV17R, rsnd_kctrl_valm(ctu->sv1, 7)); |
| } |
| if (scmdr > 2) { |
| - rsnd_mod_write(mod, CTU_SV20R, ctu->sv2.val[0]); |
| - rsnd_mod_write(mod, CTU_SV21R, ctu->sv2.val[1]); |
| - rsnd_mod_write(mod, CTU_SV22R, ctu->sv2.val[2]); |
| - rsnd_mod_write(mod, CTU_SV23R, ctu->sv2.val[3]); |
| - rsnd_mod_write(mod, CTU_SV24R, ctu->sv2.val[4]); |
| - rsnd_mod_write(mod, CTU_SV25R, ctu->sv2.val[5]); |
| - rsnd_mod_write(mod, CTU_SV26R, ctu->sv2.val[6]); |
| - rsnd_mod_write(mod, CTU_SV27R, ctu->sv2.val[7]); |
| + rsnd_mod_write(mod, CTU_SV20R, rsnd_kctrl_valm(ctu->sv2, 0)); |
| + rsnd_mod_write(mod, CTU_SV21R, rsnd_kctrl_valm(ctu->sv2, 1)); |
| + rsnd_mod_write(mod, CTU_SV22R, rsnd_kctrl_valm(ctu->sv2, 2)); |
| + rsnd_mod_write(mod, CTU_SV23R, rsnd_kctrl_valm(ctu->sv2, 3)); |
| + rsnd_mod_write(mod, CTU_SV24R, rsnd_kctrl_valm(ctu->sv2, 4)); |
| + rsnd_mod_write(mod, CTU_SV25R, rsnd_kctrl_valm(ctu->sv2, 5)); |
| + rsnd_mod_write(mod, CTU_SV26R, rsnd_kctrl_valm(ctu->sv2, 6)); |
| + rsnd_mod_write(mod, CTU_SV27R, rsnd_kctrl_valm(ctu->sv2, 7)); |
| } |
| if (scmdr > 3) { |
| - rsnd_mod_write(mod, CTU_SV30R, ctu->sv3.val[0]); |
| - rsnd_mod_write(mod, CTU_SV31R, ctu->sv3.val[1]); |
| - rsnd_mod_write(mod, CTU_SV32R, ctu->sv3.val[2]); |
| - rsnd_mod_write(mod, CTU_SV33R, ctu->sv3.val[3]); |
| - rsnd_mod_write(mod, CTU_SV34R, ctu->sv3.val[4]); |
| - rsnd_mod_write(mod, CTU_SV35R, ctu->sv3.val[5]); |
| - rsnd_mod_write(mod, CTU_SV36R, ctu->sv3.val[6]); |
| - rsnd_mod_write(mod, CTU_SV37R, ctu->sv3.val[7]); |
| + rsnd_mod_write(mod, CTU_SV30R, rsnd_kctrl_valm(ctu->sv3, 0)); |
| + rsnd_mod_write(mod, CTU_SV31R, rsnd_kctrl_valm(ctu->sv3, 1)); |
| + rsnd_mod_write(mod, CTU_SV32R, rsnd_kctrl_valm(ctu->sv3, 2)); |
| + rsnd_mod_write(mod, CTU_SV33R, rsnd_kctrl_valm(ctu->sv3, 3)); |
| + rsnd_mod_write(mod, CTU_SV34R, rsnd_kctrl_valm(ctu->sv3, 4)); |
| + rsnd_mod_write(mod, CTU_SV35R, rsnd_kctrl_valm(ctu->sv3, 5)); |
| + rsnd_mod_write(mod, CTU_SV36R, rsnd_kctrl_valm(ctu->sv3, 6)); |
| + rsnd_mod_write(mod, CTU_SV37R, rsnd_kctrl_valm(ctu->sv3, 7)); |
| } |
| |
| rsnd_mod_write(mod, CTU_CTUIR, 0); |
| @@ -199,17 +199,17 @@ static void rsnd_ctu_value_reset(struct rsnd_dai_stream *io, |
| struct rsnd_ctu *ctu = rsnd_mod_to_ctu(mod); |
| int i; |
| |
| - if (!ctu->reset.val) |
| + if (!rsnd_kctrl_vals(ctu->reset)) |
| return; |
| |
| for (i = 0; i < RSND_MAX_CHANNELS; i++) { |
| - ctu->pass.val[i] = 0; |
| - ctu->sv0.val[i] = 0; |
| - ctu->sv1.val[i] = 0; |
| - ctu->sv2.val[i] = 0; |
| - ctu->sv3.val[i] = 0; |
| + rsnd_kctrl_valm(ctu->pass, i) = 0; |
| + rsnd_kctrl_valm(ctu->sv0, i) = 0; |
| + rsnd_kctrl_valm(ctu->sv1, i) = 0; |
| + rsnd_kctrl_valm(ctu->sv2, i) = 0; |
| + rsnd_kctrl_valm(ctu->sv3, i) = 0; |
| } |
| - ctu->reset.val = 0; |
| + rsnd_kctrl_vals(ctu->reset) = 0; |
| } |
| |
| static int rsnd_ctu_init(struct rsnd_mod *mod, |
| diff --git a/sound/soc/sh/rcar/dvc.c b/sound/soc/sh/rcar/dvc.c |
| index 4ef318ac73d5..dbe54f024d68 100644 |
| --- a/sound/soc/sh/rcar/dvc.c |
| +++ b/sound/soc/sh/rcar/dvc.c |
| @@ -73,8 +73,9 @@ static void rsnd_dvc_halt(struct rsnd_mod *mod) |
| rsnd_mod_write(mod, DVC_SWRSR, 0); |
| } |
| |
| -#define rsnd_dvc_get_vrpdr(dvc) (dvc->rup.val << 8 | dvc->rdown.val) |
| -#define rsnd_dvc_get_vrdbr(dvc) (0x3ff - (dvc->volume.val[0] >> 13)) |
| +#define rsnd_dvc_get_vrpdr(dvc) (rsnd_kctrl_vals(dvc->rup) << 8 | \ |
| + rsnd_kctrl_vals(dvc->rdown)) |
| +#define rsnd_dvc_get_vrdbr(dvc) (0x3ff - (rsnd_kctrl_valm(dvc->volume, 0) >> 13)) |
| |
| static void rsnd_dvc_volume_parameter(struct rsnd_dai_stream *io, |
| struct rsnd_mod *mod) |
| @@ -84,12 +85,12 @@ static void rsnd_dvc_volume_parameter(struct rsnd_dai_stream *io, |
| int i; |
| |
| /* Enable Ramp */ |
| - if (dvc->ren.val) |
| + if (rsnd_kctrl_vals(dvc->ren)) |
| for (i = 0; i < RSND_MAX_CHANNELS; i++) |
| - val[i] = dvc->volume.cfg.max; |
| + val[i] = rsnd_kctrl_max(dvc->volume); |
| else |
| for (i = 0; i < RSND_MAX_CHANNELS; i++) |
| - val[i] = dvc->volume.val[i]; |
| + val[i] = rsnd_kctrl_valm(dvc->volume, i); |
| |
| /* Enable Digital Volume */ |
| rsnd_mod_write(mod, DVC_VOL0R, val[0]); |
| @@ -119,7 +120,7 @@ static void rsnd_dvc_volume_init(struct rsnd_dai_stream *io, |
| dvucr |= 0x101; |
| |
| /* Enable Ramp */ |
| - if (dvc->ren.val) { |
| + if (rsnd_kctrl_vals(dvc->ren)) { |
| dvucr |= 0x10; |
| |
| /* |
| @@ -161,10 +162,10 @@ static void rsnd_dvc_volume_update(struct rsnd_dai_stream *io, |
| u32 vrdbr = 0; |
| int i; |
| |
| - for (i = 0; i < dvc->mute.cfg.size; i++) |
| - zcmcr |= (!!dvc->mute.cfg.val[i]) << i; |
| + for (i = 0; i < rsnd_kctrl_size(dvc->mute); i++) |
| + zcmcr |= (!!rsnd_kctrl_valm(dvc->mute, i)) << i; |
| |
| - if (dvc->ren.val) { |
| + if (rsnd_kctrl_vals(dvc->ren)) { |
| vrpdr = rsnd_dvc_get_vrpdr(dvc); |
| vrdbr = rsnd_dvc_get_vrdbr(dvc); |
| } |
| diff --git a/sound/soc/sh/rcar/mix.c b/sound/soc/sh/rcar/mix.c |
| index 912cfec49038..7998380766f6 100644 |
| --- a/sound/soc/sh/rcar/mix.c |
| +++ b/sound/soc/sh/rcar/mix.c |
| @@ -84,7 +84,7 @@ static void rsnd_mix_halt(struct rsnd_mod *mod) |
| |
| #define rsnd_mix_get_vol(mix, X) \ |
| rsnd_flags_has(mix, HAS_VOL##X) ? \ |
| - (VOL_MAX - mix->volume##X.cfg.val[0]) : 0 |
| + (VOL_MAX - rsnd_kctrl_vals(mix->volume##X)) : 0 |
| static void rsnd_mix_volume_parameter(struct rsnd_dai_stream *io, |
| struct rsnd_mod *mod) |
| { |
| @@ -116,9 +116,9 @@ static void rsnd_mix_volume_init(struct rsnd_dai_stream *io, |
| rsnd_mod_write(mod, MIX_ADINR, rsnd_runtime_channel_after_ctu(io)); |
| |
| /* volume step */ |
| - rsnd_mod_write(mod, MIX_MIXMR, mix->ren.cfg.val[0]); |
| - rsnd_mod_write(mod, MIX_MVPDR, mix->rup.cfg.val[0] << 8 | |
| - mix->rdw.cfg.val[0]); |
| + rsnd_mod_write(mod, MIX_MIXMR, rsnd_kctrl_vals(mix->ren)); |
| + rsnd_mod_write(mod, MIX_MVPDR, rsnd_kctrl_vals(mix->rup) << 8 | |
| + rsnd_kctrl_vals(mix->rdw)); |
| |
| /* common volume parameter */ |
| rsnd_mix_volume_parameter(io, mod); |
| @@ -217,7 +217,7 @@ static int rsnd_mix_pcm_new(struct rsnd_mod *mod, |
| volume, VOL_MAX); |
| if (ret < 0) |
| return ret; |
| - volume->cfg.val[0] = VOL_MAX; |
| + rsnd_kctrl_vals(*volume) = VOL_MAX; |
| |
| if (rsnd_flags_has(mix, ONCE_KCTRL_INITIALIZED)) |
| return ret; |
| diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h |
| index 0d9f9c3343da..2a224fa639cb 100644 |
| --- a/sound/soc/sh/rcar/rsnd.h |
| +++ b/sound/soc/sh/rcar/rsnd.h |
| @@ -631,6 +631,10 @@ struct rsnd_kctrl_cfg_s { |
| struct rsnd_kctrl_cfg cfg; |
| u32 val; |
| }; |
| +#define rsnd_kctrl_size(x) ((x).cfg.size) |
| +#define rsnd_kctrl_max(x) ((x).cfg.max) |
| +#define rsnd_kctrl_valm(x, i) ((x).val[i]) /* = (x).cfg.val[i] */ |
| +#define rsnd_kctrl_vals(x) ((x).val) /* = (x).cfg.val[0] */ |
| |
| int rsnd_kctrl_accept_anytime(struct rsnd_dai_stream *io); |
| int rsnd_kctrl_accept_runtime(struct rsnd_dai_stream *io); |
| -- |
| 2.19.0 |
| |