ASoC: fsl_esai: recover the channel swap after xrun
authorShengjiu Wang <shengjiu.wang@nxp.com>
Thu, 11 Jul 2019 10:49:46 +0000 (18:49 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 23 Jul 2019 11:25:05 +0000 (12:25 +0100)
commit7ccafa2b3879612ab9ed88bb6664bd4085957186
tree7e77f324e848b3ca35e02b8bb1012bb1eb3f6dd7
parent6298b78742be6593d372ed1b5bfa5397e1393595
ASoC: fsl_esai: recover the channel swap after xrun

There is chip errata ERR008000, the reference doc is
(https://www.nxp.com/docs/en/errata/IMX6DQCE.pdf),

The issue is "While using ESAI transmit or receive and
an underrun/overrun happens, channel swap may occur.
The only recovery mechanism is to reset the ESAI."

This issue exist in imx3/imx5/imx6(partial) series.

In this commit add a tasklet to handle reset of ESAI
after xrun happens to recover the channel swap.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
Link: https://lore.kernel.org/r/326035cb99975361699d9ed748054b08bc06a341.1562842206.git.shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_esai.c