blob: 91bb3c2307a79d978d86b0cb7ddd00cb3b0df369 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/interrupt-controller/mti,gic.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MIPS Global Interrupt Controller
8
9maintainers:
10 - Paul Burton <paulburton@kernel.org>
11 - Thomas Bogendoerfer <tsbogend@alpha.franken.de>
12
13description: |
14 The MIPS GIC routes external interrupts to individual VPEs and IRQ pins.
15 It also supports local (per-processor) interrupts and software-generated
16 interrupts which can be used as IPIs. The GIC also includes a free-running
17 global timer, per-CPU count/compare timers, and a watchdog.
18
19properties:
20 compatible:
21 const: mti,gic
22
23 "#interrupt-cells":
24 const: 3
25 description: |
26 The 1st cell is the type of interrupt: local or shared defined in the
27 file 'dt-bindings/interrupt-controller/mips-gic.h'. The 2nd cell is the
28 GIC interrupt number. The 3d cell encodes the interrupt flags setting up
29 the IRQ trigger modes, which are defined in the file
30 'dt-bindings/interrupt-controller/irq.h'.
31
32 reg:
33 description: |
34 Base address and length of the GIC registers space. If not present,
35 the base address reported by the hardware GCR_GIC_BASE will be used.
36 maxItems: 1
37
38 interrupt-controller: true
39
40 mti,reserved-cpu-vectors:
41 description: |
42 Specifies the list of CPU interrupt vectors to which the GIC may not
43 route interrupts. This property is ignored if the CPU is started in EIC
44 mode.
45 $ref: /schemas/types.yaml#/definitions/uint32-array
46 minItems: 1
47 maxItems: 6
48 uniqueItems: true
49 items:
50 minimum: 2
51 maximum: 7
52
53 mti,reserved-ipi-vectors:
54 description: |
55 Specifies the range of GIC interrupts that are reserved for IPIs.
56 It accepts two values: the 1st is the starting interrupt and the 2nd is
57 the size of the reserved range. If not specified, the driver will
58 allocate the last (2 * number of VPEs in the system).
59 $ref: /schemas/types.yaml#/definitions/uint32-array
60 items:
61 - minimum: 0
62 maximum: 254
63 - minimum: 2
64 maximum: 254
65
66 timer:
67 type: object
68 description: |
69 MIPS GIC includes a free-running global timer, per-CPU count/compare
70 timers, and a watchdog. Currently only the GIC Timer is supported.
71 properties:
72 compatible:
73 const: mti,gic-timer
74
75 interrupts:
76 description: |
77 Interrupt for the GIC local timer, so normally it's suppose to be of
78 <GIC_LOCAL X IRQ_TYPE_NONE> format.
79 maxItems: 1
80
81 clocks:
82 maxItems: 1
83
84 clock-frequency: true
85
86 required:
87 - compatible
88 - interrupts
89
90 oneOf:
91 - required:
92 - clocks
93 - required:
94 - clock-frequency
95
96 additionalProperties: false
97
98additionalProperties: false
99
100required:
101 - compatible
102 - "#interrupt-cells"
103 - interrupt-controller
104
105examples:
106 - |
107 #include <dt-bindings/interrupt-controller/mips-gic.h>
108 #include <dt-bindings/interrupt-controller/irq.h>
109
110 interrupt-controller@1bdc0000 {
111 compatible = "mti,gic";
112 reg = <0x1bdc0000 0x20000>;
113 interrupt-controller;
114 #interrupt-cells = <3>;
115 mti,reserved-cpu-vectors = <7>;
116 mti,reserved-ipi-vectors = <40 8>;
117
118 timer {
119 compatible = "mti,gic-timer";
120 interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
121 clock-frequency = <50000000>;
122 };
123 };
124 - |
125 #include <dt-bindings/interrupt-controller/mips-gic.h>
126 #include <dt-bindings/interrupt-controller/irq.h>
127
128 interrupt-controller@1bdc0000 {
129 compatible = "mti,gic";
130 reg = <0x1bdc0000 0x20000>;
131 interrupt-controller;
132 #interrupt-cells = <3>;
133
134 timer {
135 compatible = "mti,gic-timer";
136 interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
137 clocks = <&cpu_pll>;
138 };
139 };
140 - |
141 interrupt-controller {
142 compatible = "mti,gic";
143 interrupt-controller;
144 #interrupt-cells = <3>;
145 };
146...