> Subject: [PATCH] ASoC: fsl_sai: Fix Bit Clock Polarity configurations > > The BCP bit in TCR4/RCR4 register rules as followings: > 0 Bit clock is active high with drive outputs on rising edge > and sample inputs on falling edge. > 1 Bit clock is active low with drive outputs on falling edge > and sample inputs on rising edge. > > For all formats currently supported in the fsl_sai driver, they're exactly > sending data on the falling edge and sampling on the rising edge. > > However, the driver clears this BCP bit for all of them which results click > noise when working with SGTL5000 and big noise with WM8962. > > Thus this patch corrects the BCP settings for all the formats here to fix > the nosie issue. > > Signed-off-by: Nicolin Chen <guangyu.c...@freescale.com> > ---
Good catch. Acked-by: Xiubo Li <li.xi...@freescale.com> Thanks, -- BRs, Xiubo > sound/soc/fsl/fsl_sai.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c > index 99051c7..9bbebea 100644 > --- a/sound/soc/fsl/fsl_sai.c > +++ b/sound/soc/fsl/fsl_sai.c > @@ -180,7 +180,7 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai > *cpu_dai, > * that is, together with the last bit of the previous > * data word. > */ > - val_cr2 &= ~FSL_SAI_CR2_BCP; > + val_cr2 |= FSL_SAI_CR2_BCP; > val_cr4 |= FSL_SAI_CR4_FSE | FSL_SAI_CR4_FSP; > break; > case SND_SOC_DAIFMT_LEFT_J: > @@ -188,7 +188,7 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai > *cpu_dai, > * Frame high, one word length for frame sync, > * frame sync asserts with the first bit of the frame. > */ > - val_cr2 &= ~FSL_SAI_CR2_BCP; > + val_cr2 |= FSL_SAI_CR2_BCP; > val_cr4 &= ~(FSL_SAI_CR4_FSE | FSL_SAI_CR4_FSP); > break; > case SND_SOC_DAIFMT_DSP_A: > @@ -198,7 +198,7 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai > *cpu_dai, > * that is, together with the last bit of the previous > * data word. > */ > - val_cr2 &= ~FSL_SAI_CR2_BCP; > + val_cr2 |= FSL_SAI_CR2_BCP; > val_cr4 &= ~FSL_SAI_CR4_FSP; > val_cr4 |= FSL_SAI_CR4_FSE; > sai->is_dsp_mode = true; > @@ -208,7 +208,7 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai > *cpu_dai, > * Frame high, one bit for frame sync, > * frame sync asserts with the first bit of the frame. > */ > - val_cr2 &= ~FSL_SAI_CR2_BCP; > + val_cr2 |= FSL_SAI_CR2_BCP; > val_cr4 &= ~(FSL_SAI_CR4_FSE | FSL_SAI_CR4_FSP); > sai->is_dsp_mode = true; > break; > -- > 1.8.4 > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev