mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
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: Arvind Yadav <arvind.yadav.cs@gmail.com> Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
a7ad9a8830
commit
f5c97c7b04
@ -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)
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user