iio: imu: inv_mpu6050: clean read channel data error path
authorJean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Mon, 23 Apr 2018 10:33:33 +0000 (12:33 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 28 Apr 2018 15:55:48 +0000 (16:55 +0100)
Delete the useless ored result and give a second chance to turn
the chip back off at the end.

Signed-off-by: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c

index 79b44fd..aafa777 100644 (file)
@@ -338,7 +338,7 @@ static int inv_mpu6050_read_channel_data(struct iio_dev *indio_dev,
 {
        struct inv_mpu6050_state *st = iio_priv(indio_dev);
        int result;
-       int ret = IIO_VAL_INT;
+       int ret;
 
        result = iio_device_claim_direct_mode(indio_dev);
        if (result)
@@ -383,14 +383,18 @@ static int inv_mpu6050_read_channel_data(struct iio_dev *indio_dev,
                break;
        }
 
-error_power_off:
-       result |= inv_mpu6050_set_power_itg(st, false);
-error_release:
-       iio_device_release_direct_mode(indio_dev);
+       result = inv_mpu6050_set_power_itg(st, false);
        if (result)
-               return result;
+               goto error_power_off;
+       iio_device_release_direct_mode(indio_dev);
 
        return ret;
+
+error_power_off:
+       inv_mpu6050_set_power_itg(st, false);
+error_release:
+       iio_device_release_direct_mode(indio_dev);
+       return result;
 }
 
 static int