The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] i2c: designware: Enable interrupt mask workaround for HJMC3001
@ 2026-08-26  7:05 Hongbo Yao
  2026-08-26 10:12 ` Mika Westerberg
  0 siblings, 1 reply; 2+ messages in thread
From: Hongbo Yao @ 2026-08-26  7:05 UTC (permalink / raw)
  To: mika.westerberg
  Cc: andriy.shevchenko, andi.shyti, linux-i2c, linux-kernel, peter.du,
	gwilym.wu, clarke.li, Hongbo Yao

On HJMicro ARM64 servers, the DesignWare I2C controller does not
retrigger a pending interrupt if the interrupt status changes after
the current status bits have been cleared.

The issue is exposed under heavy system load when the corresponding
SPI is routed across sockets to a core in the remote socket. The
interrupt is then lost and the I2C transfer times out.

Enable ACCESS_INTR_MASK for HJMC3001. This toggles DW_IC_INTR_MASK
before returning from the interrupt handler and retriggers any
pending interrupt.

Fixes: 6816ce57c479 ("i2c: designware: Add a new ACPI HID for HJMC01 I2C controller")
Signed-off-by: Hongbo Yao <andy.xu@hj-micro.com>
---
 drivers/i2c/busses/i2c-designware-platdrv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 6d6e81242f74..447af5523c2e 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -272,7 +272,7 @@ static const struct acpi_device_id dw_i2c_acpi_match[] = {
 	{ "HISI02A1", 0 },
 	{ "HISI02A2", 0 },
 	{ "HISI02A3", 0 },
-	{ "HJMC3001", 0 },
+	{ "HJMC3001", ACCESS_INTR_MASK },
 	{ "HYGO0010", ACCESS_INTR_MASK },
 	{ "INT33C2", 0 },
 	{ "INT33C3", 0 },
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] i2c: designware: Enable interrupt mask workaround for HJMC3001
  2026-08-26  7:05 [PATCH] i2c: designware: Enable interrupt mask workaround for HJMC3001 Hongbo Yao
@ 2026-08-26 10:12 ` Mika Westerberg
  0 siblings, 0 replies; 2+ messages in thread
From: Mika Westerberg @ 2026-08-26 10:12 UTC (permalink / raw)
  To: Hongbo Yao
  Cc: andriy.shevchenko, andi.shyti, linux-i2c, linux-kernel, peter.du,
	gwilym.wu, clarke.li

On Wed, Aug 26, 2026 at 03:05:47PM +0800, Hongbo Yao wrote:
> On HJMicro ARM64 servers, the DesignWare I2C controller does not
> retrigger a pending interrupt if the interrupt status changes after
> the current status bits have been cleared.
> 
> The issue is exposed under heavy system load when the corresponding
> SPI is routed across sockets to a core in the remote socket. The
> interrupt is then lost and the I2C transfer times out.
> 
> Enable ACCESS_INTR_MASK for HJMC3001. This toggles DW_IC_INTR_MASK
> before returning from the interrupt handler and retriggers any
> pending interrupt.
> 
> Fixes: 6816ce57c479 ("i2c: designware: Add a new ACPI HID for HJMC01 I2C controller")
> Signed-off-by: Hongbo Yao <andy.xu@hj-micro.com>

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-08-26 10:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-26  7:05 [PATCH] i2c: designware: Enable interrupt mask workaround for HJMC3001 Hongbo Yao
2026-08-26 10:12 ` Mika Westerberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox