diff options
| -rw-r--r-- | sound/soc/fsl/fsl_esai.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c index 35c0b9295a80..c674fd99158b 100644 --- a/sound/soc/fsl/fsl_esai.c +++ b/sound/soc/fsl/fsl_esai.c | |||
| @@ -258,10 +258,16 @@ static int fsl_esai_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id, | |||
| 258 | return -EINVAL; | 258 | return -EINVAL; |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | if (ratio == 1) { | 261 | /* Only EXTAL source can be output directly without using PSR and PM */ |
| 262 | if (ratio == 1 && clksrc == esai_priv->extalclk) { | ||
| 262 | /* Bypass all the dividers if not being needed */ | 263 | /* Bypass all the dividers if not being needed */ |
| 263 | ecr |= tx ? ESAI_ECR_ETO : ESAI_ECR_ERO; | 264 | ecr |= tx ? ESAI_ECR_ETO : ESAI_ECR_ERO; |
| 264 | goto out; | 265 | goto out; |
| 266 | } else if (ratio < 2) { | ||
| 267 | /* The ratio should be no less than 2 if using other sources */ | ||
| 268 | dev_err(dai->dev, "failed to derive required HCK%c rate\n", | ||
| 269 | tx ? 'T' : 'R'); | ||
| 270 | return -EINVAL; | ||
| 265 | } | 271 | } |
| 266 | 272 | ||
| 267 | ret = fsl_esai_divisor_cal(dai, tx, ratio, false, 0); | 273 | ret = fsl_esai_divisor_cal(dai, tx, ratio, false, 0); |
