166ed144fSRob Herring# SPDX-License-Identifier: GPL-2.0 266ed144fSRob Herring%YAML 1.2 366ed144fSRob Herring--- 466ed144fSRob Herring$id: http://devicetree.org/schemas/interrupt-controller/arm,gic.yaml# 566ed144fSRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 666ed144fSRob Herring 766ed144fSRob Herringtitle: ARM Generic Interrupt Controller v1 and v2 866ed144fSRob Herring 966ed144fSRob Herringmaintainers: 1066ed144fSRob Herring - Marc Zyngier <marc.zyngier@arm.com> 1166ed144fSRob Herring 1266ed144fSRob Herringdescription: |+ 1366ed144fSRob Herring ARM SMP cores are often associated with a GIC, providing per processor 1466ed144fSRob Herring interrupts (PPI), shared processor interrupts (SPI) and software 1566ed144fSRob Herring generated interrupts (SGI). 1666ed144fSRob Herring 1766ed144fSRob Herring Primary GIC is attached directly to the CPU and typically has PPIs and SGIs. 1866ed144fSRob Herring Secondary GICs are cascaded into the upward interrupt controller and do not 1966ed144fSRob Herring have PPIs or SGIs. 2066ed144fSRob Herring 2166ed144fSRob HerringallOf: 2266ed144fSRob Herring - $ref: /schemas/interrupt-controller.yaml# 2366ed144fSRob Herring 2466ed144fSRob Herringproperties: 2566ed144fSRob Herring compatible: 2666ed144fSRob Herring oneOf: 2766ed144fSRob Herring - items: 2866ed144fSRob Herring - enum: 2966ed144fSRob Herring - arm,arm11mp-gic 3066ed144fSRob Herring - arm,cortex-a15-gic 3166ed144fSRob Herring - arm,cortex-a7-gic 3266ed144fSRob Herring - arm,cortex-a5-gic 3366ed144fSRob Herring - arm,cortex-a9-gic 3466ed144fSRob Herring - arm,eb11mp-gic 3566ed144fSRob Herring - arm,gic-400 3666ed144fSRob Herring - arm,pl390 3766ed144fSRob Herring - arm,tc11mp-gic 3866ed144fSRob Herring - qcom,msm-8660-qgic 3966ed144fSRob Herring - qcom,msm-qgic2 4066ed144fSRob Herring 4166ed144fSRob Herring - items: 4261efb56eSAndre Przywara - const: arm,gic-400 4361efb56eSAndre Przywara - enum: 4461efb56eSAndre Przywara - arm,cortex-a15-gic 4561efb56eSAndre Przywara - arm,cortex-a7-gic 4661efb56eSAndre Przywara 4761efb56eSAndre Przywara - items: 4866ed144fSRob Herring - const: arm,arm1176jzf-devchip-gic 4966ed144fSRob Herring - const: arm,arm11mp-gic 5066ed144fSRob Herring 5166ed144fSRob Herring - items: 5266ed144fSRob Herring - const: brcm,brahma-b15-gic 5366ed144fSRob Herring - const: arm,cortex-a15-gic 5466ed144fSRob Herring 55d806cdaeSSameer Pujar - oneOf: 56d806cdaeSSameer Pujar - const: nvidia,tegra210-agic 57d806cdaeSSameer Pujar - items: 58d806cdaeSSameer Pujar - enum: 59d806cdaeSSameer Pujar - nvidia,tegra186-agic 60d806cdaeSSameer Pujar - nvidia,tegra194-agic 61fed44d6cSSameer Pujar - nvidia,tegra234-agic 62d806cdaeSSameer Pujar - const: nvidia,tegra210-agic 63d806cdaeSSameer Pujar 6466ed144fSRob Herring interrupt-controller: true 6566ed144fSRob Herring 6666ed144fSRob Herring "#address-cells": 67*f1bd8b2eSJean-Philippe Brucker enum: [ 0, 1, 2 ] 6866ed144fSRob Herring "#size-cells": 69*f1bd8b2eSJean-Philippe Brucker enum: [ 1, 2 ] 7066ed144fSRob Herring 7166ed144fSRob Herring "#interrupt-cells": 7266ed144fSRob Herring const: 3 7366ed144fSRob Herring description: | 7466ed144fSRob Herring The 1st cell is the interrupt type; 0 for SPI interrupts, 1 for PPI 7566ed144fSRob Herring interrupts. 7666ed144fSRob Herring 7766ed144fSRob Herring The 2nd cell contains the interrupt number for the interrupt type. 7866ed144fSRob Herring SPI interrupts are in the range [0-987]. PPI interrupts are in the 7966ed144fSRob Herring range [0-15]. 8066ed144fSRob Herring 8166ed144fSRob Herring The 3rd cell is the flags, encoded as follows: 8266ed144fSRob Herring bits[3:0] trigger type and level flags. 8366ed144fSRob Herring 1 = low-to-high edge triggered 8466ed144fSRob Herring 2 = high-to-low edge triggered (invalid for SPIs) 8566ed144fSRob Herring 4 = active high level-sensitive 8666ed144fSRob Herring 8 = active low level-sensitive (invalid for SPIs). 8766ed144fSRob Herring bits[15:8] PPI interrupt cpu mask. Each bit corresponds to each of 8866ed144fSRob Herring the 8 possible cpus attached to the GIC. A bit set to '1' indicated 8966ed144fSRob Herring the interrupt is wired to that CPU. Only valid for PPI interrupts. 9066ed144fSRob Herring Also note that the configurability of PPI interrupts is IMPLEMENTATION 9166ed144fSRob Herring DEFINED and as such not guaranteed to be present (most SoC available 9266ed144fSRob Herring in 2014 seem to ignore the setting of this flag and use the hardware 9366ed144fSRob Herring default value). 9466ed144fSRob Herring 9566ed144fSRob Herring reg: 9666ed144fSRob Herring description: | 9766ed144fSRob Herring Specifies base physical address(s) and size of the GIC registers. The 9866ed144fSRob Herring first region is the GIC distributor register base and size. The 2nd region 9966ed144fSRob Herring is the GIC cpu interface register base and size. 10066ed144fSRob Herring 10166ed144fSRob Herring For GICv2 with virtualization extensions, additional regions are 10266ed144fSRob Herring required for specifying the base physical address and size of the VGIC 10366ed144fSRob Herring registers. The first additional region is the GIC virtual interface 10466ed144fSRob Herring control register base and size. The 2nd additional region is the GIC 10566ed144fSRob Herring virtual cpu interface register base and size. 10666ed144fSRob Herring minItems: 2 10766ed144fSRob Herring maxItems: 4 10866ed144fSRob Herring 1098d665693SRob Herring ranges: true 1108d665693SRob Herring 11166ed144fSRob Herring interrupts: 11266ed144fSRob Herring description: Interrupt source of the parent interrupt controller on 11366ed144fSRob Herring secondary GICs, or VGIC maintenance interrupt on primary GIC (see 11466ed144fSRob Herring below). 11566ed144fSRob Herring maxItems: 1 11666ed144fSRob Herring 11766ed144fSRob Herring cpu-offset: 11866ed144fSRob Herring description: per-cpu offset within the distributor and cpu interface 11966ed144fSRob Herring regions, used when the GIC doesn't have banked registers. The offset 12066ed144fSRob Herring is cpu-offset * cpu-nr. 12166ed144fSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 12266ed144fSRob Herring 12366ed144fSRob Herring clocks: 12466ed144fSRob Herring minItems: 1 12566ed144fSRob Herring maxItems: 2 12666ed144fSRob Herring 12766ed144fSRob Herring clock-names: 12866ed144fSRob Herring description: List of names for the GIC clock input(s). Valid clock names 12966ed144fSRob Herring depend on the GIC variant. 13066ed144fSRob Herring oneOf: 13166ed144fSRob Herring - const: ic_clk # for "arm,arm11mp-gic" 13266ed144fSRob Herring - const: PERIPHCLKEN # for "arm,cortex-a15-gic" 13366ed144fSRob Herring - items: # for "arm,cortex-a9-gic" 13466ed144fSRob Herring - const: PERIPHCLK 13566ed144fSRob Herring - const: PERIPHCLKEN 13666ed144fSRob Herring - const: clk # for "arm,gic-400" and "nvidia,tegra210" 13766ed144fSRob Herring - const: gclk # for "arm,pl390" 13866ed144fSRob Herring 13966ed144fSRob Herring power-domains: 14066ed144fSRob Herring maxItems: 1 14166ed144fSRob Herring 142c95d5e13SGeert Uytterhoeven resets: 143c95d5e13SGeert Uytterhoeven maxItems: 1 144c95d5e13SGeert Uytterhoeven 14566ed144fSRob Herringrequired: 14666ed144fSRob Herring - compatible 14766ed144fSRob Herring - reg 14866ed144fSRob Herring 14966ed144fSRob HerringpatternProperties: 15066ed144fSRob Herring "^v2m@[0-9a-f]+$": 15199838f01SRob Herring type: object 15266ed144fSRob Herring description: | 15366ed144fSRob Herring * GICv2m extension for MSI/MSI-x support (Optional) 15466ed144fSRob Herring 15566ed144fSRob Herring Certain revisions of GIC-400 supports MSI/MSI-x via V2M register frame(s). 15666ed144fSRob Herring This is enabled by specifying v2m sub-node(s). 15766ed144fSRob Herring 15866ed144fSRob Herring properties: 15966ed144fSRob Herring compatible: 16066ed144fSRob Herring const: arm,gic-v2m-frame 16166ed144fSRob Herring 16266ed144fSRob Herring msi-controller: true 16366ed144fSRob Herring 16466ed144fSRob Herring reg: 16566ed144fSRob Herring maxItems: 1 16666ed144fSRob Herring description: GICv2m MSI interface register base and size 16766ed144fSRob Herring 16866ed144fSRob Herring arm,msi-base-spi: 16966ed144fSRob Herring description: When the MSI_TYPER register contains an incorrect value, 17066ed144fSRob Herring this property should contain the SPI base of the MSI frame, overriding 17166ed144fSRob Herring the HW value. 17266ed144fSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 17366ed144fSRob Herring 17466ed144fSRob Herring arm,msi-num-spis: 17566ed144fSRob Herring description: When the MSI_TYPER register contains an incorrect value, 17666ed144fSRob Herring this property should contain the number of SPIs assigned to the 17766ed144fSRob Herring frame, overriding the HW value. 17866ed144fSRob Herring $ref: /schemas/types.yaml#/definitions/uint32 17966ed144fSRob Herring 18066ed144fSRob Herring required: 18166ed144fSRob Herring - compatible 18266ed144fSRob Herring - msi-controller 18366ed144fSRob Herring - reg 18466ed144fSRob Herring 18566ed144fSRob Herring additionalProperties: false 18666ed144fSRob Herring 18766ed144fSRob HerringadditionalProperties: false 18866ed144fSRob Herring 18966ed144fSRob Herringexamples: 19066ed144fSRob Herring - | 19166ed144fSRob Herring // GICv1 19266ed144fSRob Herring intc: interrupt-controller@fff11000 { 19366ed144fSRob Herring compatible = "arm,cortex-a9-gic"; 19466ed144fSRob Herring #interrupt-cells = <3>; 19566ed144fSRob Herring #address-cells = <1>; 19666ed144fSRob Herring interrupt-controller; 19766ed144fSRob Herring reg = <0xfff11000 0x1000>, 19866ed144fSRob Herring <0xfff10100 0x100>; 19966ed144fSRob Herring }; 20066ed144fSRob Herring 20166ed144fSRob Herring - | 20266ed144fSRob Herring // GICv2 20366ed144fSRob Herring interrupt-controller@2c001000 { 20466ed144fSRob Herring compatible = "arm,cortex-a15-gic"; 20566ed144fSRob Herring #interrupt-cells = <3>; 20666ed144fSRob Herring interrupt-controller; 20766ed144fSRob Herring reg = <0x2c001000 0x1000>, 20866ed144fSRob Herring <0x2c002000 0x2000>, 20966ed144fSRob Herring <0x2c004000 0x2000>, 21066ed144fSRob Herring <0x2c006000 0x2000>; 21166ed144fSRob Herring interrupts = <1 9 0xf04>; 21266ed144fSRob Herring }; 21366ed144fSRob Herring 21466ed144fSRob Herring - | 21566ed144fSRob Herring // GICv2m extension for MSI/MSI-x support 21666ed144fSRob Herring interrupt-controller@e1101000 { 21766ed144fSRob Herring compatible = "arm,gic-400"; 21866ed144fSRob Herring #interrupt-cells = <3>; 2198d665693SRob Herring #address-cells = <1>; 2208d665693SRob Herring #size-cells = <1>; 22166ed144fSRob Herring interrupt-controller; 22266ed144fSRob Herring interrupts = <1 8 0xf04>; 2238d665693SRob Herring ranges = <0 0xe1100000 0x100000>; 2248d665693SRob Herring reg = <0xe1110000 0x01000>, 2258d665693SRob Herring <0xe112f000 0x02000>, 2268d665693SRob Herring <0xe1140000 0x10000>, 2278d665693SRob Herring <0xe1160000 0x10000>; 22866ed144fSRob Herring 2298d665693SRob Herring v2m0: v2m@80000 { 23066ed144fSRob Herring compatible = "arm,gic-v2m-frame"; 23166ed144fSRob Herring msi-controller; 2328d665693SRob Herring reg = <0x80000 0x1000>; 23366ed144fSRob Herring }; 23466ed144fSRob Herring 23566ed144fSRob Herring //... 23666ed144fSRob Herring 2378d665693SRob Herring v2mN: v2m@90000 { 23866ed144fSRob Herring compatible = "arm,gic-v2m-frame"; 23966ed144fSRob Herring msi-controller; 2408d665693SRob Herring reg = <0x90000 0x1000>; 24166ed144fSRob Herring }; 24266ed144fSRob Herring }; 24366ed144fSRob Herring... 244