The Wolfson Microelectronics Arizona sometimes needs to poll the
GPIO line corresponding to the IRQ to counter bugs in the hardware
that appear on edge-triggered IRQs.
For this situation, provide the optional irq-gpios property.
Signed-off-by: Linus Walleij <linusw@kernel.org>
---
Documentation/devicetree/bindings/mfd/wlf,arizona.yaml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml b/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
index 7902f3c5d289..dbf1f1e0a57e 100644
--- a/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
+++ b/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
@@ -194,6 +194,15 @@ properties:
reset-gpios:
maxItems: 1
+ irq-gpios:
+ maxItems: 1
+ description:
+ Nominally a functional IRQ should be provided in the interrupts
+ property. However due to glitches in the hardware, the GPIO line
+ corresponding to the IRQ sometimes need to be iteratively polled to
+ check for the triggering edge. If this bug is present, the GPIO line
+ should be passed here.
+
wlf,reset:
description:
GPIO specifier for the GPIO controlling RESET
--
2.53.0
On Tue, Mar 17, 2026 at 10:28:31AM +0100, Linus Walleij wrote: > The Wolfson Microelectronics Arizona sometimes needs to poll the > GPIO line corresponding to the IRQ to counter bugs in the hardware > that appear on edge-triggered IRQs. > > For this situation, provide the optional irq-gpios property. > > Signed-off-by: Linus Walleij <linusw@kernel.org> > --- > Documentation/devicetree/bindings/mfd/wlf,arizona.yaml | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml b/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml > index 7902f3c5d289..dbf1f1e0a57e 100644 > --- a/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml > +++ b/Documentation/devicetree/bindings/mfd/wlf,arizona.yaml > @@ -194,6 +194,15 @@ properties: > reset-gpios: > maxItems: 1 > > + irq-gpios: > + maxItems: 1 > + description: > + Nominally a functional IRQ should be provided in the interrupts > + property. However due to glitches in the hardware, the GPIO line > + corresponding to the IRQ sometimes need to be iteratively polled to > + check for the triggering edge. If this bug is present, the GPIO line > + should be passed here. I would perhaps reword this a little. Its not really about bugs/glitches. This feature is for hosts that only support edge triggered IRQs. The codec IRQ output is level based, so if the host only supports edge triggered IRQs then IRQs can be missed as they don't necessarily generate another edge. This adds a polling loop to ensure the IRQ line has deasserted before exiting the IRQ handler, forcing the next IRQ to generate another edge. Perhaps something like: A functional IRQ should be provided in the interrupts property. This property enables edge triggered IRQ emulation for hosts that don't support the codecs level triggered IRQ output. The GPIO line corresponding to the IRQ will be polled until all IRQs have been handled, ensuring an edge is generated for the next IRQ. Thanks, Charles
© 2016 - 2026 Red Hat, Inc.