aboutsummaryrefslogtreecommitdiffstats
path: root/patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch')
-rw-r--r--patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch b/patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch
new file mode 100644
index 00000000000000..619259f42cee82
--- /dev/null
+++ b/patches.renesas/0276-ASoC-rsnd-gen-add-rsnd_force_write.patch
@@ -0,0 +1,69 @@
+From a1afd3650ad69f5e5ed1711a2d33d5e443b1c24b Mon Sep 17 00:00:00 2001
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Date: Tue, 16 Jun 2015 08:53:11 +0000
+Subject: [PATCH 276/326] ASoC: rsnd: gen: add rsnd_force_write()
+
+rsnd_force_write() is similar to rsnd_write(),
+but rsnd_force_write() write data to register even though
+it is same value.
+
+Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+(cherry picked from commit 7b47ab47b3938e2274834dbde7915df98fc74368)
+Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
+---
+ sound/soc/sh/rcar/gen.c | 16 ++++++++++++++++
+ sound/soc/sh/rcar/rsnd.h | 4 ++++
+ 2 files changed, 20 insertions(+)
+
+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,
+ regmap_fields_write(gen->regs[reg], rsnd_mod_id(mod), data);
+ }
+
++void rsnd_force_write(struct rsnd_priv *priv,
++ struct rsnd_mod *mod,
++ enum rsnd_reg reg, u32 data)
++{
++ struct device *dev = rsnd_priv_to_dev(priv);
++ struct rsnd_gen *gen = rsnd_priv_to_gen(priv);
++
++ if (!rsnd_is_accessible_reg(priv, gen, reg))
++ return;
++
++ dev_dbg(dev, "w %s[%d] - %4d : %08x\n",
++ rsnd_mod_name(mod), rsnd_mod_id(mod), reg, data);
++
++ regmap_fields_force_write(gen->regs[reg], rsnd_mod_id(mod), data);
++}
++
+ void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod,
+ enum rsnd_reg reg, u32 mask, u32 data)
+ {
+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;
+ rsnd_read(rsnd_mod_to_priv(m), m, RSND_REG_##r)
+ #define rsnd_mod_write(m, r, d) \
+ rsnd_write(rsnd_mod_to_priv(m), m, RSND_REG_##r, d)
++#define rsnd_mod_force_write(m, r, d) \
++ rsnd_force_write(rsnd_mod_to_priv(m), m, RSND_REG_##r, d)
+ #define rsnd_mod_bset(m, r, s, d) \
+ rsnd_bset(rsnd_mod_to_priv(m), m, RSND_REG_##r, s, d)
+
+ u32 rsnd_read(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg);
+ void rsnd_write(struct rsnd_priv *priv, struct rsnd_mod *mod,
+ enum rsnd_reg reg, u32 data);
++void rsnd_force_write(struct rsnd_priv *priv, struct rsnd_mod *mod,
++ enum rsnd_reg reg, u32 data);
+ void rsnd_bset(struct rsnd_priv *priv, struct rsnd_mod *mod, enum rsnd_reg reg,
+ u32 mask, u32 data);
+ u32 rsnd_get_adinr(struct rsnd_mod *mod, struct rsnd_dai_stream *io);
+--
+2.6.2
+