0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Apple Interrupt Controller 2
0008
0009 maintainers:
0010 - Hector Martin <marcan@marcan.st>
0011
0012 description: |
0013 The Apple Interrupt Controller 2 is a simple interrupt controller present on
0014 Apple ARM SoC platforms starting with t600x (M1 Pro and Max).
0015
0016 It provides the following features:
0017
0018 - Level-triggered hardware IRQs wired to SoC blocks
0019 - Single mask bit per IRQ
0020 - Automatic masking on event delivery (auto-ack)
0021 - Software triggering (ORed with hw line)
0022 - Automatic prioritization (single event/ack register per CPU, lower IRQs =
0023 higher priority)
0024 - Automatic masking on ack
0025 - Support for multiple dies
0026
0027 This device also represents the FIQ interrupt sources on platforms using AIC,
0028 which do not go through a discrete interrupt controller. It also handles
0029 FIQ-based Fast IPIs.
0030
0031 properties:
0032 compatible:
0033 items:
0034 - const: apple,t6000-aic
0035 - const: apple,aic2
0036
0037 interrupt-controller: true
0038
0039 '#interrupt-cells':
0040 const: 4
0041 description: |
0042 The 1st cell contains the interrupt type:
0043 - 0: Hardware IRQ
0044 - 1: FIQ
0045
0046 The 2nd cell contains the die ID.
0047
0048 The next cell contains the interrupt number.
0049 - HW IRQs: interrupt number
0050 - FIQs:
0051 - 0: physical HV timer
0052 - 1: virtual HV timer
0053 - 2: physical guest timer
0054 - 3: virtual guest timer
0055
0056 The last cell contains the interrupt flags. This is normally
0057 IRQ_TYPE_LEVEL_HIGH (4).
0058
0059 reg:
0060 items:
0061 - description: Address and size of the main AIC2 registers.
0062 - description: Address and size of the AIC2 Event register.
0063
0064 reg-names:
0065 items:
0066 - const: core
0067 - const: event
0068
0069 power-domains:
0070 maxItems: 1
0071
0072 required:
0073 - compatible
0074 - '#interrupt-cells'
0075 - interrupt-controller
0076 - reg
0077 - reg-names
0078
0079 additionalProperties: false
0080
0081 allOf:
0082 - $ref: /schemas/interrupt-controller.yaml#
0083
0084 examples:
0085 - |
0086 soc {
0087 #address-cells = <2>;
0088 #size-cells = <2>;
0089
0090 aic: interrupt-controller@28e100000 {
0091 compatible = "apple,t6000-aic", "apple,aic2";
0092 #interrupt-cells = <4>;
0093 interrupt-controller;
0094 reg = <0x2 0x8e100000 0x0 0xc000>,
0095 <0x2 0x8e10c000 0x0 0x4>;
0096 reg-names = "core", "event";
0097 };
0098 };