Skip to content

Commit b7169dd

Browse files
morimotobroonie
authored andcommitted
ASoC: rsnd: remove RSND_REG_ from rsnd_reg
Current rsnd is using RSND_REG_xxx for register naming, and using RSND_REG_##f style macro for read/write. The biggest reason why it uses this style is that we can avoid non-existing register access. But, its demerit is sequential register access code will be very ugly. Current rsnd driver is well tested, so, let's remove RSND_REG_ from rsnd_reg, and cleanup sequential register access code. 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>
1 parent 0a26d6d commit b7169dd

File tree

6 files changed

+212
-314
lines changed

6 files changed

+212
-314
lines changed

sound/soc/sh/rcar/adg.c

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -249,28 +249,8 @@ int rsnd_adg_set_src_timesel_gen2(struct rsnd_mod *src_mod,
249249
out = out << shift;
250250
mask = 0x0f1f << shift;
251251

252-
switch (id / 2) {
253-
case 0:
254-
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL0, mask, in);
255-
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL0, mask, out);
256-
break;
257-
case 1:
258-
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL1, mask, in);
259-
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL1, mask, out);
260-
break;
261-
case 2:
262-
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL2, mask, in);
263-
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL2, mask, out);
264-
break;
265-
case 3:
266-
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL3, mask, in);
267-
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL3, mask, out);
268-
break;
269-
case 4:
270-
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL4, mask, in);
271-
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL4, mask, out);
272-
break;
273-
}
252+
rsnd_mod_bset(adg_mod, SRCIN_TIMSEL(id / 2), mask, in);
253+
rsnd_mod_bset(adg_mod, SRCOUT_TIMSEL(id / 2), mask, out);
274254

275255
if (en)
276256
rsnd_mod_bset(adg_mod, DIV_EN, en, en);
@@ -299,17 +279,7 @@ static void rsnd_adg_set_ssi_clk(struct rsnd_mod *ssi_mod, u32 val)
299279
if (id == 8)
300280
return;
301281

302-
switch (id / 4) {
303-
case 0:
304-
rsnd_mod_bset(adg_mod, AUDIO_CLK_SEL0, mask, val);
305-
break;
306-
case 1:
307-
rsnd_mod_bset(adg_mod, AUDIO_CLK_SEL1, mask, val);
308-
break;
309-
case 2:
310-
rsnd_mod_bset(adg_mod, AUDIO_CLK_SEL2, mask, val);
311-
break;
312-
}
282+
rsnd_mod_bset(adg_mod, AUDIO_CLK_SEL(id / 4), mask, val);
313283

314284
dev_dbg(dev, "AUDIO_CLK_SEL is 0x%x\n", val);
315285
}

sound/soc/sh/rcar/ctu.c

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@
7272
struct rsnd_ctu {
7373
struct rsnd_mod mod;
7474
struct rsnd_kctrl_cfg_m pass;
75-
struct rsnd_kctrl_cfg_m sv0;
76-
struct rsnd_kctrl_cfg_m sv1;
77-
struct rsnd_kctrl_cfg_m sv2;
78-
struct rsnd_kctrl_cfg_m sv3;
75+
struct rsnd_kctrl_cfg_m sv[4];
7976
struct rsnd_kctrl_cfg_s reset;
8077
int channels;
8178
u32 flags;
@@ -120,7 +117,7 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io,
120117
struct rsnd_ctu *ctu = rsnd_mod_to_ctu(mod);
121118
u32 cpmdr = 0;
122119
u32 scmdr = 0;
123-
int i;
120+
int i, j;
124121

125122
for (i = 0; i < RSND_MAX_CHANNELS; i++) {
126123
u32 val = rsnd_kctrl_valm(ctu->pass, i);
@@ -139,45 +136,13 @@ static void rsnd_ctu_value_init(struct rsnd_dai_stream *io,
139136

140137
rsnd_mod_write(mod, CTU_SCMDR, scmdr);
141138

142-
if (scmdr > 0) {
143-
rsnd_mod_write(mod, CTU_SV00R, rsnd_kctrl_valm(ctu->sv0, 0));
144-
rsnd_mod_write(mod, CTU_SV01R, rsnd_kctrl_valm(ctu->sv0, 1));
145-
rsnd_mod_write(mod, CTU_SV02R, rsnd_kctrl_valm(ctu->sv0, 2));
146-
rsnd_mod_write(mod, CTU_SV03R, rsnd_kctrl_valm(ctu->sv0, 3));
147-
rsnd_mod_write(mod, CTU_SV04R, rsnd_kctrl_valm(ctu->sv0, 4));
148-
rsnd_mod_write(mod, CTU_SV05R, rsnd_kctrl_valm(ctu->sv0, 5));
149-
rsnd_mod_write(mod, CTU_SV06R, rsnd_kctrl_valm(ctu->sv0, 6));
150-
rsnd_mod_write(mod, CTU_SV07R, rsnd_kctrl_valm(ctu->sv0, 7));
151-
}
152-
if (scmdr > 1) {
153-
rsnd_mod_write(mod, CTU_SV10R, rsnd_kctrl_valm(ctu->sv1, 0));
154-
rsnd_mod_write(mod, CTU_SV11R, rsnd_kctrl_valm(ctu->sv1, 1));
155-
rsnd_mod_write(mod, CTU_SV12R, rsnd_kctrl_valm(ctu->sv1, 2));
156-
rsnd_mod_write(mod, CTU_SV13R, rsnd_kctrl_valm(ctu->sv1, 3));
157-
rsnd_mod_write(mod, CTU_SV14R, rsnd_kctrl_valm(ctu->sv1, 4));
158-
rsnd_mod_write(mod, CTU_SV15R, rsnd_kctrl_valm(ctu->sv1, 5));
159-
rsnd_mod_write(mod, CTU_SV16R, rsnd_kctrl_valm(ctu->sv1, 6));
160-
rsnd_mod_write(mod, CTU_SV17R, rsnd_kctrl_valm(ctu->sv1, 7));
161-
}
162-
if (scmdr > 2) {
163-
rsnd_mod_write(mod, CTU_SV20R, rsnd_kctrl_valm(ctu->sv2, 0));
164-
rsnd_mod_write(mod, CTU_SV21R, rsnd_kctrl_valm(ctu->sv2, 1));
165-
rsnd_mod_write(mod, CTU_SV22R, rsnd_kctrl_valm(ctu->sv2, 2));
166-
rsnd_mod_write(mod, CTU_SV23R, rsnd_kctrl_valm(ctu->sv2, 3));
167-
rsnd_mod_write(mod, CTU_SV24R, rsnd_kctrl_valm(ctu->sv2, 4));
168-
rsnd_mod_write(mod, CTU_SV25R, rsnd_kctrl_valm(ctu->sv2, 5));
169-
rsnd_mod_write(mod, CTU_SV26R, rsnd_kctrl_valm(ctu->sv2, 6));
170-
rsnd_mod_write(mod, CTU_SV27R, rsnd_kctrl_valm(ctu->sv2, 7));
171-
}
172-
if (scmdr > 3) {
173-
rsnd_mod_write(mod, CTU_SV30R, rsnd_kctrl_valm(ctu->sv3, 0));
174-
rsnd_mod_write(mod, CTU_SV31R, rsnd_kctrl_valm(ctu->sv3, 1));
175-
rsnd_mod_write(mod, CTU_SV32R, rsnd_kctrl_valm(ctu->sv3, 2));
176-
rsnd_mod_write(mod, CTU_SV33R, rsnd_kctrl_valm(ctu->sv3, 3));
177-
rsnd_mod_write(mod, CTU_SV34R, rsnd_kctrl_valm(ctu->sv3, 4));
178-
rsnd_mod_write(mod, CTU_SV35R, rsnd_kctrl_valm(ctu->sv3, 5));
179-
rsnd_mod_write(mod, CTU_SV36R, rsnd_kctrl_valm(ctu->sv3, 6));
180-
rsnd_mod_write(mod, CTU_SV37R, rsnd_kctrl_valm(ctu->sv3, 7));
139+
for (i = 0; i < 4; i++) {
140+
141+
if (i >= scmdr)
142+
break;
143+
144+
for (j = 0; j < RSND_MAX_CHANNELS; j++)
145+
rsnd_mod_write(mod, CTU_SVxxR(i, j), rsnd_kctrl_valm(ctu->sv[i], j));
181146
}
182147

183148
rsnd_mod_write(mod, CTU_CTUIR, 0);
@@ -194,10 +159,10 @@ static void rsnd_ctu_value_reset(struct rsnd_dai_stream *io,
194159

195160
for (i = 0; i < RSND_MAX_CHANNELS; i++) {
196161
rsnd_kctrl_valm(ctu->pass, i) = 0;
197-
rsnd_kctrl_valm(ctu->sv0, i) = 0;
198-
rsnd_kctrl_valm(ctu->sv1, i) = 0;
199-
rsnd_kctrl_valm(ctu->sv2, i) = 0;
200-
rsnd_kctrl_valm(ctu->sv3, i) = 0;
162+
rsnd_kctrl_valm(ctu->sv[0], i) = 0;
163+
rsnd_kctrl_valm(ctu->sv[1], i) = 0;
164+
rsnd_kctrl_valm(ctu->sv[2], i) = 0;
165+
rsnd_kctrl_valm(ctu->sv[3], i) = 0;
201166
}
202167
rsnd_kctrl_vals(ctu->reset) = 0;
203168
}
@@ -247,7 +212,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
247212
ret = rsnd_kctrl_new_m(mod, io, rtd, "CTU SV0",
248213
rsnd_kctrl_accept_anytime,
249214
NULL,
250-
&ctu->sv0, RSND_MAX_CHANNELS,
215+
&ctu->sv[0], RSND_MAX_CHANNELS,
251216
0x00FFFFFF);
252217
if (ret < 0)
253218
return ret;
@@ -256,7 +221,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
256221
ret = rsnd_kctrl_new_m(mod, io, rtd, "CTU SV1",
257222
rsnd_kctrl_accept_anytime,
258223
NULL,
259-
&ctu->sv1, RSND_MAX_CHANNELS,
224+
&ctu->sv[1], RSND_MAX_CHANNELS,
260225
0x00FFFFFF);
261226
if (ret < 0)
262227
return ret;
@@ -265,7 +230,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
265230
ret = rsnd_kctrl_new_m(mod, io, rtd, "CTU SV2",
266231
rsnd_kctrl_accept_anytime,
267232
NULL,
268-
&ctu->sv2, RSND_MAX_CHANNELS,
233+
&ctu->sv[2], RSND_MAX_CHANNELS,
269234
0x00FFFFFF);
270235
if (ret < 0)
271236
return ret;
@@ -274,7 +239,7 @@ static int rsnd_ctu_pcm_new(struct rsnd_mod *mod,
274239
ret = rsnd_kctrl_new_m(mod, io, rtd, "CTU SV3",
275240
rsnd_kctrl_accept_anytime,
276241
NULL,
277-
&ctu->sv3, RSND_MAX_CHANNELS,
242+
&ctu->sv[3], RSND_MAX_CHANNELS,
278243
0x00FFFFFF);
279244
if (ret < 0)
280245
return ret;

sound/soc/sh/rcar/dvc.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,8 @@ static void rsnd_dvc_volume_parameter(struct rsnd_dai_stream *io,
8989
val[i] = rsnd_kctrl_valm(dvc->volume, i);
9090

9191
/* Enable Digital Volume */
92-
rsnd_mod_write(mod, DVC_VOL0R, val[0]);
93-
rsnd_mod_write(mod, DVC_VOL1R, val[1]);
94-
rsnd_mod_write(mod, DVC_VOL2R, val[2]);
95-
rsnd_mod_write(mod, DVC_VOL3R, val[3]);
96-
rsnd_mod_write(mod, DVC_VOL4R, val[4]);
97-
rsnd_mod_write(mod, DVC_VOL5R, val[5]);
98-
rsnd_mod_write(mod, DVC_VOL6R, val[6]);
99-
rsnd_mod_write(mod, DVC_VOL7R, val[7]);
92+
for (i = 0; i < RSND_MAX_CHANNELS; i++)
93+
rsnd_mod_write(mod, DVC_VOLxR(i), val[i]);
10094
}
10195

10296
static void rsnd_dvc_volume_init(struct rsnd_dai_stream *io,

sound/soc/sh/rcar/gen.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ struct rsnd_gen {
2626
struct regmap *regmap[RSND_BASE_MAX];
2727

2828
/* RSND_REG_MAX base */
29-
struct regmap_field *regs[RSND_REG_MAX];
30-
const char *reg_name[RSND_REG_MAX];
29+
struct regmap_field *regs[REG_MAX];
30+
const char *reg_name[REG_MAX];
3131
};
3232

3333
#define rsnd_priv_to_gen(p) ((struct rsnd_gen *)(p)->gen)
@@ -49,11 +49,11 @@ struct rsnd_regmap_field_conf {
4949
}
5050
/* single address mapping */
5151
#define RSND_GEN_S_REG(id, offset) \
52-
RSND_REG_SET(RSND_REG_##id, offset, 0, #id)
52+
RSND_REG_SET(id, offset, 0, #id)
5353

5454
/* multi address mapping */
5555
#define RSND_GEN_M_REG(id, offset, _id_offset) \
56-
RSND_REG_SET(RSND_REG_##id, offset, _id_offset, #id)
56+
RSND_REG_SET(id, offset, _id_offset, #id)
5757

5858
/*
5959
* basic function
@@ -79,9 +79,9 @@ static int rsnd_mod_id_cmd(struct rsnd_mod *mod)
7979
return rsnd_mod_id(mod);
8080
}
8181

82-
u32 rsnd_read(struct rsnd_priv *priv,
83-
struct rsnd_mod *mod, enum rsnd_reg reg)
82+
u32 rsnd_mod_read(struct rsnd_mod *mod, enum rsnd_reg reg)
8483
{
84+
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
8585
struct device *dev = rsnd_priv_to_dev(priv);
8686
struct rsnd_gen *gen = rsnd_priv_to_gen(priv);
8787
u32 val;
@@ -98,10 +98,10 @@ u32 rsnd_read(struct rsnd_priv *priv,
9898
return val;
9999
}
100100

101-
void rsnd_write(struct rsnd_priv *priv,
102-
struct rsnd_mod *mod,
103-
enum rsnd_reg reg, u32 data)
101+
void rsnd_mod_write(struct rsnd_mod *mod,
102+
enum rsnd_reg reg, u32 data)
104103
{
104+
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
105105
struct device *dev = rsnd_priv_to_dev(priv);
106106
struct rsnd_gen *gen = rsnd_priv_to_gen(priv);
107107

@@ -115,9 +115,10 @@ void rsnd_write(struct rsnd_priv *priv,
115115
rsnd_reg_name(gen, reg), reg, data);
116116
}
117117

118-
void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod,
119-
enum rsnd_reg reg, u32 mask, u32 data)
118+
void rsnd_mod_bset(struct rsnd_mod *mod,
119+
enum rsnd_reg reg, u32 mask, u32 data)
120120
{
121+
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
121122
struct device *dev = rsnd_priv_to_dev(priv);
122123
struct rsnd_gen *gen = rsnd_priv_to_gen(priv);
123124

0 commit comments

Comments
 (0)