diff options
Diffstat (limited to 'sound/soc/sh/rcar/gen.c')
-rw-r--r-- | sound/soc/sh/rcar/gen.c | 33 |
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 | ||
106 | void 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 | |||
106 | void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, | 122 | void 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), |