1// SPDX-License-Identifier: GPL-2.0
2
3/ {
4	pch: bus@10000000 {
5		compatible = "simple-bus";
6		#address-cells = <2>;
7		#size-cells = <2>;
8		ranges = <0 0x10000000 0 0x10000000 0 0x10000000 /* PIO & CONF & APB */
9				0 0x20000000 0 0x20000000 0 0x10000000
10				0 0x40000000 0 0x40000000 0 0x40000000 /* PCI MEM */
11				0xe00 0x00000000 0xe00 0x00000000 0x100 0x0000000>;
12
13		pic: interrupt-controller@10000000 {
14			compatible = "loongson,pch-pic-1.0";
15			reg = <0 0x10000000 0 0x400>;
16			interrupt-controller;
17			interrupt-parent = <&htvec>;
18			loongson,pic-base-vec = <0>;
19			#interrupt-cells = <2>;
20		};
21
22		ls7a_uart0: serial@10080000 {
23			compatible = "ns16550a";
24			reg = <0 0x10080000 0 0x100>;
25			clock-frequency = <50000000>;
26			interrupt-parent = <&pic>;
27			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
28			no-loopback-test;
29		};
30
31		ls7a_uart1: serial@10080100 {
32			status = "disabled";
33			compatible = "ns16550a";
34			reg = <0 0x10080100 0 0x100>;
35			clock-frequency = <50000000>;
36			interrupt-parent = <&pic>;
37			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
38			no-loopback-test;
39		};
40
41		ls7a_uart2: serial@10080200 {
42			status = "disabled";
43			compatible = "ns16550a";
44			reg = <0 0x10080200 0 0x100>;
45			clock-frequency = <50000000>;
46			interrupt-parent = <&pic>;
47			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
48			no-loopback-test;
49		};
50
51		ls7a_uart3: serial@10080300 {
52			status = "disabled";
53			compatible = "ns16550a";
54			reg = <0 0x10080300 0 0x100>;
55			clock-frequency = <50000000>;
56			interrupt-parent = <&pic>;
57			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
58			no-loopback-test;
59		};
60
61		pci@1a000000 {
62			compatible = "loongson,ls7a-pci";
63			device_type = "pci";
64			#address-cells = <3>;
65			#size-cells = <2>;
66			#interrupt-cells = <2>;
67			msi-parent = <&msi>;
68
69			reg = <0 0x1a000000 0 0x02000000>,
70				<0xefe 0x00000000 0 0x20000000>;
71
72			ranges = <0x01000000 0x0 0x00020000 0x0 0x18020000 0x0 0x00020000>,
73				 <0x02000000 0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>;
74
75			ohci@4,0 {
76				compatible = "pci0014,7a24.0",
77						   "pci0014,7a24",
78						   "pciclass0c0310",
79						   "pciclass0c03";
80
81				reg = <0x2000 0x0 0x0 0x0 0x0>;
82				interrupts = <49 IRQ_TYPE_LEVEL_HIGH>;
83				interrupt-parent = <&pic>;
84			};
85
86			ehci@4,1 {
87				compatible = "pci0014,7a14.0",
88						   "pci0014,7a14",
89						   "pciclass0c0320",
90						   "pciclass0c03";
91
92				reg = <0x2100 0x0 0x0 0x0 0x0>;
93				interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
94				interrupt-parent = <&pic>;
95			};
96
97			ohci@5,0 {
98				compatible = "pci0014,7a24.0",
99						   "pci0014,7a24",
100						   "pciclass0c0310",
101						   "pciclass0c03";
102
103				reg = <0x2800 0x0 0x0 0x0 0x0>;
104				interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
105				interrupt-parent = <&pic>;
106			};
107
108			ehci@5,1 {
109				compatible = "pci0014,7a14.0",
110						   "pci0014,7a14",
111						   "pciclass0c0320",
112						   "pciclass0c03";
113
114				reg = <0x2900 0x0 0x0 0x0 0x0>;
115				interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
116				interrupt-parent = <&pic>;
117			};
118
119			sata@8,0 {
120				compatible = "pci0014,7a08.0",
121						   "pci0014,7a08",
122						   "pciclass010601",
123						   "pciclass0106";
124
125				reg = <0x4000 0x0 0x0 0x0 0x0>;
126				interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
127				interrupt-parent = <&pic>;
128			};
129
130			sata@8,1 {
131				compatible = "pci0014,7a08.0",
132						   "pci0014,7a08",
133						   "pciclass010601",
134						   "pciclass0106";
135
136				reg = <0x4100 0x0 0x0 0x0 0x0>;
137				interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
138				interrupt-parent = <&pic>;
139			};
140
141			sata@8,2 {
142				compatible = "pci0014,7a08.0",
143						   "pci0014,7a08",
144						   "pciclass010601",
145						   "pciclass0106";
146
147				reg = <0x4200 0x0 0x0 0x0 0x0>;
148				interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
149				interrupt-parent = <&pic>;
150			};
151
152			gpu@6,0 {
153				compatible = "pci0014,7a15.0",
154						   "pci0014,7a15",
155						   "pciclass030200",
156						   "pciclass0302";
157
158				reg = <0x3000 0x0 0x0 0x0 0x0>;
159				interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
160				interrupt-parent = <&pic>;
161			};
162
163			dc@6,1 {
164				compatible = "pci0014,7a06.0",
165						   "pci0014,7a06",
166						   "pciclass030000",
167						   "pciclass0300";
168
169				reg = <0x3100 0x0 0x0 0x0 0x0>;
170				interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
171				interrupt-parent = <&pic>;
172			};
173
174			hda@7,0 {
175				compatible = "pci0014,7a07.0",
176						   "pci0014,7a07",
177						   "pciclass040300",
178						   "pciclass0403";
179
180				reg = <0x3800 0x0 0x0 0x0 0x0>;
181				interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
182				interrupt-parent = <&pic>;
183			};
184
185			gmac@3,0 {
186				compatible = "pci0014,7a03.0",
187						   "pci0014,7a03",
188						   "pciclass020000",
189						   "pciclass0200",
190						   "loongson, pci-gmac";
191
192				reg = <0x1800 0x0 0x0 0x0 0x0>;
193				interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
194					     <13 IRQ_TYPE_LEVEL_HIGH>;
195				interrupt-names = "macirq", "eth_lpi";
196				interrupt-parent = <&pic>;
197				phy-mode = "rgmii";
198				mdio {
199					#address-cells = <1>;
200					#size-cells = <0>;
201					compatible = "snps,dwmac-mdio";
202					phy0: ethernet-phy@0 {
203						reg = <0>;
204					};
205				};
206			};
207
208			gmac@3,1 {
209				compatible = "pci0014,7a03.0",
210						   "pci0014,7a03",
211						   "pciclass020000",
212						   "pciclass0200",
213						   "loongson, pci-gmac";
214
215				reg = <0x1900 0x0 0x0 0x0 0x0>;
216				interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
217					     <15 IRQ_TYPE_LEVEL_HIGH>;
218				interrupt-names = "macirq", "eth_lpi";
219				interrupt-parent = <&pic>;
220				phy-mode = "rgmii";
221				mdio {
222					#address-cells = <1>;
223					#size-cells = <0>;
224					compatible = "snps,dwmac-mdio";
225					phy1: ethernet-phy@1 {
226						reg = <0>;
227					};
228				};
229			};
230
231			pci_bridge@9,0 {
232				compatible = "pci0014,7a19.1",
233						   "pci0014,7a19",
234						   "pciclass060400",
235						   "pciclass0604";
236
237				reg = <0x4800 0x0 0x0 0x0 0x0>;
238				interrupts = <32 IRQ_TYPE_LEVEL_HIGH>;
239				interrupt-parent = <&pic>;
240
241				#interrupt-cells = <1>;
242				interrupt-map-mask = <0 0 0 0>;
243				interrupt-map = <0 0 0 0 &pic 32 IRQ_TYPE_LEVEL_HIGH>;
244			};
245
246			pci_bridge@a,0 {
247				compatible = "pci0014,7a09.1",
248						   "pci0014,7a09",
249						   "pciclass060400",
250						   "pciclass0604";
251
252				reg = <0x5000 0x0 0x0 0x0 0x0>;
253				interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
254				interrupt-parent = <&pic>;
255
256				#interrupt-cells = <1>;
257				interrupt-map-mask = <0 0 0 0>;
258				interrupt-map = <0 0 0 0 &pic 33 IRQ_TYPE_LEVEL_HIGH>;
259			};
260
261			pci_bridge@b,0 {
262				compatible = "pci0014,7a09.1",
263						   "pci0014,7a09",
264						   "pciclass060400",
265						   "pciclass0604";
266
267				reg = <0x5800 0x0 0x0 0x0 0x0>;
268				interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
269				interrupt-parent = <&pic>;
270
271				#interrupt-cells = <1>;
272				interrupt-map-mask = <0 0 0 0>;
273				interrupt-map = <0 0 0 0 &pic 34 IRQ_TYPE_LEVEL_HIGH>;
274			};
275
276			pci_bridge@c,0 {
277				compatible = "pci0014,7a09.1",
278						   "pci0014,7a09",
279						   "pciclass060400",
280						   "pciclass0604";
281
282				reg = <0x6000 0x0 0x0 0x0 0x0>;
283				interrupts = <35 IRQ_TYPE_LEVEL_HIGH>;
284				interrupt-parent = <&pic>;
285
286				#interrupt-cells = <1>;
287				interrupt-map-mask = <0 0 0 0>;
288				interrupt-map = <0 0 0 0 &pic 35 IRQ_TYPE_LEVEL_HIGH>;
289			};
290
291			pci_bridge@d,0 {
292				compatible = "pci0014,7a19.1",
293						   "pci0014,7a19",
294						   "pciclass060400",
295						   "pciclass0604";
296
297				reg = <0x6800 0x0 0x0 0x0 0x0>;
298				interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
299				interrupt-parent = <&pic>;
300
301				#interrupt-cells = <1>;
302				interrupt-map-mask = <0 0 0 0>;
303				interrupt-map = <0 0 0 0 &pic 36 IRQ_TYPE_LEVEL_HIGH>;
304			};
305
306			pci_bridge@e,0 {
307				compatible = "pci0014,7a09.1",
308						   "pci0014,7a09",
309						   "pciclass060400",
310						   "pciclass0604";
311
312				reg = <0x7000 0x0 0x0 0x0 0x0>;
313				interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
314				interrupt-parent = <&pic>;
315
316				#interrupt-cells = <1>;
317				interrupt-map-mask = <0 0 0 0>;
318				interrupt-map = <0 0 0 0 &pic 37 IRQ_TYPE_LEVEL_HIGH>;
319			};
320
321			pci_bridge@f,0 {
322				compatible = "pci0014,7a29.1",
323						   "pci0014,7a29",
324						   "pciclass060400",
325						   "pciclass0604";
326
327				reg = <0x7800 0x0 0x0 0x0 0x0>;
328				interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
329				interrupt-parent = <&pic>;
330
331				#interrupt-cells = <1>;
332				interrupt-map-mask = <0 0 0 0>;
333				interrupt-map = <0 0 0 0 &pic 40 IRQ_TYPE_LEVEL_HIGH>;
334			};
335
336			pci_bridge@10,0 {
337				compatible = "pci0014,7a19.1",
338						   "pci0014,7a19",
339						   "pciclass060400",
340						   "pciclass0604";
341
342				reg = <0x8000 0x0 0x0 0x0 0x0>;
343				interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
344				interrupt-parent = <&pic>;
345
346				#interrupt-cells = <1>;
347				interrupt-map-mask = <0 0 0 0>;
348				interrupt-map = <0 0 0 0 &pic 41 IRQ_TYPE_LEVEL_HIGH>;
349			};
350
351			pci_bridge@11,0 {
352				compatible = "pci0014,7a29.1",
353						   "pci0014,7a29",
354						   "pciclass060400",
355						   "pciclass0604";
356
357				reg = <0x8800 0x0 0x0 0x0 0x0>;
358				interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
359				interrupt-parent = <&pic>;
360
361				#interrupt-cells = <1>;
362				interrupt-map-mask = <0 0 0 0>;
363				interrupt-map = <0 0 0 0 &pic 42 IRQ_TYPE_LEVEL_HIGH>;
364			};
365
366			pci_bridge@12,0 {
367				compatible = "pci0014,7a19.1",
368						   "pci0014,7a19",
369						   "pciclass060400",
370						   "pciclass0604";
371
372				reg = <0x9000 0x0 0x0 0x0 0x0>;
373				interrupts = <43 IRQ_TYPE_LEVEL_HIGH>;
374				interrupt-parent = <&pic>;
375
376				#interrupt-cells = <1>;
377				interrupt-map-mask = <0 0 0 0>;
378				interrupt-map = <0 0 0 0 &pic 43 IRQ_TYPE_LEVEL_HIGH>;
379			};
380
381			pci_bridge@13,0 {
382				compatible = "pci0014,7a29.1",
383						   "pci0014,7a29",
384						   "pciclass060400",
385						   "pciclass0604";
386
387				reg = <0x9800 0x0 0x0 0x0 0x0>;
388				interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
389				interrupt-parent = <&pic>;
390
391				#interrupt-cells = <1>;
392				interrupt-map-mask = <0 0 0 0>;
393				interrupt-map = <0 0 0 0 &pic 38 IRQ_TYPE_LEVEL_HIGH>;
394			};
395
396			pci_bridge@14,0 {
397				compatible = "pci0014,7a19.1",
398						   "pci0014,7a19",
399						   "pciclass060400",
400						   "pciclass0604";
401
402				reg = <0xa000 0x0 0x0 0x0 0x0>;
403				interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
404				interrupt-parent = <&pic>;
405
406				#interrupt-cells = <1>;
407				interrupt-map-mask = <0 0 0 0>;
408				interrupt-map = <0 0 0 0 &pic 39 IRQ_TYPE_LEVEL_HIGH>;
409			};
410		};
411
412		isa@18000000 {
413			compatible = "isa";
414			#address-cells = <2>;
415			#size-cells = <1>;
416			ranges = <1 0 0 0x18000000 0x20000>;
417		};
418	};
419};
420