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