From: Samuel Holland <sam...@sholland.org>

Because SUN4I_I2S_FIFO_CTRL_REG is volatile, writes done while the
regmap is cache-only are ignored. To work around this, move the
configuration to a callback that runs while the ASoC core has a
runtime PM reference to the device.

Signed-off-by: Samuel Holland <sam...@sholland.org>
Reviewed-by: Chen-Yu Tsai <w...@csie.org>
Acked-by: Maxime Ripard <mrip...@kernel.org>
Signed-off-by: Clément Péron <peron.c...@gmail.com>
---
 sound/soc/sunxi/sun4i-i2s.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index 83537538f8ee..6a3207245ae2 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -596,6 +596,13 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream 
*substream,
                return ret;
        }
 
+       /* Set significant bits in our FIFOs */
+       regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
+                          SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
+                          SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
+                          SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
+                          SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
+
        switch (params_physical_width(params)) {
        case 16:
                width = DMA_SLAVE_BUSWIDTH_2_BYTES;
@@ -924,13 +931,6 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, 
unsigned int fmt)
                return ret;
        }
 
-       /* Set significant bits in our FIFOs */
-       regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
-                          SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
-                          SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
-                          SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
-                          SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
-
        i2s->format = fmt;
 
        return 0;
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20201027183149.145165-8-peron.clem%40gmail.com.

Reply via email to