]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC: fsl_sai: Improve enable flow in fsl_sai_trigger()
authorNicolin Chen <Guangyu.Chen@freescale.com>
Wed, 23 Jul 2014 11:23:40 +0000 (19:23 +0800)
committerMark Brown <broonie@linaro.org>
Fri, 25 Jul 2014 17:52:35 +0000 (18:52 +0100)
commit20a1ff811d2efce72dbc018e2ee10c1328b0b25d
tree6ce849c50cb1c7bda1875b87d610155153c621a3
parent38b9e2718907499d3d1162e0c4e38ad0310ba9c5
ASoC: fsl_sai: Improve enable flow in fsl_sai_trigger()

The previous enable flow:
1, Enable TE&RE (SAI starts to consume tx FIFO and feed rx FIFO)
2, Mask IRQ of Tx/Rx to enable its interrupt.
3, Enable DMA request of Tx/Rx.

As this flow would enable DMA request later than TERE, the Tx FIFO
would be easily emptied into underrun while Rx FIFO would be easily
stuffed into overrun due to the delayed DMA transfering.

This issue happened merely occational before the patch 'ASoC: fsl_sai:
Reset FIFOs after disabling TE/RE' because there were useless data
remaining in the FIFO for the gap. However, it manifested after FIFO
reset's implemented.

After this patch, the new flow:
1, Enable DMA request of Tx/Rx.
2, Enable TE&RE (SAI starts to consume tx FIFO and feed rx FIFO)
3, Mask IRQ of Tx/Rx to enable its interrupt.

Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/fsl/fsl_sai.c