Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: Aspeed ADC - 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: Rick Altherr <raltherr@google.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

authored by

Arvind Yadav and committed by
Jonathan Cameron
4e36a8ad 440d303c

+5 -1
+5 -1
drivers/iio/adc/aspeed_adc.c
··· 212 212 } 213 213 214 214 /* Start all channels in normal mode. */ 215 - clk_prepare_enable(data->clk_scaler->clk); 215 + ret = clk_prepare_enable(data->clk_scaler->clk); 216 + if (ret) 217 + goto clk_enable_error; 218 + 216 219 adc_engine_control_reg_val = GENMASK(31, 16) | 217 220 ASPEED_OPERATION_MODE_NORMAL | ASPEED_ENGINE_ENABLE; 218 221 writel(adc_engine_control_reg_val, ··· 239 236 writel(ASPEED_OPERATION_MODE_POWER_DOWN, 240 237 data->base + ASPEED_REG_ENGINE_CONTROL); 241 238 clk_disable_unprepare(data->clk_scaler->clk); 239 + clk_enable_error: 242 240 clk_hw_unregister_divider(data->clk_scaler); 243 241 244 242 scaler_error: