xref: /linux/Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1f531d25bSHector Martin# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2f531d25bSHector Martin%YAML 1.2
3f531d25bSHector Martin---
4f531d25bSHector Martin$id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml#
5f531d25bSHector Martin$schema: http://devicetree.org/meta-schemas/core.yaml#
6f531d25bSHector Martin
7f531d25bSHector Martintitle: Apple Interrupt Controller
8f531d25bSHector Martin
9f531d25bSHector Martinmaintainers:
10f531d25bSHector Martin  - Hector Martin <marcan@marcan.st>
11f531d25bSHector Martin
12f531d25bSHector Martindescription: |
13f531d25bSHector Martin  The Apple Interrupt Controller is a simple interrupt controller present on
14f531d25bSHector Martin  Apple ARM SoC platforms, including various iPhone and iPad devices and the
15f531d25bSHector Martin  "Apple Silicon" Macs.
16f531d25bSHector Martin
17f531d25bSHector Martin  It provides the following features:
18f531d25bSHector Martin
19f531d25bSHector Martin  - Level-triggered hardware IRQs wired to SoC blocks
20f531d25bSHector Martin    - Single mask bit per IRQ
21f531d25bSHector Martin    - Per-IRQ affinity setting
22f531d25bSHector Martin    - Automatic masking on event delivery (auto-ack)
23f531d25bSHector Martin    - Software triggering (ORed with hw line)
24f531d25bSHector Martin  - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable
25f531d25bSHector Martin    if not symmetric)
26f531d25bSHector Martin  - Automatic prioritization (single event/ack register per CPU, lower IRQs =
27f531d25bSHector Martin    higher priority)
28f531d25bSHector Martin  - Automatic masking on ack
29f531d25bSHector Martin  - Default "this CPU" register view and explicit per-CPU views
30f531d25bSHector Martin
31f531d25bSHector Martin  This device also represents the FIQ interrupt sources on platforms using AIC,
32f531d25bSHector Martin  which do not go through a discrete interrupt controller.
33f531d25bSHector Martin
34*9e658631SNick Chan  IPIs may be performed via MMIO registers on all variants of AIC. Starting
35*9e658631SNick Chan  from A11, system registers may also be used for "fast" IPIs. Starting from
36*9e658631SNick Chan  M1, even faster IPIs within the same cluster may be achieved by writing to
37*9e658631SNick Chan  a "local" fast IPI register as opposed to using the "global" fast IPI
38*9e658631SNick Chan  register.
39*9e658631SNick Chan
40f531d25bSHector MartinallOf:
41f531d25bSHector Martin  - $ref: /schemas/interrupt-controller.yaml#
42f531d25bSHector Martin
43f531d25bSHector Martinproperties:
44f531d25bSHector Martin  compatible:
45f531d25bSHector Martin    items:
46*9e658631SNick Chan      - enum:
47*9e658631SNick Chan          - apple,s5l8960x-aic
48*9e658631SNick Chan          - apple,t7000-aic
49*9e658631SNick Chan          - apple,s8000-aic
50*9e658631SNick Chan          - apple,t8010-aic
51*9e658631SNick Chan          - apple,t8015-aic
52*9e658631SNick Chan          - apple,t8103-aic
53f531d25bSHector Martin      - const: apple,aic
54f531d25bSHector Martin
55f531d25bSHector Martin  interrupt-controller: true
56f531d25bSHector Martin
57f531d25bSHector Martin  '#interrupt-cells':
58f531d25bSHector Martin    const: 3
59f531d25bSHector Martin    description: |
60f531d25bSHector Martin      The 1st cell contains the interrupt type:
61f531d25bSHector Martin        - 0: Hardware IRQ
62f531d25bSHector Martin        - 1: FIQ
63f531d25bSHector Martin
64f531d25bSHector Martin      The 2nd cell contains the interrupt number.
65f531d25bSHector Martin        - HW IRQs: interrupt number
66f531d25bSHector Martin        - FIQs:
67f531d25bSHector Martin          - 0: physical HV timer
68f531d25bSHector Martin          - 1: virtual HV timer
69f531d25bSHector Martin          - 2: physical guest timer
70f531d25bSHector Martin          - 3: virtual guest timer
7174703b13SMarc Zyngier          - 4: 'efficient' CPU PMU
7274703b13SMarc Zyngier          - 5: 'performance' CPU PMU
73f531d25bSHector Martin
74f531d25bSHector Martin      The 3rd cell contains the interrupt flags. This is normally
75f531d25bSHector Martin      IRQ_TYPE_LEVEL_HIGH (4).
76f531d25bSHector Martin
77f531d25bSHector Martin  reg:
78f531d25bSHector Martin    description: |
79f531d25bSHector Martin      Specifies base physical address and size of the AIC registers.
80f531d25bSHector Martin    maxItems: 1
81f531d25bSHector Martin
8272baffddSHector Martin  power-domains:
8372baffddSHector Martin    maxItems: 1
8472baffddSHector Martin
85dba07ad1SMarc Zyngier  affinities:
86dba07ad1SMarc Zyngier    type: object
87dba07ad1SMarc Zyngier    additionalProperties: false
88dba07ad1SMarc Zyngier    description:
89dba07ad1SMarc Zyngier      FIQ affinity can be expressed as a single "affinities" node,
90dba07ad1SMarc Zyngier      containing a set of sub-nodes, one per FIQ with a non-default
91dba07ad1SMarc Zyngier      affinity.
92dba07ad1SMarc Zyngier    patternProperties:
93dba07ad1SMarc Zyngier      "^.+-affinity$":
94dba07ad1SMarc Zyngier        type: object
95dba07ad1SMarc Zyngier        additionalProperties: false
96dba07ad1SMarc Zyngier        properties:
97dba07ad1SMarc Zyngier          apple,fiq-index:
98dba07ad1SMarc Zyngier            description:
99dba07ad1SMarc Zyngier              The interrupt number specified as a FIQ, and for which
100dba07ad1SMarc Zyngier              the affinity is not the default.
101dba07ad1SMarc Zyngier            $ref: /schemas/types.yaml#/definitions/uint32
102dba07ad1SMarc Zyngier            maximum: 5
103dba07ad1SMarc Zyngier
104dba07ad1SMarc Zyngier          cpus:
105dba07ad1SMarc Zyngier            description:
106dba07ad1SMarc Zyngier              Should be a list of phandles to CPU nodes (as described in
107dba07ad1SMarc Zyngier              Documentation/devicetree/bindings/arm/cpus.yaml).
108dba07ad1SMarc Zyngier
109dba07ad1SMarc Zyngier        required:
110da3b1c29SJanne Grunau          - apple,fiq-index
111dba07ad1SMarc Zyngier          - cpus
112dba07ad1SMarc Zyngier
113f531d25bSHector Martinrequired:
114f531d25bSHector Martin  - compatible
115f531d25bSHector Martin  - '#interrupt-cells'
116f531d25bSHector Martin  - interrupt-controller
117f531d25bSHector Martin  - reg
118f531d25bSHector Martin
119f531d25bSHector MartinadditionalProperties: false
120f531d25bSHector Martin
121f531d25bSHector Martinexamples:
122f531d25bSHector Martin  - |
123f531d25bSHector Martin    soc {
124f531d25bSHector Martin        #address-cells = <2>;
125f531d25bSHector Martin        #size-cells = <2>;
126f531d25bSHector Martin
127f531d25bSHector Martin        aic: interrupt-controller@23b100000 {
128f531d25bSHector Martin            compatible = "apple,t8103-aic", "apple,aic";
129f531d25bSHector Martin            #interrupt-cells = <3>;
130f531d25bSHector Martin            interrupt-controller;
131f531d25bSHector Martin            reg = <0x2 0x3b100000 0x0 0x8000>;
132f531d25bSHector Martin        };
133f531d25bSHector Martin    };
134