diff options
author | Chaithrika U S <chaithrika@ti.com> | 2009-09-30 17:32:27 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-09-30 08:43:55 -0400 |
commit | 4fa9c1a5953441e06dbde7b6a655cbf6618e61dd (patch) | |
tree | 661628c2ba19c95bdb3dc4ecb26bb1a405e78ea8 /sound/soc/davinci/davinci-mcasp.c | |
parent | be2500b8353d41463399e997fe8562f772dcaaba (diff) |
ASoC: DaVinci: McASP FIFO related updates
The DMA params for McASP with FIFO has been updated so that it works for
various FIFO levels. A member- 'fifo_level' has been added to the DMA
params data structure. The fifo_level can be adjusted by the tx[rx]_numevt
platform data. This is relevant only for DA8xx/OMAP-L1xx platforms. This
implementation has been tested for numevt values 1, 2, 4, 8.
Signed-off-by: Chaithrika U S <chaithrika@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/davinci/davinci-mcasp.c')
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index 5d1f98a4c978..50ad0519a8fa 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c | |||
@@ -714,16 +714,13 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream, | |||
714 | struct davinci_pcm_dma_params *dma_params = | 714 | struct davinci_pcm_dma_params *dma_params = |
715 | &dev->dma_params[substream->stream]; | 715 | &dev->dma_params[substream->stream]; |
716 | int word_length; | 716 | int word_length; |
717 | u8 numevt; | 717 | u8 fifo_level; |
718 | 718 | ||
719 | davinci_hw_common_param(dev, substream->stream); | 719 | davinci_hw_common_param(dev, substream->stream); |
720 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 720 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) |
721 | numevt = dev->txnumevt; | 721 | fifo_level = dev->txnumevt; |
722 | else | 722 | else |
723 | numevt = dev->rxnumevt; | 723 | fifo_level = dev->rxnumevt; |
724 | |||
725 | if (!numevt) | ||
726 | numevt = 1; | ||
727 | 724 | ||
728 | if (dev->op_mode == DAVINCI_MCASP_DIT_MODE) | 725 | if (dev->op_mode == DAVINCI_MCASP_DIT_MODE) |
729 | davinci_hw_dit_param(dev); | 726 | davinci_hw_dit_param(dev); |
@@ -751,12 +748,12 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream, | |||
751 | return -EINVAL; | 748 | return -EINVAL; |
752 | } | 749 | } |
753 | 750 | ||
754 | if (dev->version == MCASP_VERSION_2) { | 751 | if (dev->version == MCASP_VERSION_2 && !fifo_level) |
755 | dma_params->data_type *= numevt; | 752 | dma_params->acnt = 4; |
756 | dma_params->acnt = 4 * numevt; | 753 | else |
757 | } else | ||
758 | dma_params->acnt = dma_params->data_type; | 754 | dma_params->acnt = dma_params->data_type; |
759 | 755 | ||
756 | dma_params->fifo_level = fifo_level; | ||
760 | davinci_config_channel_size(dev, word_length); | 757 | davinci_config_channel_size(dev, word_length); |
761 | 758 | ||
762 | return 0; | 759 | return 0; |