iio: imu: inv_mpu6050: temperature only work with accel/gyro
authorJean-Baptiste Maneyrol <jmaneyrol@invensense.com>
Wed, 19 Feb 2020 14:39:58 +0000 (15:39 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 8 Mar 2020 17:28:40 +0000 (17:28 +0000)
Temperature sensor works correctly only when accel and/or gyro
is turned on. Prevent polling value if they are not running.
Anyway it doesn't make sense to use it without sensor engines
on.

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 56e5731eb7de8c1eaa374935d090c8fea2305029..7cb9ff3d3e940018134b08badc9d3f50ab4cf545 100644 (file)
@@ -598,6 +598,11 @@ static int inv_mpu6050_read_channel_data(struct iio_dev *indio_dev,
                                              chan->channel2, val);
                break;
        case IIO_TEMP:
+               /* temperature sensor work only with accel and/or gyro */
+               if (!st->chip_config.accl_en && !st->chip_config.gyro_en) {
+                       result = -EBUSY;
+                       goto error_power_off;
+               }
                if (!st->chip_config.temp_en) {
                        result = inv_mpu6050_switch_engine(st, true,
                                        INV_MPU6050_SENSOR_TEMP);