diff options
-rw-r--r-- | drivers/staging/iio/meter/ade7754.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/staging/iio/meter/ade7754.c b/drivers/staging/iio/meter/ade7754.c index 6335b58..f12b2e5 100644 --- a/drivers/staging/iio/meter/ade7754.c +++ b/drivers/staging/iio/meter/ade7754.c @@ -550,8 +550,15 @@ static int ade7754_probe(struct spi_device *spi) /* Get the device into a sane initial state */ ret = ade7754_initial_setup(indio_dev); if (ret) - return ret; - return iio_device_register(indio_dev); + goto powerdown_on_error; + ret = iio_device_register(indio_dev); + if (ret) + goto powerdown_on_error; + return ret; + +powerdown_on_error: + ade7754_stop_device(&indio_dev->dev); + return ret; } /* fixme, confirm ordering in this function */ |