xref: /openbmc/linux/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1ab1fd5abSHector Martin# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2ab1fd5abSHector Martin%YAML 1.2
3ab1fd5abSHector Martin---
4ab1fd5abSHector Martin$id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
5ab1fd5abSHector Martin$schema: http://devicetree.org/meta-schemas/core.yaml#
6ab1fd5abSHector Martin
7ab1fd5abSHector Martintitle: Apple Interrupt Controller 2
8ab1fd5abSHector Martin
9ab1fd5abSHector Martinmaintainers:
10ab1fd5abSHector Martin  - Hector Martin <marcan@marcan.st>
11ab1fd5abSHector Martin
12ab1fd5abSHector Martindescription: |
13ab1fd5abSHector Martin  The Apple Interrupt Controller 2 is a simple interrupt controller present on
14ab1fd5abSHector Martin  Apple ARM SoC platforms starting with t600x (M1 Pro and Max).
15ab1fd5abSHector Martin
16ab1fd5abSHector Martin  It provides the following features:
17ab1fd5abSHector Martin
18ab1fd5abSHector Martin  - Level-triggered hardware IRQs wired to SoC blocks
19ab1fd5abSHector Martin    - Single mask bit per IRQ
20ab1fd5abSHector Martin    - Automatic masking on event delivery (auto-ack)
21ab1fd5abSHector Martin    - Software triggering (ORed with hw line)
22ab1fd5abSHector Martin  - Automatic prioritization (single event/ack register per CPU, lower IRQs =
23ab1fd5abSHector Martin    higher priority)
24ab1fd5abSHector Martin  - Automatic masking on ack
25ab1fd5abSHector Martin  - Support for multiple dies
26ab1fd5abSHector Martin
27ab1fd5abSHector Martin  This device also represents the FIQ interrupt sources on platforms using AIC,
28ab1fd5abSHector Martin  which do not go through a discrete interrupt controller. It also handles
29ab1fd5abSHector Martin  FIQ-based Fast IPIs.
30ab1fd5abSHector Martin
31ab1fd5abSHector Martinproperties:
32ab1fd5abSHector Martin  compatible:
33ab1fd5abSHector Martin    items:
34*93b415b2SJanne Grunau      - enum:
35*93b415b2SJanne Grunau          - apple,t8112-aic
36*93b415b2SJanne Grunau          - apple,t6000-aic
37ab1fd5abSHector Martin      - const: apple,aic2
38ab1fd5abSHector Martin
39ab1fd5abSHector Martin  interrupt-controller: true
40ab1fd5abSHector Martin
41ab1fd5abSHector Martin  '#interrupt-cells':
42*93b415b2SJanne Grunau    minimum: 3
43*93b415b2SJanne Grunau    maximum: 4
44ab1fd5abSHector Martin    description: |
45ab1fd5abSHector Martin      The 1st cell contains the interrupt type:
46ab1fd5abSHector Martin        - 0: Hardware IRQ
47ab1fd5abSHector Martin        - 1: FIQ
48ab1fd5abSHector Martin
49*93b415b2SJanne Grunau      The 2nd cell contains the die ID (only present on apple,t6000-aic).
50ab1fd5abSHector Martin
51ab1fd5abSHector Martin      The next cell contains the interrupt number.
52ab1fd5abSHector Martin        - HW IRQs: interrupt number
53ab1fd5abSHector Martin        - FIQs:
54ab1fd5abSHector Martin          - 0: physical HV timer
55ab1fd5abSHector Martin          - 1: virtual HV timer
56ab1fd5abSHector Martin          - 2: physical guest timer
57ab1fd5abSHector Martin          - 3: virtual guest timer
58ab1fd5abSHector Martin
59ab1fd5abSHector Martin      The last cell contains the interrupt flags. This is normally
60ab1fd5abSHector Martin      IRQ_TYPE_LEVEL_HIGH (4).
61ab1fd5abSHector Martin
62ab1fd5abSHector Martin  reg:
63ab1fd5abSHector Martin    items:
64ab1fd5abSHector Martin      - description: Address and size of the main AIC2 registers.
65ab1fd5abSHector Martin      - description: Address and size of the AIC2 Event register.
66ab1fd5abSHector Martin
67ab1fd5abSHector Martin  reg-names:
68ab1fd5abSHector Martin    items:
69ab1fd5abSHector Martin      - const: core
70ab1fd5abSHector Martin      - const: event
71ab1fd5abSHector Martin
72ab1fd5abSHector Martin  power-domains:
73ab1fd5abSHector Martin    maxItems: 1
74ab1fd5abSHector Martin
759d86cffeSJanne Grunau  affinities:
769d86cffeSJanne Grunau    type: object
779d86cffeSJanne Grunau    additionalProperties: false
789d86cffeSJanne Grunau    description:
799d86cffeSJanne Grunau      FIQ affinity can be expressed as a single "affinities" node,
809d86cffeSJanne Grunau      containing a set of sub-nodes, one per FIQ with a non-default
819d86cffeSJanne Grunau      affinity.
829d86cffeSJanne Grunau    patternProperties:
839d86cffeSJanne Grunau      "^.+-affinity$":
849d86cffeSJanne Grunau        type: object
859d86cffeSJanne Grunau        additionalProperties: false
869d86cffeSJanne Grunau        properties:
879d86cffeSJanne Grunau          apple,fiq-index:
889d86cffeSJanne Grunau            description:
899d86cffeSJanne Grunau              The interrupt number specified as a FIQ, and for which
909d86cffeSJanne Grunau              the affinity is not the default.
919d86cffeSJanne Grunau            $ref: /schemas/types.yaml#/definitions/uint32
929d86cffeSJanne Grunau            maximum: 5
939d86cffeSJanne Grunau
949d86cffeSJanne Grunau          cpus:
959d86cffeSJanne Grunau            $ref: /schemas/types.yaml#/definitions/phandle-array
969d86cffeSJanne Grunau            description:
979d86cffeSJanne Grunau              Should be a list of phandles to CPU nodes (as described in
989d86cffeSJanne Grunau              Documentation/devicetree/bindings/arm/cpus.yaml).
999d86cffeSJanne Grunau
1009d86cffeSJanne Grunau        required:
1019d86cffeSJanne Grunau          - apple,fiq-index
1029d86cffeSJanne Grunau          - cpus
1039d86cffeSJanne Grunau
104ab1fd5abSHector Martinrequired:
105ab1fd5abSHector Martin  - compatible
106ab1fd5abSHector Martin  - '#interrupt-cells'
107ab1fd5abSHector Martin  - interrupt-controller
108ab1fd5abSHector Martin  - reg
109ab1fd5abSHector Martin  - reg-names
110ab1fd5abSHector Martin
111ab1fd5abSHector MartinadditionalProperties: false
112ab1fd5abSHector Martin
113ab1fd5abSHector MartinallOf:
114ab1fd5abSHector Martin  - $ref: /schemas/interrupt-controller.yaml#
115*93b415b2SJanne Grunau  - if:
116*93b415b2SJanne Grunau      properties:
117*93b415b2SJanne Grunau        compatible:
118*93b415b2SJanne Grunau          contains:
119*93b415b2SJanne Grunau            const: apple,t8112-aic
120*93b415b2SJanne Grunau    then:
121*93b415b2SJanne Grunau      properties:
122*93b415b2SJanne Grunau        '#interrupt-cells':
123*93b415b2SJanne Grunau          const: 3
124*93b415b2SJanne Grunau    else:
125*93b415b2SJanne Grunau      properties:
126*93b415b2SJanne Grunau        '#interrupt-cells':
127*93b415b2SJanne Grunau          const: 4
128ab1fd5abSHector Martin
129ab1fd5abSHector Martinexamples:
130ab1fd5abSHector Martin  - |
131ab1fd5abSHector Martin    soc {
132ab1fd5abSHector Martin        #address-cells = <2>;
133ab1fd5abSHector Martin        #size-cells = <2>;
134ab1fd5abSHector Martin
135ab1fd5abSHector Martin        aic: interrupt-controller@28e100000 {
136ab1fd5abSHector Martin            compatible = "apple,t6000-aic", "apple,aic2";
137ab1fd5abSHector Martin            #interrupt-cells = <4>;
138ab1fd5abSHector Martin            interrupt-controller;
139ab1fd5abSHector Martin            reg = <0x2 0x8e100000 0x0 0xc000>,
140ab1fd5abSHector Martin                  <0x2 0x8e10c000 0x0 0x4>;
141ab1fd5abSHector Martin            reg-names = "core", "event";
142ab1fd5abSHector Martin        };
143ab1fd5abSHector Martin    };
144