aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/sh/rcar/gen.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/sh/rcar/gen.c')
-rw-r--r--sound/soc/sh/rcar/gen.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/sound/soc/sh/rcar/gen.c b/sound/soc/sh/rcar/gen.c
index 8c7dc51b1c4f..f04d17bc6e3d 100644
--- a/sound/soc/sh/rcar/gen.c
+++ b/sound/soc/sh/rcar/gen.c
@@ -103,6 +103,22 @@ void rsnd_write(struct rsnd_priv *priv,
103 regmap_fields_write(gen->regs[reg], rsnd_mod_id(mod), data); 103 regmap_fields_write(gen->regs[reg], rsnd_mod_id(mod), data);
104} 104}
105 105
106void rsnd_force_write(struct rsnd_priv *priv,
107 struct rsnd_mod *mod,
108 enum rsnd_reg reg, u32 data)
109{
110 struct device *dev = rsnd_priv_to_dev(priv);
111 struct rsnd_gen *gen = rsnd_priv_to_gen(priv);
112
113 if (!rsnd_is_accessible_reg(priv, gen, reg))
114 return;
115
116 dev_dbg(dev, "w %s[%d] - %4d : %08x\n",
117 rsnd_mod_name(mod), rsnd_mod_id(mod), reg, data);
118
119 regmap_fields_force_write(gen->regs[reg], rsnd_mod_id(mod), data);
120}
121
106void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, 122void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod,
107 enum rsnd_reg reg, u32 mask, u32 data) 123 enum rsnd_reg reg, u32 mask, u32 data)
108{ 124{
@@ -200,12 +216,13 @@ static int rsnd_gen2_probe(struct platform_device *pdev,
200 /* FIXME: it needs SSI_MODE2/3 in the future */ 216 /* FIXME: it needs SSI_MODE2/3 in the future */
201 RSND_GEN_M_REG(SSI_BUSIF_MODE, 0x0, 0x80), 217 RSND_GEN_M_REG(SSI_BUSIF_MODE, 0x0, 0x80),
202 RSND_GEN_M_REG(SSI_BUSIF_ADINR, 0x4, 0x80), 218 RSND_GEN_M_REG(SSI_BUSIF_ADINR, 0x4, 0x80),
203 RSND_GEN_M_REG(BUSIF_DALIGN, 0x8, 0x80), 219 RSND_GEN_M_REG(SSI_BUSIF_DALIGN,0x8, 0x80),
204 RSND_GEN_M_REG(SSI_CTRL, 0x10, 0x80), 220 RSND_GEN_M_REG(SSI_CTRL, 0x10, 0x80),
205 RSND_GEN_M_REG(INT_ENABLE, 0x18, 0x80), 221 RSND_GEN_M_REG(SSI_INT_ENABLE, 0x18, 0x80),
206 }; 222 };
207 struct rsnd_regmap_field_conf conf_scu[] = { 223 struct rsnd_regmap_field_conf conf_scu[] = {
208 RSND_GEN_M_REG(SRC_BUSIF_MODE, 0x0, 0x20), 224 RSND_GEN_M_REG(SRC_BUSIF_MODE, 0x0, 0x20),
225 RSND_GEN_M_REG(SRC_BUSIF_DALIGN,0x8, 0x20),
209 RSND_GEN_M_REG(SRC_ROUTE_MODE0, 0xc, 0x20), 226 RSND_GEN_M_REG(SRC_ROUTE_MODE0, 0xc, 0x20),
210 RSND_GEN_M_REG(SRC_CTRL, 0x10, 0x20), 227 RSND_GEN_M_REG(SRC_CTRL, 0x10, 0x20),
211 RSND_GEN_M_REG(SRC_INT_ENABLE0, 0x18, 0x20), 228 RSND_GEN_M_REG(SRC_INT_ENABLE0, 0x18, 0x20),
@@ -223,6 +240,18 @@ static int rsnd_gen2_probe(struct platform_device *pdev,
223 RSND_GEN_M_REG(SRC_SRCCR, 0x224, 0x40), 240 RSND_GEN_M_REG(SRC_SRCCR, 0x224, 0x40),
224 RSND_GEN_M_REG(SRC_BSDSR, 0x22c, 0x40), 241 RSND_GEN_M_REG(SRC_BSDSR, 0x22c, 0x40),
225 RSND_GEN_M_REG(SRC_BSISR, 0x238, 0x40), 242 RSND_GEN_M_REG(SRC_BSISR, 0x238, 0x40),
243 RSND_GEN_M_REG(CTU_CTUIR, 0x504, 0x100),
244 RSND_GEN_M_REG(CTU_ADINR, 0x508, 0x100),
245 RSND_GEN_M_REG(MIX_SWRSR, 0xd00, 0x40),
246 RSND_GEN_M_REG(MIX_MIXIR, 0xd04, 0x40),
247 RSND_GEN_M_REG(MIX_ADINR, 0xd08, 0x40),
248 RSND_GEN_M_REG(MIX_MIXMR, 0xd10, 0x40),
249 RSND_GEN_M_REG(MIX_MVPDR, 0xd14, 0x40),
250 RSND_GEN_M_REG(MIX_MDBAR, 0xd18, 0x40),
251 RSND_GEN_M_REG(MIX_MDBBR, 0xd1c, 0x40),
252 RSND_GEN_M_REG(MIX_MDBCR, 0xd20, 0x40),
253 RSND_GEN_M_REG(MIX_MDBDR, 0xd24, 0x40),
254 RSND_GEN_M_REG(MIX_MDBER, 0xd28, 0x40),
226 RSND_GEN_M_REG(DVC_SWRSR, 0xe00, 0x100), 255 RSND_GEN_M_REG(DVC_SWRSR, 0xe00, 0x100),
227 RSND_GEN_M_REG(DVC_DVUIR, 0xe04, 0x100), 256 RSND_GEN_M_REG(DVC_DVUIR, 0xe04, 0x100),
228 RSND_GEN_M_REG(DVC_ADINR, 0xe08, 0x100), 257 RSND_GEN_M_REG(DVC_ADINR, 0xe08, 0x100),