ASoC: Warn rather than set a silly constraint when we can't do symmetry
Symmetric rate configuration can fail if the second stream starting tries to apply the symmetric constraint before the first stream has got far enough to pick a rate. Rather than try to enforce a nonsensical rate of 0Hz log a warning and allow the application to carry on. Things might go wrong later on but the user will know about it and there's unlikely to be lasting damage. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
parent
4f333b20ae
commit
c4ef87867b
1 changed files with 10 additions and 0 deletions
|
@ -505,6 +505,16 @@ static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream)
|
|||
!rtd->dai_link->symmetric_rates)
|
||||
return 0;
|
||||
|
||||
/* This can happen if multiple streams are starting simultaneously -
|
||||
* the second can need to get its constraints before the first has
|
||||
* picked a rate. Complain and allow the application to carry on.
|
||||
*/
|
||||
if (!rtd->rate) {
|
||||
dev_warn(&rtd->dev,
|
||||
"Not enforcing symmetric_rates due to race\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n", rtd->rate);
|
||||
|
||||
ret = snd_pcm_hw_constraint_minmax(substream->runtime,
|
||||
|
|
Loading…
Reference in a new issue