xref: /linux/arch/mips/boot/dts/ingenic/x1000.dtsi (revision dd9a41bc61cc62d38306465ed62373b98df0049e)
1// SPDX-License-Identifier: GPL-2.0
2#include <dt-bindings/clock/ingenic,tcu.h>
3#include <dt-bindings/clock/x1000-cgu.h>
4#include <dt-bindings/dma/x1000-dma.h>
5
6/ {
7	#address-cells = <1>;
8	#size-cells = <1>;
9	compatible = "ingenic,x1000", "ingenic,x1000e";
10
11	cpuintc: interrupt-controller {
12		#address-cells = <0>;
13		#interrupt-cells = <1>;
14		interrupt-controller;
15		compatible = "mti,cpu-interrupt-controller";
16	};
17
18	intc: interrupt-controller@10001000 {
19		compatible = "ingenic,x1000-intc", "ingenic,jz4780-intc";
20		reg = <0x10001000 0x50>;
21
22		interrupt-controller;
23		#interrupt-cells = <1>;
24
25		interrupt-parent = <&cpuintc>;
26		interrupts = <2>;
27	};
28
29	exclk: ext {
30		compatible = "fixed-clock";
31		#clock-cells = <0>;
32	};
33
34	rtclk: rtc {
35		compatible = "fixed-clock";
36		#clock-cells = <0>;
37		clock-frequency = <32768>;
38	};
39
40	cgu: x1000-cgu@10000000 {
41		compatible = "ingenic,x1000-cgu";
42		reg = <0x10000000 0x100>;
43
44		#clock-cells = <1>;
45
46		clocks = <&exclk>, <&rtclk>;
47		clock-names = "ext", "rtc";
48	};
49
50	tcu: timer@10002000 {
51		compatible = "ingenic,x1000-tcu",
52				 "ingenic,jz4770-tcu",
53				 "simple-mfd";
54		reg = <0x10002000 0x1000>;
55		#address-cells = <1>;
56		#size-cells = <1>;
57		ranges = <0x0 0x10002000 0x1000>;
58
59		#clock-cells = <1>;
60
61		clocks = <&cgu X1000_CLK_RTCLK
62			  &cgu X1000_CLK_EXCLK
63			  &cgu X1000_CLK_PCLK>;
64		clock-names = "rtc", "ext", "pclk";
65
66		interrupt-controller;
67		#interrupt-cells = <1>;
68
69		interrupt-parent = <&intc>;
70		interrupts = <27 26 25>;
71
72		wdt: watchdog@0 {
73			compatible = "ingenic,x1000-watchdog", "ingenic,jz4780-watchdog";
74			reg = <0x0 0x10>;
75
76			clocks = <&tcu TCU_CLK_WDT>;
77			clock-names = "wdt";
78		};
79	};
80
81	rtc: rtc@10003000 {
82		compatible = "ingenic,x1000-rtc", "ingenic,jz4780-rtc";
83		reg = <0x10003000 0x4c>;
84
85		interrupt-parent = <&intc>;
86		interrupts = <32>;
87
88		clocks = <&cgu X1000_CLK_RTCLK>;
89		clock-names = "rtc";
90	};
91
92	pinctrl: pin-controller@10010000 {
93		compatible = "ingenic,x1000-pinctrl";
94		reg = <0x10010000 0x800>;
95		#address-cells = <1>;
96		#size-cells = <0>;
97
98		gpa: gpio@0 {
99			compatible = "ingenic,x1000-gpio";
100			reg = <0>;
101
102			gpio-controller;
103			gpio-ranges = <&pinctrl 0 0 32>;
104			#gpio-cells = <2>;
105
106			interrupt-controller;
107			#interrupt-cells = <2>;
108
109			interrupt-parent = <&intc>;
110			interrupts = <17>;
111		};
112
113		gpb: gpio@1 {
114			compatible = "ingenic,x1000-gpio";
115			reg = <1>;
116
117			gpio-controller;
118			gpio-ranges = <&pinctrl 0 32 32>;
119			#gpio-cells = <2>;
120
121			interrupt-controller;
122			#interrupt-cells = <2>;
123
124			interrupt-parent = <&intc>;
125			interrupts = <16>;
126		};
127
128		gpc: gpio@2 {
129			compatible = "ingenic,x1000-gpio";
130			reg = <2>;
131
132			gpio-controller;
133			gpio-ranges = <&pinctrl 0 64 32>;
134			#gpio-cells = <2>;
135
136			interrupt-controller;
137			#interrupt-cells = <2>;
138
139			interrupt-parent = <&intc>;
140			interrupts = <15>;
141		};
142
143		gpd: gpio@3 {
144			compatible = "ingenic,x1000-gpio";
145			reg = <3>;
146
147			gpio-controller;
148			gpio-ranges = <&pinctrl 0 96 32>;
149			#gpio-cells = <2>;
150
151			interrupt-controller;
152			#interrupt-cells = <2>;
153
154			interrupt-parent = <&intc>;
155			interrupts = <14>;
156		};
157	};
158
159	i2c0: i2c-controller@10050000 {
160		compatible = "ingenic,x1000-i2c";
161		reg = <0x10050000 0x1000>;
162		#address-cells = <1>;
163		#size-cells = <0>;
164
165		interrupt-parent = <&intc>;
166		interrupts = <60>;
167
168		clocks = <&cgu X1000_CLK_I2C0>;
169
170		status = "disabled";
171	};
172
173	i2c1: i2c-controller@10051000 {
174		compatible = "ingenic,x1000-i2c";
175		reg = <0x10051000 0x1000>;
176		#address-cells = <1>;
177		#size-cells = <0>;
178
179		interrupt-parent = <&intc>;
180		interrupts = <59>;
181
182		clocks = <&cgu X1000_CLK_I2C1>;
183
184		status = "disabled";
185	};
186
187	i2c2: i2c-controller@10052000 {
188		compatible = "ingenic,x1000-i2c";
189		reg = <0x10052000 0x1000>;
190		#address-cells = <1>;
191		#size-cells = <0>;
192
193		interrupt-parent = <&intc>;
194		interrupts = <58>;
195
196		clocks = <&cgu X1000_CLK_I2C2>;
197
198		status = "disabled";
199	};
200
201	uart0: serial@10030000 {
202		compatible = "ingenic,x1000-uart";
203		reg = <0x10030000 0x100>;
204
205		interrupt-parent = <&intc>;
206		interrupts = <51>;
207
208		clocks = <&exclk>, <&cgu X1000_CLK_UART0>;
209		clock-names = "baud", "module";
210
211		status = "disabled";
212	};
213
214	uart1: serial@10031000 {
215		compatible = "ingenic,x1000-uart";
216		reg = <0x10031000 0x100>;
217
218		interrupt-parent = <&intc>;
219		interrupts = <50>;
220
221		clocks = <&exclk>, <&cgu X1000_CLK_UART1>;
222		clock-names = "baud", "module";
223
224		status = "disabled";
225	};
226
227	uart2: serial@10032000 {
228		compatible = "ingenic,x1000-uart";
229		reg = <0x10032000 0x100>;
230
231		interrupt-parent = <&intc>;
232		interrupts = <49>;
233
234		clocks = <&exclk>, <&cgu X1000_CLK_UART2>;
235		clock-names = "baud", "module";
236
237		status = "disabled";
238	};
239
240	pdma: dma-controller@13420000 {
241		compatible = "ingenic,x1000-dma";
242		reg = <0x13420000 0x400
243			   0x13421000 0x40>;
244		#dma-cells = <2>;
245
246		interrupt-parent = <&intc>;
247		interrupts = <10>;
248
249		clocks = <&cgu X1000_CLK_PDMA>;
250	};
251
252	mac: ethernet@134b0000 {
253		compatible = "ingenic,x1000-mac", "snps,dwmac";
254		reg = <0x134b0000 0x2000>;
255
256		interrupt-parent = <&intc>;
257		interrupts = <55>;
258		interrupt-names = "macirq";
259
260		clocks = <&cgu X1000_CLK_MAC>;
261		clock-names = "stmmaceth";
262
263		status = "disabled";
264
265		mdio: mdio {
266			compatible = "snps,dwmac-mdio";
267			#address-cells = <1>;
268			#size-cells = <0>;
269
270			status = "disabled";
271		};
272	};
273
274	msc0: mmc@13450000 {
275		compatible = "ingenic,x1000-mmc";
276		reg = <0x13450000 0x1000>;
277
278		interrupt-parent = <&intc>;
279		interrupts = <37>;
280
281		clocks = <&cgu X1000_CLK_MSC0>;
282		clock-names = "mmc";
283
284		cap-sd-highspeed;
285		cap-mmc-highspeed;
286		cap-sdio-irq;
287
288		dmas = <&pdma X1000_DMA_MSC0_RX 0xffffffff>,
289			   <&pdma X1000_DMA_MSC0_TX 0xffffffff>;
290		dma-names = "rx", "tx";
291
292		status = "disabled";
293	};
294
295	msc1: mmc@13460000 {
296		compatible = "ingenic,x1000-mmc";
297		reg = <0x13460000 0x1000>;
298
299		interrupt-parent = <&intc>;
300		interrupts = <36>;
301
302		clocks = <&cgu X1000_CLK_MSC1>;
303		clock-names = "mmc";
304
305		cap-sd-highspeed;
306		cap-mmc-highspeed;
307		cap-sdio-irq;
308
309		dmas = <&pdma X1000_DMA_MSC1_RX 0xffffffff>,
310			   <&pdma X1000_DMA_MSC1_TX 0xffffffff>;
311		dma-names = "rx", "tx";
312
313		status = "disabled";
314	};
315};
316