1 // SPDX-License-Identifier: GPL-2.0
2 #include <dt-bindings/clock/ingenic,tcu.h>
3 #include <dt-bindings/clock/ingenic,x1000-cgu.h>
4 #include <dt-bindings/dma/x1000-dma.h>
9 compatible = "ingenic,x1000", "ingenic,x1000e";
17 compatible = "ingenic,xburst-fpu1.0-mxu1.1";
20 clocks = <&cgu X1000_CLK_CPU>;
25 cpuintc: interrupt-controller {
27 #interrupt-cells = <1>;
29 compatible = "mti,cpu-interrupt-controller";
32 intc: interrupt-controller@10001000 {
33 compatible = "ingenic,x1000-intc", "ingenic,jz4780-intc";
34 reg = <0x10001000 0x50>;
37 #interrupt-cells = <1>;
39 interrupt-parent = <&cpuintc>;
44 compatible = "fixed-clock";
49 compatible = "fixed-clock";
51 clock-frequency = <32768>;
54 cgu: x1000-cgu@10000000 {
55 compatible = "ingenic,x1000-cgu", "simple-mfd";
56 reg = <0x10000000 0x100>;
59 ranges = <0x0 0x10000000 0x100>;
63 clocks = <&exclk>, <&rtclk>;
64 clock-names = "ext", "rtc";
67 compatible = "ingenic,x1000-phy";
70 clocks = <&cgu X1000_CLK_OTGPHY>;
78 compatible = "ingenic,x1000-rng";
84 mac_phy_ctrl: mac-phy-ctrl@e8 {
85 compatible = "syscon";
91 compatible = "ingenic,x1000-ost";
92 reg = <0x12000000 0x3c>;
96 clocks = <&cgu X1000_CLK_OST>;
99 interrupt-parent = <&cpuintc>;
103 tcu: timer@10002000 {
104 compatible = "ingenic,x1000-tcu", "simple-mfd";
105 reg = <0x10002000 0x1000>;
106 #address-cells = <1>;
108 ranges = <0x0 0x10002000 0x1000>;
112 clocks = <&cgu X1000_CLK_RTCLK>,
113 <&cgu X1000_CLK_EXCLK>,
114 <&cgu X1000_CLK_PCLK>,
115 <&cgu X1000_CLK_TCU>;
116 clock-names = "rtc", "ext", "pclk", "tcu";
118 interrupt-controller;
119 #interrupt-cells = <1>;
121 interrupt-parent = <&intc>;
122 interrupts = <27 26 25>;
125 compatible = "ingenic,x1000-watchdog", "ingenic,jz4780-watchdog";
128 clocks = <&tcu TCU_CLK_WDT>;
133 compatible = "ingenic,x1000-pwm";
138 clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>,
139 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>,
140 <&tcu TCU_CLK_TIMER4>;
141 clock-names = "timer0", "timer1", "timer2", "timer3", "timer4";
146 compatible = "ingenic,x1000-rtc", "ingenic,jz4780-rtc";
147 reg = <0x10003000 0x4c>;
149 interrupt-parent = <&intc>;
152 clocks = <&cgu X1000_CLK_RTCLK>;
156 pinctrl: pin-controller@10010000 {
157 compatible = "ingenic,x1000-pinctrl";
158 reg = <0x10010000 0x800>;
159 #address-cells = <1>;
163 compatible = "ingenic,x1000-gpio";
167 gpio-ranges = <&pinctrl 0 0 32>;
170 interrupt-controller;
171 #interrupt-cells = <2>;
173 interrupt-parent = <&intc>;
178 compatible = "ingenic,x1000-gpio";
182 gpio-ranges = <&pinctrl 0 32 32>;
185 interrupt-controller;
186 #interrupt-cells = <2>;
188 interrupt-parent = <&intc>;
193 compatible = "ingenic,x1000-gpio";
197 gpio-ranges = <&pinctrl 0 64 32>;
200 interrupt-controller;
201 #interrupt-cells = <2>;
203 interrupt-parent = <&intc>;
208 compatible = "ingenic,x1000-gpio";
212 gpio-ranges = <&pinctrl 0 96 32>;
215 interrupt-controller;
216 #interrupt-cells = <2>;
218 interrupt-parent = <&intc>;
223 uart0: serial@10030000 {
224 compatible = "ingenic,x1000-uart";
225 reg = <0x10030000 0x100>;
227 interrupt-parent = <&intc>;
230 clocks = <&exclk>, <&cgu X1000_CLK_UART0>;
231 clock-names = "baud", "module";
236 uart1: serial@10031000 {
237 compatible = "ingenic,x1000-uart";
238 reg = <0x10031000 0x100>;
240 interrupt-parent = <&intc>;
243 clocks = <&exclk>, <&cgu X1000_CLK_UART1>;
244 clock-names = "baud", "module";
249 uart2: serial@10032000 {
250 compatible = "ingenic,x1000-uart";
251 reg = <0x10032000 0x100>;
253 interrupt-parent = <&intc>;
256 clocks = <&exclk>, <&cgu X1000_CLK_UART2>;
257 clock-names = "baud", "module";
263 compatible = "ingenic,x1000-spi";
264 reg = <0x10043000 0x20>;
265 #address-cells = <1>;
268 interrupt-parent = <&intc>;
271 clocks = <&cgu X1000_CLK_SSI>;
274 dmas = <&pdma X1000_DMA_SSI0_RX 0xffffffff>,
275 <&pdma X1000_DMA_SSI0_TX 0xffffffff>;
276 dma-names = "rx", "tx";
281 i2c0: i2c-controller@10050000 {
282 compatible = "ingenic,x1000-i2c";
283 reg = <0x10050000 0x1000>;
284 #address-cells = <1>;
287 interrupt-parent = <&intc>;
290 clocks = <&cgu X1000_CLK_I2C0>;
295 i2c1: i2c-controller@10051000 {
296 compatible = "ingenic,x1000-i2c";
297 reg = <0x10051000 0x1000>;
298 #address-cells = <1>;
301 interrupt-parent = <&intc>;
304 clocks = <&cgu X1000_CLK_I2C1>;
309 i2c2: i2c-controller@10052000 {
310 compatible = "ingenic,x1000-i2c";
311 reg = <0x10052000 0x1000>;
312 #address-cells = <1>;
315 interrupt-parent = <&intc>;
318 clocks = <&cgu X1000_CLK_I2C2>;
323 pdma: dma-controller@13420000 {
324 compatible = "ingenic,x1000-dma";
325 reg = <0x13420000 0x400>, <0x13421000 0x40>;
329 interrupt-parent = <&intc>;
332 clocks = <&cgu X1000_CLK_PDMA>;
336 compatible = "ingenic,x1000-mmc";
337 reg = <0x13450000 0x1000>;
339 interrupt-parent = <&intc>;
342 clocks = <&cgu X1000_CLK_MSC0>;
349 dmas = <&pdma X1000_DMA_MSC0_RX 0xffffffff>,
350 <&pdma X1000_DMA_MSC0_TX 0xffffffff>;
351 dma-names = "rx", "tx";
357 compatible = "ingenic,x1000-mmc";
358 reg = <0x13460000 0x1000>;
360 interrupt-parent = <&intc>;
363 clocks = <&cgu X1000_CLK_MSC1>;
370 dmas = <&pdma X1000_DMA_MSC1_RX 0xffffffff>,
371 <&pdma X1000_DMA_MSC1_TX 0xffffffff>;
372 dma-names = "rx", "tx";
377 mac: ethernet@134b0000 {
378 compatible = "ingenic,x1000-mac", "snps,dwmac";
379 reg = <0x134b0000 0x2000>;
381 interrupt-parent = <&intc>;
383 interrupt-names = "macirq";
385 clocks = <&cgu X1000_CLK_MAC>;
386 clock-names = "stmmaceth";
388 mode-reg = <&mac_phy_ctrl>;
393 compatible = "snps,dwmac-mdio";
394 #address-cells = <1>;
402 compatible = "ingenic,x1000-otg";
403 reg = <0x13500000 0x40000>;
405 interrupt-parent = <&intc>;
408 clocks = <&cgu X1000_CLK_OTG>;
412 phy-names = "usb2-phy";
414 g-rx-fifo-size = <768>;
415 g-np-tx-fifo-size = <256>;
416 g-tx-fifo-size = <256 256 256 256 256 256 256 512>;
421 aic: audio-controller@10020000 {
422 compatible = "ingenic,x1000-i2s";
423 reg = <0x10020000 0x38>;
425 #sound-dai-cells = <0>;
427 interrupt-parent = <&intc>;
430 clocks = <&cgu X1000_CLK_AIC>,
431 <&cgu X1000_CLK_I2S>;
432 clock-names = "aic", "i2s";
434 dmas = <&pdma X1000_DMA_I2S0_RX 0xffffffff>,
435 <&pdma X1000_DMA_I2S0_TX 0xffffffff>;
436 dma-names = "rx", "tx";