Commit f5c97c7b authored by Arvind Yadav's avatar Arvind Yadav Committed by Mark Brown

ASoC: samsung: i2s: Handle return value of clk_prepare_enable.

clk_prepare_enable() can fail here and we must check its return value.
Signed-off-by: default avatarArvind Yadav <arvind.yadav.cs@gmail.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a7ad9a88
...@@ -551,7 +551,9 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, ...@@ -551,7 +551,9 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
goto err; goto err;
} }
clk_prepare_enable(i2s->op_clk); ret = clk_prepare_enable(i2s->op_clk);
if (ret)
goto err;
i2s->rclk_srcrate = clk_get_rate(i2s->op_clk); i2s->rclk_srcrate = clk_get_rate(i2s->op_clk);
/* Over-ride the other's */ /* Over-ride the other's */
...@@ -1133,10 +1135,19 @@ static int i2s_runtime_suspend(struct device *dev) ...@@ -1133,10 +1135,19 @@ static int i2s_runtime_suspend(struct device *dev)
static int i2s_runtime_resume(struct device *dev) static int i2s_runtime_resume(struct device *dev)
{ {
struct i2s_dai *i2s = dev_get_drvdata(dev); struct i2s_dai *i2s = dev_get_drvdata(dev);
int ret;
clk_prepare_enable(i2s->clk); ret = clk_prepare_enable(i2s->clk);
if (i2s->op_clk) if (ret)
clk_prepare_enable(i2s->op_clk); return ret;
if (i2s->op_clk) {
ret = clk_prepare_enable(i2s->op_clk);
if (ret) {
clk_disable_unprepare(i2s->clk);
return ret;
}
}
writel(i2s->suspend_i2scon, i2s->addr + I2SCON); writel(i2s->suspend_i2scon, i2s->addr + I2SCON);
writel(i2s->suspend_i2smod, i2s->addr + I2SMOD); writel(i2s->suspend_i2smod, i2s->addr + I2SMOD);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment