diff options
-rw-r--r-- | sound/soc/sh/rcar/gen.c | 16 | ||||
-rw-r--r-- | sound/soc/sh/rcar/rsnd.h | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/sound/soc/sh/rcar/gen.c b/sound/soc/sh/rcar/gen.c index 8c7dc51b1c4f..48f704b1d80e 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 | { |
diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index 09fcc54a8ee0..f729646e3d18 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h | |||
@@ -157,12 +157,16 @@ struct rsnd_dai_stream; | |||
157 | rsnd_read(rsnd_mod_to_priv(m), m, RSND_REG_##r) | 157 | rsnd_read(rsnd_mod_to_priv(m), m, RSND_REG_##r) |
158 | #define rsnd_mod_write(m, r, d) \ | 158 | #define rsnd_mod_write(m, r, d) \ |
159 | rsnd_write(rsnd_mod_to_priv(m), m, RSND_REG_##r, d) | 159 | rsnd_write(rsnd_mod_to_priv(m), m, RSND_REG_##r, d) |
160 | #define rsnd_mod_force_write(m, r, d) \ | ||
161 | rsnd_force_write(rsnd_mod_to_priv(m), m, RSND_REG_##r, d) | ||
160 | #define rsnd_mod_bset(m, r, s, d) \ | 162 | #define rsnd_mod_bset(m, r, s, d) \ |
161 | rsnd_bset(rsnd_mod_to_priv(m), m, RSND_REG_##r, s, d) | 163 | rsnd_bset(rsnd_mod_to_priv(m), m, RSND_REG_##r, s, d) |
162 | 164 | ||
163 | u32 rsnd_read(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg); | 165 | u32 rsnd_read(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg); |
164 | void rsnd_write(struct rsnd_priv *priv, struct rsnd_mod *mod, | 166 | void rsnd_write(struct rsnd_priv *priv, struct rsnd_mod *mod, |
165 | enum rsnd_reg reg, u32 data); | 167 | enum rsnd_reg reg, u32 data); |
168 | void rsnd_force_write(struct rsnd_priv *priv, struct rsnd_mod *mod, | ||
169 | enum rsnd_reg reg, u32 data); | ||
166 | void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg, | 170 | void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg, |
167 | u32 mask, u32 data); | 171 | u32 mask, u32 data); |
168 | u32 rsnd_get_adinr(struct rsnd_mod *mod, struct rsnd_dai_stream *io); | 172 | u32 rsnd_get_adinr(struct rsnd_mod *mod, struct rsnd_dai_stream *io); |