xref: /linux/arch/mips/boot/dts/loongson/loongson1b.dtsi (revision 6a74422b9710e987c7d6b85a1ade7330b1e61626)
1*6428fcf2SKeguang Zhang// SPDX-License-Identifier: GPL-2.0
2*6428fcf2SKeguang Zhang/*
3*6428fcf2SKeguang Zhang * Copyright (c) 2023-2025 Keguang Zhang <keguang.zhang@gmail.com>
4*6428fcf2SKeguang Zhang */
5*6428fcf2SKeguang Zhang
6*6428fcf2SKeguang Zhang/dts-v1/;
7*6428fcf2SKeguang Zhang#include "loongson1.dtsi"
8*6428fcf2SKeguang Zhang
9*6428fcf2SKeguang Zhang/ {
10*6428fcf2SKeguang Zhang	cpu_opp_table: opp-table {
11*6428fcf2SKeguang Zhang		compatible = "operating-points-v2";
12*6428fcf2SKeguang Zhang		opp-shared;
13*6428fcf2SKeguang Zhang
14*6428fcf2SKeguang Zhang		opp-44000000 {
15*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <44000000>;
16*6428fcf2SKeguang Zhang		};
17*6428fcf2SKeguang Zhang		opp-47142000 {
18*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <47142000>;
19*6428fcf2SKeguang Zhang		};
20*6428fcf2SKeguang Zhang		opp-50769000 {
21*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <50769000>;
22*6428fcf2SKeguang Zhang		};
23*6428fcf2SKeguang Zhang		opp-55000000 {
24*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <55000000>;
25*6428fcf2SKeguang Zhang		};
26*6428fcf2SKeguang Zhang		opp-60000000 {
27*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <60000000>;
28*6428fcf2SKeguang Zhang		};
29*6428fcf2SKeguang Zhang		opp-66000000 {
30*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <66000000>;
31*6428fcf2SKeguang Zhang		};
32*6428fcf2SKeguang Zhang		opp-73333000 {
33*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <73333000>;
34*6428fcf2SKeguang Zhang		};
35*6428fcf2SKeguang Zhang		opp-82500000 {
36*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <82500000>;
37*6428fcf2SKeguang Zhang		};
38*6428fcf2SKeguang Zhang		opp-94285000 {
39*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <94285000>;
40*6428fcf2SKeguang Zhang		};
41*6428fcf2SKeguang Zhang		opp-110000000 {
42*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <110000000>;
43*6428fcf2SKeguang Zhang		};
44*6428fcf2SKeguang Zhang		opp-132000000 {
45*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <132000000>;
46*6428fcf2SKeguang Zhang		};
47*6428fcf2SKeguang Zhang		opp-165000000 {
48*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <165000000>;
49*6428fcf2SKeguang Zhang		};
50*6428fcf2SKeguang Zhang		opp-220000000 {
51*6428fcf2SKeguang Zhang			opp-hz = /bits/ 64 <220000000>;
52*6428fcf2SKeguang Zhang		};
53*6428fcf2SKeguang Zhang	};
54*6428fcf2SKeguang Zhang
55*6428fcf2SKeguang Zhang	clkc: clock-controller@1fe78030 {
56*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-clk";
57*6428fcf2SKeguang Zhang		reg = <0x1fe78030 0x8>;
58*6428fcf2SKeguang Zhang		clocks = <&xtal>;
59*6428fcf2SKeguang Zhang		#clock-cells = <1>;
60*6428fcf2SKeguang Zhang	};
61*6428fcf2SKeguang Zhang};
62*6428fcf2SKeguang Zhang
63*6428fcf2SKeguang Zhang&soc {
64*6428fcf2SKeguang Zhang	syscon: syscon@420 {
65*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-syscon", "syscon";
66*6428fcf2SKeguang Zhang		reg = <0x420 0x8>;
67*6428fcf2SKeguang Zhang	};
68*6428fcf2SKeguang Zhang
69*6428fcf2SKeguang Zhang	dma: dma-controller@1160 {
70*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-apbdma";
71*6428fcf2SKeguang Zhang		reg = <0x1160 0x4>;
72*6428fcf2SKeguang Zhang		interrupt-parent = <&intc0>;
73*6428fcf2SKeguang Zhang		interrupts = <13 IRQ_TYPE_EDGE_RISING>,
74*6428fcf2SKeguang Zhang			     <14 IRQ_TYPE_EDGE_RISING>,
75*6428fcf2SKeguang Zhang			     <15 IRQ_TYPE_EDGE_RISING>;
76*6428fcf2SKeguang Zhang		interrupt-names = "ch0", "ch1", "ch2";
77*6428fcf2SKeguang Zhang		#dma-cells = <1>;
78*6428fcf2SKeguang Zhang	};
79*6428fcf2SKeguang Zhang
80*6428fcf2SKeguang Zhang	ehci: usb@100000 {
81*6428fcf2SKeguang Zhang		compatible = "generic-ehci";
82*6428fcf2SKeguang Zhang		reg = <0x100000 0x100>;
83*6428fcf2SKeguang Zhang		interrupt-parent = <&intc1>;
84*6428fcf2SKeguang Zhang		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
85*6428fcf2SKeguang Zhang		status = "disabled";
86*6428fcf2SKeguang Zhang	};
87*6428fcf2SKeguang Zhang
88*6428fcf2SKeguang Zhang	ohci: usb@108000 {
89*6428fcf2SKeguang Zhang		compatible = "generic-ohci";
90*6428fcf2SKeguang Zhang		reg = <0x108000 0x100>;
91*6428fcf2SKeguang Zhang		interrupt-parent = <&intc1>;
92*6428fcf2SKeguang Zhang		interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
93*6428fcf2SKeguang Zhang		status = "disabled";
94*6428fcf2SKeguang Zhang	};
95*6428fcf2SKeguang Zhang
96*6428fcf2SKeguang Zhang	gmac0: ethernet@110000 {
97*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-gmac", "snps,dwmac-3.50a";
98*6428fcf2SKeguang Zhang		reg = <0x110000 0x10000>;
99*6428fcf2SKeguang Zhang		clocks = <&clkc LS1X_CLKID_AHB>;
100*6428fcf2SKeguang Zhang		clock-names = "stmmaceth";
101*6428fcf2SKeguang Zhang		interrupt-parent = <&intc1>;
102*6428fcf2SKeguang Zhang		interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
103*6428fcf2SKeguang Zhang		interrupt-names = "macirq";
104*6428fcf2SKeguang Zhang		loongson,ls1-syscon = <&syscon>;
105*6428fcf2SKeguang Zhang		snps,pbl = <1>;
106*6428fcf2SKeguang Zhang		status = "disabled";
107*6428fcf2SKeguang Zhang	};
108*6428fcf2SKeguang Zhang
109*6428fcf2SKeguang Zhang	gmac1: ethernet@120000 {
110*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-gmac", "snps,dwmac-3.50a";
111*6428fcf2SKeguang Zhang		reg = <0x120000 0x10000>;
112*6428fcf2SKeguang Zhang		clocks = <&clkc LS1X_CLKID_AHB>;
113*6428fcf2SKeguang Zhang		clock-names = "stmmaceth";
114*6428fcf2SKeguang Zhang		interrupt-parent = <&intc1>;
115*6428fcf2SKeguang Zhang		interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
116*6428fcf2SKeguang Zhang		interrupt-names = "macirq";
117*6428fcf2SKeguang Zhang		loongson,ls1-syscon = <&syscon>;
118*6428fcf2SKeguang Zhang		snps,pbl = <1>;
119*6428fcf2SKeguang Zhang		status = "disabled";
120*6428fcf2SKeguang Zhang	};
121*6428fcf2SKeguang Zhang};
122*6428fcf2SKeguang Zhang
123*6428fcf2SKeguang Zhang&apb {
124*6428fcf2SKeguang Zhang	clocksource: timer@1c030 {
125*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-pwmtimer";
126*6428fcf2SKeguang Zhang		reg = <0x1c030 0x10>;
127*6428fcf2SKeguang Zhang		clocks = <&clkc LS1X_CLKID_APB>;
128*6428fcf2SKeguang Zhang		interrupt-parent = <&intc0>;
129*6428fcf2SKeguang Zhang		interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
130*6428fcf2SKeguang Zhang	};
131*6428fcf2SKeguang Zhang
132*6428fcf2SKeguang Zhang	watchdog: watchdog@1c060 {
133*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-wdt";
134*6428fcf2SKeguang Zhang		reg = <0x1c060 0xc>;
135*6428fcf2SKeguang Zhang		clocks = <&clkc LS1X_CLKID_APB>;
136*6428fcf2SKeguang Zhang		status = "disabled";
137*6428fcf2SKeguang Zhang	};
138*6428fcf2SKeguang Zhang
139*6428fcf2SKeguang Zhang	rtc: rtc@24000 {
140*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-rtc";
141*6428fcf2SKeguang Zhang		reg = <0x24000 0x78>;
142*6428fcf2SKeguang Zhang		interrupt-parent = <&intc0>;
143*6428fcf2SKeguang Zhang		interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
144*6428fcf2SKeguang Zhang		status = "disabled";
145*6428fcf2SKeguang Zhang	};
146*6428fcf2SKeguang Zhang
147*6428fcf2SKeguang Zhang	ac97: audio-controller@34000 {
148*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-ac97";
149*6428fcf2SKeguang Zhang		reg = <0x34000 0x60>, <0x32420 0x4>, <0x34c4c 0x4>;
150*6428fcf2SKeguang Zhang		reg-names = "ac97", "audio-tx", "audio-rx";
151*6428fcf2SKeguang Zhang		dmas = <&dma 1>, <&dma 2>;
152*6428fcf2SKeguang Zhang		dma-names = "tx", "rx";
153*6428fcf2SKeguang Zhang		#sound-dai-cells = <0>;
154*6428fcf2SKeguang Zhang		status = "disabled";
155*6428fcf2SKeguang Zhang	};
156*6428fcf2SKeguang Zhang
157*6428fcf2SKeguang Zhang	nand: nand-controller@38000 {
158*6428fcf2SKeguang Zhang		compatible = "loongson,ls1b-nand-controller";
159*6428fcf2SKeguang Zhang		reg = <0x38000 0x24>, <0x38040 0x4>;
160*6428fcf2SKeguang Zhang		reg-names = "nand", "nand-dma";
161*6428fcf2SKeguang Zhang		dmas = <&dma 0>;
162*6428fcf2SKeguang Zhang		dma-names = "rxtx";
163*6428fcf2SKeguang Zhang		#address-cells = <1>;
164*6428fcf2SKeguang Zhang		#size-cells = <0>;
165*6428fcf2SKeguang Zhang		status = "disabled";
166*6428fcf2SKeguang Zhang
167*6428fcf2SKeguang Zhang		nand@0 {
168*6428fcf2SKeguang Zhang			reg = <0>;
169*6428fcf2SKeguang Zhang			label = "ls1x-nand";
170*6428fcf2SKeguang Zhang			nand-use-soft-ecc-engine;
171*6428fcf2SKeguang Zhang			nand-ecc-algo = "hamming";
172*6428fcf2SKeguang Zhang		};
173*6428fcf2SKeguang Zhang	};
174*6428fcf2SKeguang Zhang};
175*6428fcf2SKeguang Zhang
176*6428fcf2SKeguang Zhang&cpu0 {
177*6428fcf2SKeguang Zhang	operating-points-v2 = <&cpu_opp_table>;
178*6428fcf2SKeguang Zhang};
179*6428fcf2SKeguang Zhang
180*6428fcf2SKeguang Zhang&gpio0 {
181*6428fcf2SKeguang Zhang	ngpios = <31>;
182*6428fcf2SKeguang Zhang};
183*6428fcf2SKeguang Zhang
184*6428fcf2SKeguang Zhang&gpio1 {
185*6428fcf2SKeguang Zhang	ngpios = <30>;
186*6428fcf2SKeguang Zhang};
187*6428fcf2SKeguang Zhang
188*6428fcf2SKeguang Zhang&uart1 {
189*6428fcf2SKeguang Zhang	interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
190*6428fcf2SKeguang Zhang};
191*6428fcf2SKeguang Zhang
192*6428fcf2SKeguang Zhang&uart2 {
193*6428fcf2SKeguang Zhang	interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
194*6428fcf2SKeguang Zhang};
195*6428fcf2SKeguang Zhang
196*6428fcf2SKeguang Zhang&uart3 {
197*6428fcf2SKeguang Zhang	interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
198*6428fcf2SKeguang Zhang};
199