| # 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>; | |
| }; | |
| ... |