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
191				reg = <0x1800 0x0 0x0 0x0 0x0>;
192				interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
193					     <13 IRQ_TYPE_LEVEL_HIGH>;
194				interrupt-names = "macirq", "eth_lpi";
195				interrupt-parent = <&pic>;
196				phy-mode = "rgmii";
197				mdio {
198					#address-cells = <1>;
199					#size-cells = <0>;
200					compatible = "snps,dwmac-mdio";
201					phy0: ethernet-phy@0 {
202						reg = <0>;
203					};
204				};
205			};
206
207			gmac@3,1 {
208				compatible = "pci0014,7a03.0",
209						   "pci0014,7a03",
210						   "pciclass020000",
211						   "pciclass0200";
212
213				reg = <0x1900 0x0 0x0 0x0 0x0>;
214				interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
215					     <15 IRQ_TYPE_LEVEL_HIGH>;
216				interrupt-names = "macirq", "eth_lpi";
217				interrupt-parent = <&pic>;
218				phy-mode = "rgmii";
219				mdio {
220					#address-cells = <1>;
221					#size-cells = <0>;
222					compatible = "snps,dwmac-mdio";
223					phy1: ethernet-phy@1 {
224						reg = <0>;
225					};
226				};
227			};
228
229			pci_bridge@9,0 {
230				compatible = "pci0014,7a19.1",
231						   "pci0014,7a19",
232						   "pciclass060400",
233						   "pciclass0604";
234
235				reg = <0x4800 0x0 0x0 0x0 0x0>;
236				interrupts = <32 IRQ_TYPE_LEVEL_HIGH>;
237				interrupt-parent = <&pic>;
238
239				#interrupt-cells = <1>;
240				interrupt-map-mask = <0 0 0 0>;
241				interrupt-map = <0 0 0 0 &pic 32 IRQ_TYPE_LEVEL_HIGH>;
242			};
243
244			pci_bridge@a,0 {
245				compatible = "pci0014,7a09.1",
246						   "pci0014,7a09",
247						   "pciclass060400",
248						   "pciclass0604";
249
250				reg = <0x5000 0x0 0x0 0x0 0x0>;
251				interrupts = <33 IRQ_TYPE_LEVEL_HIGH>;
252				interrupt-parent = <&pic>;
253
254				#interrupt-cells = <1>;
255				interrupt-map-mask = <0 0 0 0>;
256				interrupt-map = <0 0 0 0 &pic 33 IRQ_TYPE_LEVEL_HIGH>;
257			};
258
259			pci_bridge@b,0 {
260				compatible = "pci0014,7a09.1",
261						   "pci0014,7a09",
262						   "pciclass060400",
263						   "pciclass0604";
264
265				reg = <0x5800 0x0 0x0 0x0 0x0>;
266				interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
267				interrupt-parent = <&pic>;
268
269				#interrupt-cells = <1>;
270				interrupt-map-mask = <0 0 0 0>;
271				interrupt-map = <0 0 0 0 &pic 34 IRQ_TYPE_LEVEL_HIGH>;
272			};
273
274			pci_bridge@c,0 {
275				compatible = "pci0014,7a09.1",
276						   "pci0014,7a09",
277						   "pciclass060400",
278						   "pciclass0604";
279
280				reg = <0x6000 0x0 0x0 0x0 0x0>;
281				interrupts = <35 IRQ_TYPE_LEVEL_HIGH>;
282				interrupt-parent = <&pic>;
283
284				#interrupt-cells = <1>;
285				interrupt-map-mask = <0 0 0 0>;
286				interrupt-map = <0 0 0 0 &pic 35 IRQ_TYPE_LEVEL_HIGH>;
287			};
288
289			pci_bridge@d,0 {
290				compatible = "pci0014,7a19.1",
291						   "pci0014,7a19",
292						   "pciclass060400",
293						   "pciclass0604";
294
295				reg = <0x6800 0x0 0x0 0x0 0x0>;
296				interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
297				interrupt-parent = <&pic>;
298
299				#interrupt-cells = <1>;
300				interrupt-map-mask = <0 0 0 0>;
301				interrupt-map = <0 0 0 0 &pic 36 IRQ_TYPE_LEVEL_HIGH>;
302			};
303
304			pci_bridge@e,0 {
305				compatible = "pci0014,7a09.1",
306						   "pci0014,7a09",
307						   "pciclass060400",
308						   "pciclass0604";
309
310				reg = <0x7000 0x0 0x0 0x0 0x0>;
311				interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
312				interrupt-parent = <&pic>;
313
314				#interrupt-cells = <1>;
315				interrupt-map-mask = <0 0 0 0>;
316				interrupt-map = <0 0 0 0 &pic 37 IRQ_TYPE_LEVEL_HIGH>;
317			};
318
319			pci_bridge@f,0 {
320				compatible = "pci0014,7a29.1",
321						   "pci0014,7a29",
322						   "pciclass060400",
323						   "pciclass0604";
324
325				reg = <0x7800 0x0 0x0 0x0 0x0>;
326				interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
327				interrupt-parent = <&pic>;
328
329				#interrupt-cells = <1>;
330				interrupt-map-mask = <0 0 0 0>;
331				interrupt-map = <0 0 0 0 &pic 40 IRQ_TYPE_LEVEL_HIGH>;
332			};
333
334			pci_bridge@10,0 {
335				compatible = "pci0014,7a19.1",
336						   "pci0014,7a19",
337						   "pciclass060400",
338						   "pciclass0604";
339
340				reg = <0x8000 0x0 0x0 0x0 0x0>;
341				interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
342				interrupt-parent = <&pic>;
343
344				#interrupt-cells = <1>;
345				interrupt-map-mask = <0 0 0 0>;
346				interrupt-map = <0 0 0 0 &pic 41 IRQ_TYPE_LEVEL_HIGH>;
347			};
348
349			pci_bridge@11,0 {
350				compatible = "pci0014,7a29.1",
351						   "pci0014,7a29",
352						   "pciclass060400",
353						   "pciclass0604";
354
355				reg = <0x8800 0x0 0x0 0x0 0x0>;
356				interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
357				interrupt-parent = <&pic>;
358
359				#interrupt-cells = <1>;
360				interrupt-map-mask = <0 0 0 0>;
361				interrupt-map = <0 0 0 0 &pic 42 IRQ_TYPE_LEVEL_HIGH>;
362			};
363
364			pci_bridge@12,0 {
365				compatible = "pci0014,7a19.1",
366						   "pci0014,7a19",
367						   "pciclass060400",
368						   "pciclass0604";
369
370				reg = <0x9000 0x0 0x0 0x0 0x0>;
371				interrupts = <43 IRQ_TYPE_LEVEL_HIGH>;
372				interrupt-parent = <&pic>;
373
374				#interrupt-cells = <1>;
375				interrupt-map-mask = <0 0 0 0>;
376				interrupt-map = <0 0 0 0 &pic 43 IRQ_TYPE_LEVEL_HIGH>;
377			};
378
379			pci_bridge@13,0 {
380				compatible = "pci0014,7a29.1",
381						   "pci0014,7a29",
382						   "pciclass060400",
383						   "pciclass0604";
384
385				reg = <0x9800 0x0 0x0 0x0 0x0>;
386				interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
387				interrupt-parent = <&pic>;
388
389				#interrupt-cells = <1>;
390				interrupt-map-mask = <0 0 0 0>;
391				interrupt-map = <0 0 0 0 &pic 38 IRQ_TYPE_LEVEL_HIGH>;
392			};
393
394			pci_bridge@14,0 {
395				compatible = "pci0014,7a19.1",
396						   "pci0014,7a19",
397						   "pciclass060400",
398						   "pciclass0604";
399
400				reg = <0xa000 0x0 0x0 0x0 0x0>;
401				interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
402				interrupt-parent = <&pic>;
403
404				#interrupt-cells = <1>;
405				interrupt-map-mask = <0 0 0 0>;
406				interrupt-map = <0 0 0 0 &pic 39 IRQ_TYPE_LEVEL_HIGH>;
407			};
408		};
409
410		isa {
411			compatible = "isa";
412			#address-cells = <2>;
413			#size-cells = <1>;
414			ranges = <1 0 0 0x18000000 0x20000>;
415		};
416	};
417};
418