Patch "iio: st_pressure: st_accel: Initialise sensor platform data properly" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
iio: st_pressure: st_accel: Initialise sensor platform data properly
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
iio-st_pressure-st_accel-initialise-sensor-platform-data-properly.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Mar 22 14:57:32 CET 2018
From: Shrirang Bagul <[email protected]>
Date: Wed, 19 Apr 2017 22:05:00 +0800
Subject: iio: st_pressure: st_accel: Initialise sensor platform data properly
From: Shrirang Bagul <[email protected]>
[ Upstream commit 7383d44b84c94aaca4bf695a6bd8a69f2295ef1a ]
This patch fixes the sensor platform data initialisation for st_pressure and st_accel device drivers. Without this patch, the driver fails to register the sensors when the user removes and re-loads the driver.
1. Unload the kernel modules for st_pressure
$ sudo rmmod st_pressure_i2c $ sudo rmmod st_pressure
2. Re-load the driver
$ sudo insmod st_pressure $ sudo insmod st_pressure_i2c
--- drivers/iio/accel/st_accel_core.c | 7 ++++--- drivers/iio/pressure/st_pressure_core.c | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-)
drivers/iio/accel/st_accel_core.c +4 -3
@@ -628,6 +628,8 @@ static const struct iio_trigger_ops st_aint st_accel_common_probe (struct iio_dev *indio_dev) {struct st_sensor_data *adata =iio_priv (indio_dev); +struct st_sensors_platform_data *pdata = + (struct st_sensors_platform_data *)adata->dev->platform_data;int irq = adata->get_irq_data_ready (indio_dev);int err;
@@ -652,9 +654,8 @@ int st_accel_common_probe(struct iio_dev &adata->sensor_settings->fs.fs_avl[0 ]; adata->odr = adata->sensor_settings->odr.odr_avl[0 ].hz; -if (!adata->dev->platform_data) - adata->dev->platform_data = - (struct st_sensors_platform_data *)&default_accel_pdata; +if (!pdata) + pdata = (struct st_sensors_platform_data *)&default_accel_pdata; err =st_sensors_init_sensor (indio_dev, adata->dev->platform_data);if (err <0 )
drivers/iio/pressure/st_pressure_core.c +4 -4
@@ -436,6 +436,8 @@ static const struct iio_trigger_ops st_pint st_press_common_probe (struct iio_dev *indio_dev) {struct st_sensor_data *press_data =iio_priv (indio_dev); +struct st_sensors_platform_data *pdata = + (struct st_sensors_platform_data *)press_data->dev->platform_data;int irq = press_data->get_irq_data_ready (indio_dev);int err;
@@ -464,10 +466,8 @@ int st_press_common_probe(struct iio_dev press_data->odr = press_data->sensor_settings->odr.odr_avl[0 ].hz;/* Some devices don't support a data ready pin. */ -if (!press_data->dev->platform_data && - press_data->sensor_settings->drdy_irq.addr) - press_data->dev->platform_data = - (struct st_sensors_platform_data *)&default_press_pdata; +if (!pdata && press_data->sensor_settings->drdy_irq.addr) + pdata = (struct st_sensors_platform_data *)&default_press_pdata; err =st_sensors_init_sensor (indio_dev, press_data->dev->platform_data);if (err <0 )
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/iio-st_pressure-st_accel-initialise-sensor-platform-data-properly.patch