• Lars-Peter Clausen's avatar
    ASoC: pcm: Always honor DAI min and max sample rate constraints · 78e45c99
    Lars-Peter Clausen authored
    snd_pcm_limit_hw_rates() will initialize the minimum and maximum sample rate for
    the PCM stream based on the rates specified in the rates field. Since we call
    snd_pcm_limit_hw_rates() after soc_pcm_init_runtime_hw() it will essentially
    overwrite the min and max rate set in soc_pcm_init_runtime_hw(). This may cause
    the minimum or maximum rate to be set to a value outside the range of one of the
    components if one of the components sets either SNDRV_PCM_RATE_CONTINUOUS or
    SNDRV_PCM_RATE_KNOT and the other component specified a discrete rate via
    SNDRV_PCM_RATE_[0-9]* that is outside of the first component's rate range. To
    fix this first calculate the minimum and maximum rates using
    snd_pcm_limit_hw_rates() and then on top of that apply the contraints specified
    in the snd_soc_pcm_stream structs.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Acked-by: default avatarTakashi iwai <tiwai@suse.de>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    78e45c99
soc-pcm.c 65.9 KB