ASoC: davinci-mcasp: Add overrun/underrun event handling
authorMisael Lopez Cruz <misael.lopez@ti.com>
Wed, 12 Nov 2014 14:38:05 +0000 (16:38 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 12 Nov 2014 14:55:00 +0000 (14:55 +0000)
commita7a3324a602cd7ebabfb7f5990006ec4f3d6449f
treef77c68c09dec608db66c5e16b9010bd56359d4f4
parent18a4f55756ac945bd89d1fe63dafe36462ecba86
ASoC: davinci-mcasp: Add overrun/underrun event handling

An underrun (playback) event occurs when the serializer transfer
data from the XRBUF buffer to the XRSR shift register, but the
XRBUF hasn't been filled. Similarly, the overrun (capture) event
occurs when data from the XRSR shift register is transferred to
the XRBUF but it hasn't been read yet.

These events are handled as XRUN events that cause the pcm to stop.
The stream has to be explicitly restarted by the userspace which
ensures that after stopping/starting McASP the data transfer is
aligned with DMA. The other possibility was to internally stop and
start McASP without DMA even knowing about it.

Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt
sound/soc/davinci/davinci-mcasp.c
sound/soc/davinci/davinci-mcasp.h