public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: akemnade@kernel.org
Cc: "Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
	"David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Aaro Koskinen" <aaro.koskinen@iki.fi>,
	"Andreas Kemnade" <andreas@kemnade.info>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Roger Quadros" <rogerq@kernel.org>,
	"Tony Lindgren" <tony@atomide.com>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
	linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-omap@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 1/2] iio: imu: inv-mpu9150: fix irq ack preventing irq storms
Date: Sun, 11 Jan 2026 12:30:03 +0000	[thread overview]
Message-ID: <20260111123003.450bec98@jic23-huawei> (raw)
In-Reply-To: <20251231-mpu9150-v1-1-08ecf085c4ae@kernel.org>

On Wed, 31 Dec 2025 22:14:16 +0100
akemnade@kernel.org wrote:

> From: Andreas Kemnade <andreas@kemnade.info>
> 
> IRQ needs to be acked. for some odd reasons, reading from irq status does
> not reliable help, enable acking from any register to be on the safe side
> and read the irq status register. Comments in the code indicate a known
> unreliability with that register.
> The blamed commit was tested with mpu6050 in lg,p895 and lg,p880 according
> to Tested-bys. But with the MPU9150 in the Epson Moverio BT-200 this leads
> to irq storms without properly acking the irq.
> 
> Fixes: 0a3b517c8089 ("iio: imu: inv_mpu6050: fix interrupt status read for old buggy chips")
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Jean-Baptiste,

If you have time to look at this that would be great.

Whilst here I'll note the defines in this driver could really do with consistency
improvements.  I'd like to see GENMASK() and BIT() used everywhere.
Currently it's mostly the style used in this patch with a few fields in
the newer style.  

Thanks

Jonathan

> ---
>  drivers/iio/imu/inv_mpu6050/inv_mpu_core.c    | 8 ++++++++
>  drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h     | 2 ++
>  drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 5 ++++-
>  3 files changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> index b2fa1f4957a5b..5796896d54cd8 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
> @@ -1943,6 +1943,14 @@ int inv_mpu_core_probe(struct regmap *regmap, int irq, const char *name,
>  			irq_type);
>  		return -EINVAL;
>  	}
> +
> +	/*
> +	 * Acking interrupts by status register does not work reliably
> +	 * but seem to work when this bit is set.
> +	 */
> +	if (st->chip_type == INV_MPU9150)
> +		st->irq_mask |= INV_MPU6050_INT_RD_CLEAR;
> +
>  	device_set_wakeup_capable(dev, true);
>  
>  	st->vdd_supply = devm_regulator_get(dev, "vdd");
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> index 211901f8b8eb6..6239b1a803f77 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
> @@ -390,6 +390,8 @@ struct inv_mpu6050_state {
>  /* enable level triggering */
>  #define INV_MPU6050_LATCH_INT_EN	0x20
>  #define INV_MPU6050_BIT_BYPASS_EN	0x2
> +/* allow acking interrupts by any register read */
> +#define INV_MPU6050_INT_RD_CLEAR	0x10
>  
>  /* Allowed timestamp period jitter in percent */
>  #define INV_MPU6050_TS_PERIOD_JITTER	4
> diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
> index 10a4733420759..22c1ce66f99ee 100644
> --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
> +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c
> @@ -248,7 +248,6 @@ static irqreturn_t inv_mpu6050_interrupt_handle(int irq, void *p)
>  	switch (st->chip_type) {
>  	case INV_MPU6000:
>  	case INV_MPU6050:
> -	case INV_MPU9150:
>  		/*
>  		 * WoM is not supported and interrupt status read seems to be broken for
>  		 * some chips. Since data ready is the only interrupt, bypass interrupt
> @@ -257,6 +256,10 @@ static irqreturn_t inv_mpu6050_interrupt_handle(int irq, void *p)
>  		wom_bits = 0;
>  		int_status = INV_MPU6050_BIT_RAW_DATA_RDY_INT;
>  		goto data_ready_interrupt;
> +	case INV_MPU9150:
> +		/* IRQ needs to be acked */
> +		wom_bits = 0;
> +		break;
>  	case INV_MPU6500:
>  	case INV_MPU6515:
>  	case INV_MPU6880:
> 


  reply	other threads:[~2026-01-11 12:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-31 21:14 [PATCH 0/2] iio: imu: inv-mpu9150: fix interrupts for MPU9150 akemnade
2025-12-31 21:14 ` [PATCH 1/2] iio: imu: inv-mpu9150: fix irq ack preventing irq storms akemnade
2026-01-11 12:30   ` Jonathan Cameron [this message]
2026-01-30 16:17     ` Jean-Baptiste Maneyrol
2026-01-31 18:43       ` Jonathan Cameron
2025-12-31 21:14 ` [PATCH 2/2] ARM: dts: ti/omap: omap4-epson-embt2ws: fix typo in iio device property akemnade
2026-01-11 12:32   ` Jonathan Cameron
2026-01-12  8:42     ` Andreas Kemnade
2026-01-14 22:30       ` Kevin Hilman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260111123003.450bec98@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=akemnade@kernel.org \
    --cc=andreas@kemnade.info \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jean-baptiste.maneyrol@tdk.com \
    --cc=khilman@baylibre.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=robh@kernel.org \
    --cc=rogerq@kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox