[alsa-devel] [PATCH] ASoC: fsl_ssi: Fix channel swap on playback start
Fabio Estevam
festevam at gmail.com
Sat Apr 1 02:59:46 CEST 2017
Hi Nicolin,
On Fri, Mar 31, 2017 at 8:53 PM, Nicolin Chen <nicoleotsuka at gmail.com> wrote:
>> +#define FSLSSI_SSIEN_WORKAROUND (CCSR_SSI_SCR_SSIEN | CCSR_SSI_SCR_TE | \
>> + CCSR_SSI_SCR_RE)
>
> Enable RE??
Yes, same idea as in f8fdf5375e2005f2 ("ASoC: fsl-ssi: add SSIEN
errata work around").
The idea here was not to restrict the erratum to AC97 mode only.
>
>> enum fsl_ssi_type {
>> FSL_SSI_MCP8610,
>> FSL_SSI_MX21,
>> @@ -559,7 +562,8 @@ static void fsl_ssi_config(struct fsl_ssi_private *ssi_private, bool enable,
>> int i;
>> int max_loop = 100;
>> regmap_update_bits(regs, CCSR_SSI_SCR,
>> - CCSR_SSI_SCR_SSIEN, CCSR_SSI_SCR_SSIEN);
>> + FSLSSI_SSIEN_WORKAROUND,
>> + FSLSSI_SSIEN_WORKAROUND);
>> for (i = 0; i < max_loop; i++) {
>> u32 sfcsr;
>> regmap_read(regs, CCSR_SSI_SFCSR, &sfcsr);
>
> If this change is made, the whole "if (enable)" part here seems
> to be meaningless (or even worse) as it aimed to set TE later
> than SSIEN so as to offset the delay from DMA TX.
>
> Check: https://patchwork.kernel.org/patch/9091051/
>
> If this errata is mandatory, we probably should revert that the
> commit and find other solution/workaround for Arnaud and Caleb.
Reverting 61fcf10a0ee44763e0 ("ASoC: fsl_ssi: Fix channel slipping in
Playback at startup") still causes channel swaps on my tests, so
better not to revert it.
More information about the Alsa-devel
mailing list