aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/samsung/i2s.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index c9f87f7bae99..daf7b892c967 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -551,7 +551,9 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
551 goto err; 551 goto err;
552 } 552 }
553 553
554 clk_prepare_enable(i2s->op_clk); 554 ret = clk_prepare_enable(i2s->op_clk);
555 if (ret)
556 goto err;
555 i2s->rclk_srcrate = clk_get_rate(i2s->op_clk); 557 i2s->rclk_srcrate = clk_get_rate(i2s->op_clk);
556 558
557 /* Over-ride the other's */ 559 /* Over-ride the other's */
@@ -1133,10 +1135,19 @@ static int i2s_runtime_suspend(struct device *dev)
1133static int i2s_runtime_resume(struct device *dev) 1135static int i2s_runtime_resume(struct device *dev)
1134{ 1136{
1135 struct i2s_dai *i2s = dev_get_drvdata(dev); 1137 struct i2s_dai *i2s = dev_get_drvdata(dev);
1138 int ret;
1136 1139
1137 clk_prepare_enable(i2s->clk); 1140 ret = clk_prepare_enable(i2s->clk);
1138 if (i2s->op_clk) 1141 if (ret)
1139 clk_prepare_enable(i2s->op_clk); 1142 return ret;
1143
1144 if (i2s->op_clk) {
1145 ret = clk_prepare_enable(i2s->op_clk);
1146 if (ret) {
1147 clk_disable_unprepare(i2s->clk);
1148 return ret;
1149 }
1150 }
1140 1151
1141 writel(i2s->suspend_i2scon, i2s->addr + I2SCON); 1152 writel(i2s->suspend_i2scon, i2s->addr + I2SCON);
1142 writel(i2s->suspend_i2smod, i2s->addr + I2SMOD); 1153 writel(i2s->suspend_i2smod, i2s->addr + I2SMOD);