aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/davinci
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2014-04-01 08:55:12 -0400
committerMark Brown <broonie@linaro.org>2014-04-14 12:24:11 -0400
commit33445643c3146fa43af3e9aa1cce08da9fe03157 (patch)
tree22f23357ea12951fd3a7881e8799f34969733c74 /sound/soc/davinci
parentdd093a0f1962fb71e8852411f03fec7290027a90 (diff)
ASoC: davinci-mcasp: Fine tune and correct the DMA burst configuration
When the AFIFO is not enabled but more than one serializers are used the DMA need to transfer number of words equal to active serializers when a DMA request is generated. When configuring the burst for the DMA avoid using value '1' for the burst since it is going to enable additional logic in the DMA drivers. Burst '1' means that the DMA should send/receive one word per DMA requests. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound/soc/davinci')
-rw-r--r--sound/soc/davinci/davinci-mcasp.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index 9454d123f4bb..196158f2d1c4 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -529,8 +529,19 @@ static int mcasp_common_hw_param(struct davinci_mcasp *mcasp, int stream,
529 /* AFIFO is not in use */ 529 /* AFIFO is not in use */
530 if (!numevt) { 530 if (!numevt) {
531 /* Configure the burst size for platform drivers */ 531 /* Configure the burst size for platform drivers */
532 dma_params->fifo_level = 0; 532 if (active_serializers > 1) {
533 dma_data->maxburst = 0; 533 /*
534 * If more than one serializers are in use we have one
535 * DMA request to provide data for all serializers.
536 * For example if three serializers are enabled the DMA
537 * need to transfer three words per DMA request.
538 */
539 dma_params->fifo_level = active_serializers;
540 dma_data->maxburst = active_serializers;
541 } else {
542 dma_params->fifo_level = 0;
543 dma_data->maxburst = 0;
544 }
534 return 0; 545 return 0;
535 } 546 }
536 547
@@ -558,6 +569,8 @@ static int mcasp_common_hw_param(struct davinci_mcasp *mcasp, int stream,
558 mcasp_mod_bits(mcasp, reg, NUMEVT(numevt), NUMEVT_MASK); 569 mcasp_mod_bits(mcasp, reg, NUMEVT(numevt), NUMEVT_MASK);
559 570
560 /* Configure the burst size for platform drivers */ 571 /* Configure the burst size for platform drivers */
572 if (numevt == 1)
573 numevt = 0;
561 dma_params->fifo_level = numevt; 574 dma_params->fifo_level = numevt;
562 dma_data->maxburst = numevt; 575 dma_data->maxburst = numevt;
563 576