iio: st_sensors: rely on odr mask to know if odr can be set
diff mbox series

Message ID ea-mime-5e91df36-2302-7e2b01aa@www-2.mailo.com
State New
Headers show
Series
  • iio: st_sensors: rely on odr mask to know if odr can be set
Related show

Commit Message

yarl-baudig@mailoo.org April 11, 2020, 3:16 p.m. UTC
Indeed, relying on addr being not 0 cannot work because some device have
their register to set odr at address 0. As a matter of fact, if the odr
can be set, then there is a mask.

Sensors with ODR register at address 0 are: lsm303dlh, lsm303dlhc, lsm303dlm

Fixes: 7d245172675a ("iio: common: st_sensors: check odr address value in st_sensors_set_odr()")
Signed-off-by: Lary Gibaud <yarl-baudig@mailoo.org>
---
 drivers/iio/common/st_sensors/st_sensors_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jonathan Cameron April 12, 2020, 9:49 a.m. UTC | #1
On Sat, 11 Apr 2020 17:16:06 +0200 (CEST)
yarl-baudig@mailoo.org wrote:

> Indeed, relying on addr being not 0 cannot work because some device have
> their register to set odr at address 0. As a matter of fact, if the odr
> can be set, then there is a mask.
> 
> Sensors with ODR register at address 0 are: lsm303dlh, lsm303dlhc, lsm303dlm
> 
> Fixes: 7d245172675a ("iio: common: st_sensors: check odr address value in st_sensors_set_odr()")
> Signed-off-by: Lary Gibaud <yarl-baudig@mailoo.org>
Applied to the fixes-togreg branch of iio.git and marked for
stable.

Thanks,

Jonathan

> ---
>  drivers/iio/common/st_sensors/st_sensors_core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
> index a0c2cbd60c6f..cccd4c26dfa4 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_core.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_core.c
> @@ -79,7 +79,7 @@ int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr)
>  	struct st_sensor_odr_avl odr_out = {0, 0};
>  	struct st_sensor_data *sdata = iio_priv(indio_dev);
>  
> -	if (!sdata->sensor_settings->odr.addr)
> +	if (!sdata->sensor_settings->odr.mask)
>  		return 0;
>  
>  	err = st_sensors_match_odr(sdata->sensor_settings, odr, &odr_out);

Patch
diff mbox series

diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
index a0c2cbd60c6f..cccd4c26dfa4 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -79,7 +79,7 @@  int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr)
 	struct st_sensor_odr_avl odr_out = {0, 0};
 	struct st_sensor_data *sdata = iio_priv(indio_dev);
 
-	if (!sdata->sensor_settings->odr.addr)
+	if (!sdata->sensor_settings->odr.mask)
 		return 0;
 
 	err = st_sensors_match_odr(sdata->sensor_settings, odr, &odr_out);