55 lines
1.8 KiB
Diff
55 lines
1.8 KiB
Diff
From 347ba45f97d2ffa7b7a3e277f26f7b534cec1c1c Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Sun, 27 Sep 2020 21:29:00 +0200
|
|
Subject: [PATCH 285/351] 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>
|
|
Signed-off-by: Clément Péron <peron.clem@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 3f9110d70941..9cd6cd1cd284 100644
|
|
--- a/sound/soc/sunxi/sun4i-i2s.c
|
|
+++ b/sound/soc/sunxi/sun4i-i2s.c
|
|
@@ -586,6 +586,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;
|
|
@@ -914,13 +921,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.34.0
|
|
|