]> git.proxmox.com Git - mirror_ubuntu-bionic-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)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Aug 2019 09:18:49 +0000 (11:18 +0200)
commit49a49f5a13211f7e4fbf07c3dbdfb921ff727564
treea606dddbe611a832d70b4390f55275ff6d110c3c
parent970bddf9764807823bb4d2e87380e840ce00e45c
ASoC: fsl_esai: fix channel swap issue when stream starts

BugLink: https://bugs.launchpad.net/bugs/1838116
commit 0ff4e8c61b794a4bf6c854ab071a1abaaa80f358 upstream.

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 43d24e76b698 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
sound/soc/fsl/fsl_esai.c