diff mbox series

ASoC: fsl_ssi: Fix TDM slot setup for I2S mode

Message ID 20210216114221.26635-1-shc_work@mail.ru
State Accepted
Commit 87263968516fb9507d6215d53f44052627fae8d8
Headers show
Series ASoC: fsl_ssi: Fix TDM slot setup for I2S mode | expand

Commit Message

Alexander Shiyan Feb. 16, 2021, 11:42 a.m. UTC
When using the driver in I2S TDM mode, the _fsl_ssi_set_dai_fmt()
function rewrites the number of slots previously set by the
fsl_ssi_set_dai_tdm_slot() function to 2 by default.
To fix this, let's use the saved slot count value or, if TDM
is not used and the slot count is not set, proceed as before.

Fixes: 4f14f5c11db1 ("ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode")
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
---
 sound/soc/fsl/fsl_ssi.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Nicolin Chen Feb. 18, 2021, 6:26 a.m. UTC | #1
On Tue, Feb 16, 2021 at 02:42:21PM +0300, Alexander Shiyan wrote:
> When using the driver in I2S TDM mode, the _fsl_ssi_set_dai_fmt()
> function rewrites the number of slots previously set by the
> fsl_ssi_set_dai_tdm_slot() function to 2 by default.
> To fix this, let's use the saved slot count value or, if TDM
> is not used and the slot count is not set, proceed as before.
> 
> Fixes: 4f14f5c11db1 ("ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode")
> Signed-off-by: Alexander Shiyan <shc_work@mail.ru>

Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Mark Brown Feb. 23, 2021, 2:10 p.m. UTC | #2
On Tue, 16 Feb 2021 14:42:21 +0300, Alexander Shiyan wrote:
> When using the driver in I2S TDM mode, the _fsl_ssi_set_dai_fmt()
> function rewrites the number of slots previously set by the
> fsl_ssi_set_dai_tdm_slot() function to 2 by default.
> To fix this, let's use the saved slot count value or, if TDM
> is not used and the slot count is not set, proceed as before.

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: fsl_ssi: Fix TDM slot setup for I2S mode
      commit: 9fd914d917da05641b42cab7d40bdf8ab06dac3b

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
diff mbox series

Patch

diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index 404be27c15fe..1d774c876c52 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -878,6 +878,7 @@  static int fsl_ssi_hw_free(struct snd_pcm_substream *substream,
 static int _fsl_ssi_set_dai_fmt(struct fsl_ssi *ssi, unsigned int fmt)
 {
 	u32 strcr = 0, scr = 0, stcr, srcr, mask;
+	unsigned int slots;
 
 	ssi->dai_fmt = fmt;
 
@@ -909,10 +910,11 @@  static int _fsl_ssi_set_dai_fmt(struct fsl_ssi *ssi, unsigned int fmt)
 			return -EINVAL;
 		}
 
+		slots = ssi->slots ? : 2;
 		regmap_update_bits(ssi->regs, REG_SSI_STCCR,
-				   SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(2));
+				   SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(slots));
 		regmap_update_bits(ssi->regs, REG_SSI_SRCCR,
-				   SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(2));
+				   SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(slots));
 
 		/* Data on rising edge of bclk, frame low, 1clk before data */
 		strcr |= SSI_STCR_TFSI | SSI_STCR_TSCKP | SSI_STCR_TEFS;