Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -551,7 +551,9 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
				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);

			/* 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)
{
	struct i2s_dai *i2s = dev_get_drvdata(dev);
	int ret;

	clk_prepare_enable(i2s->clk);
	if (i2s->op_clk)
		clk_prepare_enable(i2s->op_clk);
	ret = clk_prepare_enable(i2s->clk);
	if (ret)
		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_i2smod, i2s->addr + I2SMOD);