* [PATCH] iio: proximity: vcnl3020: fix ISR bitmask check in IRQ handler
@ 2026-08-19 20:37 Salah Triki
0 siblings, 0 replies; only message in thread
From: Salah Triki @ 2026-08-19 20:37 UTC (permalink / raw)
To: Jonathan Cameron, David Lechner, Nuno Sá, Andy Shevchenko
Cc: linux-iio, linux-kernel, Salah Triki
In vcnl3020_handle_irq_thread(), the status register (VCNL_ISR) was
incorrectly checked against VCNL_ICR_THRES_EN (BIT(1)), which is a bit
mask intended for the Interrupt Control Register (VCNL_PS_ICR).
Because BIT(1) in the ISR register corresponds only to VCNL_INT_TH_LOW,
any high-threshold interrupt (VCNL_INT_TH_HI, BIT(0)) occurring on its own
resulted in the handler returning IRQ_NONE and ignoring the event.
Fix this by checking the ISR value against both valid status bits:
VCNL_INT_TH_HI and VCNL_INT_TH_LOW.
Fixes: 3363fbbe19e5 ("iio: proximity: vcnl3020: add periodic mode")
Signed-off-by: Salah Triki <salah.triki@gmail.com>
---
drivers/iio/proximity/vcnl3020.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/proximity/vcnl3020.c b/drivers/iio/proximity/vcnl3020.c
index 7f417372566a..d4ad06f8f366 100644
--- a/drivers/iio/proximity/vcnl3020.c
+++ b/drivers/iio/proximity/vcnl3020.c
@@ -584,7 +584,7 @@ static irqreturn_t vcnl3020_handle_irq_thread(int irq, void *p)
return IRQ_HANDLED;
}
- if (!(isr & VCNL_ICR_THRES_EN))
+ if (!(isr & (VCNL_INT_TH_HI | VCNL_INT_TH_LOW)))
return IRQ_NONE;
iio_push_event(indio_dev,
--
2.43.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-19 20:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19 20:37 [PATCH] iio: proximity: vcnl3020: fix ISR bitmask check in IRQ handler Salah Triki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.