diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2015-11-04 03:44:32 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-11-16 05:09:29 -0500 |
commit | 13e0d17d08d1d651aa119c286f74cf366caf09dd (patch) | |
tree | 96df9ce9c4a666904149808a31209845a010ab5f /sound/soc/sh | |
parent | ca16cc61592377ebd48d5f22fd823b592c80038e (diff) |
ASoC: rsnd: MIX settings matches to datasheet
Current MIX settings order was rough.
This patch makes it match to datasheet.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sh')
-rw-r--r-- | sound/soc/sh/rcar/mix.c | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/sound/soc/sh/rcar/mix.c b/sound/soc/sh/rcar/mix.c index bcbd821981a9..2baa2d79bfc0 100644 --- a/sound/soc/sh/rcar/mix.c +++ b/sound/soc/sh/rcar/mix.c | |||
@@ -31,24 +31,41 @@ static void rsnd_mix_soft_reset(struct rsnd_mod *mod) | |||
31 | rsnd_mod_write(mod, MIX_SWRSR, 1); | 31 | rsnd_mod_write(mod, MIX_SWRSR, 1); |
32 | } | 32 | } |
33 | 33 | ||
34 | #define rsnd_mix_initialize_lock(mod) __rsnd_mix_initialize_lock(mod, 1) | 34 | static void rsnd_mix_volume_parameter(struct rsnd_dai_stream *io, |
35 | #define rsnd_mix_initialize_unlock(mod) __rsnd_mix_initialize_lock(mod, 0) | 35 | struct rsnd_mod *mod) |
36 | static void __rsnd_mix_initialize_lock(struct rsnd_mod *mod, u32 enable) | ||
37 | { | 36 | { |
38 | rsnd_mod_write(mod, MIX_MIXIR, enable); | 37 | rsnd_mod_write(mod, MIX_MDBAR, 0); |
38 | rsnd_mod_write(mod, MIX_MDBBR, 0); | ||
39 | rsnd_mod_write(mod, MIX_MDBCR, 0); | ||
40 | rsnd_mod_write(mod, MIX_MDBDR, 0); | ||
41 | } | ||
42 | |||
43 | static void rsnd_mix_volume_init(struct rsnd_dai_stream *io, | ||
44 | struct rsnd_mod *mod) | ||
45 | { | ||
46 | rsnd_mod_write(mod, MIX_MIXIR, 1); | ||
47 | |||
48 | /* General Information */ | ||
49 | rsnd_mod_write(mod, MIX_ADINR, rsnd_get_adinr_chan(mod, io)); | ||
50 | |||
51 | /* volume step */ | ||
52 | rsnd_mod_write(mod, MIX_MIXMR, 0); | ||
53 | rsnd_mod_write(mod, MIX_MVPDR, 0); | ||
54 | |||
55 | /* common volume parameter */ | ||
56 | rsnd_mix_volume_parameter(io, mod); | ||
57 | |||
58 | rsnd_mod_write(mod, MIX_MIXIR, 0); | ||
39 | } | 59 | } |
40 | 60 | ||
41 | static void rsnd_mix_volume_update(struct rsnd_dai_stream *io, | 61 | static void rsnd_mix_volume_update(struct rsnd_dai_stream *io, |
42 | struct rsnd_mod *mod) | 62 | struct rsnd_mod *mod) |
43 | { | 63 | { |
44 | |||
45 | /* Disable MIX dB setting */ | 64 | /* Disable MIX dB setting */ |
46 | rsnd_mod_write(mod, MIX_MDBER, 0); | 65 | rsnd_mod_write(mod, MIX_MDBER, 0); |
47 | 66 | ||
48 | rsnd_mod_write(mod, MIX_MDBAR, 0); | 67 | /* common volume parameter */ |
49 | rsnd_mod_write(mod, MIX_MDBBR, 0); | 68 | rsnd_mix_volume_parameter(io, mod); |
50 | rsnd_mod_write(mod, MIX_MDBCR, 0); | ||
51 | rsnd_mod_write(mod, MIX_MDBDR, 0); | ||
52 | 69 | ||
53 | /* Enable MIX dB setting */ | 70 | /* Enable MIX dB setting */ |
54 | rsnd_mod_write(mod, MIX_MDBER, 1); | 71 | rsnd_mod_write(mod, MIX_MDBER, 1); |
@@ -69,18 +86,10 @@ static int rsnd_mix_init(struct rsnd_mod *mod, | |||
69 | 86 | ||
70 | rsnd_mix_soft_reset(mod); | 87 | rsnd_mix_soft_reset(mod); |
71 | 88 | ||
72 | rsnd_mix_initialize_lock(mod); | 89 | rsnd_mix_volume_init(io, mod); |
73 | |||
74 | rsnd_mod_write(mod, MIX_ADINR, rsnd_get_adinr_chan(mod, io)); | ||
75 | |||
76 | /* volume step */ | ||
77 | rsnd_mod_write(mod, MIX_MIXMR, 0); | ||
78 | rsnd_mod_write(mod, MIX_MVPDR, 0); | ||
79 | 90 | ||
80 | rsnd_mix_volume_update(io, mod); | 91 | rsnd_mix_volume_update(io, mod); |
81 | 92 | ||
82 | rsnd_mix_initialize_unlock(mod); | ||
83 | |||
84 | return 0; | 93 | return 0; |
85 | } | 94 | } |
86 | 95 | ||