[alsa-devel] [PATCH] ASoC: fsl_sai: Fix incorrect condition check in trigger()
Patch ASoC: fsl_sai: Fix buggy configurations in trigger() doesn't entirely fix the condition: FRDE of the current substream direction is being cleared while the code is still using the non-updated one.
Thus this patch fixes this issue by checking the opposite one's FRDE alone since the current one's is absolutely disabled.
Signed-off-by: Nicolin Chen Guangyu.Chen@freescale.com --- sound/soc/fsl/fsl_sai.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index 9858d42..1716a41 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -343,7 +343,8 @@ static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd, regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx), FSL_SAI_CSR_xIE_MASK, 0);
- if (!(tcsr & FSL_SAI_CSR_FRDE || rcsr & FSL_SAI_CSR_FRDE)) { + /* Check if the opposite FRDE is also disabled */ + if (!(tx ? rcsr & FSL_SAI_CSR_FRDE : tcsr & FSL_SAI_CSR_FRDE)) { regmap_update_bits(sai->regmap, FSL_SAI_TCSR, FSL_SAI_CSR_TERE, 0); regmap_update_bits(sai->regmap, FSL_SAI_RCSR,
On Fri, Apr 11, 2014 at 10:10:00PM +0800, Nicolin Chen wrote:
/* Check if the opposite FRDE is also disabled */
if (!(tx ? rcsr & FSL_SAI_CSR_FRDE : tcsr & FSL_SAI_CSR_FRDE)) {
I've applied this since it's a fix but this is *not* a triumph of legibility, the ternery operator is often not helpful.
On Mon, Apr 14, 2014 at 09:31:26PM +0100, Mark Brown wrote:
On Fri, Apr 11, 2014 at 10:10:00PM +0800, Nicolin Chen wrote:
/* Check if the opposite FRDE is also disabled */
if (!(tx ? rcsr & FSL_SAI_CSR_FRDE : tcsr & FSL_SAI_CSR_FRDE)) {
I've applied this since it's a fix but this is *not* a triumph of legibility, the ternery operator is often not helpful.
It looks like I've got a bad habit again. I'll be careful next time.
Thank you for reminding me, Nicolin
participants (2)
-
Mark Brown
-
Nicolin Chen