]> git.karo-electronics.de Git - linux-beck.git/commitdiff
iio: mxs-lradc: Check the return value from stmp_reset_block()
authorFabio Estevam <fabio.estevam@freescale.com>
Wed, 10 Jul 2013 02:36:00 +0000 (03:36 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 3 Aug 2013 17:40:33 +0000 (18:40 +0100)
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>
drivers/staging/iio/adc/mxs-lradc.c

index 9f52a2857929ffa975f3a8289074f3fc0fb7ee0e..37a4fd39b1e042dde5b0479cbc4f9452a76bfaea 100644 (file)
@@ -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);