1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 2023 Loongson Technology Corporation Limited
8 #include <dt-bindings/interrupt-controller/irq.h>
19 compatible = "loongson,la364";
26 compatible = "loongson,la364";
34 compatible = "fixed-clock";
36 clock-frequency = <1400000000>;
39 cpuintc: interrupt-controller {
40 compatible = "loongson,cpu-interrupt-controller";
41 #interrupt-cells = <1>;
46 compatible = "simple-bus";
47 ranges = <0x0 0x10000000 0x0 0x10000000 0x0 0x10000000>,
48 <0x0 0x02000000 0x0 0x02000000 0x0 0x02000000>,
49 <0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>,
50 <0xfe 0x0 0xfe 0x0 0x0 0x40000000>;
54 pmc: power-management@100d0000 {
55 compatible = "loongson,ls2k2000-pmc", "loongson,ls2k0500-pmc", "syscon";
56 reg = <0x0 0x100d0000 0x0 0x58>;
57 interrupt-parent = <&eiointc>;
59 loongson,suspend-address = <0x0 0x1c000500>;
62 compatible = "syscon-reboot";
68 compatible = "syscon-poweroff";
76 liointc: interrupt-controller@1fe01400 {
77 compatible = "loongson,liointc-1.0";
78 reg = <0x0 0x1fe01400 0x0 0x64>;
81 #interrupt-cells = <2>;
82 interrupt-parent = <&cpuintc>;
84 interrupt-names = "int0";
85 loongson,parent_int_map = <0xffffffff>, /* int0 */
86 <0x00000000>, /* int1 */
87 <0x00000000>, /* int2 */
88 <0x00000000>; /* int3 */
91 eiointc: interrupt-controller@1fe01600 {
92 compatible = "loongson,ls2k2000-eiointc";
93 reg = <0x0 0x1fe01600 0x0 0xea00>;
95 #interrupt-cells = <1>;
96 interrupt-parent = <&cpuintc>;
100 pic: interrupt-controller@10000000 {
101 compatible = "loongson,pch-pic-1.0";
102 reg = <0x0 0x10000000 0x0 0x400>;
103 interrupt-controller;
104 #interrupt-cells = <2>;
105 loongson,pic-base-vec = <0>;
106 interrupt-parent = <&eiointc>;
109 msi: msi-controller@1fe01140 {
110 compatible = "loongson,pch-msi-1.0";
111 reg = <0x0 0x1fe01140 0x0 0x8>;
113 loongson,msi-base-vec = <64>;
114 loongson,msi-num-vecs = <192>;
115 interrupt-parent = <&eiointc>;
119 compatible = "loongson,ls2k2000-rtc", "loongson,ls7a-rtc";
120 reg = <0x0 0x100d0100 0x0 0x100>;
121 interrupt-parent = <&pic>;
122 interrupts = <52 IRQ_TYPE_LEVEL_HIGH>;
126 uart0: serial@1fe001e0 {
127 compatible = "ns16550a";
128 reg = <0x0 0x1fe001e0 0x0 0x10>;
129 clock-frequency = <100000000>;
130 interrupt-parent = <&liointc>;
131 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
137 compatible = "loongson,ls2k-pci";
138 reg = <0x0 0x1a000000 0x0 0x02000000>,
139 <0xfe 0x0 0x0 0x20000000>;
140 #address-cells = <3>;
143 bus-range = <0x0 0xff>;
144 ranges = <0x01000000 0x0 0x00008000 0x0 0x18400000 0x0 0x00008000>,
145 <0x02000000 0x0 0x60000000 0x0 0x60000000 0x0 0x20000000>;
147 gmac0: ethernet@3,0 {
148 reg = <0x1800 0x0 0x0 0x0 0x0>;
149 interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
150 interrupt-parent = <&pic>;
154 gmac1: ethernet@3,1 {
155 reg = <0x1900 0x0 0x0 0x0 0x0>;
156 interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
157 interrupt-parent = <&pic>;
161 gmac2: ethernet@3,2 {
162 reg = <0x1a00 0x0 0x0 0x0 0x0>;
163 interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
164 interrupt-parent = <&pic>;
169 reg = <0x2000 0x0 0x0 0x0 0x0>;
170 interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
171 interrupt-parent = <&pic>;
176 reg = <0xc800 0x0 0x0 0x0 0x0>;
177 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
178 interrupt-parent = <&pic>;
183 reg = <0x3100 0x0 0x0 0x0 0x0>;
184 interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
185 interrupt-parent = <&pic>;
190 reg = <0x3800 0x0 0x0 0x0 0x0>;
191 interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
192 interrupt-parent = <&pic>;
197 reg = <0x4000 0x0 0x0 0x0 0x0>;
198 interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
199 interrupt-parent = <&pic>;
204 reg = <0x4800 0x0 0x0 0x0 0x0>;
205 #address-cells = <3>;
208 interrupt-parent = <&pic>;
209 #interrupt-cells = <1>;
210 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
211 interrupt-map = <0x0 0x0 0x0 0x0 &pic 32 IRQ_TYPE_LEVEL_HIGH>;
216 reg = <0x5000 0x0 0x0 0x0 0x0>;
217 #address-cells = <3>;
220 interrupt-parent = <&pic>;
221 #interrupt-cells = <1>;
222 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
223 interrupt-map = <0x0 0x0 0x0 0x0 &pic 33 IRQ_TYPE_LEVEL_HIGH>;
228 reg = <0x5800 0x0 0x0 0x0 0x0>;
229 #address-cells = <3>;
232 interrupt-parent = <&pic>;
233 #interrupt-cells = <1>;
234 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
235 interrupt-map = <0x0 0x0 0x0 0x0 &pic 34 IRQ_TYPE_LEVEL_HIGH>;
240 reg = <0x6000 0x0 0x0 0x0 0x0>;
241 #address-cells = <3>;
244 interrupt-parent = <&pic>;
245 #interrupt-cells = <1>;
246 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
247 interrupt-map = <0x0 0x0 0x0 0x0 &pic 35 IRQ_TYPE_LEVEL_HIGH>;
252 reg = <0x6800 0x0 0x0 0x0 0x0>;
253 #address-cells = <3>;
256 interrupt-parent = <&pic>;
257 #interrupt-cells = <1>;
258 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
259 interrupt-map = <0x0 0x0 0x0 0x0 &pic 36 IRQ_TYPE_LEVEL_HIGH>;
264 reg = <0x7000 0x0 0x0 0x0 0x0>;
265 #address-cells = <3>;
268 interrupt-parent = <&pic>;
269 #interrupt-cells = <1>;
270 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
271 interrupt-map = <0x0 0x0 0x0 0x0 &pic 37 IRQ_TYPE_LEVEL_HIGH>;
276 reg = <0x7800 0x0 0x0 0x0 0x0>;
277 #address-cells = <3>;
280 interrupt-parent = <&pic>;
281 #interrupt-cells = <1>;
282 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
283 interrupt-map = <0x0 0x0 0x0 0x0 &pic 40 IRQ_TYPE_LEVEL_HIGH>;
288 reg = <0x8000 0x0 0x0 0x0 0x0>;
289 #address-cells = <3>;
292 interrupt-parent = <&pic>;
293 #interrupt-cells = <1>;
294 interrupt-map-mask = <0x0 0x0 0x0 0x0>;
295 interrupt-map = <0x0 0x0 0x0 0x0 &pic 30 IRQ_TYPE_LEVEL_HIGH>;