From 947123d53fe0305536c202a36d5ba123ab83b362 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 10 Jul 2013 03:36:00 +0100 Subject: [PATCH] iio: mxs-lradc: Check the return value from stmp_reset_block() stmp_reset_block() may fail, so let's check its return value and propagate it in the case of error. Signed-off-by: Fabio Estevam Acked-by: Marek Vasut Signed-off-by: Jonathan Cameron --- drivers/staging/iio/adc/mxs-lradc.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c index 9f52a2857929..37a4fd39b1e0 100644 --- a/drivers/staging/iio/adc/mxs-lradc.c +++ b/drivers/staging/iio/adc/mxs-lradc.c @@ -841,14 +841,16 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] = { MXS_ADC_CHAN(15, IIO_VOLTAGE), /* VDD5V */ }; -static void mxs_lradc_hw_init(struct mxs_lradc *lradc) +static int mxs_lradc_hw_init(struct mxs_lradc *lradc) { /* The ADC always uses DELAY CHANNEL 0. */ const uint32_t adc_cfg = (1 << (LRADC_DELAY_TRIGGER_DELAYS_OFFSET + 0)) | (LRADC_DELAY_TIMER_PER << LRADC_DELAY_DELAY_OFFSET); - stmp_reset_block(lradc->base); + int ret = stmp_reset_block(lradc->base); + if (ret) + return ret; /* Configure DELAY CHANNEL 0 for generic ADC sampling. */ writel(adc_cfg, lradc->base + LRADC_DELAY(0)); @@ -869,6 +871,8 @@ static void mxs_lradc_hw_init(struct mxs_lradc *lradc) /* Start internal temperature sensing. */ writel(0, lradc->base + LRADC_CTRL2); + + return 0; } static void mxs_lradc_hw_stop(struct mxs_lradc *lradc) @@ -976,7 +980,9 @@ static int mxs_lradc_probe(struct platform_device *pdev) goto err_trig; /* Configure the hardware. */ - mxs_lradc_hw_init(lradc); + ret = mxs_lradc_hw_init(lradc); + if (ret) + goto err_dev; /* Register the touchscreen input device. */ ret = mxs_lradc_ts_register(lradc); -- 2.20.1