1// SPDX-License-Identifier: GPL-2.0
2
3/dts-v1/;
4
5#include <dt-bindings/interrupt-controller/irq.h>
6
7/ {
8	compatible = "loongson,loongson2k1000";
9
10	#address-cells = <2>;
11	#size-cells = <2>;
12
13	cpus {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		cpu0: cpu@0 {
18			device_type = "cpu";
19			compatible = "loongson,gs264";
20			reg = <0x0>;
21			#clock-cells = <1>;
22			clocks = <&cpu_clk>;
23		};
24	};
25
26	memory@200000 {
27		compatible = "memory";
28		device_type = "memory";
29		reg = <0x00000000 0x00200000 0x00000000 0x0ee00000>, /* 238 MB at 2 MB */
30			<0x00000000 0x20000000 0x00000000 0x1f000000>, /* 496 MB at 512 MB */
31			<0x00000001 0x10000000 0x00000001 0xb0000000>; /* 6912 MB at 4352MB */
32	};
33
34	cpu_clk: cpu_clk {
35		#clock-cells = <0>;
36		compatible = "fixed-clock";
37		clock-frequency = <800000000>;
38	};
39
40	cpuintc: interrupt-controller {
41		#address-cells = <0>;
42		#interrupt-cells = <1>;
43		interrupt-controller;
44		compatible = "mti,cpu-interrupt-controller";
45	};
46
47	package0: bus@10000000 {
48		compatible = "simple-bus";
49		#address-cells = <2>;
50		#size-cells = <2>;
51		ranges = <0 0x10000000 0 0x10000000 0 0x10000000 /* ioports */
52			0 0x40000000 0 0x40000000 0 0x40000000
53			0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
54
55		pm: reset-controller@1fe07000 {
56			compatible = "loongson,ls2k-pm";
57			reg = <0 0x1fe07000 0 0x422>;
58		};
59
60		liointc0: interrupt-controller@1fe11400 {
61			compatible = "loongson,liointc-2.0";
62			reg = <0 0x1fe11400 0 0x40>,
63				<0 0x1fe11040 0 0x8>,
64				<0 0x1fe11140 0 0x8>;
65			reg-names = "main", "isr0", "isr1";
66
67			interrupt-controller;
68			#interrupt-cells = <2>;
69
70			interrupt-parent = <&cpuintc>;
71			interrupts = <2>;
72			interrupt-names = "int0";
73
74			loongson,parent_int_map = <0xffffffff>, /* int0 */
75						<0x00000000>, /* int1 */
76						<0x00000000>, /* int2 */
77						<0x00000000>; /* int3 */
78		};
79
80		liointc1: interrupt-controller@1fe11440 {
81			compatible = "loongson,liointc-2.0";
82			reg = <0 0x1fe11440 0 0x40>,
83				<0 0x1fe11048 0 0x8>,
84				<0 0x1fe11148 0 0x8>;
85			reg-names = "main", "isr0", "isr1";
86
87			interrupt-controller;
88			#interrupt-cells = <2>;
89
90			interrupt-parent = <&cpuintc>;
91			interrupts = <3>;
92			interrupt-names = "int1";
93
94			loongson,parent_int_map = <0x00000000>, /* int0 */
95						<0xffffffff>, /* int1 */
96						<0x00000000>, /* int2 */
97						<0x00000000>; /* int3 */
98		};
99
100		rtc0: rtc@1fe07800 {
101			compatible = "loongson,ls2k1000-rtc";
102			reg = <0 0x1fe07800 0 0x78>;
103			interrupt-parent = <&liointc0>;
104			interrupts = <60 IRQ_TYPE_LEVEL_LOW>;
105		};
106
107		uart0: serial@1fe00000 {
108			compatible = "ns16550a";
109			reg = <0 0x1fe00000 0 0x8>;
110			clock-frequency = <125000000>;
111			interrupt-parent = <&liointc0>;
112			interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
113			no-loopback-test;
114		};
115
116		pci@1a000000 {
117			compatible = "loongson,ls2k-pci";
118			device_type = "pci";
119			#address-cells = <3>;
120			#size-cells = <2>;
121			#interrupt-cells = <2>;
122
123			reg = <0 0x1a000000 0 0x02000000>,
124				<0xfe 0x00000000 0 0x20000000>;
125
126			ranges = <0x01000000 0x0 0x00000000 0x0 0x18000000  0x0 0x00010000>,
127				 <0x02000000 0x0 0x40000000 0x0 0x40000000  0x0 0x40000000>;
128
129			gmac@3,0 {
130				compatible = "pci0014,7a03.0",
131						   "pci0014,7a03",
132						   "pciclass0c0320",
133						   "pciclass0c03",
134						   "loongson, pci-gmac";
135
136				reg = <0x1800 0x0 0x0 0x0 0x0>;
137				interrupts = <12 IRQ_TYPE_LEVEL_LOW>,
138					     <13 IRQ_TYPE_LEVEL_LOW>;
139				interrupt-names = "macirq", "eth_lpi";
140				interrupt-parent = <&liointc0>;
141				phy-mode = "rgmii";
142				mdio {
143					#address-cells = <1>;
144					#size-cells = <0>;
145					compatible = "snps,dwmac-mdio";
146					phy0: ethernet-phy@0 {
147						reg = <0>;
148					};
149				};
150			};
151
152			gmac@3,1 {
153				compatible = "pci0014,7a03.0",
154						   "pci0014,7a03",
155						   "pciclass0c0320",
156						   "pciclass0c03",
157						   "loongson, pci-gmac";
158
159				reg = <0x1900 0x0 0x0 0x0 0x0>;
160				interrupts = <14 IRQ_TYPE_LEVEL_LOW>,
161					     <15 IRQ_TYPE_LEVEL_LOW>;
162				interrupt-names = "macirq", "eth_lpi";
163				interrupt-parent = <&liointc0>;
164				phy-mode = "rgmii";
165				mdio {
166					#address-cells = <1>;
167					#size-cells = <0>;
168					compatible = "snps,dwmac-mdio";
169					phy1: ethernet-phy@1 {
170						reg = <0>;
171					};
172				};
173			};
174
175			ehci@4,1 {
176				compatible = "pci0014,7a14.0",
177						   "pci0014,7a14",
178						   "pciclass0c0320",
179						   "pciclass0c03";
180
181				reg = <0x2100 0x0 0x0 0x0 0x0>;
182				interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
183				interrupt-parent = <&liointc1>;
184			};
185
186			ohci@4,2 {
187				compatible = "pci0014,7a24.0",
188						   "pci0014,7a24",
189						   "pciclass0c0310",
190						   "pciclass0c03";
191
192				reg = <0x2200 0x0 0x0 0x0 0x0>;
193				interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
194				interrupt-parent = <&liointc1>;
195			};
196
197			sata@8,0 {
198				compatible = "pci0014,7a08.0",
199						   "pci0014,7a08",
200						   "pciclass010601",
201						   "pciclass0106";
202
203				reg = <0x4000 0x0 0x0 0x0 0x0>;
204				interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
205				interrupt-parent = <&liointc0>;
206			};
207
208			pci_bridge@9,0 {
209				compatible = "pci0014,7a19.0",
210						   "pci0014,7a19",
211						   "pciclass060400",
212						   "pciclass0604";
213
214				reg = <0x4800 0x0 0x0 0x0 0x0>;
215				#interrupt-cells = <1>;
216				interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
217				interrupt-parent = <&liointc1>;
218				interrupt-map-mask = <0 0 0 0>;
219				interrupt-map = <0 0 0 0 &liointc1 0 IRQ_TYPE_LEVEL_LOW>;
220				external-facing;
221			};
222
223			pci_bridge@a,0 {
224				compatible = "pci0014,7a09.0",
225						   "pci0014,7a09",
226						   "pciclass060400",
227						   "pciclass0604";
228
229				reg = <0x5000 0x0 0x0 0x0 0x0>;
230				#interrupt-cells = <1>;
231				interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
232				interrupt-parent = <&liointc1>;
233				interrupt-map-mask = <0 0 0 0>;
234				interrupt-map = <0 0 0 0 &liointc1 1 IRQ_TYPE_LEVEL_LOW>;
235				external-facing;
236			};
237
238			pci_bridge@b,0 {
239				compatible = "pci0014,7a09.0",
240						   "pci0014,7a09",
241						   "pciclass060400",
242						   "pciclass0604";
243
244				reg = <0x5800 0x0 0x0 0x0 0x0>;
245				#interrupt-cells = <1>;
246				interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
247				interrupt-parent = <&liointc1>;
248				interrupt-map-mask = <0 0 0 0>;
249				interrupt-map = <0 0 0 0 &liointc1 2 IRQ_TYPE_LEVEL_LOW>;
250				external-facing;
251			};
252
253			pci_bridge@c,0 {
254				compatible = "pci0014,7a09.0",
255						   "pci0014,7a09",
256						   "pciclass060400",
257						   "pciclass0604";
258
259				reg = <0x6000 0x0 0x0 0x0 0x0>;
260				#interrupt-cells = <1>;
261				interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
262				interrupt-parent = <&liointc1>;
263				interrupt-map-mask = <0 0 0 0>;
264				interrupt-map = <0 0 0 0 &liointc1 3 IRQ_TYPE_LEVEL_LOW>;
265				external-facing;
266			};
267
268			pci_bridge@d,0 {
269				compatible = "pci0014,7a19.0",
270						   "pci0014,7a19",
271						   "pciclass060400",
272						   "pciclass0604";
273
274				reg = <0x6800 0x0 0x0 0x0 0x0>;
275				#interrupt-cells = <1>;
276				interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
277				interrupt-parent = <&liointc1>;
278				interrupt-map-mask = <0 0 0 0>;
279				interrupt-map = <0 0 0 0 &liointc1 4 IRQ_TYPE_LEVEL_LOW>;
280				external-facing;
281			};
282
283			pci_bridge@e,0 {
284				compatible = "pci0014,7a09.0",
285						   "pci0014,7a09",
286						   "pciclass060400",
287						   "pciclass0604";
288
289				reg = <0x7000 0x0 0x0 0x0 0x0>;
290				#interrupt-cells = <1>;
291				interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
292				interrupt-parent = <&liointc1>;
293				interrupt-map-mask = <0 0 0 0>;
294				interrupt-map = <0 0 0 0 &liointc1 5 IRQ_TYPE_LEVEL_LOW>;
295				external-facing;
296			};
297
298		};
299	};
300};
301
302