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