Message ID | 20220117102512.31725-1-paul@crapouillou.net (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [1/2] iio: imu: st_lsm6dsx: Limit requested watermark value to hwfifo size | expand |
> Instead of returning an error if the watermark value is too high, which > the core will silently ignore anyway, limit the value to the hardware > FIFO size; a lower-than-requested value is still better than using the > default, which is usually 1. > Acked-by: Lorenzo Bianconi <lorenzo@kernel.org> > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> > Signed-off-by: Paul Cercueil <paul@crapouillou.net> > --- > drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > index 727b4b6ac696..5fd46bf1a11b 100644 > --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > @@ -54,6 +54,7 @@ > #include <linux/iio/sysfs.h> > #include <linux/interrupt.h> > #include <linux/irq.h> > +#include <linux/minmax.h> > #include <linux/pm.h> > #include <linux/property.h> > #include <linux/regmap.h> > @@ -1607,8 +1608,7 @@ int st_lsm6dsx_set_watermark(struct iio_dev *iio_dev, unsigned int val) > struct st_lsm6dsx_hw *hw = sensor->hw; > int err; > > - if (val < 1 || val > hw->settings->fifo_ops.max_size) > - return -EINVAL; > + val = clamp_val(val, 1, hw->settings->fifo_ops.max_size); > > mutex_lock(&hw->conf_lock); > > -- > 2.34.1 >
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c index 727b4b6ac696..5fd46bf1a11b 100644 --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c @@ -54,6 +54,7 @@ #include <linux/iio/sysfs.h> #include <linux/interrupt.h> #include <linux/irq.h> +#include <linux/minmax.h> #include <linux/pm.h> #include <linux/property.h> #include <linux/regmap.h> @@ -1607,8 +1608,7 @@ int st_lsm6dsx_set_watermark(struct iio_dev *iio_dev, unsigned int val) struct st_lsm6dsx_hw *hw = sensor->hw; int err; - if (val < 1 || val > hw->settings->fifo_ops.max_size) - return -EINVAL; + val = clamp_val(val, 1, hw->settings->fifo_ops.max_size); mutex_lock(&hw->conf_lock);
Instead of returning an error if the watermark value is too high, which the core will silently ignore anyway, limit the value to the hardware FIFO size; a lower-than-requested value is still better than using the default, which is usually 1. Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Signed-off-by: Paul Cercueil <paul@crapouillou.net> --- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)