diff options
Diffstat (limited to 'sound/soc/davinci')
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 17 |
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 | ||