diff options
| -rw-r--r-- | sound/soc/soc-core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 65ff61211a85..db3075dd11fe 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
| @@ -505,6 +505,16 @@ static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream) | |||
| 505 | !rtd->dai_link->symmetric_rates) | 505 | !rtd->dai_link->symmetric_rates) |
| 506 | return 0; | 506 | return 0; |
| 507 | 507 | ||
| 508 | /* This can happen if multiple streams are starting simultaneously - | ||
| 509 | * the second can need to get its constraints before the first has | ||
| 510 | * picked a rate. Complain and allow the application to carry on. | ||
| 511 | */ | ||
| 512 | if (!rtd->rate) { | ||
| 513 | dev_warn(&rtd->dev, | ||
| 514 | "Not enforcing symmetric_rates due to race\n"); | ||
| 515 | return 0; | ||
| 516 | } | ||
| 517 | |||
| 508 | dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n", rtd->rate); | 518 | dev_dbg(&rtd->dev, "Symmetry forces %dHz rate\n", rtd->rate); |
| 509 | 519 | ||
| 510 | ret = snd_pcm_hw_constraint_minmax(substream->runtime, | 520 | ret = snd_pcm_hw_constraint_minmax(substream->runtime, |
