xref: /openbmc/linux/arch/mips/boot/dts/ingenic/jz4725b.dtsi (revision c211ab5f5e6e304aee43bb5ef6919fbe4e41ef64)
1*c211ab5fSPaul Cercueil// SPDX-License-Identifier: GPL-2.0
2*c211ab5fSPaul Cercueil#include <dt-bindings/clock/jz4725b-cgu.h>
3*c211ab5fSPaul Cercueil#include <dt-bindings/clock/ingenic,tcu.h>
4*c211ab5fSPaul Cercueil
5*c211ab5fSPaul Cercueil/ {
6*c211ab5fSPaul Cercueil	#address-cells = <1>;
7*c211ab5fSPaul Cercueil	#size-cells = <1>;
8*c211ab5fSPaul Cercueil	compatible = "ingenic,jz4725b";
9*c211ab5fSPaul Cercueil
10*c211ab5fSPaul Cercueil	cpuintc: interrupt-controller {
11*c211ab5fSPaul Cercueil		#address-cells = <0>;
12*c211ab5fSPaul Cercueil		#interrupt-cells = <1>;
13*c211ab5fSPaul Cercueil		interrupt-controller;
14*c211ab5fSPaul Cercueil		compatible = "mti,cpu-interrupt-controller";
15*c211ab5fSPaul Cercueil	};
16*c211ab5fSPaul Cercueil
17*c211ab5fSPaul Cercueil	intc: interrupt-controller@10001000 {
18*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-intc", "ingenic,jz4740-intc";
19*c211ab5fSPaul Cercueil		reg = <0x10001000 0x14>;
20*c211ab5fSPaul Cercueil
21*c211ab5fSPaul Cercueil		interrupt-controller;
22*c211ab5fSPaul Cercueil		#interrupt-cells = <1>;
23*c211ab5fSPaul Cercueil
24*c211ab5fSPaul Cercueil		interrupt-parent = <&cpuintc>;
25*c211ab5fSPaul Cercueil		interrupts = <2>;
26*c211ab5fSPaul Cercueil	};
27*c211ab5fSPaul Cercueil
28*c211ab5fSPaul Cercueil	ext: ext {
29*c211ab5fSPaul Cercueil		compatible = "fixed-clock";
30*c211ab5fSPaul Cercueil		#clock-cells = <0>;
31*c211ab5fSPaul Cercueil	};
32*c211ab5fSPaul Cercueil
33*c211ab5fSPaul Cercueil	osc32k: osc32k {
34*c211ab5fSPaul Cercueil		compatible = "fixed-clock";
35*c211ab5fSPaul Cercueil		#clock-cells = <0>;
36*c211ab5fSPaul Cercueil		clock-frequency = <32768>;
37*c211ab5fSPaul Cercueil	};
38*c211ab5fSPaul Cercueil
39*c211ab5fSPaul Cercueil	cgu: clock-controller@10000000 {
40*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-cgu";
41*c211ab5fSPaul Cercueil		reg = <0x10000000 0x100>;
42*c211ab5fSPaul Cercueil
43*c211ab5fSPaul Cercueil		clocks = <&ext>, <&osc32k>;
44*c211ab5fSPaul Cercueil		clock-names = "ext", "osc32k";
45*c211ab5fSPaul Cercueil
46*c211ab5fSPaul Cercueil		#clock-cells = <1>;
47*c211ab5fSPaul Cercueil	};
48*c211ab5fSPaul Cercueil
49*c211ab5fSPaul Cercueil	tcu: timer@10002000 {
50*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-tcu", "simple-mfd";
51*c211ab5fSPaul Cercueil		reg = <0x10002000 0x1000>;
52*c211ab5fSPaul Cercueil		#address-cells = <1>;
53*c211ab5fSPaul Cercueil		#size-cells = <1>;
54*c211ab5fSPaul Cercueil		ranges = <0x0 0x10002000 0x1000>;
55*c211ab5fSPaul Cercueil
56*c211ab5fSPaul Cercueil		#clock-cells = <1>;
57*c211ab5fSPaul Cercueil
58*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_RTC>,
59*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_EXT>,
60*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_PCLK>,
61*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_TCU>;
62*c211ab5fSPaul Cercueil		clock-names = "rtc", "ext", "pclk", "tcu";
63*c211ab5fSPaul Cercueil
64*c211ab5fSPaul Cercueil		interrupt-controller;
65*c211ab5fSPaul Cercueil		#interrupt-cells = <1>;
66*c211ab5fSPaul Cercueil
67*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
68*c211ab5fSPaul Cercueil		interrupts = <23>, <22>, <21>;
69*c211ab5fSPaul Cercueil
70*c211ab5fSPaul Cercueil		watchdog: watchdog@0 {
71*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-watchdog", "ingenic,jz4740-watchdog";
72*c211ab5fSPaul Cercueil			reg = <0x0 0xc>;
73*c211ab5fSPaul Cercueil
74*c211ab5fSPaul Cercueil			clocks = <&tcu TCU_CLK_WDT>;
75*c211ab5fSPaul Cercueil			clock-names = "wdt";
76*c211ab5fSPaul Cercueil		};
77*c211ab5fSPaul Cercueil
78*c211ab5fSPaul Cercueil		pwm: pwm@60 {
79*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-pwm";
80*c211ab5fSPaul Cercueil			reg = <0x60 0x40>;
81*c211ab5fSPaul Cercueil
82*c211ab5fSPaul Cercueil			#pwm-cells = <3>;
83*c211ab5fSPaul Cercueil
84*c211ab5fSPaul Cercueil			clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>,
85*c211ab5fSPaul Cercueil				 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>,
86*c211ab5fSPaul Cercueil				 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>;
87*c211ab5fSPaul Cercueil			clock-names = "timer0", "timer1", "timer2",
88*c211ab5fSPaul Cercueil				      "timer3", "timer4", "timer5";
89*c211ab5fSPaul Cercueil		};
90*c211ab5fSPaul Cercueil
91*c211ab5fSPaul Cercueil		ost: timer@e0 {
92*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-ost";
93*c211ab5fSPaul Cercueil			reg = <0xe0 0x20>;
94*c211ab5fSPaul Cercueil
95*c211ab5fSPaul Cercueil			clocks = <&tcu TCU_CLK_OST>;
96*c211ab5fSPaul Cercueil			clock-names = "ost";
97*c211ab5fSPaul Cercueil
98*c211ab5fSPaul Cercueil			interrupts = <15>;
99*c211ab5fSPaul Cercueil		};
100*c211ab5fSPaul Cercueil	};
101*c211ab5fSPaul Cercueil
102*c211ab5fSPaul Cercueil	rtc_dev: rtc@10003000 {
103*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-rtc", "ingenic,jz4740-rtc";
104*c211ab5fSPaul Cercueil		reg = <0x10003000 0x40>;
105*c211ab5fSPaul Cercueil
106*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
107*c211ab5fSPaul Cercueil		interrupts = <6>;
108*c211ab5fSPaul Cercueil
109*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_RTC>;
110*c211ab5fSPaul Cercueil		clock-names = "rtc";
111*c211ab5fSPaul Cercueil	};
112*c211ab5fSPaul Cercueil
113*c211ab5fSPaul Cercueil	pinctrl: pinctrl@10010000 {
114*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-pinctrl";
115*c211ab5fSPaul Cercueil		reg = <0x10010000 0x400>;
116*c211ab5fSPaul Cercueil
117*c211ab5fSPaul Cercueil		#address-cells = <1>;
118*c211ab5fSPaul Cercueil		#size-cells = <0>;
119*c211ab5fSPaul Cercueil
120*c211ab5fSPaul Cercueil		gpa: gpio@0 {
121*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-gpio";
122*c211ab5fSPaul Cercueil			reg = <0>;
123*c211ab5fSPaul Cercueil
124*c211ab5fSPaul Cercueil			gpio-controller;
125*c211ab5fSPaul Cercueil			gpio-ranges = <&pinctrl 0 0 32>;
126*c211ab5fSPaul Cercueil			#gpio-cells = <2>;
127*c211ab5fSPaul Cercueil
128*c211ab5fSPaul Cercueil			interrupt-controller;
129*c211ab5fSPaul Cercueil			#interrupt-cells = <2>;
130*c211ab5fSPaul Cercueil
131*c211ab5fSPaul Cercueil			interrupt-parent = <&intc>;
132*c211ab5fSPaul Cercueil			interrupts = <16>;
133*c211ab5fSPaul Cercueil		};
134*c211ab5fSPaul Cercueil
135*c211ab5fSPaul Cercueil		gpb: gpio@1 {
136*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-gpio";
137*c211ab5fSPaul Cercueil			reg = <1>;
138*c211ab5fSPaul Cercueil
139*c211ab5fSPaul Cercueil			gpio-controller;
140*c211ab5fSPaul Cercueil			gpio-ranges = <&pinctrl 0 32 32>;
141*c211ab5fSPaul Cercueil			#gpio-cells = <2>;
142*c211ab5fSPaul Cercueil
143*c211ab5fSPaul Cercueil			interrupt-controller;
144*c211ab5fSPaul Cercueil			#interrupt-cells = <2>;
145*c211ab5fSPaul Cercueil
146*c211ab5fSPaul Cercueil			interrupt-parent = <&intc>;
147*c211ab5fSPaul Cercueil			interrupts = <15>;
148*c211ab5fSPaul Cercueil		};
149*c211ab5fSPaul Cercueil
150*c211ab5fSPaul Cercueil		gpc: gpio@2 {
151*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-gpio";
152*c211ab5fSPaul Cercueil			reg = <2>;
153*c211ab5fSPaul Cercueil
154*c211ab5fSPaul Cercueil			gpio-controller;
155*c211ab5fSPaul Cercueil			gpio-ranges = <&pinctrl 0 64 32>;
156*c211ab5fSPaul Cercueil			#gpio-cells = <2>;
157*c211ab5fSPaul Cercueil
158*c211ab5fSPaul Cercueil			interrupt-controller;
159*c211ab5fSPaul Cercueil			#interrupt-cells = <2>;
160*c211ab5fSPaul Cercueil
161*c211ab5fSPaul Cercueil			interrupt-parent = <&intc>;
162*c211ab5fSPaul Cercueil			interrupts = <14>;
163*c211ab5fSPaul Cercueil		};
164*c211ab5fSPaul Cercueil
165*c211ab5fSPaul Cercueil		gpd: gpio@3 {
166*c211ab5fSPaul Cercueil			compatible = "ingenic,jz4725b-gpio";
167*c211ab5fSPaul Cercueil			reg = <3>;
168*c211ab5fSPaul Cercueil
169*c211ab5fSPaul Cercueil			gpio-controller;
170*c211ab5fSPaul Cercueil			gpio-ranges = <&pinctrl 0 96 32>;
171*c211ab5fSPaul Cercueil			#gpio-cells = <2>;
172*c211ab5fSPaul Cercueil
173*c211ab5fSPaul Cercueil			interrupt-controller;
174*c211ab5fSPaul Cercueil			#interrupt-cells = <2>;
175*c211ab5fSPaul Cercueil
176*c211ab5fSPaul Cercueil			interrupt-parent = <&intc>;
177*c211ab5fSPaul Cercueil			interrupts = <13>;
178*c211ab5fSPaul Cercueil		};
179*c211ab5fSPaul Cercueil	};
180*c211ab5fSPaul Cercueil
181*c211ab5fSPaul Cercueil	aic: audio-controller@10020000 {
182*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-i2s", "ingenic,jz4740-i2s";
183*c211ab5fSPaul Cercueil		reg = <0x10020000 0x38>;
184*c211ab5fSPaul Cercueil
185*c211ab5fSPaul Cercueil		#sound-dai-cells = <0>;
186*c211ab5fSPaul Cercueil
187*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_AIC>,
188*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_I2S>,
189*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_EXT>,
190*c211ab5fSPaul Cercueil			 <&cgu JZ4725B_CLK_PLL_HALF>;
191*c211ab5fSPaul Cercueil		clock-names = "aic", "i2s", "ext", "pll half";
192*c211ab5fSPaul Cercueil
193*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
194*c211ab5fSPaul Cercueil		interrupts = <10>;
195*c211ab5fSPaul Cercueil
196*c211ab5fSPaul Cercueil		dmas = <&dmac 25 0xffffffff>, <&dmac 24 0xffffffff>;
197*c211ab5fSPaul Cercueil		dma-names = "rx", "tx";
198*c211ab5fSPaul Cercueil	};
199*c211ab5fSPaul Cercueil
200*c211ab5fSPaul Cercueil	codec: audio-codec@100200a4 {
201*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-codec";
202*c211ab5fSPaul Cercueil		reg = <0x100200a4 0x8>;
203*c211ab5fSPaul Cercueil
204*c211ab5fSPaul Cercueil		#sound-dai-cells = <0>;
205*c211ab5fSPaul Cercueil
206*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_AIC>;
207*c211ab5fSPaul Cercueil		clock-names = "aic";
208*c211ab5fSPaul Cercueil	};
209*c211ab5fSPaul Cercueil
210*c211ab5fSPaul Cercueil	mmc0: mmc@10021000 {
211*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-mmc";
212*c211ab5fSPaul Cercueil		reg = <0x10021000 0x1000>;
213*c211ab5fSPaul Cercueil
214*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_MMC0>;
215*c211ab5fSPaul Cercueil		clock-names = "mmc";
216*c211ab5fSPaul Cercueil
217*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
218*c211ab5fSPaul Cercueil		interrupts = <25>;
219*c211ab5fSPaul Cercueil
220*c211ab5fSPaul Cercueil		dmas = <&dmac 27 0xffffffff>, <&dmac 26 0xffffffff>;
221*c211ab5fSPaul Cercueil		dma-names = "rx", "tx";
222*c211ab5fSPaul Cercueil
223*c211ab5fSPaul Cercueil		cap-sd-highspeed;
224*c211ab5fSPaul Cercueil		cap-mmc-highspeed;
225*c211ab5fSPaul Cercueil		cap-sdio-irq;
226*c211ab5fSPaul Cercueil	};
227*c211ab5fSPaul Cercueil
228*c211ab5fSPaul Cercueil	mmc1: mmc@10022000 {
229*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-mmc";
230*c211ab5fSPaul Cercueil		reg = <0x10022000 0x1000>;
231*c211ab5fSPaul Cercueil
232*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_MMC1>;
233*c211ab5fSPaul Cercueil		clock-names = "mmc";
234*c211ab5fSPaul Cercueil
235*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
236*c211ab5fSPaul Cercueil		interrupts = <24>;
237*c211ab5fSPaul Cercueil
238*c211ab5fSPaul Cercueil		dmas = <&dmac 31 0xffffffff>, <&dmac 30 0xffffffff>;
239*c211ab5fSPaul Cercueil		dma-names = "rx", "tx";
240*c211ab5fSPaul Cercueil
241*c211ab5fSPaul Cercueil		cap-sd-highspeed;
242*c211ab5fSPaul Cercueil		cap-mmc-highspeed;
243*c211ab5fSPaul Cercueil		cap-sdio-irq;
244*c211ab5fSPaul Cercueil	};
245*c211ab5fSPaul Cercueil
246*c211ab5fSPaul Cercueil	uart: serial@10030000 {
247*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-uart", "ingenic,jz4740-uart";
248*c211ab5fSPaul Cercueil		reg = <0x10030000 0x100>;
249*c211ab5fSPaul Cercueil
250*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
251*c211ab5fSPaul Cercueil		interrupts = <9>;
252*c211ab5fSPaul Cercueil
253*c211ab5fSPaul Cercueil		clocks = <&ext>, <&cgu JZ4725B_CLK_UART>;
254*c211ab5fSPaul Cercueil		clock-names = "baud", "module";
255*c211ab5fSPaul Cercueil	};
256*c211ab5fSPaul Cercueil
257*c211ab5fSPaul Cercueil	adc: adc@10070000 {
258*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-adc";
259*c211ab5fSPaul Cercueil		#io-channel-cells = <1>;
260*c211ab5fSPaul Cercueil
261*c211ab5fSPaul Cercueil		reg = <0x10070000 0x30>;
262*c211ab5fSPaul Cercueil		#address-cells = <1>;
263*c211ab5fSPaul Cercueil		#size-cells = <1>;
264*c211ab5fSPaul Cercueil		ranges = <0x0 0x10070000 0x30>;
265*c211ab5fSPaul Cercueil
266*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_ADC>;
267*c211ab5fSPaul Cercueil		clock-names = "adc";
268*c211ab5fSPaul Cercueil
269*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
270*c211ab5fSPaul Cercueil		interrupts = <18>;
271*c211ab5fSPaul Cercueil	};
272*c211ab5fSPaul Cercueil
273*c211ab5fSPaul Cercueil	nemc: memory-controller@13010000 {
274*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-nemc", "ingenic,jz4740-nemc";
275*c211ab5fSPaul Cercueil		reg = <0x13010000 0x10000>;
276*c211ab5fSPaul Cercueil		#address-cells = <2>;
277*c211ab5fSPaul Cercueil		#size-cells = <1>;
278*c211ab5fSPaul Cercueil		ranges = <1 0 0x18000000 0x4000000>, <2 0 0x14000000 0x4000000>,
279*c211ab5fSPaul Cercueil			 <3 0 0x0c000000 0x4000000>, <4 0 0x08000000 0x4000000>;
280*c211ab5fSPaul Cercueil
281*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_MCLK>;
282*c211ab5fSPaul Cercueil	};
283*c211ab5fSPaul Cercueil
284*c211ab5fSPaul Cercueil	dmac: dma-controller@13020000 {
285*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-dma";
286*c211ab5fSPaul Cercueil		reg = <0x13020000 0xd8>, <0x13020300 0x14>;
287*c211ab5fSPaul Cercueil
288*c211ab5fSPaul Cercueil		#dma-cells = <2>;
289*c211ab5fSPaul Cercueil
290*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
291*c211ab5fSPaul Cercueil		interrupts = <29>;
292*c211ab5fSPaul Cercueil
293*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_DMA>;
294*c211ab5fSPaul Cercueil	};
295*c211ab5fSPaul Cercueil
296*c211ab5fSPaul Cercueil	udc: usb@13040000 {
297*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-musb", "ingenic,jz4740-musb";
298*c211ab5fSPaul Cercueil		reg = <0x13040000 0x10000>;
299*c211ab5fSPaul Cercueil
300*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
301*c211ab5fSPaul Cercueil		interrupts = <27>;
302*c211ab5fSPaul Cercueil		interrupt-names = "mc";
303*c211ab5fSPaul Cercueil
304*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_UDC>;
305*c211ab5fSPaul Cercueil		clock-names = "udc";
306*c211ab5fSPaul Cercueil	};
307*c211ab5fSPaul Cercueil
308*c211ab5fSPaul Cercueil	lcd: lcd-controller@13050000 {
309*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-lcd";
310*c211ab5fSPaul Cercueil		reg = <0x13050000 0x1000>;
311*c211ab5fSPaul Cercueil
312*c211ab5fSPaul Cercueil		interrupt-parent = <&intc>;
313*c211ab5fSPaul Cercueil		interrupts = <31>;
314*c211ab5fSPaul Cercueil
315*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_LCD>;
316*c211ab5fSPaul Cercueil		clock-names = "lcd_pclk";
317*c211ab5fSPaul Cercueil	};
318*c211ab5fSPaul Cercueil
319*c211ab5fSPaul Cercueil	bch: ecc-controller@130d0000 {
320*c211ab5fSPaul Cercueil		compatible = "ingenic,jz4725b-bch";
321*c211ab5fSPaul Cercueil		reg = <0x130d0000 0x44>;
322*c211ab5fSPaul Cercueil
323*c211ab5fSPaul Cercueil		clocks = <&cgu JZ4725B_CLK_BCH>;
324*c211ab5fSPaul Cercueil	};
325*c211ab5fSPaul Cercueil
326*c211ab5fSPaul Cercueil	rom: memory@1fc00000 {
327*c211ab5fSPaul Cercueil		compatible = "mtd-rom";
328*c211ab5fSPaul Cercueil		probe-type = "map_rom";
329*c211ab5fSPaul Cercueil		reg = <0x1fc00000 0x2000>;
330*c211ab5fSPaul Cercueil
331*c211ab5fSPaul Cercueil		bank-width = <4>;
332*c211ab5fSPaul Cercueil		device-width = <1>;
333*c211ab5fSPaul Cercueil	};
334*c211ab5fSPaul Cercueil};
335