56 lines
2.0 KiB
Diff
56 lines
2.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Fri, 30 Oct 2020 15:46:41 +0100
|
|
Subject: [PATCH] ASoC: sun4i-i2s: Fix setting of FIFO modes
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
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 <samuel@sholland.org>
|
|
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
|
|
Acked-by: Maxime Ripard <mripard@kernel.org>
|
|
Signed-off-by: Clément Péron <peron.clem@gmail.com>
|
|
Link: https://lore.kernel.org/r/20201030144648.397824-9-peron.clem@gmail.com
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
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 003610c0badf..4f5cd850752d 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;
|