[PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions

Antoniu Miclaus posted 1 patch 1 month, 1 week ago
drivers/iio/imu/adis16550.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions
Posted by Antoniu Miclaus 1 month, 1 week ago
The low-pass filter handlers for IIO_ANGL_VEL and IIO_ACCEL call each
other's filter functions in both read_raw and write_raw. Swap them so
each channel type uses its correct filter accessor.

Fixes: bac4368fab62 ("iio: imu: adis16550: add adis16550 support")
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
 drivers/iio/imu/adis16550.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/imu/adis16550.c b/drivers/iio/imu/adis16550.c
index 28f0dbd0226c..1f2af506f4bd 100644
--- a/drivers/iio/imu/adis16550.c
+++ b/drivers/iio/imu/adis16550.c
@@ -643,12 +643,12 @@ static int adis16550_read_raw(struct iio_dev *indio_dev,
 	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
 		switch (chan->type) {
 		case IIO_ANGL_VEL:
-			ret = adis16550_get_accl_filter_freq(st, val);
+			ret = adis16550_get_gyro_filter_freq(st, val);
 			if (ret)
 				return ret;
 			return IIO_VAL_INT;
 		case IIO_ACCEL:
-			ret = adis16550_get_gyro_filter_freq(st, val);
+			ret = adis16550_get_accl_filter_freq(st, val);
 			if (ret)
 				return ret;
 			return IIO_VAL_INT;
@@ -681,9 +681,9 @@ static int adis16550_write_raw(struct iio_dev *indio_dev,
 	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
 		switch (chan->type) {
 		case IIO_ANGL_VEL:
-			return adis16550_set_accl_filter_freq(st, val);
-		case IIO_ACCEL:
 			return adis16550_set_gyro_filter_freq(st, val);
+		case IIO_ACCEL:
+			return adis16550_set_accl_filter_freq(st, val);
 		default:
 			return -EINVAL;
 		}
-- 
2.43.0
RE: [PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions
Posted by Budai, Robert 1 month ago

> -----Original Message-----
> From: Antoniu Miclaus <antoniu.miclaus@analog.com>
> Sent: Friday, February 27, 2026 2:21 PM
> To: Lars-Peter Clausen <lars@metafoo.de>; Hennerich, Michael
> <Michael.Hennerich@analog.com>; Jonathan Cameron <jic23@kernel.org>;
> David Lechner <dlechner@baylibre.com>; Sa, Nuno <Nuno.Sa@analog.com>;
> Andy Shevchenko <andy@kernel.org>; Budai, Robert
> <Robert.Budai@analog.com>; Miclaus, Antoniu
> <Antoniu.Miclaus@analog.com>; Gradinariu, Ramona
> <Ramona.Gradinariu@analog.com>; linux-iio@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Subject: [PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions
> 
> The low-pass filter handlers for IIO_ANGL_VEL and IIO_ACCEL call each
> other's filter functions in both read_raw and write_raw. Swap them so
> each channel type uses its correct filter accessor.
> 
> Fixes: bac4368fab62 ("iio: imu: adis16550: add adis16550 support")
> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
> ---
Acked-by: Robert Budai <robert.budai@analog.com>
>  drivers/iio/imu/adis16550.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/imu/adis16550.c b/drivers/iio/imu/adis16550.c
> index 28f0dbd0226c..1f2af506f4bd 100644
> --- a/drivers/iio/imu/adis16550.c
> +++ b/drivers/iio/imu/adis16550.c
> @@ -643,12 +643,12 @@ static int adis16550_read_raw(struct iio_dev
> *indio_dev,
>  	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
>  		switch (chan->type) {
>  		case IIO_ANGL_VEL:
> -			ret = adis16550_get_accl_filter_freq(st, val);
> +			ret = adis16550_get_gyro_filter_freq(st, val);
>  			if (ret)
>  				return ret;
>  			return IIO_VAL_INT;
>  		case IIO_ACCEL:
> -			ret = adis16550_get_gyro_filter_freq(st, val);
> +			ret = adis16550_get_accl_filter_freq(st, val);
>  			if (ret)
>  				return ret;
>  			return IIO_VAL_INT;
> @@ -681,9 +681,9 @@ static int adis16550_write_raw(struct iio_dev
> *indio_dev,
>  	case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
>  		switch (chan->type) {
>  		case IIO_ANGL_VEL:
> -			return adis16550_set_accl_filter_freq(st, val);
> -		case IIO_ACCEL:
>  			return adis16550_set_gyro_filter_freq(st, val);
> +		case IIO_ACCEL:
> +			return adis16550_set_accl_filter_freq(st, val);
>  		default:
>  			return -EINVAL;
>  		}
> --
> 2.43.0
Re: [PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions
Posted by Andy Shevchenko 1 month, 1 week ago
On Fri, Feb 27, 2026 at 02:20:46PM +0200, Antoniu Miclaus wrote:
> The low-pass filter handlers for IIO_ANGL_VEL and IIO_ACCEL call each
> other's filter functions in both read_raw and write_raw. Swap them so
> each channel type uses its correct filter accessor.

Hmm...
Would it be just a naming issue? How do we know that the code is now correct?

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH] iio: imu: adis16550: fix swapped gyro/accel filter functions
Posted by Jonathan Cameron 1 month ago
On Fri, 27 Feb 2026 18:33:36 +0200
Andy Shevchenko <andriy.shevchenko@intel.com> wrote:

> On Fri, Feb 27, 2026 at 02:20:46PM +0200, Antoniu Miclaus wrote:
> > The low-pass filter handlers for IIO_ANGL_VEL and IIO_ACCEL call each
> > other's filter functions in both read_raw and write_raw. Swap them so
> > each channel type uses its correct filter accessor.  
> 
> Hmm...
> Would it be just a naming issue? How do we know that the code is now correct?
> 

I had a dig and it goes all the way down so looks correct to me and not
a naming issue.  With the tag from Robert, I'm going to take the view
we are sure enough this is correct and apply it.

Applied to the fixes-togreg branch of iio.git and marked for stable.

Thanks,

Jonathan