| From ac716e26406edf82a9a83c63c6a9abc595747400 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 2 Apr 2021 11:14:05 +0300 |
| Subject: ASoC: fsl_esai: Fix TDM slot setup for I2S mode |
| |
| From: Alexander Shiyan <shc_work@mail.ru> |
| |
| [ Upstream commit e7a48c710defa0e0fef54d42b7d9e4ab596e2761 ] |
| |
| When using the driver in I2S TDM mode, the fsl_esai_startup() |
| function rewrites the number of slots previously set by the |
| fsl_esai_set_dai_tdm_slot() function to 2. |
| To fix this, let's use the saved slot count value or, if TDM |
| is not used and the number of slots is not set, the driver will use |
| the default value (2), which is set by fsl_esai_probe(). |
| |
| Signed-off-by: Alexander Shiyan <shc_work@mail.ru> |
| Acked-by: Nicolin Chen <nicoleotsuka@gmail.com> |
| Link: https://lore.kernel.org/r/20210402081405.9892-1-shc_work@mail.ru |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/fsl/fsl_esai.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c |
| index 39637ca78cdb..9f5f217a9607 100644 |
| --- a/sound/soc/fsl/fsl_esai.c |
| +++ b/sound/soc/fsl/fsl_esai.c |
| @@ -524,11 +524,13 @@ static int fsl_esai_startup(struct snd_pcm_substream *substream, |
| ESAI_SAICR_SYNC, esai_priv->synchronous ? |
| ESAI_SAICR_SYNC : 0); |
| |
| - /* Set a default slot number -- 2 */ |
| + /* Set slots count */ |
| regmap_update_bits(esai_priv->regmap, REG_ESAI_TCCR, |
| - ESAI_xCCR_xDC_MASK, ESAI_xCCR_xDC(2)); |
| + ESAI_xCCR_xDC_MASK, |
| + ESAI_xCCR_xDC(esai_priv->slots)); |
| regmap_update_bits(esai_priv->regmap, REG_ESAI_RCCR, |
| - ESAI_xCCR_xDC_MASK, ESAI_xCCR_xDC(2)); |
| + ESAI_xCCR_xDC_MASK, |
| + ESAI_xCCR_xDC(esai_priv->slots)); |
| } |
| |
| return 0; |
| -- |
| 2.30.2 |
| |