# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Apple Interrupt Controller maintainers: - Hector Martin description: | The Apple Interrupt Controller is a simple interrupt controller present on Apple ARM SoC platforms, including various iPhone and iPad devices and the "Apple Silicon" Macs. It provides the following features: - Level-triggered hardware IRQs wired to SoC blocks - Single mask bit per IRQ - Per-IRQ affinity setting - Automatic masking on event delivery (auto-ack) - Software triggering (ORed with hw line) - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable if not symmetric) - Automatic prioritization (single event/ack register per CPU, lower IRQs = higher priority) - Automatic masking on ack - Default "this CPU" register view and explicit per-CPU views This device also represents the FIQ interrupt sources on platforms using AIC, which do not go through a discrete interrupt controller. IPIs may be performed via MMIO registers on all variants of AIC. Starting from A11, system registers may also be used for "fast" IPIs. Starting from M1, even faster IPIs within the same cluster may be achieved by writing to a "local" fast IPI register as opposed to using the "global" fast IPI register. allOf: - $ref: /schemas/interrupt-controller.yaml# properties: compatible: items: - enum: - apple,s5l8960x-aic - apple,t7000-aic - apple,s8000-aic - apple,t8010-aic - apple,t8015-aic - apple,t8103-aic - const: apple,aic interrupt-controller: true '#interrupt-cells': const: 3 description: | The 1st cell contains the interrupt type: - 0: Hardware IRQ - 1: FIQ The 2nd cell contains the interrupt number. - HW IRQs: interrupt number - FIQs: - 0: physical HV timer - 1: virtual HV timer - 2: physical guest timer - 3: virtual guest timer - 4: 'efficient' CPU PMU - 5: 'performance' CPU PMU The 3rd cell contains the interrupt flags. This is normally IRQ_TYPE_LEVEL_HIGH (4). reg: description: | Specifies base physical address and size of the AIC registers. maxItems: 1 power-domains: maxItems: 1 affinities: type: object additionalProperties: false description: FIQ affinity can be expressed as a single "affinities" node, containing a set of sub-nodes, one per FIQ with a non-default affinity. patternProperties: "^.+-affinity$": type: object additionalProperties: false properties: apple,fiq-index: description: The interrupt number specified as a FIQ, and for which the affinity is not the default. $ref: /schemas/types.yaml#/definitions/uint32 maximum: 5 cpus: description: Should be a list of phandles to CPU nodes (as described in Documentation/devicetree/bindings/arm/cpus.yaml). required: - apple,fiq-index - cpus required: - compatible - '#interrupt-cells' - interrupt-controller - reg additionalProperties: false examples: - | soc { #address-cells = <2>; #size-cells = <2>; aic: interrupt-controller@23b100000 { compatible = "apple,t8103-aic", "apple,aic"; #interrupt-cells = <3>; interrupt-controller; reg = <0x2 0x3b100000 0x0 0x8000>; }; };