1c9ccf3a3SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2c9ccf3a3SEmmanuel Vadot%YAML 1.2 3c9ccf3a3SEmmanuel Vadot--- 4c9ccf3a3SEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/apple,aic2.yaml# 5c9ccf3a3SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6c9ccf3a3SEmmanuel Vadot 7c9ccf3a3SEmmanuel Vadottitle: Apple Interrupt Controller 2 8c9ccf3a3SEmmanuel Vadot 9c9ccf3a3SEmmanuel Vadotmaintainers: 10c9ccf3a3SEmmanuel Vadot - Hector Martin <marcan@marcan.st> 11c9ccf3a3SEmmanuel Vadot 12c9ccf3a3SEmmanuel Vadotdescription: | 13c9ccf3a3SEmmanuel Vadot The Apple Interrupt Controller 2 is a simple interrupt controller present on 14c9ccf3a3SEmmanuel Vadot Apple ARM SoC platforms starting with t600x (M1 Pro and Max). 15c9ccf3a3SEmmanuel Vadot 16c9ccf3a3SEmmanuel Vadot It provides the following features: 17c9ccf3a3SEmmanuel Vadot 18c9ccf3a3SEmmanuel Vadot - Level-triggered hardware IRQs wired to SoC blocks 19c9ccf3a3SEmmanuel Vadot - Single mask bit per IRQ 20c9ccf3a3SEmmanuel Vadot - Automatic masking on event delivery (auto-ack) 21c9ccf3a3SEmmanuel Vadot - Software triggering (ORed with hw line) 22c9ccf3a3SEmmanuel Vadot - Automatic prioritization (single event/ack register per CPU, lower IRQs = 23c9ccf3a3SEmmanuel Vadot higher priority) 24c9ccf3a3SEmmanuel Vadot - Automatic masking on ack 25c9ccf3a3SEmmanuel Vadot - Support for multiple dies 26c9ccf3a3SEmmanuel Vadot 27c9ccf3a3SEmmanuel Vadot This device also represents the FIQ interrupt sources on platforms using AIC, 28c9ccf3a3SEmmanuel Vadot which do not go through a discrete interrupt controller. It also handles 29c9ccf3a3SEmmanuel Vadot FIQ-based Fast IPIs. 30c9ccf3a3SEmmanuel Vadot 31c9ccf3a3SEmmanuel Vadotproperties: 32c9ccf3a3SEmmanuel Vadot compatible: 33c9ccf3a3SEmmanuel Vadot items: 34*fac71e4eSEmmanuel Vadot - enum: 35*fac71e4eSEmmanuel Vadot - apple,t8112-aic 36*fac71e4eSEmmanuel Vadot - apple,t6000-aic 37c9ccf3a3SEmmanuel Vadot - const: apple,aic2 38c9ccf3a3SEmmanuel Vadot 39c9ccf3a3SEmmanuel Vadot interrupt-controller: true 40c9ccf3a3SEmmanuel Vadot 41c9ccf3a3SEmmanuel Vadot '#interrupt-cells': 42*fac71e4eSEmmanuel Vadot minimum: 3 43*fac71e4eSEmmanuel Vadot maximum: 4 44c9ccf3a3SEmmanuel Vadot description: | 45c9ccf3a3SEmmanuel Vadot The 1st cell contains the interrupt type: 46c9ccf3a3SEmmanuel Vadot - 0: Hardware IRQ 47c9ccf3a3SEmmanuel Vadot - 1: FIQ 48c9ccf3a3SEmmanuel Vadot 49*fac71e4eSEmmanuel Vadot The 2nd cell contains the die ID (only present on apple,t6000-aic). 50c9ccf3a3SEmmanuel Vadot 51c9ccf3a3SEmmanuel Vadot The next cell contains the interrupt number. 52c9ccf3a3SEmmanuel Vadot - HW IRQs: interrupt number 53c9ccf3a3SEmmanuel Vadot - FIQs: 54c9ccf3a3SEmmanuel Vadot - 0: physical HV timer 55c9ccf3a3SEmmanuel Vadot - 1: virtual HV timer 56c9ccf3a3SEmmanuel Vadot - 2: physical guest timer 57c9ccf3a3SEmmanuel Vadot - 3: virtual guest timer 58c9ccf3a3SEmmanuel Vadot 59c9ccf3a3SEmmanuel Vadot The last cell contains the interrupt flags. This is normally 60c9ccf3a3SEmmanuel Vadot IRQ_TYPE_LEVEL_HIGH (4). 61c9ccf3a3SEmmanuel Vadot 62c9ccf3a3SEmmanuel Vadot reg: 63c9ccf3a3SEmmanuel Vadot items: 64c9ccf3a3SEmmanuel Vadot - description: Address and size of the main AIC2 registers. 65c9ccf3a3SEmmanuel Vadot - description: Address and size of the AIC2 Event register. 66c9ccf3a3SEmmanuel Vadot 67c9ccf3a3SEmmanuel Vadot reg-names: 68c9ccf3a3SEmmanuel Vadot items: 69c9ccf3a3SEmmanuel Vadot - const: core 70c9ccf3a3SEmmanuel Vadot - const: event 71c9ccf3a3SEmmanuel Vadot 72c9ccf3a3SEmmanuel Vadot power-domains: 73c9ccf3a3SEmmanuel Vadot maxItems: 1 74c9ccf3a3SEmmanuel Vadot 758bab661aSEmmanuel Vadot affinities: 768bab661aSEmmanuel Vadot type: object 778bab661aSEmmanuel Vadot additionalProperties: false 788bab661aSEmmanuel Vadot description: 798bab661aSEmmanuel Vadot FIQ affinity can be expressed as a single "affinities" node, 808bab661aSEmmanuel Vadot containing a set of sub-nodes, one per FIQ with a non-default 818bab661aSEmmanuel Vadot affinity. 828bab661aSEmmanuel Vadot patternProperties: 838bab661aSEmmanuel Vadot "^.+-affinity$": 848bab661aSEmmanuel Vadot type: object 858bab661aSEmmanuel Vadot additionalProperties: false 868bab661aSEmmanuel Vadot properties: 878bab661aSEmmanuel Vadot apple,fiq-index: 888bab661aSEmmanuel Vadot description: 898bab661aSEmmanuel Vadot The interrupt number specified as a FIQ, and for which 908bab661aSEmmanuel Vadot the affinity is not the default. 918bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 928bab661aSEmmanuel Vadot maximum: 5 938bab661aSEmmanuel Vadot 948bab661aSEmmanuel Vadot cpus: 958bab661aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 968bab661aSEmmanuel Vadot description: 978bab661aSEmmanuel Vadot Should be a list of phandles to CPU nodes (as described in 988bab661aSEmmanuel Vadot Documentation/devicetree/bindings/arm/cpus.yaml). 998bab661aSEmmanuel Vadot 1008bab661aSEmmanuel Vadot required: 1018bab661aSEmmanuel Vadot - apple,fiq-index 1028bab661aSEmmanuel Vadot - cpus 1038bab661aSEmmanuel Vadot 104c9ccf3a3SEmmanuel Vadotrequired: 105c9ccf3a3SEmmanuel Vadot - compatible 106c9ccf3a3SEmmanuel Vadot - '#interrupt-cells' 107c9ccf3a3SEmmanuel Vadot - interrupt-controller 108c9ccf3a3SEmmanuel Vadot - reg 109c9ccf3a3SEmmanuel Vadot - reg-names 110c9ccf3a3SEmmanuel Vadot 111c9ccf3a3SEmmanuel VadotadditionalProperties: false 112c9ccf3a3SEmmanuel Vadot 113c9ccf3a3SEmmanuel VadotallOf: 114c9ccf3a3SEmmanuel Vadot - $ref: /schemas/interrupt-controller.yaml# 115*fac71e4eSEmmanuel Vadot - if: 116*fac71e4eSEmmanuel Vadot properties: 117*fac71e4eSEmmanuel Vadot compatible: 118*fac71e4eSEmmanuel Vadot contains: 119*fac71e4eSEmmanuel Vadot const: apple,t8112-aic 120*fac71e4eSEmmanuel Vadot then: 121*fac71e4eSEmmanuel Vadot properties: 122*fac71e4eSEmmanuel Vadot '#interrupt-cells': 123*fac71e4eSEmmanuel Vadot const: 3 124*fac71e4eSEmmanuel Vadot else: 125*fac71e4eSEmmanuel Vadot properties: 126*fac71e4eSEmmanuel Vadot '#interrupt-cells': 127*fac71e4eSEmmanuel Vadot const: 4 128c9ccf3a3SEmmanuel Vadot 129c9ccf3a3SEmmanuel Vadotexamples: 130c9ccf3a3SEmmanuel Vadot - | 131c9ccf3a3SEmmanuel Vadot soc { 132c9ccf3a3SEmmanuel Vadot #address-cells = <2>; 133c9ccf3a3SEmmanuel Vadot #size-cells = <2>; 134c9ccf3a3SEmmanuel Vadot 135c9ccf3a3SEmmanuel Vadot aic: interrupt-controller@28e100000 { 136c9ccf3a3SEmmanuel Vadot compatible = "apple,t6000-aic", "apple,aic2"; 137c9ccf3a3SEmmanuel Vadot #interrupt-cells = <4>; 138c9ccf3a3SEmmanuel Vadot interrupt-controller; 139c9ccf3a3SEmmanuel Vadot reg = <0x2 0x8e100000 0x0 0xc000>, 140c9ccf3a3SEmmanuel Vadot <0x2 0x8e10c000 0x0 0x4>; 141c9ccf3a3SEmmanuel Vadot reg-names = "core", "event"; 142c9ccf3a3SEmmanuel Vadot }; 143c9ccf3a3SEmmanuel Vadot }; 144