162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/apple,aic.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Apple Interrupt Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Hector Martin <marcan@marcan.st> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci The Apple Interrupt Controller is a simple interrupt controller present on 1462306a36Sopenharmony_ci Apple ARM SoC platforms, including various iPhone and iPad devices and the 1562306a36Sopenharmony_ci "Apple Silicon" Macs. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci It provides the following features: 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci - Level-triggered hardware IRQs wired to SoC blocks 2062306a36Sopenharmony_ci - Single mask bit per IRQ 2162306a36Sopenharmony_ci - Per-IRQ affinity setting 2262306a36Sopenharmony_ci - Automatic masking on event delivery (auto-ack) 2362306a36Sopenharmony_ci - Software triggering (ORed with hw line) 2462306a36Sopenharmony_ci - 2 per-CPU IPIs (meant as "self" and "other", but they are interchangeable 2562306a36Sopenharmony_ci if not symmetric) 2662306a36Sopenharmony_ci - Automatic prioritization (single event/ack register per CPU, lower IRQs = 2762306a36Sopenharmony_ci higher priority) 2862306a36Sopenharmony_ci - Automatic masking on ack 2962306a36Sopenharmony_ci - Default "this CPU" register view and explicit per-CPU views 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci This device also represents the FIQ interrupt sources on platforms using AIC, 3262306a36Sopenharmony_ci which do not go through a discrete interrupt controller. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciallOf: 3562306a36Sopenharmony_ci - $ref: /schemas/interrupt-controller.yaml# 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciproperties: 3862306a36Sopenharmony_ci compatible: 3962306a36Sopenharmony_ci items: 4062306a36Sopenharmony_ci - const: apple,t8103-aic 4162306a36Sopenharmony_ci - const: apple,aic 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci interrupt-controller: true 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci '#interrupt-cells': 4662306a36Sopenharmony_ci const: 3 4762306a36Sopenharmony_ci description: | 4862306a36Sopenharmony_ci The 1st cell contains the interrupt type: 4962306a36Sopenharmony_ci - 0: Hardware IRQ 5062306a36Sopenharmony_ci - 1: FIQ 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci The 2nd cell contains the interrupt number. 5362306a36Sopenharmony_ci - HW IRQs: interrupt number 5462306a36Sopenharmony_ci - FIQs: 5562306a36Sopenharmony_ci - 0: physical HV timer 5662306a36Sopenharmony_ci - 1: virtual HV timer 5762306a36Sopenharmony_ci - 2: physical guest timer 5862306a36Sopenharmony_ci - 3: virtual guest timer 5962306a36Sopenharmony_ci - 4: 'efficient' CPU PMU 6062306a36Sopenharmony_ci - 5: 'performance' CPU PMU 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci The 3rd cell contains the interrupt flags. This is normally 6362306a36Sopenharmony_ci IRQ_TYPE_LEVEL_HIGH (4). 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci reg: 6662306a36Sopenharmony_ci description: | 6762306a36Sopenharmony_ci Specifies base physical address and size of the AIC registers. 6862306a36Sopenharmony_ci maxItems: 1 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci power-domains: 7162306a36Sopenharmony_ci maxItems: 1 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci affinities: 7462306a36Sopenharmony_ci type: object 7562306a36Sopenharmony_ci additionalProperties: false 7662306a36Sopenharmony_ci description: 7762306a36Sopenharmony_ci FIQ affinity can be expressed as a single "affinities" node, 7862306a36Sopenharmony_ci containing a set of sub-nodes, one per FIQ with a non-default 7962306a36Sopenharmony_ci affinity. 8062306a36Sopenharmony_ci patternProperties: 8162306a36Sopenharmony_ci "^.+-affinity$": 8262306a36Sopenharmony_ci type: object 8362306a36Sopenharmony_ci additionalProperties: false 8462306a36Sopenharmony_ci properties: 8562306a36Sopenharmony_ci apple,fiq-index: 8662306a36Sopenharmony_ci description: 8762306a36Sopenharmony_ci The interrupt number specified as a FIQ, and for which 8862306a36Sopenharmony_ci the affinity is not the default. 8962306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9062306a36Sopenharmony_ci maximum: 5 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci cpus: 9362306a36Sopenharmony_ci description: 9462306a36Sopenharmony_ci Should be a list of phandles to CPU nodes (as described in 9562306a36Sopenharmony_ci Documentation/devicetree/bindings/arm/cpus.yaml). 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci required: 9862306a36Sopenharmony_ci - apple,fiq-index 9962306a36Sopenharmony_ci - cpus 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_cirequired: 10262306a36Sopenharmony_ci - compatible 10362306a36Sopenharmony_ci - '#interrupt-cells' 10462306a36Sopenharmony_ci - interrupt-controller 10562306a36Sopenharmony_ci - reg 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciadditionalProperties: false 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ciexamples: 11062306a36Sopenharmony_ci - | 11162306a36Sopenharmony_ci soc { 11262306a36Sopenharmony_ci #address-cells = <2>; 11362306a36Sopenharmony_ci #size-cells = <2>; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci aic: interrupt-controller@23b100000 { 11662306a36Sopenharmony_ci compatible = "apple,t8103-aic", "apple,aic"; 11762306a36Sopenharmony_ci #interrupt-cells = <3>; 11862306a36Sopenharmony_ci interrupt-controller; 11962306a36Sopenharmony_ci reg = <0x2 0x3b100000 0x0 0x8000>; 12062306a36Sopenharmony_ci }; 12162306a36Sopenharmony_ci }; 122