2019-09-03 09:22:28

by Stefan Popa

[permalink] [raw]
Subject: [PATCH 3/3] iio: accel: adxl372: Make sure interrupts are disabled

This patch disables the adxl372 interrupts at setup. The interrupts
should be enabled together with the iio buffer. Not doing this, might
cause an unwanted interrupt to trigger without being able to properly
clear it.

Signed-off-by: Stefan Popa <[email protected]>
---
drivers/iio/accel/adxl372.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
index 72d3f45..77651f4 100644
--- a/drivers/iio/accel/adxl372.c
+++ b/drivers/iio/accel/adxl372.c
@@ -609,6 +609,10 @@ static int adxl372_setup(struct adxl372_state *st)
if (ret < 0)
return ret;

+ ret = adxl372_set_interrupts(st, 0, 0);
+ if (ret < 0)
+ return ret;
+
/* Set the mode of operation to full bandwidth measurement mode */
return adxl372_set_op_mode(st, ADXL372_FULL_BW_MEASUREMENT);
}
--
2.7.4


2019-09-09 08:24:31

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH 3/3] iio: accel: adxl372: Make sure interrupts are disabled

On Tue, 3 Sep 2019 12:19:11 +0300
Stefan Popa <[email protected]> wrote:

> This patch disables the adxl372 interrupts at setup. The interrupts
> should be enabled together with the iio buffer. Not doing this, might
> cause an unwanted interrupt to trigger without being able to properly
> clear it.
>
> Signed-off-by: Stefan Popa <[email protected]>

Given the device has a software reset, would we be better off
just hitting that to make sure we are in a consistent state after
driver start up?

Thanks,

Jonathan


> ---
> drivers/iio/accel/adxl372.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
> index 72d3f45..77651f4 100644
> --- a/drivers/iio/accel/adxl372.c
> +++ b/drivers/iio/accel/adxl372.c
> @@ -609,6 +609,10 @@ static int adxl372_setup(struct adxl372_state *st)
> if (ret < 0)
> return ret;
>
> + ret = adxl372_set_interrupts(st, 0, 0);
> + if (ret < 0)
> + return ret;
> +
> /* Set the mode of operation to full bandwidth measurement mode */
> return adxl372_set_op_mode(st, ADXL372_FULL_BW_MEASUREMENT);
> }