diff options
-rw-r--r-- | sound/soc/samsung/i2s.c | 19 |
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) | |||
1133 | static int i2s_runtime_resume(struct device *dev) | 1135 | static 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); |