mirror of https://gitee.com/openkylin/linux.git
First set of IIO fixes for the 5.13 cycle
A couple of high priority core fixes and the usual bits scattered across individual drivers. core: * Fix ioctl handler double free. * Fix an accidental ABI change wrt to error codes when an IOCTL is not supported. gp2ap002: * Runtime pm imbalance on error. hid-sensors: * Fix a Kconfig dependency issue in a particularly crazy config. mpu3050: * Fix wrong temperature calculation due to a type needing to be signed. pulsedlight: * Runtime pm imbalance on error. tsl2583 * Fix a potential division by zero. -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmCae78RHGppYzIzQGtl cm5lbC5vcmcACgkQVIU0mcT0Foi+IRAAr+DfHNTGeyHmQAC2I9q3uE4T9wZniAcm uD4piZTXh96uCe9ebSBOs7WbM16wv1TKGjoYWLQHGi4fyZPqIRUBCFYJ/VfQrL6h fAyqJWP3fWEw8T4+Z5UdQgo6Aofg1K0CzJOGshnKACIjt9BDa72AmqUKwqvU0wRb SEDm8tc/x+a+3s8UjEtHDzHhlE26qQVs0Rxaaln9L8XXMcp9tg03bitfMBcb9nPD bRqUukBYa4YJ210esDMzrckFxAhBULyWKOOgrIR8TdXveF1sbZE9o9iycOFzsxYz KIkHjNIiwvsaklHhHXlhiskaJBDC0i0MaEXinne4sawOmSqXIyyDehq19z8qOukc tsRiWtsZGBD5QRJkB6p1LAk+RpYn0IRFbFSyxn6KBfhZsAjwiqUVAxxN5uDq/g13 C1cp329N0RSEZzDKwjqLbI6osW9sdms8CweazwBYRD5cnsjuvNv1XKjhmZldNwsU S4smwOvRcyLih9w8PhlxHOPvhhOFO6xY1OmA3uZTiJhNWYW24KDhNU80hkcD3v+s sPbwrozJzc25gcrc7ujlyerQO3ZQ0Ht7uUCEeG9KxVRU04CAeOdFcu9niYxAm5QZ kxthMfDXjkjm+yJTI35NImSS9gf6fFrmXj8rj7lnnLbCrnmwDW54l9RdmKQ7EDMR WuML9jtzDCQ= =2wUO -----END PGP SIGNATURE----- Merge tag 'iio-fixes-5.13a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus Jonathan writes: First set of IIO fixes for the 5.13 cycle A couple of high priority core fixes and the usual bits scattered across individual drivers. core: * Fix ioctl handler double free. * Fix an accidental ABI change wrt to error codes when an IOCTL is not supported. gp2ap002: * Runtime pm imbalance on error. hid-sensors: * Fix a Kconfig dependency issue in a particularly crazy config. mpu3050: * Fix wrong temperature calculation due to a type needing to be signed. pulsedlight: * Runtime pm imbalance on error. tsl2583 * Fix a potential division by zero. * tag 'iio-fixes-5.13a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio: iio: tsl2583: Fix division by a zero lux_val iio: core: return ENODEV if ioctl is unknown iio: core: fix ioctl handlers removal iio: gyro: mpu3050: Fix reported temperature value iio: hid-sensors: select IIO_TRIGGERED_BUFFER under HID_SENSOR_IIO_TRIGGER iio: proximity: pulsedlight: Fix rumtime PM imbalance on error iio: light: gp2ap002: Fix rumtime PM imbalance on error
This commit is contained in:
commit
ba9c25d94d
|
@ -229,7 +229,6 @@ config DMARD10
|
|||
config HID_SENSOR_ACCEL_3D
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID Accelerometers 3D"
|
||||
|
|
|
@ -19,6 +19,7 @@ config HID_SENSOR_IIO_TRIGGER
|
|||
tristate "Common module (trigger) for all HID Sensor IIO drivers"
|
||||
depends on HID_SENSOR_HUB && HID_SENSOR_IIO_COMMON && IIO_BUFFER
|
||||
select IIO_TRIGGER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
help
|
||||
Say yes here to build trigger support for HID sensors.
|
||||
Triggers will be send if all requested attributes were read.
|
||||
|
|
|
@ -111,7 +111,6 @@ config FXAS21002C_SPI
|
|||
config HID_SENSOR_GYRO_3D
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID Gyroscope 3D"
|
||||
|
|
|
@ -272,7 +272,16 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev,
|
|||
case IIO_CHAN_INFO_OFFSET:
|
||||
switch (chan->type) {
|
||||
case IIO_TEMP:
|
||||
/* The temperature scaling is (x+23000)/280 Celsius */
|
||||
/*
|
||||
* The temperature scaling is (x+23000)/280 Celsius
|
||||
* for the "best fit straight line" temperature range
|
||||
* of -30C..85C. The 23000 includes room temperature
|
||||
* offset of +35C, 280 is the precision scale and x is
|
||||
* the 16-bit signed integer reported by hardware.
|
||||
*
|
||||
* Temperature value itself represents temperature of
|
||||
* the sensor die.
|
||||
*/
|
||||
*val = 23000;
|
||||
return IIO_VAL_INT;
|
||||
default:
|
||||
|
@ -329,7 +338,7 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev,
|
|||
goto out_read_raw_unlock;
|
||||
}
|
||||
|
||||
*val = be16_to_cpu(raw_val);
|
||||
*val = (s16)be16_to_cpu(raw_val);
|
||||
ret = IIO_VAL_INT;
|
||||
|
||||
goto out_read_raw_unlock;
|
||||
|
|
|
@ -52,7 +52,6 @@ config HID_SENSOR_HUMIDITY
|
|||
tristate "HID Environmental humidity sensor"
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
help
|
||||
|
|
|
@ -1778,7 +1778,6 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
if (!indio_dev->info)
|
||||
goto out_unlock;
|
||||
|
||||
ret = -EINVAL;
|
||||
list_for_each_entry(h, &iio_dev_opaque->ioctl_handlers, entry) {
|
||||
ret = h->ioctl(indio_dev, filp, cmd, arg);
|
||||
if (ret != IIO_IOCTL_UNHANDLED)
|
||||
|
@ -1786,7 +1785,7 @@ static long iio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
}
|
||||
|
||||
if (ret == IIO_IOCTL_UNHANDLED)
|
||||
ret = -EINVAL;
|
||||
ret = -ENODEV;
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&indio_dev->info_exist_lock);
|
||||
|
@ -1926,9 +1925,6 @@ EXPORT_SYMBOL(__iio_device_register);
|
|||
**/
|
||||
void iio_device_unregister(struct iio_dev *indio_dev)
|
||||
{
|
||||
struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
|
||||
struct iio_ioctl_handler *h, *t;
|
||||
|
||||
cdev_device_del(&indio_dev->chrdev, &indio_dev->dev);
|
||||
|
||||
mutex_lock(&indio_dev->info_exist_lock);
|
||||
|
@ -1939,9 +1935,6 @@ void iio_device_unregister(struct iio_dev *indio_dev)
|
|||
|
||||
indio_dev->info = NULL;
|
||||
|
||||
list_for_each_entry_safe(h, t, &iio_dev_opaque->ioctl_handlers, entry)
|
||||
list_del(&h->entry);
|
||||
|
||||
iio_device_wakeup_eventset(indio_dev);
|
||||
iio_buffer_wakeup_poll(indio_dev);
|
||||
|
||||
|
|
|
@ -256,7 +256,6 @@ config ISL29125
|
|||
config HID_SENSOR_ALS
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID ALS"
|
||||
|
@ -270,7 +269,6 @@ config HID_SENSOR_ALS
|
|||
config HID_SENSOR_PROX
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID PROX"
|
||||
|
|
|
@ -582,7 +582,7 @@ static int gp2ap002_probe(struct i2c_client *client,
|
|||
"gp2ap002", indio_dev);
|
||||
if (ret) {
|
||||
dev_err(dev, "unable to request IRQ\n");
|
||||
goto out_disable_vio;
|
||||
goto out_put_pm;
|
||||
}
|
||||
gp2ap002->irq = client->irq;
|
||||
|
||||
|
@ -612,8 +612,9 @@ static int gp2ap002_probe(struct i2c_client *client,
|
|||
|
||||
return 0;
|
||||
|
||||
out_disable_pm:
|
||||
out_put_pm:
|
||||
pm_runtime_put_noidle(dev);
|
||||
out_disable_pm:
|
||||
pm_runtime_disable(dev);
|
||||
out_disable_vio:
|
||||
regulator_disable(gp2ap002->vio);
|
||||
|
|
|
@ -341,6 +341,14 @@ static int tsl2583_als_calibrate(struct iio_dev *indio_dev)
|
|||
return lux_val;
|
||||
}
|
||||
|
||||
/* Avoid division by zero of lux_value later on */
|
||||
if (lux_val == 0) {
|
||||
dev_err(&chip->client->dev,
|
||||
"%s: lux_val of 0 will produce out of range trim_value\n",
|
||||
__func__);
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
gain_trim_val = (unsigned int)(((chip->als_settings.als_cal_target)
|
||||
* chip->als_settings.als_gain_trim) / lux_val);
|
||||
if ((gain_trim_val < 250) || (gain_trim_val > 4000)) {
|
||||
|
|
|
@ -95,7 +95,6 @@ config MAG3110
|
|||
config HID_SENSOR_MAGNETOMETER_3D
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID Magenetometer 3D"
|
||||
|
|
|
@ -9,7 +9,6 @@ menu "Inclinometer sensors"
|
|||
config HID_SENSOR_INCLINOMETER_3D
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID Inclinometer 3D"
|
||||
|
@ -20,7 +19,6 @@ config HID_SENSOR_INCLINOMETER_3D
|
|||
config HID_SENSOR_DEVICE_ROTATION
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID Device Rotation"
|
||||
|
|
|
@ -79,7 +79,6 @@ config DPS310
|
|||
config HID_SENSOR_PRESS
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
tristate "HID PRESS"
|
||||
|
|
|
@ -160,6 +160,7 @@ static int lidar_get_measurement(struct lidar_data *data, u16 *reg)
|
|||
ret = lidar_write_control(data, LIDAR_REG_CONTROL_ACQUIRE);
|
||||
if (ret < 0) {
|
||||
dev_err(&client->dev, "cannot send start measurement command");
|
||||
pm_runtime_put_noidle(&client->dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,6 @@ config HID_SENSOR_TEMP
|
|||
tristate "HID Environmental temperature sensor"
|
||||
depends on HID_SENSOR_HUB
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
select HID_SENSOR_IIO_COMMON
|
||||
select HID_SENSOR_IIO_TRIGGER
|
||||
help
|
||||
|
|
Loading…
Reference in New Issue