mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-19 16:14:13 +08:00
OMAP: McBSP: Add 32-bit mode support
This patchs should allow to use 32-bit samples on e.g. TLV320AIC3x codec, or others. Signed-off-by: Sergey Lapin <slapin@ossfans.org> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
36aeff6146
commit
d98508a121
@ -320,8 +320,18 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].dma_req = dma;
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].port_addr = port;
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].sync_mode = sync_mode;
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].data_type =
|
||||
OMAP_DMA_DATA_TYPE_S16;
|
||||
switch (params_format(params)) {
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].data_type =
|
||||
OMAP_DMA_DATA_TYPE_S16;
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S32_LE:
|
||||
omap_mcbsp_dai_dma_params[id][substream->stream].data_type =
|
||||
OMAP_DMA_DATA_TYPE_S32;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
snd_soc_dai_set_dma_data(cpu_dai, substream,
|
||||
&omap_mcbsp_dai_dma_params[id][substream->stream]);
|
||||
@ -356,6 +366,14 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
||||
regs->xcr2 |= XWDLEN2(OMAP_MCBSP_WORD_16);
|
||||
regs->xcr1 |= XWDLEN1(OMAP_MCBSP_WORD_16);
|
||||
break;
|
||||
case SNDRV_PCM_FORMAT_S32_LE:
|
||||
/* Set word lengths */
|
||||
wlen = 32;
|
||||
regs->rcr2 |= RWDLEN2(OMAP_MCBSP_WORD_32);
|
||||
regs->rcr1 |= RWDLEN1(OMAP_MCBSP_WORD_32);
|
||||
regs->xcr2 |= XWDLEN2(OMAP_MCBSP_WORD_32);
|
||||
regs->xcr1 |= XWDLEN1(OMAP_MCBSP_WORD_32);
|
||||
break;
|
||||
default:
|
||||
/* Unsupported PCM format */
|
||||
return -EINVAL;
|
||||
@ -659,13 +677,15 @@ static struct snd_soc_dai_ops omap_mcbsp_dai_ops = {
|
||||
.channels_min = 1, \
|
||||
.channels_max = 16, \
|
||||
.rates = OMAP_MCBSP_RATES, \
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE, \
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | \
|
||||
SNDRV_PCM_FMTBIT_S32_LE, \
|
||||
}, \
|
||||
.capture = { \
|
||||
.channels_min = 1, \
|
||||
.channels_max = 16, \
|
||||
.rates = OMAP_MCBSP_RATES, \
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE, \
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | \
|
||||
SNDRV_PCM_FMTBIT_S32_LE, \
|
||||
}, \
|
||||
.ops = &omap_mcbsp_dai_ops, \
|
||||
.private_data = &mcbsp_data[(link_id)].bus_id, \
|
||||
|
Loading…
Reference in New Issue
Block a user