diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2013-07-10 06:36:00 +0400 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-08-03 21:40:33 +0400 |
commit | 947123d53fe0305536c202a36d5ba123ab83b362 (patch) | |
tree | b4cdeb84c5d88c0e95688b075c314fef28f634f2 /drivers/staging/iio | |
parent | 70ea35fba29e6c80f5f668d585203a0062caed96 (diff) | |
download | linux-947123d53fe0305536c202a36d5ba123ab83b362.tar.xz |
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 <fabio.estevam@freescale.com>
Acked-by: Marek Vasut <marex@denx.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/staging/iio')
-rw-r--r-- | drivers/staging/iio/adc/mxs-lradc.c | 12 |
1 files 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); |