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 34*9e658631SNick Chan IPIs may be performed via MMIO registers on all variants of AIC. Starting 35*9e658631SNick Chan from A11, system registers may also be used for "fast" IPIs. Starting from 36*9e658631SNick Chan M1, even faster IPIs within the same cluster may be achieved by writing to 37*9e658631SNick Chan a "local" fast IPI register as opposed to using the "global" fast IPI 38*9e658631SNick Chan register. 39*9e658631SNick Chan 40f531d25bSHector MartinallOf: 41f531d25bSHector Martin - $ref: /schemas/interrupt-controller.yaml# 42f531d25bSHector Martin 43f531d25bSHector Martinproperties: 44f531d25bSHector Martin compatible: 45f531d25bSHector Martin items: 46*9e658631SNick Chan - enum: 47*9e658631SNick Chan - apple,s5l8960x-aic 48*9e658631SNick Chan - apple,t7000-aic 49*9e658631SNick Chan - apple,s8000-aic 50*9e658631SNick Chan - apple,t8010-aic 51*9e658631SNick Chan - apple,t8015-aic 52*9e658631SNick Chan - apple,t8103-aic 53f531d25bSHector Martin - const: apple,aic 54f531d25bSHector Martin 55f531d25bSHector Martin interrupt-controller: true 56f531d25bSHector Martin 57f531d25bSHector Martin '#interrupt-cells': 58f531d25bSHector Martin const: 3 59f531d25bSHector Martin description: | 60f531d25bSHector Martin The 1st cell contains the interrupt type: 61f531d25bSHector Martin - 0: Hardware IRQ 62f531d25bSHector Martin - 1: FIQ 63f531d25bSHector Martin 64f531d25bSHector Martin The 2nd cell contains the interrupt number. 65f531d25bSHector Martin - HW IRQs: interrupt number 66f531d25bSHector Martin - FIQs: 67f531d25bSHector Martin - 0: physical HV timer 68f531d25bSHector Martin - 1: virtual HV timer 69f531d25bSHector Martin - 2: physical guest timer 70f531d25bSHector Martin - 3: virtual guest timer 7174703b13SMarc Zyngier - 4: 'efficient' CPU PMU 7274703b13SMarc Zyngier - 5: 'performance' CPU PMU 73f531d25bSHector Martin 74f531d25bSHector Martin The 3rd cell contains the interrupt flags. This is normally 75f531d25bSHector Martin IRQ_TYPE_LEVEL_HIGH (4). 76f531d25bSHector Martin 77f531d25bSHector Martin reg: 78f531d25bSHector Martin description: | 79f531d25bSHector Martin Specifies base physical address and size of the AIC registers. 80f531d25bSHector Martin maxItems: 1 81f531d25bSHector Martin 8272baffddSHector Martin power-domains: 8372baffddSHector Martin maxItems: 1 8472baffddSHector Martin 85dba07ad1SMarc Zyngier affinities: 86dba07ad1SMarc Zyngier type: object 87dba07ad1SMarc Zyngier additionalProperties: false 88dba07ad1SMarc Zyngier description: 89dba07ad1SMarc Zyngier FIQ affinity can be expressed as a single "affinities" node, 90dba07ad1SMarc Zyngier containing a set of sub-nodes, one per FIQ with a non-default 91dba07ad1SMarc Zyngier affinity. 92dba07ad1SMarc Zyngier patternProperties: 93dba07ad1SMarc Zyngier "^.+-affinity$": 94dba07ad1SMarc Zyngier type: object 95dba07ad1SMarc Zyngier additionalProperties: false 96dba07ad1SMarc Zyngier properties: 97dba07ad1SMarc Zyngier apple,fiq-index: 98dba07ad1SMarc Zyngier description: 99dba07ad1SMarc Zyngier The interrupt number specified as a FIQ, and for which 100dba07ad1SMarc Zyngier the affinity is not the default. 101dba07ad1SMarc Zyngier $ref: /schemas/types.yaml#/definitions/uint32 102dba07ad1SMarc Zyngier maximum: 5 103dba07ad1SMarc Zyngier 104dba07ad1SMarc Zyngier cpus: 105dba07ad1SMarc Zyngier description: 106dba07ad1SMarc Zyngier Should be a list of phandles to CPU nodes (as described in 107dba07ad1SMarc Zyngier Documentation/devicetree/bindings/arm/cpus.yaml). 108dba07ad1SMarc Zyngier 109dba07ad1SMarc Zyngier required: 110da3b1c29SJanne Grunau - apple,fiq-index 111dba07ad1SMarc Zyngier - cpus 112dba07ad1SMarc Zyngier 113f531d25bSHector Martinrequired: 114f531d25bSHector Martin - compatible 115f531d25bSHector Martin - '#interrupt-cells' 116f531d25bSHector Martin - interrupt-controller 117f531d25bSHector Martin - reg 118f531d25bSHector Martin 119f531d25bSHector MartinadditionalProperties: false 120f531d25bSHector Martin 121f531d25bSHector Martinexamples: 122f531d25bSHector Martin - | 123f531d25bSHector Martin soc { 124f531d25bSHector Martin #address-cells = <2>; 125f531d25bSHector Martin #size-cells = <2>; 126f531d25bSHector Martin 127f531d25bSHector Martin aic: interrupt-controller@23b100000 { 128f531d25bSHector Martin compatible = "apple,t8103-aic", "apple,aic"; 129f531d25bSHector Martin #interrupt-cells = <3>; 130f531d25bSHector Martin interrupt-controller; 131f531d25bSHector Martin reg = <0x2 0x3b100000 0x0 0x8000>; 132f531d25bSHector Martin }; 133f531d25bSHector Martin }; 134