Commit e4798d26 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: davinci-mcasp: Support for one channel (mono) audio

Mono audio can be achieved by configuring McASP to transmit/receive only
during one timeslot. McASP will still going to generate clocks for the
other slot(s), but will only use the single slot to transmit/receive.
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2ea659a9
...@@ -629,7 +629,7 @@ static int davinci_mcasp_ch_constraint(struct davinci_mcasp *mcasp, int stream, ...@@ -629,7 +629,7 @@ static int davinci_mcasp_ch_constraint(struct davinci_mcasp *mcasp, int stream,
if (mcasp->tdm_mask[stream]) if (mcasp->tdm_mask[stream])
slots = hweight32(mcasp->tdm_mask[stream]); slots = hweight32(mcasp->tdm_mask[stream]);
for (i = 2; i <= slots; i++) for (i = 1; i <= slots; i++)
list[count++] = i; list[count++] = i;
for (i = 2; i <= serializers; i++) for (i = 2; i <= serializers; i++)
...@@ -1297,7 +1297,7 @@ static int davinci_mcasp_startup(struct snd_pcm_substream *substream, ...@@ -1297,7 +1297,7 @@ static int davinci_mcasp_startup(struct snd_pcm_substream *substream,
snd_pcm_hw_constraint_minmax(substream->runtime, snd_pcm_hw_constraint_minmax(substream->runtime,
SNDRV_PCM_HW_PARAM_CHANNELS, SNDRV_PCM_HW_PARAM_CHANNELS,
2, max_channels); 0, max_channels);
snd_pcm_hw_constraint_list(substream->runtime, snd_pcm_hw_constraint_list(substream->runtime,
0, SNDRV_PCM_HW_PARAM_CHANNELS, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
...@@ -1459,13 +1459,13 @@ static struct snd_soc_dai_driver davinci_mcasp_dai[] = { ...@@ -1459,13 +1459,13 @@ static struct snd_soc_dai_driver davinci_mcasp_dai[] = {
.suspend = davinci_mcasp_suspend, .suspend = davinci_mcasp_suspend,
.resume = davinci_mcasp_resume, .resume = davinci_mcasp_resume,
.playback = { .playback = {
.channels_min = 2, .channels_min = 1,
.channels_max = 32 * 16, .channels_max = 32 * 16,
.rates = DAVINCI_MCASP_RATES, .rates = DAVINCI_MCASP_RATES,
.formats = DAVINCI_MCASP_PCM_FMTS, .formats = DAVINCI_MCASP_PCM_FMTS,
}, },
.capture = { .capture = {
.channels_min = 2, .channels_min = 1,
.channels_max = 32 * 16, .channels_max = 32 * 16,
.rates = DAVINCI_MCASP_RATES, .rates = DAVINCI_MCASP_RATES,
.formats = DAVINCI_MCASP_PCM_FMTS, .formats = DAVINCI_MCASP_PCM_FMTS,
...@@ -1971,12 +1971,12 @@ static int davinci_mcasp_probe(struct platform_device *pdev) ...@@ -1971,12 +1971,12 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
*/ */
mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list = mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list =
devm_kzalloc(mcasp->dev, sizeof(unsigned int) * devm_kzalloc(mcasp->dev, sizeof(unsigned int) *
(32 + mcasp->num_serializer - 2), (32 + mcasp->num_serializer - 1),
GFP_KERNEL); GFP_KERNEL);
mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list = mcasp->chconstr[SNDRV_PCM_STREAM_CAPTURE].list =
devm_kzalloc(mcasp->dev, sizeof(unsigned int) * devm_kzalloc(mcasp->dev, sizeof(unsigned int) *
(32 + mcasp->num_serializer - 2), (32 + mcasp->num_serializer - 1),
GFP_KERNEL); GFP_KERNEL);
if (!mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list || if (!mcasp->chconstr[SNDRV_PCM_STREAM_PLAYBACK].list ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment