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,aic2.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Apple Interrupt Controller 2 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Hector Martin <marcan@marcan.st> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci The Apple Interrupt Controller 2 is a simple interrupt controller present on 1462306a36Sopenharmony_ci Apple ARM SoC platforms starting with t600x (M1 Pro and Max). 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci It provides the following features: 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci - Level-triggered hardware IRQs wired to SoC blocks 1962306a36Sopenharmony_ci - Single mask bit per IRQ 2062306a36Sopenharmony_ci - Automatic masking on event delivery (auto-ack) 2162306a36Sopenharmony_ci - Software triggering (ORed with hw line) 2262306a36Sopenharmony_ci - Automatic prioritization (single event/ack register per CPU, lower IRQs = 2362306a36Sopenharmony_ci higher priority) 2462306a36Sopenharmony_ci - Automatic masking on ack 2562306a36Sopenharmony_ci - Support for multiple dies 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci This device also represents the FIQ interrupt sources on platforms using AIC, 2862306a36Sopenharmony_ci which do not go through a discrete interrupt controller. It also handles 2962306a36Sopenharmony_ci FIQ-based Fast IPIs. 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciproperties: 3262306a36Sopenharmony_ci compatible: 3362306a36Sopenharmony_ci items: 3462306a36Sopenharmony_ci - enum: 3562306a36Sopenharmony_ci - apple,t8112-aic 3662306a36Sopenharmony_ci - apple,t6000-aic 3762306a36Sopenharmony_ci - const: apple,aic2 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci interrupt-controller: true 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci '#interrupt-cells': 4262306a36Sopenharmony_ci minimum: 3 4362306a36Sopenharmony_ci maximum: 4 4462306a36Sopenharmony_ci description: | 4562306a36Sopenharmony_ci The 1st cell contains the interrupt type: 4662306a36Sopenharmony_ci - 0: Hardware IRQ 4762306a36Sopenharmony_ci - 1: FIQ 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci The 2nd cell contains the die ID (only present on apple,t6000-aic). 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci The next cell contains the interrupt number. 5262306a36Sopenharmony_ci - HW IRQs: interrupt number 5362306a36Sopenharmony_ci - FIQs: 5462306a36Sopenharmony_ci - 0: physical HV timer 5562306a36Sopenharmony_ci - 1: virtual HV timer 5662306a36Sopenharmony_ci - 2: physical guest timer 5762306a36Sopenharmony_ci - 3: virtual guest timer 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci The last cell contains the interrupt flags. This is normally 6062306a36Sopenharmony_ci IRQ_TYPE_LEVEL_HIGH (4). 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci reg: 6362306a36Sopenharmony_ci items: 6462306a36Sopenharmony_ci - description: Address and size of the main AIC2 registers. 6562306a36Sopenharmony_ci - description: Address and size of the AIC2 Event register. 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci reg-names: 6862306a36Sopenharmony_ci items: 6962306a36Sopenharmony_ci - const: core 7062306a36Sopenharmony_ci - const: event 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci power-domains: 7362306a36Sopenharmony_ci maxItems: 1 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci affinities: 7662306a36Sopenharmony_ci type: object 7762306a36Sopenharmony_ci additionalProperties: false 7862306a36Sopenharmony_ci description: 7962306a36Sopenharmony_ci FIQ affinity can be expressed as a single "affinities" node, 8062306a36Sopenharmony_ci containing a set of sub-nodes, one per FIQ with a non-default 8162306a36Sopenharmony_ci affinity. 8262306a36Sopenharmony_ci patternProperties: 8362306a36Sopenharmony_ci "^.+-affinity$": 8462306a36Sopenharmony_ci type: object 8562306a36Sopenharmony_ci additionalProperties: false 8662306a36Sopenharmony_ci properties: 8762306a36Sopenharmony_ci apple,fiq-index: 8862306a36Sopenharmony_ci description: 8962306a36Sopenharmony_ci The interrupt number specified as a FIQ, and for which 9062306a36Sopenharmony_ci the affinity is not the default. 9162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9262306a36Sopenharmony_ci maximum: 5 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci cpus: 9562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle-array 9662306a36Sopenharmony_ci description: 9762306a36Sopenharmony_ci Should be a list of phandles to CPU nodes (as described in 9862306a36Sopenharmony_ci Documentation/devicetree/bindings/arm/cpus.yaml). 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci required: 10162306a36Sopenharmony_ci - apple,fiq-index 10262306a36Sopenharmony_ci - cpus 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cirequired: 10562306a36Sopenharmony_ci - compatible 10662306a36Sopenharmony_ci - '#interrupt-cells' 10762306a36Sopenharmony_ci - interrupt-controller 10862306a36Sopenharmony_ci - reg 10962306a36Sopenharmony_ci - reg-names 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ciadditionalProperties: false 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ciallOf: 11462306a36Sopenharmony_ci - $ref: /schemas/interrupt-controller.yaml# 11562306a36Sopenharmony_ci - if: 11662306a36Sopenharmony_ci properties: 11762306a36Sopenharmony_ci compatible: 11862306a36Sopenharmony_ci contains: 11962306a36Sopenharmony_ci const: apple,t8112-aic 12062306a36Sopenharmony_ci then: 12162306a36Sopenharmony_ci properties: 12262306a36Sopenharmony_ci '#interrupt-cells': 12362306a36Sopenharmony_ci const: 3 12462306a36Sopenharmony_ci else: 12562306a36Sopenharmony_ci properties: 12662306a36Sopenharmony_ci '#interrupt-cells': 12762306a36Sopenharmony_ci const: 4 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciexamples: 13062306a36Sopenharmony_ci - | 13162306a36Sopenharmony_ci soc { 13262306a36Sopenharmony_ci #address-cells = <2>; 13362306a36Sopenharmony_ci #size-cells = <2>; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci aic: interrupt-controller@28e100000 { 13662306a36Sopenharmony_ci compatible = "apple,t6000-aic", "apple,aic2"; 13762306a36Sopenharmony_ci #interrupt-cells = <4>; 13862306a36Sopenharmony_ci interrupt-controller; 13962306a36Sopenharmony_ci reg = <0x2 0x8e100000 0x0 0xc000>, 14062306a36Sopenharmony_ci <0x2 0x8e10c000 0x0 0x4>; 14162306a36Sopenharmony_ci reg-names = "core", "event"; 14262306a36Sopenharmony_ci }; 14362306a36Sopenharmony_ci }; 144