summaryrefslogtreecommitdiffstats
path: root/sound/soc/sh
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2019-02-26 07:18:11 -0500
committerMark Brown <broonie@kernel.org>2019-02-26 07:18:11 -0500
commitae3f563a85e96cc8ba68ba2eae36da9bba6e9c4a (patch)
treec0d5172578b69d6a29a92c00d276595b31add5e1 /sound/soc/sh
parentcdcdba5d624fc3fbad224230ca318c6ddf73795a (diff)
parent8af6c521cc236534093f9e744cfa004314bfe5ae (diff)
Merge branch 'for-5.0' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.1
Diffstat (limited to 'sound/soc/sh')
-rw-r--r--sound/soc/sh/rcar/gen.c24
-rw-r--r--sound/soc/sh/rcar/rsnd.h27
-rw-r--r--sound/soc/sh/rcar/ssiu.c24
3 files changed, 62 insertions, 13 deletions
diff --git a/sound/soc/sh/rcar/gen.c b/sound/soc/sh/rcar/gen.c
index 7cda60188f41..af19010b9d88 100644
--- a/sound/soc/sh/rcar/gen.c
+++ b/sound/soc/sh/rcar/gen.c
@@ -255,6 +255,30 @@ static int rsnd_gen2_probe(struct rsnd_priv *priv)
255 RSND_GEN_M_REG(SSI_MODE, 0xc, 0x80), 255 RSND_GEN_M_REG(SSI_MODE, 0xc, 0x80),
256 RSND_GEN_M_REG(SSI_CTRL, 0x10, 0x80), 256 RSND_GEN_M_REG(SSI_CTRL, 0x10, 0x80),
257 RSND_GEN_M_REG(SSI_INT_ENABLE, 0x18, 0x80), 257 RSND_GEN_M_REG(SSI_INT_ENABLE, 0x18, 0x80),
258 RSND_GEN_S_REG(SSI9_BUSIF0_MODE, 0x48c),
259 RSND_GEN_S_REG(SSI9_BUSIF0_ADINR, 0x484),
260 RSND_GEN_S_REG(SSI9_BUSIF0_DALIGN, 0x488),
261 RSND_GEN_S_REG(SSI9_BUSIF1_MODE, 0x4a0),
262 RSND_GEN_S_REG(SSI9_BUSIF1_ADINR, 0x4a4),
263 RSND_GEN_S_REG(SSI9_BUSIF1_DALIGN, 0x4a8),
264 RSND_GEN_S_REG(SSI9_BUSIF2_MODE, 0x4c0),
265 RSND_GEN_S_REG(SSI9_BUSIF2_ADINR, 0x4c4),
266 RSND_GEN_S_REG(SSI9_BUSIF2_DALIGN, 0x4c8),
267 RSND_GEN_S_REG(SSI9_BUSIF3_MODE, 0x4e0),
268 RSND_GEN_S_REG(SSI9_BUSIF3_ADINR, 0x4e4),
269 RSND_GEN_S_REG(SSI9_BUSIF3_DALIGN, 0x4e8),
270 RSND_GEN_S_REG(SSI9_BUSIF4_MODE, 0xd80),
271 RSND_GEN_S_REG(SSI9_BUSIF4_ADINR, 0xd84),
272 RSND_GEN_S_REG(SSI9_BUSIF4_DALIGN, 0xd88),
273 RSND_GEN_S_REG(SSI9_BUSIF5_MODE, 0xda0),
274 RSND_GEN_S_REG(SSI9_BUSIF5_ADINR, 0xda4),
275 RSND_GEN_S_REG(SSI9_BUSIF5_DALIGN, 0xda8),
276 RSND_GEN_S_REG(SSI9_BUSIF6_MODE, 0xdc0),
277 RSND_GEN_S_REG(SSI9_BUSIF6_ADINR, 0xdc4),
278 RSND_GEN_S_REG(SSI9_BUSIF6_DALIGN, 0xdc8),
279 RSND_GEN_S_REG(SSI9_BUSIF7_MODE, 0xde0),
280 RSND_GEN_S_REG(SSI9_BUSIF7_ADINR, 0xde4),
281 RSND_GEN_S_REG(SSI9_BUSIF7_DALIGN, 0xde8),
258 }; 282 };
259 283
260 static const struct rsnd_regmap_field_conf conf_scu[] = { 284 static const struct rsnd_regmap_field_conf conf_scu[] = {
diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h
index 605e4b934982..90625c57847b 100644
--- a/sound/soc/sh/rcar/rsnd.h
+++ b/sound/soc/sh/rcar/rsnd.h
@@ -191,6 +191,30 @@ enum rsnd_reg {
191 SSI_SYS_STATUS7, 191 SSI_SYS_STATUS7,
192 HDMI0_SEL, 192 HDMI0_SEL,
193 HDMI1_SEL, 193 HDMI1_SEL,
194 SSI9_BUSIF0_MODE,
195 SSI9_BUSIF1_MODE,
196 SSI9_BUSIF2_MODE,
197 SSI9_BUSIF3_MODE,
198 SSI9_BUSIF4_MODE,
199 SSI9_BUSIF5_MODE,
200 SSI9_BUSIF6_MODE,
201 SSI9_BUSIF7_MODE,
202 SSI9_BUSIF0_ADINR,
203 SSI9_BUSIF1_ADINR,
204 SSI9_BUSIF2_ADINR,
205 SSI9_BUSIF3_ADINR,
206 SSI9_BUSIF4_ADINR,
207 SSI9_BUSIF5_ADINR,
208 SSI9_BUSIF6_ADINR,
209 SSI9_BUSIF7_ADINR,
210 SSI9_BUSIF0_DALIGN,
211 SSI9_BUSIF1_DALIGN,
212 SSI9_BUSIF2_DALIGN,
213 SSI9_BUSIF3_DALIGN,
214 SSI9_BUSIF4_DALIGN,
215 SSI9_BUSIF5_DALIGN,
216 SSI9_BUSIF6_DALIGN,
217 SSI9_BUSIF7_DALIGN,
194 218
195 /* SSI */ 219 /* SSI */
196 SSICR, 220 SSICR,
@@ -209,6 +233,9 @@ enum rsnd_reg {
209#define SSI_BUSIF_MODE(i) (SSI_BUSIF0_MODE + (i)) 233#define SSI_BUSIF_MODE(i) (SSI_BUSIF0_MODE + (i))
210#define SSI_BUSIF_ADINR(i) (SSI_BUSIF0_ADINR + (i)) 234#define SSI_BUSIF_ADINR(i) (SSI_BUSIF0_ADINR + (i))
211#define SSI_BUSIF_DALIGN(i) (SSI_BUSIF0_DALIGN + (i)) 235#define SSI_BUSIF_DALIGN(i) (SSI_BUSIF0_DALIGN + (i))
236#define SSI9_BUSIF_MODE(i) (SSI9_BUSIF0_MODE + (i))
237#define SSI9_BUSIF_ADINR(i) (SSI9_BUSIF0_ADINR + (i))
238#define SSI9_BUSIF_DALIGN(i) (SSI9_BUSIF0_DALIGN + (i))
212#define SSI_SYS_STATUS(i) (SSI_SYS_STATUS0 + (i)) 239#define SSI_SYS_STATUS(i) (SSI_SYS_STATUS0 + (i))
213 240
214 241
diff --git a/sound/soc/sh/rcar/ssiu.c b/sound/soc/sh/rcar/ssiu.c
index c74991dd18ab..2347f3404c06 100644
--- a/sound/soc/sh/rcar/ssiu.c
+++ b/sound/soc/sh/rcar/ssiu.c
@@ -181,28 +181,26 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod,
181 if (rsnd_ssi_use_busif(io)) { 181 if (rsnd_ssi_use_busif(io)) {
182 int id = rsnd_mod_id(mod); 182 int id = rsnd_mod_id(mod);
183 int busif = rsnd_mod_id_sub(mod); 183 int busif = rsnd_mod_id_sub(mod);
184 enum rsnd_reg adinr_reg, mode_reg, dalign_reg;
184 185
185 /*
186 * FIXME
187 *
188 * We can't support SSI9-4/5/6/7, because its address is
189 * out of calculation rule
190 */
191 if ((id == 9) && (busif >= 4)) { 186 if ((id == 9) && (busif >= 4)) {
192 struct device *dev = rsnd_priv_to_dev(priv); 187 adinr_reg = SSI9_BUSIF_ADINR(busif);
193 188 mode_reg = SSI9_BUSIF_MODE(busif);
194 dev_err(dev, "This driver doesn't support SSI%d-%d, so far", 189 dalign_reg = SSI9_BUSIF_DALIGN(busif);
195 id, busif); 190 } else {
191 adinr_reg = SSI_BUSIF_ADINR(busif);
192 mode_reg = SSI_BUSIF_MODE(busif);
193 dalign_reg = SSI_BUSIF_DALIGN(busif);
196 } 194 }
197 195
198 rsnd_mod_write(mod, SSI_BUSIF_ADINR(busif), 196 rsnd_mod_write(mod, adinr_reg,
199 rsnd_get_adinr_bit(mod, io) | 197 rsnd_get_adinr_bit(mod, io) |
200 (rsnd_io_is_play(io) ? 198 (rsnd_io_is_play(io) ?
201 rsnd_runtime_channel_after_ctu(io) : 199 rsnd_runtime_channel_after_ctu(io) :
202 rsnd_runtime_channel_original(io))); 200 rsnd_runtime_channel_original(io)));
203 rsnd_mod_write(mod, SSI_BUSIF_MODE(busif), 201 rsnd_mod_write(mod, mode_reg,
204 rsnd_get_busif_shift(io, mod) | 1); 202 rsnd_get_busif_shift(io, mod) | 1);
205 rsnd_mod_write(mod, SSI_BUSIF_DALIGN(busif), 203 rsnd_mod_write(mod, dalign_reg,
206 rsnd_get_dalign(mod, io)); 204 rsnd_get_dalign(mod, io));
207 } 205 }
208 206