1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2023 Loongson Technology Corporation Limited
8 #include <dt-bindings/interrupt-controller/irq.h>
9 #include <dt-bindings/clock/loongson,ls2k-clk.h>
10 #include <dt-bindings/gpio/gpio.h>
21 compatible = "loongson,la264";
24 clocks = <&clk LOONGSON2_NODE_CLK>;
28 compatible = "loongson,la264";
31 clocks = <&clk LOONGSON2_NODE_CLK>;
35 ref_100m: clock-ref-100m {
36 compatible = "fixed-clock";
38 clock-frequency = <100000000>;
39 clock-output-names = "ref_100m";
42 cpuintc: interrupt-controller {
43 compatible = "loongson,cpu-interrupt-controller";
44 #interrupt-cells = <1>;
48 /* i2c of the dvi eeprom edid */
50 compatible = "i2c-gpio";
51 scl-gpios = <&gpio0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
52 sda-gpios = <&gpio0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
53 i2c-gpio,delay-us = <5>; /* ~100 kHz */
59 /* i2c of the eeprom edid */
61 compatible = "i2c-gpio";
62 scl-gpios = <&gpio0 33 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
63 sda-gpios = <&gpio0 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
64 i2c-gpio,delay-us = <5>; /* ~100 kHz */
72 polling-delay-passive = <1000>;
73 polling-delay = <5000>;
74 thermal-sensors = <&tsensor 0>;
77 cpu_alert: cpu-alert {
78 temperature = <33000>;
84 temperature = <85000>;
93 compatible = "simple-bus";
94 ranges = <0x0 0x10000000 0x0 0x10000000 0x0 0x10000000>,
95 <0x0 0x02000000 0x0 0x02000000 0x0 0x02000000>,
96 <0x0 0x20000000 0x0 0x20000000 0x0 0x10000000>,
97 <0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>,
98 <0xfe 0x0 0xfe 0x0 0x0 0x40000000>;
103 liointc0: interrupt-controller@1fe01400 {
104 compatible = "loongson,liointc-2.0";
105 reg = <0x0 0x1fe01400 0x0 0x40>,
106 <0x0 0x1fe01040 0x0 0x8>,
107 <0x0 0x1fe01140 0x0 0x8>;
108 reg-names = "main", "isr0", "isr1";
109 interrupt-controller;
110 #interrupt-cells = <2>;
111 interrupt-parent = <&cpuintc>;
113 interrupt-names = "int0";
114 loongson,parent_int_map = <0xffffffff>, /* int0 */
115 <0x00000000>, /* int1 */
116 <0x00000000>, /* int2 */
117 <0x00000000>; /* int3 */
120 liointc1: interrupt-controller@1fe01440 {
121 compatible = "loongson,liointc-2.0";
122 reg = <0x0 0x1fe01440 0x0 0x40>,
123 <0x0 0x1fe01048 0x0 0x8>,
124 <0x0 0x1fe01148 0x0 0x8>;
125 reg-names = "main", "isr0", "isr1";
126 interrupt-controller;
127 #interrupt-cells = <2>;
128 interrupt-parent = <&cpuintc>;
130 interrupt-names = "int1";
131 loongson,parent_int_map = <0x00000000>, /* int0 */
132 <0xffffffff>, /* int1 */
133 <0x00000000>, /* int2 */
134 <0x00000000>; /* int3 */
138 compatible = "loongson,ls2k-chipid";
139 reg = <0x0 0x1fe00000 0x0 0x30>;
143 pctrl: pinctrl@1fe00420 {
144 compatible = "loongson,ls2k-pinctrl";
145 reg = <0x0 0x1fe00420 0x0 0x18>;
149 clk: clock-controller@1fe00480 {
150 compatible = "loongson,ls2k-clk";
151 reg = <0x0 0x1fe00480 0x0 0x58>;
153 clocks = <&ref_100m>;
154 clock-names = "ref_100m";
158 gpio0: gpio@1fe00500 {
159 compatible = "loongson,ls2k-gpio";
160 reg = <0x0 0x1fe00500 0x0 0x38>;
164 gpio-ranges = <&pctrl 0x0 0x0 15>,
168 interrupt-parent = <&liointc1>;
169 interrupts = <28 IRQ_TYPE_LEVEL_HIGH>,
170 <29 IRQ_TYPE_LEVEL_HIGH>,
171 <30 IRQ_TYPE_LEVEL_HIGH>,
172 <30 IRQ_TYPE_LEVEL_HIGH>,
173 <26 IRQ_TYPE_LEVEL_HIGH>,
174 <26 IRQ_TYPE_LEVEL_HIGH>,
175 <26 IRQ_TYPE_LEVEL_HIGH>,
176 <26 IRQ_TYPE_LEVEL_HIGH>,
177 <26 IRQ_TYPE_LEVEL_HIGH>,
178 <26 IRQ_TYPE_LEVEL_HIGH>,
179 <26 IRQ_TYPE_LEVEL_HIGH>,
180 <26 IRQ_TYPE_LEVEL_HIGH>,
181 <26 IRQ_TYPE_LEVEL_HIGH>,
182 <26 IRQ_TYPE_LEVEL_HIGH>,
183 <26 IRQ_TYPE_LEVEL_HIGH>,
185 <26 IRQ_TYPE_LEVEL_HIGH>,
186 <26 IRQ_TYPE_LEVEL_HIGH>,
187 <26 IRQ_TYPE_LEVEL_HIGH>,
188 <26 IRQ_TYPE_LEVEL_HIGH>,
189 <26 IRQ_TYPE_LEVEL_HIGH>,
190 <26 IRQ_TYPE_LEVEL_HIGH>,
191 <26 IRQ_TYPE_LEVEL_HIGH>,
192 <26 IRQ_TYPE_LEVEL_HIGH>,
193 <26 IRQ_TYPE_LEVEL_HIGH>,
194 <26 IRQ_TYPE_LEVEL_HIGH>,
195 <26 IRQ_TYPE_LEVEL_HIGH>,
196 <26 IRQ_TYPE_LEVEL_HIGH>,
197 <26 IRQ_TYPE_LEVEL_HIGH>,
198 <26 IRQ_TYPE_LEVEL_HIGH>,
199 <26 IRQ_TYPE_LEVEL_HIGH>,
200 <26 IRQ_TYPE_LEVEL_HIGH>,
201 <27 IRQ_TYPE_LEVEL_HIGH>,
202 <27 IRQ_TYPE_LEVEL_HIGH>,
203 <27 IRQ_TYPE_LEVEL_HIGH>,
204 <27 IRQ_TYPE_LEVEL_HIGH>,
205 <27 IRQ_TYPE_LEVEL_HIGH>,
207 <27 IRQ_TYPE_LEVEL_HIGH>,
208 <27 IRQ_TYPE_LEVEL_HIGH>,
209 <27 IRQ_TYPE_LEVEL_HIGH>,
210 <27 IRQ_TYPE_LEVEL_HIGH>,
213 <27 IRQ_TYPE_LEVEL_HIGH>,
214 <27 IRQ_TYPE_LEVEL_HIGH>,
215 <27 IRQ_TYPE_LEVEL_HIGH>,
216 <27 IRQ_TYPE_LEVEL_HIGH>,
217 <27 IRQ_TYPE_LEVEL_HIGH>,
218 <27 IRQ_TYPE_LEVEL_HIGH>,
219 <27 IRQ_TYPE_LEVEL_HIGH>,
220 <27 IRQ_TYPE_LEVEL_HIGH>,
221 <27 IRQ_TYPE_LEVEL_HIGH>,
222 <27 IRQ_TYPE_LEVEL_HIGH>,
223 <27 IRQ_TYPE_LEVEL_HIGH>,
224 <27 IRQ_TYPE_LEVEL_HIGH>,
225 <27 IRQ_TYPE_LEVEL_HIGH>,
226 <27 IRQ_TYPE_LEVEL_HIGH>,
227 <27 IRQ_TYPE_LEVEL_HIGH>,
228 <27 IRQ_TYPE_LEVEL_HIGH>,
229 <27 IRQ_TYPE_LEVEL_HIGH>,
230 <27 IRQ_TYPE_LEVEL_HIGH>,
231 <27 IRQ_TYPE_LEVEL_HIGH>,
232 <27 IRQ_TYPE_LEVEL_HIGH>;
235 tsensor: thermal-sensor@1fe01500 {
236 compatible = "loongson,ls2k1000-thermal";
237 reg = <0x0 0x1fe01500 0x0 0x30>;
238 interrupt-parent = <&liointc0>;
239 interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
240 #thermal-sensor-cells = <1>;
243 dma-controller@1fe00c00 {
244 compatible = "loongson,ls2k1000-apbdma";
245 reg = <0x0 0x1fe00c00 0x0 0x8>;
246 interrupt-parent = <&liointc1>;
247 interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
248 clocks = <&clk LOONGSON2_APB_CLK>;
253 dma-controller@1fe00c10 {
254 compatible = "loongson,ls2k1000-apbdma";
255 reg = <0x0 0x1fe00c10 0x0 0x8>;
256 interrupt-parent = <&liointc1>;
257 interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
258 clocks = <&clk LOONGSON2_APB_CLK>;
263 dma-controller@1fe00c20 {
264 compatible = "loongson,ls2k1000-apbdma";
265 reg = <0x0 0x1fe00c20 0x0 0x8>;
266 interrupt-parent = <&liointc1>;
267 interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
268 clocks = <&clk LOONGSON2_APB_CLK>;
273 dma-controller@1fe00c30 {
274 compatible = "loongson,ls2k1000-apbdma";
275 reg = <0x0 0x1fe00c30 0x0 0x8>;
276 interrupt-parent = <&liointc1>;
277 interrupts = <15 IRQ_TYPE_LEVEL_HIGH>;
278 clocks = <&clk LOONGSON2_APB_CLK>;
283 dma-controller@1fe00c40 {
284 compatible = "loongson,ls2k1000-apbdma";
285 reg = <0x0 0x1fe00c40 0x0 0x8>;
286 interrupt-parent = <&liointc1>;
287 interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
288 clocks = <&clk LOONGSON2_APB_CLK>;
293 uart0: serial@1fe20000 {
294 compatible = "ns16550a";
295 reg = <0x0 0x1fe20000 0x0 0x10>;
296 clock-frequency = <125000000>;
297 interrupt-parent = <&liointc0>;
298 interrupts = <0x0 IRQ_TYPE_LEVEL_HIGH>;
304 compatible = "loongson,ls2k-i2c";
305 reg = <0x0 0x1fe21000 0x0 0x8>;
306 interrupt-parent = <&liointc0>;
307 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
312 compatible = "loongson,ls2k-i2c";
313 reg = <0x0 0x1fe21800 0x0 0x8>;
314 interrupt-parent = <&liointc0>;
315 interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
319 pmc: power-management@1fe27000 {
320 compatible = "loongson,ls2k1000-pmc", "loongson,ls2k0500-pmc", "syscon";
321 reg = <0x0 0x1fe27000 0x0 0x58>;
322 interrupt-parent = <&liointc1>;
323 interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
324 loongson,suspend-address = <0x0 0x1c000500>;
327 compatible = "syscon-reboot";
333 compatible = "syscon-poweroff";
342 compatible = "loongson,ls2k1000-rtc";
343 reg = <0x0 0x1fe27800 0x0 0x100>;
344 interrupt-parent = <&liointc1>;
345 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
350 compatible = "loongson,ls2k1000-spi";
351 reg = <0x0 0x1fff0220 0x0 0x10>;
352 clocks = <&clk LOONGSON2_BOOT_CLK>;
357 compatible = "loongson,ls2k-pci";
358 reg = <0x0 0x1a000000 0x0 0x02000000>,
359 <0xfe 0x0 0x0 0x20000000>;
360 #address-cells = <3>;
363 bus-range = <0x0 0xff>;
364 ranges = <0x01000000 0x0 0x00008000 0x0 0x18008000 0x0 0x00008000>,
365 <0x02000000 0x0 0x60000000 0x0 0x60000000 0x0 0x20000000>;
367 gmac0: ethernet@3,0 {
368 reg = <0x1800 0x0 0x0 0x0 0x0>;
369 interrupt-parent = <&liointc0>;
370 interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
371 <13 IRQ_TYPE_LEVEL_HIGH>;
372 interrupt-names = "macirq", "eth_lpi";
376 gmac1: ethernet@3,1 {
377 reg = <0x1900 0x0 0x0 0x0 0x0>;
378 interrupt-parent = <&liointc0>;
379 interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
380 <15 IRQ_TYPE_LEVEL_HIGH>;
381 interrupt-names = "macirq", "eth_lpi";
386 reg = <0x2100 0x0 0x0 0x0 0x0>;
387 interrupt-parent = <&liointc1>;
388 interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
393 reg = <0x2200 0x0 0x0 0x0 0x0>;
394 interrupt-parent = <&liointc1>;
395 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
400 reg = <0x3000 0x0 0x0 0x0 0x0>;
401 interrupt-parent = <&liointc0>;
402 interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
407 reg = <0x3800 0x0 0x0 0x0 0x0>;
408 interrupt-parent = <&liointc0>;
409 interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
414 reg = <0x4000 0x0 0x0 0x0 0x0>;
415 interrupt-parent = <&liointc0>;
416 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
421 reg = <0x4800 0x0 0x0 0x0 0x0>;
422 #address-cells = <3>;
425 #interrupt-cells = <1>;
426 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
427 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 0x0 IRQ_TYPE_LEVEL_HIGH>;
432 reg = <0x5000 0x0 0x0 0x0 0x0>;
433 #address-cells = <3>;
436 interrupt-parent = <&liointc1>;
437 #interrupt-cells = <1>;
438 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
439 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 1 IRQ_TYPE_LEVEL_HIGH>;
444 reg = <0x5800 0x0 0x0 0x0 0x0>;
445 #address-cells = <3>;
448 interrupt-parent = <&liointc1>;
449 #interrupt-cells = <1>;
450 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
451 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 2 IRQ_TYPE_LEVEL_HIGH>;
456 reg = <0x6000 0x0 0x0 0x0 0x0>;
457 #address-cells = <3>;
460 interrupt-parent = <&liointc1>;
461 #interrupt-cells = <1>;
462 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
463 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 3 IRQ_TYPE_LEVEL_HIGH>;
468 reg = <0x6800 0x0 0x0 0x0 0x0>;
469 #address-cells = <3>;
472 interrupt-parent = <&liointc1>;
473 #interrupt-cells = <1>;
474 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
475 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 4 IRQ_TYPE_LEVEL_HIGH>;
480 reg = <0x7000 0x0 0x0 0x0 0x0>;
481 #address-cells = <3>;
484 interrupt-parent = <&liointc1>;
485 #interrupt-cells = <1>;
486 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
487 interrupt-map = <0x0 0x0 0x0 0x0 &liointc1 5 IRQ_TYPE_LEVEL_HIGH>;