xref: /linux/arch/loongarch/boot/dts/loongson-2k0500.dtsi (revision 429508c84d95811dd1300181dfe84743caff9a38)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2023 Loongson Technology Corporation Limited
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/clock/loongson,ls2k-clk.h>
10
11/ {
12	#address-cells = <2>;
13	#size-cells = <2>;
14
15	cpus {
16		#address-cells = <1>;
17		#size-cells = <0>;
18
19		cpu0: cpu@0 {
20			compatible = "loongson,la264";
21			device_type = "cpu";
22			reg = <0x0>;
23			clocks = <&clk LOONGSON2_NODE_CLK>;
24		};
25	};
26
27	ref_100m: clock-ref-100m {
28		compatible = "fixed-clock";
29		#clock-cells = <0>;
30		clock-frequency = <100000000>;
31		clock-output-names = "ref_100m";
32	};
33
34	cpuintc: interrupt-controller {
35		compatible = "loongson,cpu-interrupt-controller";
36		#interrupt-cells = <1>;
37		interrupt-controller;
38	};
39
40	thermal-zones {
41		cpu-thermal {
42			polling-delay-passive = <1000>;
43			polling-delay = <5000>;
44			thermal-sensors = <&tsensor 0>;
45
46			trips {
47				cpu-alert {
48					temperature = <33000>;
49					hysteresis = <2000>;
50					type = "active";
51				};
52
53				cpu-crit {
54					temperature = <85000>;
55					hysteresis = <5000>;
56					type = "critical";
57				};
58			};
59		};
60	};
61
62	bus@10000000 {
63		compatible = "simple-bus";
64		ranges = <0x0 0x10000000 0x0 0x10000000 0x0 0x10000000>,
65			 <0x0 0x02000000 0x0 0x02000000 0x0 0x02000000>,
66			 <0x0 0x20000000 0x0 0x20000000 0x0 0x10000000>,
67			 <0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>,
68			 <0xfe 0x0 0xfe 0x0 0x0 0x40000000>;
69		#address-cells = <2>;
70		#size-cells = <2>;
71
72		isa@16400000 {
73			compatible = "isa";
74			#size-cells = <1>;
75			#address-cells = <2>;
76			ranges = <1 0x0 0x0 0x16400000 0x4000>;
77		};
78
79		clk: clock-controller@1fe10400 {
80			compatible = "loongson,ls2k0500-clk";
81			reg = <0x0 0x1fe10400 0x0 0x2c>;
82			#clock-cells = <1>;
83			clocks = <&ref_100m>;
84			clock-names = "ref_100m";
85		};
86
87		dma-controller@1fe10c00 {
88			compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
89			reg = <0 0x1fe10c00 0 0x8>;
90			interrupt-parent = <&eiointc>;
91			interrupts = <67>;
92			clocks = <&clk LOONGSON2_APB_CLK>;
93			#dma-cells = <1>;
94			status = "disabled";
95		};
96
97		dma-controller@1fe10c10 {
98			compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
99			reg = <0 0x1fe10c10 0 0x8>;
100			interrupt-parent = <&eiointc>;
101			interrupts = <68>;
102			clocks = <&clk LOONGSON2_APB_CLK>;
103			#dma-cells = <1>;
104			status = "disabled";
105		};
106
107		dma-controller@1fe10c20 {
108			compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
109			reg = <0 0x1fe10c20 0 0x8>;
110			interrupt-parent = <&eiointc>;
111			interrupts = <69>;
112			clocks = <&clk LOONGSON2_APB_CLK>;
113			#dma-cells = <1>;
114			status = "disabled";
115		};
116
117		dma-controller@1fe10c30 {
118			compatible = "loongson,ls2k0500-apbdma", "loongson,ls2k1000-apbdma";
119			reg = <0 0x1fe10c30 0 0x8>;
120			interrupt-parent = <&eiointc>;
121			interrupts = <70>;
122			clocks = <&clk LOONGSON2_APB_CLK>;
123			#dma-cells = <1>;
124			status = "disabled";
125		};
126
127		liointc0: interrupt-controller@1fe11400 {
128			compatible = "loongson,liointc-2.0";
129			reg = <0x0 0x1fe11400 0x0 0x40>,
130			      <0x0 0x1fe11040 0x0 0x8>;
131			reg-names = "main", "isr0";
132
133			interrupt-controller;
134			#interrupt-cells = <2>;
135			interrupt-parent = <&cpuintc>;
136			interrupts = <2>;
137			interrupt-names = "int0";
138
139			loongson,parent_int_map = <0xffffffff>, /* int0 */
140						  <0x00000000>, /* int1 */
141						  <0x00000000>, /* int2 */
142						  <0x00000000>; /* int3 */
143		};
144
145		liointc1: interrupt-controller@1fe11440 {
146			compatible = "loongson,liointc-2.0";
147			reg = <0x0 0x1fe11440 0x0 0x40>,
148			      <0x0 0x1fe11048 0x0 0x8>;
149			reg-names = "main", "isr0";
150
151			interrupt-controller;
152			#interrupt-cells = <2>;
153			interrupt-parent = <&cpuintc>;
154			interrupts = <4>;
155			interrupt-names = "int2";
156
157			loongson,parent_int_map = <0x00000000>, /* int0 */
158						  <0x00000000>, /* int1 */
159						  <0xffffffff>, /* int2 */
160						  <0x00000000>; /* int3 */
161		};
162
163		eiointc: interrupt-controller@1fe11600 {
164			compatible = "loongson,ls2k0500-eiointc";
165			reg = <0x0 0x1fe11600 0x0 0xea00>;
166			interrupt-controller;
167			#interrupt-cells = <1>;
168			interrupt-parent = <&cpuintc>;
169			interrupts = <3>;
170		};
171
172		gmac0: ethernet@1f020000 {
173			compatible = "snps,dwmac-3.70a";
174			reg = <0x0 0x1f020000 0x0 0x10000>;
175			interrupt-parent = <&liointc0>;
176			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
177			interrupt-names = "macirq";
178			status = "disabled";
179		};
180
181		gmac1: ethernet@1f030000 {
182			compatible = "snps,dwmac-3.70a";
183			reg = <0x0 0x1f030000 0x0 0x10000>;
184			interrupt-parent = <&liointc0>;
185			interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
186			interrupt-names = "macirq";
187			status = "disabled";
188		};
189
190		sata: sata@1f040000 {
191			compatible = "snps,spear-ahci";
192			reg = <0x0 0x1f040000 0x0 0x10000>;
193			interrupt-parent = <&eiointc>;
194			interrupts = <75>;
195			status = "disabled";
196		};
197
198		ehci0: usb@1f050000 {
199			compatible = "generic-ehci";
200			reg = <0x0 0x1f050000 0x0 0x8000>;
201			interrupt-parent = <&eiointc>;
202			interrupts = <71>;
203			status = "disabled";
204		};
205
206		ohci0: usb@1f058000 {
207			compatible = "generic-ohci";
208			reg = <0x0 0x1f058000 0x0 0x8000>;
209			interrupt-parent = <&eiointc>;
210			interrupts = <72>;
211			status = "disabled";
212		};
213
214		tsensor: thermal-sensor@1fe11500 {
215			compatible = "loongson,ls2k0500-thermal", "loongson,ls2k1000-thermal";
216			reg = <0x0 0x1fe11500 0x0 0x30>;
217			interrupt-parent = <&liointc0>;
218			interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
219			#thermal-sensor-cells = <1>;
220		};
221
222		uart0: serial@1ff40800 {
223			compatible = "ns16550a";
224			reg = <0x0 0x1ff40800 0x0 0x10>;
225			clock-frequency = <100000000>;
226			interrupt-parent = <&eiointc>;
227			interrupts = <2>;
228			no-loopback-test;
229			status = "disabled";
230		};
231
232		i2c0: i2c@1ff48000 {
233			compatible = "loongson,ls2k-i2c";
234			reg = <0x0 0x1ff48000 0x0 0x0800>;
235			interrupt-parent = <&eiointc>;
236			interrupts = <14>;
237			status = "disabled";
238		};
239
240		i2c@1ff48800 {
241			compatible = "loongson,ls2k-i2c";
242			reg = <0x0 0x1ff48800 0x0 0x0800>;
243			interrupt-parent = <&eiointc>;
244			interrupts = <15>;
245			status = "disabled";
246		};
247
248		i2c@1ff49000 {
249			compatible = "loongson,ls2k-i2c";
250			reg = <0x0 0x1ff49000 0x0 0x0800>;
251			interrupt-parent = <&eiointc>;
252			interrupts = <16>;
253			status = "disabled";
254		};
255
256		i2c@1ff49800 {
257			compatible = "loongson,ls2k-i2c";
258			reg = <0x0 0x1ff49800 0x0 0x0800>;
259			interrupt-parent = <&eiointc>;
260			interrupts = <17>;
261			status = "disabled";
262		};
263
264		i2c@1ff4a000 {
265			compatible = "loongson,ls2k-i2c";
266			reg = <0x0 0x1ff4a000 0x0 0x0800>;
267			interrupt-parent = <&eiointc>;
268			interrupts = <18>;
269			status = "disabled";
270		};
271
272		i2c@1ff4a800 {
273			compatible = "loongson,ls2k-i2c";
274			reg = <0x0 0x1ff4a800 0x0 0x0800>;
275			interrupt-parent = <&eiointc>;
276			interrupts = <19>;
277			status = "disabled";
278		};
279
280		pmc: power-management@1ff6c000 {
281			compatible = "loongson,ls2k0500-pmc", "syscon";
282			reg = <0x0 0x1ff6c000 0x0 0x58>;
283			interrupt-parent = <&eiointc>;
284			interrupts = <56>;
285			loongson,suspend-address = <0x0 0x1c000500>;
286
287			syscon-reboot {
288				compatible = "syscon-reboot";
289				offset = <0x30>;
290				mask = <0x1>;
291			};
292
293			syscon-poweroff {
294				compatible = "syscon-poweroff";
295				regmap = <&pmc>;
296				offset = <0x14>;
297				mask = <0x3c00>;
298				value = <0x3c00>;
299			};
300		};
301
302		rtc0: rtc@1ff6c100 {
303			compatible = "loongson,ls2k0500-rtc", "loongson,ls7a-rtc";
304			reg = <0x0 0x1ff6c100 0x0 0x100>;
305			interrupt-parent = <&eiointc>;
306			interrupts = <35>;
307			status = "disabled";
308		};
309
310		pcie@1a000000 {
311			compatible = "loongson,ls2k-pci";
312			reg = <0x0 0x1a000000 0x0 0x02000000>,
313			      <0xfe 0x0 0x0 0x20000000>;
314			#address-cells = <3>;
315			#size-cells = <2>;
316			device_type = "pci";
317			bus-range = <0x0 0x5>;
318			ranges = <0x01000000 0x0 0x00004000 0x0 0x16404000 0x0 0x00004000>,
319				 <0x02000000 0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>;
320
321			pcie@0,0 {
322				reg = <0x0000 0x0 0x0 0x0 0x0>;
323				#address-cells = <3>;
324				#size-cells = <2>;
325				device_type = "pci";
326				interrupt-parent = <&eiointc>;
327				#interrupt-cells = <1>;
328				interrupt-map-mask = <0x0 0x0 0x0 0x0>;
329				interrupt-map = <0x0 0x0 0x0 0x0 &eiointc 81>;
330				ranges;
331			};
332
333			pcie@1,0 {
334				reg = <0x0800 0x0 0x0 0x0 0x0>;
335				#address-cells = <3>;
336				#size-cells = <2>;
337				device_type = "pci";
338				interrupt-parent = <&eiointc>;
339				#interrupt-cells = <1>;
340				interrupt-map-mask = <0x0 0x0 0x0 0x0>;
341				interrupt-map = <0x0 0x0 0x0 0x0 &eiointc 82>;
342				ranges;
343			};
344		};
345	};
346};
347