xref: /freebsd-src/sys/contrib/device-tree/src/mips/ingenic/jz4740.dtsi (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0
28cc087a1SEmmanuel Vadot#include <dt-bindings/clock/ingenic,jz4740-cgu.h>
3c66ec88fSEmmanuel Vadot#include <dt-bindings/clock/ingenic,tcu.h>
4c66ec88fSEmmanuel Vadot
5c66ec88fSEmmanuel Vadot/ {
6c66ec88fSEmmanuel Vadot	#address-cells = <1>;
7c66ec88fSEmmanuel Vadot	#size-cells = <1>;
8c66ec88fSEmmanuel Vadot	compatible = "ingenic,jz4740";
9c66ec88fSEmmanuel Vadot
106be33864SEmmanuel Vadot	cpus {
116be33864SEmmanuel Vadot		#address-cells = <1>;
126be33864SEmmanuel Vadot		#size-cells = <0>;
136be33864SEmmanuel Vadot
146be33864SEmmanuel Vadot		cpu0: cpu@0 {
156be33864SEmmanuel Vadot			device_type = "cpu";
166be33864SEmmanuel Vadot			compatible = "ingenic,xburst-mxu1.0";
176be33864SEmmanuel Vadot			reg = <0>;
186be33864SEmmanuel Vadot
196be33864SEmmanuel Vadot			clocks = <&cgu JZ4740_CLK_CCLK>;
206be33864SEmmanuel Vadot			clock-names = "cpu";
216be33864SEmmanuel Vadot		};
226be33864SEmmanuel Vadot	};
236be33864SEmmanuel Vadot
24c66ec88fSEmmanuel Vadot	cpuintc: interrupt-controller {
25c66ec88fSEmmanuel Vadot		#address-cells = <0>;
26c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
27c66ec88fSEmmanuel Vadot		interrupt-controller;
28c66ec88fSEmmanuel Vadot		compatible = "mti,cpu-interrupt-controller";
29c66ec88fSEmmanuel Vadot	};
30c66ec88fSEmmanuel Vadot
31c66ec88fSEmmanuel Vadot	intc: interrupt-controller@10001000 {
32c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-intc";
33c66ec88fSEmmanuel Vadot		reg = <0x10001000 0x14>;
34c66ec88fSEmmanuel Vadot
35c66ec88fSEmmanuel Vadot		interrupt-controller;
36c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
37c66ec88fSEmmanuel Vadot
38c66ec88fSEmmanuel Vadot		interrupt-parent = <&cpuintc>;
39c66ec88fSEmmanuel Vadot		interrupts = <2>;
40c66ec88fSEmmanuel Vadot	};
41c66ec88fSEmmanuel Vadot
42c66ec88fSEmmanuel Vadot	ext: ext {
43c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
44c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
45c66ec88fSEmmanuel Vadot	};
46c66ec88fSEmmanuel Vadot
47c66ec88fSEmmanuel Vadot	rtc: rtc {
48c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
49c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
50c66ec88fSEmmanuel Vadot		clock-frequency = <32768>;
51c66ec88fSEmmanuel Vadot	};
52c66ec88fSEmmanuel Vadot
53c66ec88fSEmmanuel Vadot	cgu: jz4740-cgu@10000000 {
54c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-cgu";
55c66ec88fSEmmanuel Vadot		reg = <0x10000000 0x100>;
56c66ec88fSEmmanuel Vadot
57c66ec88fSEmmanuel Vadot		clocks = <&ext>, <&rtc>;
58c66ec88fSEmmanuel Vadot		clock-names = "ext", "rtc";
59c66ec88fSEmmanuel Vadot
60c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
61c66ec88fSEmmanuel Vadot	};
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot	tcu: timer@10002000 {
64c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-tcu", "simple-mfd";
65c66ec88fSEmmanuel Vadot		reg = <0x10002000 0x1000>;
66c66ec88fSEmmanuel Vadot		#address-cells = <1>;
67c66ec88fSEmmanuel Vadot		#size-cells = <1>;
68c66ec88fSEmmanuel Vadot		ranges = <0x0 0x10002000 0x1000>;
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot		#clock-cells = <1>;
71c66ec88fSEmmanuel Vadot
72c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_RTC>,
73c66ec88fSEmmanuel Vadot			 <&cgu JZ4740_CLK_EXT>,
74c66ec88fSEmmanuel Vadot			 <&cgu JZ4740_CLK_PCLK>,
75c66ec88fSEmmanuel Vadot			 <&cgu JZ4740_CLK_TCU>;
76c66ec88fSEmmanuel Vadot		clock-names = "rtc", "ext", "pclk", "tcu";
77c66ec88fSEmmanuel Vadot
78c66ec88fSEmmanuel Vadot		interrupt-controller;
79c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
82c66ec88fSEmmanuel Vadot		interrupts = <23 22 21>;
83c66ec88fSEmmanuel Vadot
84c66ec88fSEmmanuel Vadot		watchdog: watchdog@0 {
85c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-watchdog";
86c66ec88fSEmmanuel Vadot			reg = <0x0 0xc>;
87c66ec88fSEmmanuel Vadot
88c66ec88fSEmmanuel Vadot			clocks = <&tcu TCU_CLK_WDT>;
89c66ec88fSEmmanuel Vadot			clock-names = "wdt";
90c66ec88fSEmmanuel Vadot		};
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot		pwm: pwm@40 {
93c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-pwm";
94c66ec88fSEmmanuel Vadot			reg = <0x40 0x80>;
95c66ec88fSEmmanuel Vadot
96c66ec88fSEmmanuel Vadot			#pwm-cells = <3>;
97c66ec88fSEmmanuel Vadot
98c66ec88fSEmmanuel Vadot			clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>,
99c66ec88fSEmmanuel Vadot				 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>,
100c66ec88fSEmmanuel Vadot				 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>,
101c66ec88fSEmmanuel Vadot				 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>;
102c66ec88fSEmmanuel Vadot			clock-names = "timer0", "timer1", "timer2", "timer3",
103c66ec88fSEmmanuel Vadot				      "timer4", "timer5", "timer6", "timer7";
104c66ec88fSEmmanuel Vadot		};
105c66ec88fSEmmanuel Vadot	};
106c66ec88fSEmmanuel Vadot
107c66ec88fSEmmanuel Vadot	rtc_dev: rtc@10003000 {
108c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-rtc";
109c66ec88fSEmmanuel Vadot		reg = <0x10003000 0x40>;
110c66ec88fSEmmanuel Vadot
111c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
112c66ec88fSEmmanuel Vadot		interrupts = <15>;
113c66ec88fSEmmanuel Vadot
114c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_RTC>;
115c66ec88fSEmmanuel Vadot		clock-names = "rtc";
116c66ec88fSEmmanuel Vadot	};
117c66ec88fSEmmanuel Vadot
118c66ec88fSEmmanuel Vadot	pinctrl: pin-controller@10010000 {
119c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-pinctrl";
120c66ec88fSEmmanuel Vadot		reg = <0x10010000 0x400>;
121c66ec88fSEmmanuel Vadot
122c66ec88fSEmmanuel Vadot		#address-cells = <1>;
123c66ec88fSEmmanuel Vadot		#size-cells = <0>;
124c66ec88fSEmmanuel Vadot
125c66ec88fSEmmanuel Vadot		gpa: gpio@0 {
126c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-gpio";
127c66ec88fSEmmanuel Vadot			reg = <0>;
128c66ec88fSEmmanuel Vadot
129c66ec88fSEmmanuel Vadot			gpio-controller;
130c66ec88fSEmmanuel Vadot			gpio-ranges = <&pinctrl 0 0 32>;
131c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
132c66ec88fSEmmanuel Vadot
133c66ec88fSEmmanuel Vadot			interrupt-controller;
134c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
135c66ec88fSEmmanuel Vadot
136c66ec88fSEmmanuel Vadot			interrupt-parent = <&intc>;
137c66ec88fSEmmanuel Vadot			interrupts = <28>;
138c66ec88fSEmmanuel Vadot		};
139c66ec88fSEmmanuel Vadot
140c66ec88fSEmmanuel Vadot		gpb: gpio@1 {
141c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-gpio";
142c66ec88fSEmmanuel Vadot			reg = <1>;
143c66ec88fSEmmanuel Vadot
144c66ec88fSEmmanuel Vadot			gpio-controller;
145c66ec88fSEmmanuel Vadot			gpio-ranges = <&pinctrl 0 32 32>;
146c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
147c66ec88fSEmmanuel Vadot
148c66ec88fSEmmanuel Vadot			interrupt-controller;
149c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot			interrupt-parent = <&intc>;
152c66ec88fSEmmanuel Vadot			interrupts = <27>;
153c66ec88fSEmmanuel Vadot		};
154c66ec88fSEmmanuel Vadot
155c66ec88fSEmmanuel Vadot		gpc: gpio@2 {
156c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-gpio";
157c66ec88fSEmmanuel Vadot			reg = <2>;
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot			gpio-controller;
160c66ec88fSEmmanuel Vadot			gpio-ranges = <&pinctrl 0 64 32>;
161c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
162c66ec88fSEmmanuel Vadot
163c66ec88fSEmmanuel Vadot			interrupt-controller;
164c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
165c66ec88fSEmmanuel Vadot
166c66ec88fSEmmanuel Vadot			interrupt-parent = <&intc>;
167c66ec88fSEmmanuel Vadot			interrupts = <26>;
168c66ec88fSEmmanuel Vadot		};
169c66ec88fSEmmanuel Vadot
170c66ec88fSEmmanuel Vadot		gpd: gpio@3 {
171c66ec88fSEmmanuel Vadot			compatible = "ingenic,jz4740-gpio";
172c66ec88fSEmmanuel Vadot			reg = <3>;
173c66ec88fSEmmanuel Vadot
174c66ec88fSEmmanuel Vadot			gpio-controller;
175c66ec88fSEmmanuel Vadot			gpio-ranges = <&pinctrl 0 96 32>;
176c66ec88fSEmmanuel Vadot			#gpio-cells = <2>;
177c66ec88fSEmmanuel Vadot
178c66ec88fSEmmanuel Vadot			interrupt-controller;
179c66ec88fSEmmanuel Vadot			#interrupt-cells = <2>;
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot			interrupt-parent = <&intc>;
182c66ec88fSEmmanuel Vadot			interrupts = <25>;
183c66ec88fSEmmanuel Vadot		};
184c66ec88fSEmmanuel Vadot	};
185c66ec88fSEmmanuel Vadot
186c66ec88fSEmmanuel Vadot	aic: audio-controller@10020000 {
187c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-i2s";
188c66ec88fSEmmanuel Vadot		reg = <0x10020000 0x38>;
189c66ec88fSEmmanuel Vadot
190c66ec88fSEmmanuel Vadot		#sound-dai-cells = <0>;
191c66ec88fSEmmanuel Vadot
192c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
193c66ec88fSEmmanuel Vadot		interrupts = <18>;
194c66ec88fSEmmanuel Vadot
195*f126890aSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_AIC>, <&cgu JZ4740_CLK_I2S>;
196*f126890aSEmmanuel Vadot		clock-names = "aic", "i2s";
197c66ec88fSEmmanuel Vadot
198c66ec88fSEmmanuel Vadot		dmas = <&dmac 25 0xffffffff>, <&dmac 24 0xffffffff>;
199c66ec88fSEmmanuel Vadot		dma-names = "rx", "tx";
200c66ec88fSEmmanuel Vadot	};
201c66ec88fSEmmanuel Vadot
202c66ec88fSEmmanuel Vadot	codec: audio-codec@100200a4 {
203c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-codec";
204c66ec88fSEmmanuel Vadot		reg = <0x10020080 0x8>;
205c66ec88fSEmmanuel Vadot
206c66ec88fSEmmanuel Vadot		#sound-dai-cells = <0>;
207c66ec88fSEmmanuel Vadot
208c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_AIC>;
209c66ec88fSEmmanuel Vadot		clock-names = "aic";
210c66ec88fSEmmanuel Vadot	};
211c66ec88fSEmmanuel Vadot
212c66ec88fSEmmanuel Vadot	mmc: mmc@10021000 {
213c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-mmc";
214c66ec88fSEmmanuel Vadot		reg = <0x10021000 0x1000>;
215c66ec88fSEmmanuel Vadot
216c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_MMC>;
217c66ec88fSEmmanuel Vadot		clock-names = "mmc";
218c66ec88fSEmmanuel Vadot
219c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
220c66ec88fSEmmanuel Vadot		interrupts = <14>;
221c66ec88fSEmmanuel Vadot
222c66ec88fSEmmanuel Vadot		dmas = <&dmac 27 0xffffffff>, <&dmac 26 0xffffffff>;
223c66ec88fSEmmanuel Vadot		dma-names = "rx", "tx";
224c66ec88fSEmmanuel Vadot
225c66ec88fSEmmanuel Vadot		cap-sd-highspeed;
226c66ec88fSEmmanuel Vadot		cap-mmc-highspeed;
227c66ec88fSEmmanuel Vadot		cap-sdio-irq;
228c66ec88fSEmmanuel Vadot	};
229c66ec88fSEmmanuel Vadot
230c66ec88fSEmmanuel Vadot	uart0: serial@10030000 {
231c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-uart";
232c66ec88fSEmmanuel Vadot		reg = <0x10030000 0x100>;
233c66ec88fSEmmanuel Vadot
234c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
235c66ec88fSEmmanuel Vadot		interrupts = <9>;
236c66ec88fSEmmanuel Vadot
237c66ec88fSEmmanuel Vadot		clocks = <&ext>, <&cgu JZ4740_CLK_UART0>;
238c66ec88fSEmmanuel Vadot		clock-names = "baud", "module";
239c66ec88fSEmmanuel Vadot	};
240c66ec88fSEmmanuel Vadot
241c66ec88fSEmmanuel Vadot	uart1: serial@10031000 {
242c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-uart";
243c66ec88fSEmmanuel Vadot		reg = <0x10031000 0x100>;
244c66ec88fSEmmanuel Vadot
245c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
246c66ec88fSEmmanuel Vadot		interrupts = <8>;
247c66ec88fSEmmanuel Vadot
248c66ec88fSEmmanuel Vadot		clocks = <&ext>, <&cgu JZ4740_CLK_UART1>;
249c66ec88fSEmmanuel Vadot		clock-names = "baud", "module";
250c66ec88fSEmmanuel Vadot	};
251c66ec88fSEmmanuel Vadot
252c66ec88fSEmmanuel Vadot	adc: adc@10070000 {
253c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-adc";
254c66ec88fSEmmanuel Vadot		reg = <0x10070000 0x30>;
255c66ec88fSEmmanuel Vadot		#io-channel-cells = <1>;
256c66ec88fSEmmanuel Vadot
257c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_ADC>;
258c66ec88fSEmmanuel Vadot		clock-names = "adc";
259c66ec88fSEmmanuel Vadot
260c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
261c66ec88fSEmmanuel Vadot		interrupts = <12>;
262c66ec88fSEmmanuel Vadot	};
263c66ec88fSEmmanuel Vadot
264c66ec88fSEmmanuel Vadot	nemc: memory-controller@13010000 {
265c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-nemc";
266c66ec88fSEmmanuel Vadot		reg = <0x13010000 0x54>;
267c66ec88fSEmmanuel Vadot		#address-cells = <2>;
268c66ec88fSEmmanuel Vadot		#size-cells = <1>;
269c66ec88fSEmmanuel Vadot		ranges = <1 0 0x18000000 0x4000000>,
270c66ec88fSEmmanuel Vadot			 <2 0 0x14000000 0x4000000>,
271c66ec88fSEmmanuel Vadot			 <3 0 0x0c000000 0x4000000>,
272c66ec88fSEmmanuel Vadot			 <4 0 0x08000000 0x4000000>;
273c66ec88fSEmmanuel Vadot
274c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_MCLK>;
275c66ec88fSEmmanuel Vadot	};
276c66ec88fSEmmanuel Vadot
277c66ec88fSEmmanuel Vadot	ecc: ecc-controller@13010100 {
278c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-ecc";
279c66ec88fSEmmanuel Vadot		reg = <0x13010100 0x2C>;
280c66ec88fSEmmanuel Vadot
281c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_MCLK>;
282c66ec88fSEmmanuel Vadot	};
283c66ec88fSEmmanuel Vadot
284c66ec88fSEmmanuel Vadot	dmac: dma-controller@13020000 {
285c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-dma";
286c66ec88fSEmmanuel Vadot		reg = <0x13020000 0xbc>, <0x13020300 0x14>;
287c66ec88fSEmmanuel Vadot		#dma-cells = <2>;
288c66ec88fSEmmanuel Vadot
289c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
290c66ec88fSEmmanuel Vadot		interrupts = <20>;
291c66ec88fSEmmanuel Vadot
292c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_DMA>;
293c66ec88fSEmmanuel Vadot	};
294c66ec88fSEmmanuel Vadot
2955def4c47SEmmanuel Vadot	uhc: usb@13030000 {
296c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-ohci", "generic-ohci";
297c66ec88fSEmmanuel Vadot		reg = <0x13030000 0x1000>;
298c66ec88fSEmmanuel Vadot
299c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_UHC>;
300c66ec88fSEmmanuel Vadot		assigned-clocks = <&cgu JZ4740_CLK_UHC>;
301c66ec88fSEmmanuel Vadot		assigned-clock-rates = <48000000>;
302c66ec88fSEmmanuel Vadot
303c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
304c66ec88fSEmmanuel Vadot		interrupts = <3>;
305c66ec88fSEmmanuel Vadot
306c66ec88fSEmmanuel Vadot		status = "disabled";
307c66ec88fSEmmanuel Vadot	};
308c66ec88fSEmmanuel Vadot
309c66ec88fSEmmanuel Vadot	udc: usb@13040000 {
310c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-musb";
311c66ec88fSEmmanuel Vadot		reg = <0x13040000 0x10000>;
312c66ec88fSEmmanuel Vadot
313c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
314c66ec88fSEmmanuel Vadot		interrupts = <24>;
315c66ec88fSEmmanuel Vadot		interrupt-names = "mc";
316c66ec88fSEmmanuel Vadot
317c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_UDC>;
318c66ec88fSEmmanuel Vadot		clock-names = "udc";
319c66ec88fSEmmanuel Vadot	};
320c66ec88fSEmmanuel Vadot
321c66ec88fSEmmanuel Vadot	lcd: lcd-controller@13050000 {
322c66ec88fSEmmanuel Vadot		compatible = "ingenic,jz4740-lcd";
323e67e8565SEmmanuel Vadot		reg = <0x13050000 0x60>; /* LCDCMD1+4 */
324c66ec88fSEmmanuel Vadot
325c66ec88fSEmmanuel Vadot		interrupt-parent = <&intc>;
326c66ec88fSEmmanuel Vadot		interrupts = <30>;
327c66ec88fSEmmanuel Vadot
328c66ec88fSEmmanuel Vadot		clocks = <&cgu JZ4740_CLK_LCD_PCLK>, <&cgu JZ4740_CLK_LCD>;
329c66ec88fSEmmanuel Vadot		clock-names = "lcd_pclk", "lcd";
330c66ec88fSEmmanuel Vadot	};
331c66ec88fSEmmanuel Vadot};
332