# SPDX-License-Identifier: GPL-2.0-only %YAML 1.2 --- $id: http://devicetree.org/schemas/interrupt-controller/mti,gic.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MIPS Global Interrupt Controller maintainers: - Paul Burton <paulburton@kernel.org> - Thomas Bogendoerfer <tsbogend@alpha.franken.de> description: | The MIPS GIC routes external interrupts to individual VPEs and IRQ pins. It also supports local (per-processor) interrupts and software-generated interrupts which can be used as IPIs. The GIC also includes a free-running global timer, per-CPU count/compare timers, and a watchdog. properties: compatible: const: mti,gic "#interrupt-cells": const: 3 description: | The 1st cell is the type of interrupt: local or shared defined in the file 'dt-bindings/interrupt-controller/mips-gic.h'. The 2nd cell is the GIC interrupt number. The 3d cell encodes the interrupt flags setting up the IRQ trigger modes, which are defined in the file 'dt-bindings/interrupt-controller/irq.h'. reg: description: | Base address and length of the GIC registers space. If not present, the base address reported by the hardware GCR_GIC_BASE will be used. maxItems: 1 interrupt-controller: true mti,reserved-cpu-vectors: description: | Specifies the list of CPU interrupt vectors to which the GIC may not route interrupts. This property is ignored if the CPU is started in EIC mode. $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 6 uniqueItems: true items: minimum: 2 maximum: 7 mti,reserved-ipi-vectors: description: | Specifies the range of GIC interrupts that are reserved for IPIs. It accepts two values: the 1st is the starting interrupt and the 2nd is the size of the reserved range. If not specified, the driver will allocate the last (2 * number of VPEs in the system). $ref: /schemas/types.yaml#/definitions/uint32-array items: - minimum: 0 maximum: 254 - minimum: 2 maximum: 254 timer: type: object description: | MIPS GIC includes a free-running global timer, per-CPU count/compare timers, and a watchdog. Currently only the GIC Timer is supported. properties: compatible: const: mti,gic-timer interrupts: description: | Interrupt for the GIC local timer, so normally it's suppose to be of <GIC_LOCAL X IRQ_TYPE_NONE> format. maxItems: 1 clocks: maxItems: 1 clock-frequency: true required: - compatible - interrupts oneOf: - required: - clocks - required: - clock-frequency additionalProperties: false additionalProperties: false required: - compatible - "#interrupt-cells" - interrupt-controller examples: - | #include <dt-bindings/interrupt-controller/mips-gic.h> #include <dt-bindings/interrupt-controller/irq.h> interrupt-controller@1bdc0000 { compatible = "mti,gic"; reg = <0x1bdc0000 0x20000>; interrupt-controller; #interrupt-cells = <3>; mti,reserved-cpu-vectors = <7>; mti,reserved-ipi-vectors = <40 8>; timer { compatible = "mti,gic-timer"; interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>; clock-frequency = <50000000>; }; }; - | #include <dt-bindings/interrupt-controller/mips-gic.h> #include <dt-bindings/interrupt-controller/irq.h> interrupt-controller@1bdc0000 { compatible = "mti,gic"; reg = <0x1bdc0000 0x20000>; interrupt-controller; #interrupt-cells = <3>; timer { compatible = "mti,gic-timer"; interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>; clocks = <&cpu_pll>; }; }; - | interrupt-controller { compatible = "mti,gic"; interrupt-controller; #interrupt-cells = <3>; }; ...