Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75d7ed3b authored by Fabio Estevam's avatar Fabio Estevam Committed by Jonathan Cameron
Browse files

iio: adc: mxs-lradc: Disable the clock on probe failure



We should disable lradc->clk in the case of errors in the probe function.

Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
Reviewed-by: default avatarMarek Vasut <marex@denx.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
Cc: <Stable@vger.kernel.org>
parent 4250c90b
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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 @@ static int mxs_lradc_probe(struct platform_device *pdev)
	mxs_lradc_trigger_remove(iio);
err_trig:
	iio_triggered_buffer_cleanup(iio);
err_clk:
	clk_disable_unprepare(lradc->clk);
	return ret;
}