aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-01-16 07:42:53 -0500
committerMark Brown <broonie@linaro.org>2014-01-16 07:42:53 -0500
commita9b68d3b90988dd13c668d6b1d45cdca1557f070 (patch)
treef464467614d873bbd2d590b8223d619da0771f3f
parentefe265d301c6157d6c8bcd2ef239fdf552191190 (diff)
parent1104a9c822f0e9f5e57a236f20a142166dd8f91e (diff)
Merge remote-tracking branch 'asoc/topic/core' into for-tiwai
-rw-r--r--sound/soc/soc-core.c4
-rw-r--r--sound/soc/soc-pcm.c35
2 files changed, 21 insertions, 18 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index be88df5eeaf7..18583660efbc 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -3484,7 +3484,7 @@ int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
3484 return dai->codec->driver->set_sysclk(dai->codec, clk_id, 0, 3484 return dai->codec->driver->set_sysclk(dai->codec, clk_id, 0,
3485 freq, dir); 3485 freq, dir);
3486 else 3486 else
3487 return -EINVAL; 3487 return -ENOTSUPP;
3488} 3488}
3489EXPORT_SYMBOL_GPL(snd_soc_dai_set_sysclk); 3489EXPORT_SYMBOL_GPL(snd_soc_dai_set_sysclk);
3490 3490
@@ -3505,7 +3505,7 @@ int snd_soc_codec_set_sysclk(struct snd_soc_codec *codec, int clk_id,
3505 return codec->driver->set_sysclk(codec, clk_id, source, 3505 return codec->driver->set_sysclk(codec, clk_id, source,
3506 freq, dir); 3506 freq, dir);
3507 else 3507 else
3508 return -EINVAL; 3508 return -ENOTSUPP;
3509} 3509}
3510EXPORT_SYMBOL_GPL(snd_soc_codec_set_sysclk); 3510EXPORT_SYMBOL_GPL(snd_soc_codec_set_sysclk);
3511 3511
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 604e7e9a2ef8..e95ef9586723 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -776,7 +776,7 @@ static int soc_pcm_bespoke_trigger(struct snd_pcm_substream *substream,
776 return ret; 776 return ret;
777 } 777 }
778 778
779 if (platform->driver->ops && platform->driver->bespoke_trigger) { 779 if (platform->driver->bespoke_trigger) {
780 ret = platform->driver->bespoke_trigger(substream, cmd); 780 ret = platform->driver->bespoke_trigger(substream, cmd);
781 if (ret < 0) 781 if (ret < 0)
782 return ret; 782 return ret;
@@ -1235,6 +1235,20 @@ unwind:
1235 return err; 1235 return err;
1236} 1236}
1237 1237
1238static void dpcm_init_runtime_hw(struct snd_pcm_runtime *runtime,
1239 struct snd_soc_pcm_stream *stream)
1240{
1241 runtime->hw.rate_min = stream->rate_min;
1242 runtime->hw.rate_max = stream->rate_max;
1243 runtime->hw.channels_min = stream->channels_min;
1244 runtime->hw.channels_max = stream->channels_max;
1245 if (runtime->hw.formats)
1246 runtime->hw.formats &= stream->formats;
1247 else
1248 runtime->hw.formats = stream->formats;
1249 runtime->hw.rates = stream->rates;
1250}
1251
1238static void dpcm_set_fe_runtime(struct snd_pcm_substream *substream) 1252static void dpcm_set_fe_runtime(struct snd_pcm_substream *substream)
1239{ 1253{
1240 struct snd_pcm_runtime *runtime = substream->runtime; 1254 struct snd_pcm_runtime *runtime = substream->runtime;
@@ -1242,21 +1256,10 @@ static void dpcm_set_fe_runtime(struct snd_pcm_substream *substream)
1242 struct snd_soc_dai *cpu_dai = rtd->cpu_dai; 1256 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
1243 struct snd_soc_dai_driver *cpu_dai_drv = cpu_dai->driver; 1257 struct snd_soc_dai_driver *cpu_dai_drv = cpu_dai->driver;
1244 1258
1245 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { 1259 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
1246 runtime->hw.rate_min = cpu_dai_drv->playback.rate_min; 1260 dpcm_init_runtime_hw(runtime, &cpu_dai_drv->playback);
1247 runtime->hw.rate_max = cpu_dai_drv->playback.rate_max; 1261 else
1248 runtime->hw.channels_min = cpu_dai_drv->playback.channels_min; 1262 dpcm_init_runtime_hw(runtime, &cpu_dai_drv->capture);
1249 runtime->hw.channels_max = cpu_dai_drv->playback.channels_max;
1250 runtime->hw.formats &= cpu_dai_drv->playback.formats;
1251 runtime->hw.rates = cpu_dai_drv->playback.rates;
1252 } else {
1253 runtime->hw.rate_min = cpu_dai_drv->capture.rate_min;
1254 runtime->hw.rate_max = cpu_dai_drv->capture.rate_max;
1255 runtime->hw.channels_min = cpu_dai_drv->capture.channels_min;
1256 runtime->hw.channels_max = cpu_dai_drv->capture.channels_max;
1257 runtime->hw.formats &= cpu_dai_drv->capture.formats;
1258 runtime->hw.rates = cpu_dai_drv->capture.rates;
1259 }
1260} 1263}
1261 1264
1262static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream) 1265static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)