xref: /linux/Documentation/devicetree/bindings/interrupt-controller/apple,aic2.yaml (revision ab1fd5abb75001d37e1fef5f310951b56f41ad58)
1*ab1fd5abSHector Martin# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*ab1fd5abSHector Martin%YAML 1.2
3*ab1fd5abSHector Martin---
4*ab1fd5abSHector Martin$id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
5*ab1fd5abSHector Martin$schema: http://devicetree.org/meta-schemas/core.yaml#
6*ab1fd5abSHector Martin
7*ab1fd5abSHector Martintitle: Apple Interrupt Controller 2
8*ab1fd5abSHector Martin
9*ab1fd5abSHector Martinmaintainers:
10*ab1fd5abSHector Martin  - Hector Martin <marcan@marcan.st>
11*ab1fd5abSHector Martin
12*ab1fd5abSHector Martindescription: |
13*ab1fd5abSHector Martin  The Apple Interrupt Controller 2 is a simple interrupt controller present on
14*ab1fd5abSHector Martin  Apple ARM SoC platforms starting with t600x (M1 Pro and Max).
15*ab1fd5abSHector Martin
16*ab1fd5abSHector Martin  It provides the following features:
17*ab1fd5abSHector Martin
18*ab1fd5abSHector Martin  - Level-triggered hardware IRQs wired to SoC blocks
19*ab1fd5abSHector Martin    - Single mask bit per IRQ
20*ab1fd5abSHector Martin    - Automatic masking on event delivery (auto-ack)
21*ab1fd5abSHector Martin    - Software triggering (ORed with hw line)
22*ab1fd5abSHector Martin  - Automatic prioritization (single event/ack register per CPU, lower IRQs =
23*ab1fd5abSHector Martin    higher priority)
24*ab1fd5abSHector Martin  - Automatic masking on ack
25*ab1fd5abSHector Martin  - Support for multiple dies
26*ab1fd5abSHector Martin
27*ab1fd5abSHector Martin  This device also represents the FIQ interrupt sources on platforms using AIC,
28*ab1fd5abSHector Martin  which do not go through a discrete interrupt controller. It also handles
29*ab1fd5abSHector Martin  FIQ-based Fast IPIs.
30*ab1fd5abSHector Martin
31*ab1fd5abSHector Martinproperties:
32*ab1fd5abSHector Martin  compatible:
33*ab1fd5abSHector Martin    items:
34*ab1fd5abSHector Martin      - const: apple,t6000-aic
35*ab1fd5abSHector Martin      - const: apple,aic2
36*ab1fd5abSHector Martin
37*ab1fd5abSHector Martin  interrupt-controller: true
38*ab1fd5abSHector Martin
39*ab1fd5abSHector Martin  '#interrupt-cells':
40*ab1fd5abSHector Martin    const: 4
41*ab1fd5abSHector Martin    description: |
42*ab1fd5abSHector Martin      The 1st cell contains the interrupt type:
43*ab1fd5abSHector Martin        - 0: Hardware IRQ
44*ab1fd5abSHector Martin        - 1: FIQ
45*ab1fd5abSHector Martin
46*ab1fd5abSHector Martin      The 2nd cell contains the die ID.
47*ab1fd5abSHector Martin
48*ab1fd5abSHector Martin      The next cell contains the interrupt number.
49*ab1fd5abSHector Martin        - HW IRQs: interrupt number
50*ab1fd5abSHector Martin        - FIQs:
51*ab1fd5abSHector Martin          - 0: physical HV timer
52*ab1fd5abSHector Martin          - 1: virtual HV timer
53*ab1fd5abSHector Martin          - 2: physical guest timer
54*ab1fd5abSHector Martin          - 3: virtual guest timer
55*ab1fd5abSHector Martin
56*ab1fd5abSHector Martin      The last cell contains the interrupt flags. This is normally
57*ab1fd5abSHector Martin      IRQ_TYPE_LEVEL_HIGH (4).
58*ab1fd5abSHector Martin
59*ab1fd5abSHector Martin  reg:
60*ab1fd5abSHector Martin    items:
61*ab1fd5abSHector Martin      - description: Address and size of the main AIC2 registers.
62*ab1fd5abSHector Martin      - description: Address and size of the AIC2 Event register.
63*ab1fd5abSHector Martin
64*ab1fd5abSHector Martin  reg-names:
65*ab1fd5abSHector Martin    items:
66*ab1fd5abSHector Martin      - const: core
67*ab1fd5abSHector Martin      - const: event
68*ab1fd5abSHector Martin
69*ab1fd5abSHector Martin  power-domains:
70*ab1fd5abSHector Martin    maxItems: 1
71*ab1fd5abSHector Martin
72*ab1fd5abSHector Martinrequired:
73*ab1fd5abSHector Martin  - compatible
74*ab1fd5abSHector Martin  - '#interrupt-cells'
75*ab1fd5abSHector Martin  - interrupt-controller
76*ab1fd5abSHector Martin  - reg
77*ab1fd5abSHector Martin  - reg-names
78*ab1fd5abSHector Martin
79*ab1fd5abSHector MartinadditionalProperties: false
80*ab1fd5abSHector Martin
81*ab1fd5abSHector MartinallOf:
82*ab1fd5abSHector Martin  - $ref: /schemas/interrupt-controller.yaml#
83*ab1fd5abSHector Martin
84*ab1fd5abSHector Martinexamples:
85*ab1fd5abSHector Martin  - |
86*ab1fd5abSHector Martin    soc {
87*ab1fd5abSHector Martin        #address-cells = <2>;
88*ab1fd5abSHector Martin        #size-cells = <2>;
89*ab1fd5abSHector Martin
90*ab1fd5abSHector Martin        aic: interrupt-controller@28e100000 {
91*ab1fd5abSHector Martin            compatible = "apple,t6000-aic", "apple,aic2";
92*ab1fd5abSHector Martin            #interrupt-cells = <4>;
93*ab1fd5abSHector Martin            interrupt-controller;
94*ab1fd5abSHector Martin            reg = <0x2 0x8e100000 0x0 0xc000>,
95*ab1fd5abSHector Martin                  <0x2 0x8e10c000 0x0 0x4>;
96*ab1fd5abSHector Martin            reg-names = "core", "event";
97*ab1fd5abSHector Martin        };
98*ab1fd5abSHector Martin    };
99