ASoC: PCM_RATE: Check for KNOT and CONTINUOUS flags
For ASoC, if either CPU or CODEC driver has set the flag, the MACHINE driver should be given a chance to figure out if the dai, that set the flag, can accomodate a rate that it does not explicitly specify but is specified by the dai at the other end of the link. Signed-off-by: Jassi Brar <jassi.brar@samsung.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
960b3b4b4c
commit
d9ad6296ec
1 changed files with 12 additions and 0 deletions
|
@ -404,6 +404,12 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
|
|||
codec_dai->playback.formats & cpu_dai->playback.formats;
|
||||
runtime->hw.rates =
|
||||
codec_dai->playback.rates & cpu_dai->playback.rates;
|
||||
if (codec_dai->playback.rates
|
||||
& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
|
||||
runtime->hw.rates |= cpu_dai->playback.rates;
|
||||
if (cpu_dai->playback.rates
|
||||
& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
|
||||
runtime->hw.rates |= codec_dai->playback.rates;
|
||||
} else {
|
||||
runtime->hw.rate_min =
|
||||
max(codec_dai->capture.rate_min,
|
||||
|
@ -421,6 +427,12 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
|
|||
codec_dai->capture.formats & cpu_dai->capture.formats;
|
||||
runtime->hw.rates =
|
||||
codec_dai->capture.rates & cpu_dai->capture.rates;
|
||||
if (codec_dai->capture.rates
|
||||
& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
|
||||
runtime->hw.rates |= cpu_dai->capture.rates;
|
||||
if (cpu_dai->capture.rates
|
||||
& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
|
||||
runtime->hw.rates |= codec_dai->capture.rates;
|
||||
}
|
||||
|
||||
snd_pcm_limit_hw_rates(runtime);
|
||||
|
|
Reference in a new issue