In the QE, a few GPIOs have an associated IRQ to notify changes.
Add IRQ support to QE GPIO.
As not all GPIOs have an associated IRQ, the driver needs to know
to which GPIO corresponds each provided IRQ. This is provided via
multiple compatible properties:
compatible = "fsl,mpc8323-qe-pario-bank-a"
compatible = "fsl,mpc8323-qe-pario-bank-b"
compatible = "fsl,mpc8323-qe-pario-bank-c"
compatible = "fsl,mpc8360-qe-pario-bank-a"
compatible = "fsl,mpc8360-qe-pario-bank-b"
compatible = "fsl,mpc8360-qe-pario-bank-c"
compatible = "fsl,mpc8360-qe-pario-bank-d"
compatible = "fsl,mpc8360-qe-pario-bank-e"
compatible = "fsl,mpc8360-qe-pario-bank-f"
compatible = "fsl,mpc8360-qe-pario-bank-g"
compatible = "fsl,mpc8568-qe-pario-bank-a"
compatible = "fsl,mpc8568-qe-pario-bank-b"
compatible = "fsl,mpc8568-qe-pario-bank-c"
compatible = "fsl,mpc8568-qe-pario-bank-d"
compatible = "fsl,mpc8568-qe-pario-bank-e"
compatible = "fsl,mpc8568-qe-pario-bank-f"
When not using IRQ and for banks having no IRQ (like bank D on mpc8323)
the origin compatible = "fsl,mpc8323-qe-pario-bank" is still valid.
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
---
.../gpio/fsl,mpc8323-qe-pario-bank.yaml | 27 +++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml b/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml
index 0dd9c0e6ca39..c34aeea119e0 100644
--- a/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml
+++ b/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml
@@ -14,6 +14,22 @@ properties:
items:
- enum:
- fsl,chip-qe-pario-bank
+ - fsl,mpc8323-qe-pario-bank-a
+ - fsl,mpc8323-qe-pario-bank-b
+ - fsl,mpc8323-qe-pario-bank-c
+ - fsl,mpc8360-qe-pario-bank-a
+ - fsl,mpc8360-qe-pario-bank-b
+ - fsl,mpc8360-qe-pario-bank-c
+ - fsl,mpc8360-qe-pario-bank-d
+ - fsl,mpc8360-qe-pario-bank-e
+ - fsl,mpc8360-qe-pario-bank-f
+ - fsl,mpc8360-qe-pario-bank-g
+ - fsl,mpc8568-qe-pario-bank-a
+ - fsl,mpc8568-qe-pario-bank-b
+ - fsl,mpc8568-qe-pario-bank-c
+ - fsl,mpc8568-qe-pario-bank-d
+ - fsl,mpc8568-qe-pario-bank-e
+ - fsl,mpc8568-qe-pario-bank-f
- const: fsl,mpc8323-qe-pario-bank
reg:
@@ -24,6 +40,9 @@ properties:
'#gpio-cells':
const: 2
+ interrupts:
+ description: List of interrupts for lines of the port that trigger interrupts on change.
+
required:
- compatible
- reg
@@ -35,15 +54,19 @@ additionalProperties: false
examples:
- |
gpio-controller@1400 {
- compatible = "fsl,mpc8360-qe-pario-bank", "fsl,mpc8323-qe-pario-bank";
+ compatible = "fsl,mpc8360-qe-pario-bank-a", "fsl,mpc8323-qe-pario-bank";
reg = <0x1400 0x18>;
gpio-controller;
#gpio-cells = <2>;
+ interrupts = <0 1 2 3>;
+ interrupt-parent = <&qepic>;
};
gpio-controller@1460 {
- compatible = "fsl,mpc8360-qe-pario-bank", "fsl,mpc8323-qe-pario-bank";
+ compatible = "fsl,mpc8360-qe-pario-bank-e", "fsl,mpc8323-qe-pario-bank";
reg = <0x1460 0x18>;
gpio-controller;
#gpio-cells = <2>;
+ interrupts = <19 20 21 22 23 24 25>;
+ interrupt-parent = <&qepic>;
};
--
2.49.0
On Thu, Sep 18, 2025 at 06:23:27PM +0200, Christophe Leroy wrote: > In the QE, a few GPIOs have an associated IRQ to notify changes. > Add IRQ support to QE GPIO. > > As not all GPIOs have an associated IRQ, the driver needs to know > to which GPIO corresponds each provided IRQ. This is provided via > multiple compatible properties: > > compatible = "fsl,mpc8323-qe-pario-bank-a" > compatible = "fsl,mpc8323-qe-pario-bank-b" > compatible = "fsl,mpc8323-qe-pario-bank-c" > > compatible = "fsl,mpc8360-qe-pario-bank-a" > compatible = "fsl,mpc8360-qe-pario-bank-b" > compatible = "fsl,mpc8360-qe-pario-bank-c" > compatible = "fsl,mpc8360-qe-pario-bank-d" > compatible = "fsl,mpc8360-qe-pario-bank-e" > compatible = "fsl,mpc8360-qe-pario-bank-f" > compatible = "fsl,mpc8360-qe-pario-bank-g" > > compatible = "fsl,mpc8568-qe-pario-bank-a" > compatible = "fsl,mpc8568-qe-pario-bank-b" > compatible = "fsl,mpc8568-qe-pario-bank-c" > compatible = "fsl,mpc8568-qe-pario-bank-d" > compatible = "fsl,mpc8568-qe-pario-bank-e" > compatible = "fsl,mpc8568-qe-pario-bank-f" > > When not using IRQ and for banks having no IRQ (like bank D on mpc8323) > the origin compatible = "fsl,mpc8323-qe-pario-bank" is still valid. > > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> > --- > .../gpio/fsl,mpc8323-qe-pario-bank.yaml | 27 +++++++++++++++++-- > 1 file changed, 25 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml b/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml > index 0dd9c0e6ca39..c34aeea119e0 100644 > --- a/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml > +++ b/Documentation/devicetree/bindings/gpio/fsl,mpc8323-qe-pario-bank.yaml > @@ -14,6 +14,22 @@ properties: > items: > - enum: > - fsl,chip-qe-pario-bank > + - fsl,mpc8323-qe-pario-bank-a > + - fsl,mpc8323-qe-pario-bank-b > + - fsl,mpc8323-qe-pario-bank-c > + - fsl,mpc8360-qe-pario-bank-a > + - fsl,mpc8360-qe-pario-bank-b > + - fsl,mpc8360-qe-pario-bank-c > + - fsl,mpc8360-qe-pario-bank-d > + - fsl,mpc8360-qe-pario-bank-e > + - fsl,mpc8360-qe-pario-bank-f > + - fsl,mpc8360-qe-pario-bank-g > + - fsl,mpc8568-qe-pario-bank-a > + - fsl,mpc8568-qe-pario-bank-b > + - fsl,mpc8568-qe-pario-bank-c > + - fsl,mpc8568-qe-pario-bank-d > + - fsl,mpc8568-qe-pario-bank-e > + - fsl,mpc8568-qe-pario-bank-f Is this supposed to be mpc8569? I don't see any existing "fsl,mpc8568-qe-pario-bank" compatibles. This breaks the ABI. If the OS relied on "fsl,mpc8360-qe-pario-bank" for example, you just broke it. As the GPIO bank doesn't do any interrupt handling itself (mask/unmask/ack), you can just do this (using fsl,mpc8360-qe-pario-bank-a case): interrupt-map-mask = <0x1f 0>; interrupt-map = <15 0 &qepic 0>, <16 0 &qepic 1>, <29 0 &qepic 2>, <30 0 &qepic 3>; And then a user of the GPIO interrupt just says "interrupts = <15 0>;". Rob
© 2016 - 2025 Red Hat, Inc.