ASoC: fsl_sai: Reset FIFOs after disabling TE/RE
SAI will not clear their FIFOs after disabling TE/RE. Therfore, the driver should take care the task so as not to let useless data remain in the FIFO. Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
7171511eae
commit
eff952b733
@ -371,10 +371,13 @@ static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd,
|
|||||||
|
|
||||||
/* Check if the opposite FRDE is also disabled */
|
/* Check if the opposite FRDE is also disabled */
|
||||||
if (!(tx ? rcsr & FSL_SAI_CSR_FRDE : tcsr & FSL_SAI_CSR_FRDE)) {
|
if (!(tx ? rcsr & FSL_SAI_CSR_FRDE : tcsr & FSL_SAI_CSR_FRDE)) {
|
||||||
|
/* Disable both directions and reset their FIFOs */
|
||||||
regmap_update_bits(sai->regmap, FSL_SAI_TCSR,
|
regmap_update_bits(sai->regmap, FSL_SAI_TCSR,
|
||||||
FSL_SAI_CSR_TERE, 0);
|
FSL_SAI_CSR_TERE | FSL_SAI_CSR_FR,
|
||||||
|
FSL_SAI_CSR_FR);
|
||||||
regmap_update_bits(sai->regmap, FSL_SAI_RCSR,
|
regmap_update_bits(sai->regmap, FSL_SAI_RCSR,
|
||||||
FSL_SAI_CSR_TERE, 0);
|
FSL_SAI_CSR_TERE | FSL_SAI_CSR_FR,
|
||||||
|
FSL_SAI_CSR_FR);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user