ASoC: omap-mcbsp: Support for sDMA packet mode
authorPeter Ujfalusi <peter.ujfalusi@nokia.com>
Thu, 29 Jul 2010 06:51:27 +0000 (09:51 +0300)
committerLiam Girdwood <lrg@slimlogic.co.uk>
Mon, 2 Aug 2010 09:38:16 +0000 (10:38 +0100)
commitcf80e15860852be5ce38714979db94ec36c5e288
treed2acef3fa3efb715416f6ac3bc0703080e584791
parent15d0143007b68079aec02918d890c26ed4eaf3b9
ASoC: omap-mcbsp: Support for sDMA packet mode

Utilize the sDMA controller's packet syncronization mode, when
the McBSP FIFO is in use (by extending the THRESHOLD mode).
When the sDMA is configured for packet mode, the sDMA frame size
does not need to match with the McBSP threshold configuration.
Uppon DMA request the sDMA will transfer packet size number of
words, and still trigger interrupt on frame boundary.

The patch extends the original THRESHOLD mode by doing the
following:

if (period_words <= max_threshold)
Current THRESHOLD mode configuration

Otherwise (period_words > max_threshold)
McBSP threshold = sDMA packet size
sDMA frame size = period size

With the extended THRESHOLD mode we can remove the constraint
for the maximum period size, since if the period size is
bigger than the maximum allowed threshold, than the driver
will switch to packet mode, and picks the best (biggest)
threshold value, which can divide evenly the period size.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
sound/soc/omap/omap-mcbsp.c