|
@@ -1565,14 +1565,16 @@ static int mxs_lradc_probe(struct platform_device *pdev)
|
|
|
/* Grab all IRQ sources */
|
|
|
for (i = 0; i < of_cfg->irq_count; i++) {
|
|
|
lradc->irq[i] = platform_get_irq(pdev, i);
|
|
|
- if (lradc->irq[i] < 0)
|
|
|
- return lradc->irq[i];
|
|
|
+ if (lradc->irq[i] < 0) {
|
|
|
+ ret = lradc->irq[i];
|
|
|
+ goto err_clk;
|
|
|
+ }
|
|
|
|
|
|
ret = devm_request_irq(dev, lradc->irq[i],
|
|
|
mxs_lradc_handle_irq, 0,
|
|
|
of_cfg->irq_name[i], iio);
|
|
|
if (ret)
|
|
|
- return ret;
|
|
|
+ goto err_clk;
|
|
|
}
|
|
|
|
|
|
lradc->vref_mv = of_cfg->vref_mv;
|
|
@@ -1594,7 +1596,7 @@ static int mxs_lradc_probe(struct platform_device *pdev)
|
|
|
&mxs_lradc_trigger_handler,
|
|
|
&mxs_lradc_buffer_ops);
|
|
|
if (ret)
|
|
|
- return ret;
|
|
|
+ goto err_clk;
|
|
|
|
|
|
ret = mxs_lradc_trigger_init(iio);
|
|
|
if (ret)
|
|
@@ -1649,6 +1651,8 @@ err_dev:
|
|
|
mxs_lradc_trigger_remove(iio);
|
|
|
err_trig:
|
|
|
iio_triggered_buffer_cleanup(iio);
|
|
|
+err_clk:
|
|
|
+ clk_disable_unprepare(lradc->clk);
|
|
|
return ret;
|
|
|
}
|
|
|
|