[PATCH 1/2] dt-bindings: interrupt-controller: apple,aic2: Add AICv3

Janne Grunau posted 2 patches 2 weeks, 2 days ago
There is a newer version of this series
[PATCH 1/2] dt-bindings: interrupt-controller: apple,aic2: Add AICv3
Posted by Janne Grunau 2 weeks, 2 days ago
AIC version 3 as found on the Apple M3 (t8122) is very similar to AICv2
in its base functionality. It can use the same device tree bindings as
AICv2 so add it to the AICv2 bindings.
This interrupt controller is used on all Apple SoCs starting with M3 up
to at least M5.
The only apparent difference is the increased IRQ config offset. Apple's
device tree codes this new offset as property of the "aic" node but the
value stayed constant for all SoCs with "aic,3". Since the SoC specific
compatible "apple,t8122-aic3" will be used in the driver this offset can
remain a driver implementation detail.

Signed-off-by: Janne Grunau <j@jannau.net>
---
 .../bindings/interrupt-controller/apple,aic2.yaml  | 29 +++++++++++++++-------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
index ee5a0dfff437816056bda0de5523bf38be4f49ba..933e134d82bb599a68707ba34e04ea55d61050b9 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
@@ -4,10 +4,10 @@
 $id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Apple Interrupt Controller 2
+title: Apple Interrupt Controller 2 and 3
 
 maintainers:
-  - Hector Martin <marcan@marcan.st>
+  - Janne Grunau <j@jannau.net>
 
 description: |
   The Apple Interrupt Controller 2 is a simple interrupt controller present on
@@ -28,14 +28,23 @@ description: |
   which do not go through a discrete interrupt controller. It also handles
   FIQ-based Fast IPIs.
 
+  The Apple Interrupt Controller 3 is in its base functionality very similar to
+  the Apple Interrupt Controller 2 and uses the same device tree bindings. It is
+  found on Apple ARM SoCs platforms starting with t8122 (M3).
+
 properties:
   compatible:
-    items:
-      - enum:
-          - apple,t8112-aic
-          - apple,t6000-aic
-          - apple,t6020-aic
-      - const: apple,aic2
+    oneOf:
+      - items:
+          - enum:
+              - apple,t8112-aic
+              - apple,t6000-aic
+              - apple,t6020-aic
+          - const: apple,aic2
+      - items:
+          - enum:
+              - apple,t6030-aic3
+          - const: apple,t8122-aic3
 
   interrupt-controller: true
 
@@ -117,7 +126,9 @@ allOf:
       properties:
         compatible:
           contains:
-            const: apple,t8112-aic
+            enum:
+              - apple,t8112-aic
+              - apple,t8122-aic3
     then:
       properties:
         '#interrupt-cells':

-- 
2.52.0
Re: [PATCH 1/2] dt-bindings: interrupt-controller: apple,aic2: Add AICv3
Posted by Mark Kettenis 2 weeks, 2 days ago
> From: Janne Grunau <j@jannau.net>
> Date: Sun, 25 Jan 2026 12:08:45 +0100

Hi Janne,

> 
> AIC version 3 as found on the Apple M3 (t8122) is very similar to AICv2
> in its base functionality. It can use the same device tree bindings as
> AICv2 so add it to the AICv2 bindings.
> This interrupt controller is used on all Apple SoCs starting with M3 up
> to at least M5.
> The only apparent difference is the increased IRQ config offset. Apple's
> device tree codes this new offset as property of the "aic" node but the
> value stayed constant for all SoCs with "aic,3". Since the SoC specific
> compatible "apple,t8122-aic3" will be used in the driver this offset can
> remain a driver implementation detail.
> 
> Signed-off-by: Janne Grunau <j@jannau.net>
> ---
>  .../bindings/interrupt-controller/apple,aic2.yaml  | 29 +++++++++++++++-------
>  1 file changed, 20 insertions(+), 9 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> index ee5a0dfff437816056bda0de5523bf38be4f49ba..933e134d82bb599a68707ba34e04ea55d61050b9 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> +++ b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> @@ -4,10 +4,10 @@
>  $id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
> -title: Apple Interrupt Controller 2
> +title: Apple Interrupt Controller 2 and 3
>  
>  maintainers:
> -  - Hector Martin <marcan@marcan.st>
> +  - Janne Grunau <j@jannau.net>
>  
>  description: |
>    The Apple Interrupt Controller 2 is a simple interrupt controller present on
> @@ -28,14 +28,23 @@ description: |
>    which do not go through a discrete interrupt controller. It also handles
>    FIQ-based Fast IPIs.
>  
> +  The Apple Interrupt Controller 3 is in its base functionality very similar to
> +  the Apple Interrupt Controller 2 and uses the same device tree bindings. It is
> +  found on Apple ARM SoCs platforms starting with t8122 (M3).
> +
>  properties:
>    compatible:
> -    items:
> -      - enum:
> -          - apple,t8112-aic
> -          - apple,t6000-aic
> -          - apple,t6020-aic
> -      - const: apple,aic2
> +    oneOf:
> +      - items:
> +          - enum:
> +              - apple,t8112-aic
> +              - apple,t6000-aic
> +              - apple,t6020-aic
> +          - const: apple,aic2
> +      - items:
> +          - enum:
> +              - apple,t6030-aic3
> +          - const: apple,t8122-aic3

I think this is missing a

         - const: apple,t8122-aic3

otherwise, the non-{Pro/Ultra/Max} M3 can't have the simple

    compatible = "apple,t8122-aic3"

>  
>    interrupt-controller: true
>  
> @@ -117,7 +126,9 @@ allOf:
>        properties:
>          compatible:
>            contains:
> -            const: apple,t8112-aic
> +            enum:
> +              - apple,t8112-aic
> +              - apple,t8122-aic3
>      then:
>        properties:
>          '#interrupt-cells':
> 
> -- 
> 2.52.0
> 
> 
>
Re: [PATCH 1/2] dt-bindings: interrupt-controller: apple,aic2: Add AICv3
Posted by Janne Grunau 2 weeks, 2 days ago
On Sun, Jan 25, 2026 at 12:35:48PM +0100, Mark Kettenis wrote:
> > From: Janne Grunau <j@jannau.net>
> > Date: Sun, 25 Jan 2026 12:08:45 +0100
> 
> Hi Janne,
> 
> > 
> > AIC version 3 as found on the Apple M3 (t8122) is very similar to AICv2
> > in its base functionality. It can use the same device tree bindings as
> > AICv2 so add it to the AICv2 bindings.
> > This interrupt controller is used on all Apple SoCs starting with M3 up
> > to at least M5.
> > The only apparent difference is the increased IRQ config offset. Apple's
> > device tree codes this new offset as property of the "aic" node but the
> > value stayed constant for all SoCs with "aic,3". Since the SoC specific
> > compatible "apple,t8122-aic3" will be used in the driver this offset can
> > remain a driver implementation detail.
> > 
> > Signed-off-by: Janne Grunau <j@jannau.net>
> > ---
> >  .../bindings/interrupt-controller/apple,aic2.yaml  | 29 +++++++++++++++-------
> >  1 file changed, 20 insertions(+), 9 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> > index ee5a0dfff437816056bda0de5523bf38be4f49ba..933e134d82bb599a68707ba34e04ea55d61050b9 100644
> > --- a/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> > +++ b/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml
> > @@ -4,10 +4,10 @@
> >  $id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
> >  $schema: http://devicetree.org/meta-schemas/core.yaml#
> >  
> > -title: Apple Interrupt Controller 2
> > +title: Apple Interrupt Controller 2 and 3
> >  
> >  maintainers:
> > -  - Hector Martin <marcan@marcan.st>
> > +  - Janne Grunau <j@jannau.net>
> >  
> >  description: |
> >    The Apple Interrupt Controller 2 is a simple interrupt controller present on
> > @@ -28,14 +28,23 @@ description: |
> >    which do not go through a discrete interrupt controller. It also handles
> >    FIQ-based Fast IPIs.
> >  
> > +  The Apple Interrupt Controller 3 is in its base functionality very similar to
> > +  the Apple Interrupt Controller 2 and uses the same device tree bindings. It is
> > +  found on Apple ARM SoCs platforms starting with t8122 (M3).
> > +
> >  properties:
> >    compatible:
> > -    items:
> > -      - enum:
> > -          - apple,t8112-aic
> > -          - apple,t6000-aic
> > -          - apple,t6020-aic
> > -      - const: apple,aic2
> > +    oneOf:
> > +      - items:
> > +          - enum:
> > +              - apple,t8112-aic
> > +              - apple,t6000-aic
> > +              - apple,t6020-aic
> > +          - const: apple,aic2
> > +      - items:
> > +          - enum:
> > +              - apple,t6030-aic3
> > +          - const: apple,t8122-aic3
> 
> I think this is missing a
> 
>          - const: apple,t8122-aic3
> 
> otherwise, the non-{Pro/Ultra/Max} M3 can't have the simple
> 
>     compatible = "apple,t8122-aic3"

indeed, I forgot to copy my t8122 device tree over when I ran dtbs_check
before submission. Fixed locally and I added a apple,t8122-aic3 example
which tests the #interrupt-cells 3 case

Thanks

Janne