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 */
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);