]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: fsl_esai: fix channel swap issue when stream starts
authorS.j. Wang <shengjiu.wang@nxp.com>
Wed, 27 Feb 2019 06:31:12 +0000 (06:31 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 21 Mar 2019 14:49:36 +0000 (14:49 +0000)
commit8e2ea30dcac405b029331ad1d5d6af613bd71fd5
treec395ad092e7bd5f8869b85fce51337d73adaf1b6
parent760a7533a012ca0ec4703b6a0d3ac893bdb21efd
ASoC: fsl_esai: fix channel swap issue when stream starts

There is very low possibility ( < 0.1% ) that channel swap happened
in beginning when multi output/input pin is enabled. The issue is
that hardware can't send data to correct pin in the beginning with
the normal enable flow.

This is hardware issue, but there is no errata, the workaround flow
is that: Each time playback/recording, firstly clear the xSMA/xSMB,
then enable TE/RE, then enable xSMB and xSMA (xSMB must be enabled
before xSMA). Which is to use the xSMA as the trigger start register,
previously the xCR_TE or xCR_RE is the bit for starting.

Fixes commit 8ec8267ff06f ("ASoC: fsl_esai: Add ESAI CPU DAI driver")
Cc: <stable@vger.kernel.org>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_esai.c