Re: [PATCH] iio: imu: st_lsm6dsx: Update enable mask when using sensor fusion

Lorenzo Bianconi <[email protected]> Fri, 31 Jul 2026 22:44:44 +0200
Newsgroups org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Message-ID <am0JPMfepRUkMNfy@lore-qca>
> The enable_mask struct member keeps track of which sensors are enabled in
> the IMU. When enabling and disabling the sensor fusion functionality, the
> driver does not properly update this struct member. This prevents a correct
> calculation of the number of samples that should be read from the hardware
> FIFO; as a result, reads from the FIFO can be unnecessarily split into
> multiple transactions, some of which can read past the FIFO length.

Acked-by: Lorenzo Bianconi <[email protected]>

> 
> Fixes: cd4e1141bff8 ("iio: imu: st_lsm6dsx: Add support for rotation sensor")
> Signed-off-by: Francesco Lavra <[email protected]>
> ---
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c
> index 2e72c7ba94dd..5321033daebc 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c
> @@ -112,6 +112,11 @@ int st_lsm6dsx_fusion_set_enable(struct st_lsm6dsx_sensor *sensor, bool enable)
>  		return err;
>  	}
>  
> +	if (enable)
> +		hw->enable_mask |= BIT(ST_LSM6DSX_ID_FUSION);
> +	else
> +		hw->enable_mask &= ~BIT(ST_LSM6DSX_ID_FUSION);
> +
>  	return st_lsm6dsx_fusion_page_disable(hw);
>  }
>  
> -- 
> 2.39.5
>
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQTquNwa3Txd3rGGn7Y6cBh0uS2trAUCam0JPAAKCRA6cBh0uS2t
rFpSAP0bg7JRxu5b8/ZfMWnP4vMa4ye90ZtH+ojMN/lBhLhORwD+Jkte54B6STtW
IFlCcf/05yni+S1EuMNdOmiyAv0Pswk=
=LzDt
-----END PGP SIGNATURE-----