1f531d25bSHector Martin# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2f531d25bSHector Martin%YAML 1.2 3f531d25bSHector Martin--- 4f531d25bSHector Martin$id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml# 5f531d25bSHector Martin$schema: http://devicetree.org/meta-schemas/core.yaml# 6f531d25bSHector Martin 7f531d25bSHector Martintitle: Apple Interrupt Controller 8f531d25bSHector Martin 9f531d25bSHector Martinmaintainers: 10f531d25bSHector Martin - Hector Martin <marcan@marcan.st> 11f531d25bSHector Martin 12f531d25bSHector Martindescription: | 13f531d25bSHector Martin The Apple Interrupt Controller is a simple interrupt controller present on 14f531d25bSHector Martin Apple ARM SoC platforms, including various iPhone and iPad devices and the 15f531d25bSHector Martin "Apple Silicon" Macs. 16f531d25bSHector Martin 17f531d25bSHector Martin It provides the following features: 18f531d25bSHector Martin 19f531d25bSHector Martin - Level-triggered hardware IRQs wired to SoC blocks 20f531d25bSHector Martin - Single mask bit per IRQ 21f531d25bSHector Martin - Per-IRQ affinity setting 22f531d25bSHector Martin - Automatic masking on event delivery (auto-ack) 23f531d25bSHector Martin - Software triggering (ORed with hw line) 24f531d25bSHector Martin - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable 25f531d25bSHector Martin if not symmetric) 26f531d25bSHector Martin - Automatic prioritization (single event/ack register per CPU, lower IRQs = 27f531d25bSHector Martin higher priority) 28f531d25bSHector Martin - Automatic masking on ack 29f531d25bSHector Martin - Default "this CPU" register view and explicit per-CPU views 30f531d25bSHector Martin 31f531d25bSHector Martin This device also represents the FIQ interrupt sources on platforms using AIC, 32f531d25bSHector Martin which do not go through a discrete interrupt controller. 33f531d25bSHector Martin 34f531d25bSHector MartinallOf: 35f531d25bSHector Martin - $ref: /schemas/interrupt-controller.yaml# 36f531d25bSHector Martin 37f531d25bSHector Martinproperties: 38f531d25bSHector Martin compatible: 39f531d25bSHector Martin items: 40f531d25bSHector Martin - const: apple,t8103-aic 41f531d25bSHector Martin - const: apple,aic 42f531d25bSHector Martin 43f531d25bSHector Martin interrupt-controller: true 44f531d25bSHector Martin 45f531d25bSHector Martin '#interrupt-cells': 46f531d25bSHector Martin const: 3 47f531d25bSHector Martin description: | 48f531d25bSHector Martin The 1st cell contains the interrupt type: 49f531d25bSHector Martin - 0: Hardware IRQ 50f531d25bSHector Martin - 1: FIQ 51f531d25bSHector Martin 52f531d25bSHector Martin The 2nd cell contains the interrupt number. 53f531d25bSHector Martin - HW IRQs: interrupt number 54f531d25bSHector Martin - FIQs: 55f531d25bSHector Martin - 0: physical HV timer 56f531d25bSHector Martin - 1: virtual HV timer 57f531d25bSHector Martin - 2: physical guest timer 58f531d25bSHector Martin - 3: virtual guest timer 5974703b13SMarc Zyngier - 4: 'efficient' CPU PMU 6074703b13SMarc Zyngier - 5: 'performance' CPU PMU 61f531d25bSHector Martin 62f531d25bSHector Martin The 3rd cell contains the interrupt flags. This is normally 63f531d25bSHector Martin IRQ_TYPE_LEVEL_HIGH (4). 64f531d25bSHector Martin 65f531d25bSHector Martin reg: 66f531d25bSHector Martin description: | 67f531d25bSHector Martin Specifies base physical address and size of the AIC registers. 68f531d25bSHector Martin maxItems: 1 69f531d25bSHector Martin 7072baffddSHector Martin power-domains: 7172baffddSHector Martin maxItems: 1 7272baffddSHector Martin 73*dba07ad1SMarc Zyngier affinities: 74*dba07ad1SMarc Zyngier type: object 75*dba07ad1SMarc Zyngier additionalProperties: false 76*dba07ad1SMarc Zyngier description: 77*dba07ad1SMarc Zyngier FIQ affinity can be expressed as a single "affinities" node, 78*dba07ad1SMarc Zyngier containing a set of sub-nodes, one per FIQ with a non-default 79*dba07ad1SMarc Zyngier affinity. 80*dba07ad1SMarc Zyngier patternProperties: 81*dba07ad1SMarc Zyngier "^.+-affinity$": 82*dba07ad1SMarc Zyngier type: object 83*dba07ad1SMarc Zyngier additionalProperties: false 84*dba07ad1SMarc Zyngier properties: 85*dba07ad1SMarc Zyngier apple,fiq-index: 86*dba07ad1SMarc Zyngier description: 87*dba07ad1SMarc Zyngier The interrupt number specified as a FIQ, and for which 88*dba07ad1SMarc Zyngier the affinity is not the default. 89*dba07ad1SMarc Zyngier $ref: /schemas/types.yaml#/definitions/uint32 90*dba07ad1SMarc Zyngier maximum: 5 91*dba07ad1SMarc Zyngier 92*dba07ad1SMarc Zyngier cpus: 93*dba07ad1SMarc Zyngier $ref: /schemas/types.yaml#/definitions/phandle-array 94*dba07ad1SMarc Zyngier description: 95*dba07ad1SMarc Zyngier Should be a list of phandles to CPU nodes (as described in 96*dba07ad1SMarc Zyngier Documentation/devicetree/bindings/arm/cpus.yaml). 97*dba07ad1SMarc Zyngier 98*dba07ad1SMarc Zyngier required: 99*dba07ad1SMarc Zyngier - fiq-index 100*dba07ad1SMarc Zyngier - cpus 101*dba07ad1SMarc Zyngier 102f531d25bSHector Martinrequired: 103f531d25bSHector Martin - compatible 104f531d25bSHector Martin - '#interrupt-cells' 105f531d25bSHector Martin - interrupt-controller 106f531d25bSHector Martin - reg 107f531d25bSHector Martin 108f531d25bSHector MartinadditionalProperties: false 109f531d25bSHector Martin 110f531d25bSHector Martinexamples: 111f531d25bSHector Martin - | 112f531d25bSHector Martin soc { 113f531d25bSHector Martin #address-cells = <2>; 114f531d25bSHector Martin #size-cells = <2>; 115f531d25bSHector Martin 116f531d25bSHector Martin aic: interrupt-controller@23b100000 { 117f531d25bSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 118f531d25bSHector Martin #interrupt-cells = <3>; 119f531d25bSHector Martin interrupt-controller; 120f531d25bSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 121f531d25bSHector Martin }; 122f531d25bSHector Martin }; 123