diff options
author | Mark Brown <broonie@kernel.org> | 2019-02-26 07:18:11 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-02-26 07:18:11 -0500 |
commit | ae3f563a85e96cc8ba68ba2eae36da9bba6e9c4a (patch) | |
tree | c0d5172578b69d6a29a92c00d276595b31add5e1 /sound/soc/sh | |
parent | cdcdba5d624fc3fbad224230ca318c6ddf73795a (diff) | |
parent | 8af6c521cc236534093f9e744cfa004314bfe5ae (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.c | 24 | ||||
-rw-r--r-- | sound/soc/sh/rcar/rsnd.h | 27 | ||||
-rw-r--r-- | sound/soc/sh/rcar/ssiu.c | 24 |
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 | ||