xref: /openbmc/linux/arch/mips/boot/dts/ingenic/jz4740.dtsi (revision 36ba3eae036242fdc36eb8e89d5001a219a7fb1d)
1b2441318SGreg Kroah-Hartman// SPDX-License-Identifier: GPL-2.0
2ff1930c6SPaul Burton#include <dt-bindings/clock/jz4740-cgu.h>
3ff1930c6SPaul Burton
4ffb1843dSPaul Burton/ {
5ffb1843dSPaul Burton	#address-cells = <1>;
6ffb1843dSPaul Burton	#size-cells = <1>;
7ffb1843dSPaul Burton	compatible = "ingenic,jz4740";
88e8261ebSPaul Burton
95214cae7SAntony Pavlov	cpuintc: interrupt-controller {
108e8261ebSPaul Burton		#address-cells = <0>;
118e8261ebSPaul Burton		#interrupt-cells = <1>;
128e8261ebSPaul Burton		interrupt-controller;
138e8261ebSPaul Burton		compatible = "mti,cpu-interrupt-controller";
148e8261ebSPaul Burton	};
15adbdce77SPaul Burton
16adbdce77SPaul Burton	intc: interrupt-controller@10001000 {
17adbdce77SPaul Burton		compatible = "ingenic,jz4740-intc";
18adbdce77SPaul Burton		reg = <0x10001000 0x14>;
19adbdce77SPaul Burton
20adbdce77SPaul Burton		interrupt-controller;
21adbdce77SPaul Burton		#interrupt-cells = <1>;
22adbdce77SPaul Burton
23adbdce77SPaul Burton		interrupt-parent = <&cpuintc>;
24adbdce77SPaul Burton		interrupts = <2>;
25adbdce77SPaul Burton	};
26ff1930c6SPaul Burton
27ff1930c6SPaul Burton	ext: ext {
28ff1930c6SPaul Burton		compatible = "fixed-clock";
29ff1930c6SPaul Burton		#clock-cells = <0>;
30ff1930c6SPaul Burton	};
31ff1930c6SPaul Burton
32ff1930c6SPaul Burton	rtc: rtc {
33ff1930c6SPaul Burton		compatible = "fixed-clock";
34ff1930c6SPaul Burton		#clock-cells = <0>;
35ff1930c6SPaul Burton		clock-frequency = <32768>;
36ff1930c6SPaul Burton	};
37ff1930c6SPaul Burton
38ff1930c6SPaul Burton	cgu: jz4740-cgu@10000000 {
39ff1930c6SPaul Burton		compatible = "ingenic,jz4740-cgu";
40ff1930c6SPaul Burton		reg = <0x10000000 0x100>;
41ff1930c6SPaul Burton
42ff1930c6SPaul Burton		clocks = <&ext>, <&rtc>;
43ff1930c6SPaul Burton		clock-names = "ext", "rtc";
44ff1930c6SPaul Burton
45ff1930c6SPaul Burton		#clock-cells = <1>;
46ff1930c6SPaul Burton	};
478838245dSPaul Burton
48fbc23c71SPaul Cercueil	watchdog: watchdog@10002000 {
49fbc23c71SPaul Cercueil		compatible = "ingenic,jz4740-watchdog";
50fbc23c71SPaul Cercueil		reg = <0x10002000 0x10>;
51fbc23c71SPaul Cercueil
52fbc23c71SPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>;
53fbc23c71SPaul Cercueil		clock-names = "rtc";
54fbc23c71SPaul Cercueil	};
55fbc23c71SPaul Cercueil
56262d62cbSPaul Cercueil	rtc_dev: rtc@10003000 {
57262d62cbSPaul Cercueil		compatible = "ingenic,jz4740-rtc";
58262d62cbSPaul Cercueil		reg = <0x10003000 0x40>;
59262d62cbSPaul Cercueil
60262d62cbSPaul Cercueil		interrupt-parent = <&intc>;
61262d62cbSPaul Cercueil		interrupts = <15>;
62262d62cbSPaul Cercueil
63262d62cbSPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>;
64262d62cbSPaul Cercueil		clock-names = "rtc";
65262d62cbSPaul Cercueil	};
66262d62cbSPaul Cercueil
673951cbb5SPaul Cercueil	pinctrl: pin-controller@10010000 {
683951cbb5SPaul Cercueil		compatible = "ingenic,jz4740-pinctrl";
693951cbb5SPaul Cercueil		reg = <0x10010000 0x400>;
703951cbb5SPaul Cercueil
713951cbb5SPaul Cercueil		#address-cells = <1>;
723951cbb5SPaul Cercueil		#size-cells = <0>;
733951cbb5SPaul Cercueil
743951cbb5SPaul Cercueil		gpa: gpio@0 {
753951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
763951cbb5SPaul Cercueil			reg = <0>;
773951cbb5SPaul Cercueil
783951cbb5SPaul Cercueil			gpio-controller;
793951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 0 32>;
803951cbb5SPaul Cercueil			#gpio-cells = <2>;
813951cbb5SPaul Cercueil
823951cbb5SPaul Cercueil			interrupt-controller;
833951cbb5SPaul Cercueil			#interrupt-cells = <2>;
843951cbb5SPaul Cercueil
853951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
863951cbb5SPaul Cercueil			interrupts = <28>;
873951cbb5SPaul Cercueil		};
883951cbb5SPaul Cercueil
893951cbb5SPaul Cercueil		gpb: gpio@1 {
903951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
913951cbb5SPaul Cercueil			reg = <1>;
923951cbb5SPaul Cercueil
933951cbb5SPaul Cercueil			gpio-controller;
943951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 32 32>;
953951cbb5SPaul Cercueil			#gpio-cells = <2>;
963951cbb5SPaul Cercueil
973951cbb5SPaul Cercueil			interrupt-controller;
983951cbb5SPaul Cercueil			#interrupt-cells = <2>;
993951cbb5SPaul Cercueil
1003951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1013951cbb5SPaul Cercueil			interrupts = <27>;
1023951cbb5SPaul Cercueil		};
1033951cbb5SPaul Cercueil
1043951cbb5SPaul Cercueil		gpc: gpio@2 {
1053951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1063951cbb5SPaul Cercueil			reg = <2>;
1073951cbb5SPaul Cercueil
1083951cbb5SPaul Cercueil			gpio-controller;
1093951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 64 32>;
1103951cbb5SPaul Cercueil			#gpio-cells = <2>;
1113951cbb5SPaul Cercueil
1123951cbb5SPaul Cercueil			interrupt-controller;
1133951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1143951cbb5SPaul Cercueil
1153951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1163951cbb5SPaul Cercueil			interrupts = <26>;
1173951cbb5SPaul Cercueil		};
1183951cbb5SPaul Cercueil
1193951cbb5SPaul Cercueil		gpd: gpio@3 {
1203951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1213951cbb5SPaul Cercueil			reg = <3>;
1223951cbb5SPaul Cercueil
1233951cbb5SPaul Cercueil			gpio-controller;
1243951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 96 32>;
1253951cbb5SPaul Cercueil			#gpio-cells = <2>;
1263951cbb5SPaul Cercueil
1273951cbb5SPaul Cercueil			interrupt-controller;
1283951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1293951cbb5SPaul Cercueil
1303951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1313951cbb5SPaul Cercueil			interrupts = <25>;
1323951cbb5SPaul Cercueil		};
1333951cbb5SPaul Cercueil	};
1343951cbb5SPaul Cercueil
135*36ba3eaeSPaul Cercueil	aic: audio-controller@10020000 {
136*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-i2s";
137*36ba3eaeSPaul Cercueil		reg = <0x10020000 0x38>;
138*36ba3eaeSPaul Cercueil
139*36ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
140*36ba3eaeSPaul Cercueil
141*36ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
142*36ba3eaeSPaul Cercueil		interrupts = <18>;
143*36ba3eaeSPaul Cercueil
144*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>,
145*36ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_I2S>,
146*36ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_EXT>,
147*36ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_PLL_HALF>;
148*36ba3eaeSPaul Cercueil		clock-names = "aic", "i2s", "ext", "pll half";
149*36ba3eaeSPaul Cercueil
150*36ba3eaeSPaul Cercueil		dmas = <&dmac 25 0xffffffff>, <&dmac 24 0xffffffff>;
151*36ba3eaeSPaul Cercueil		dma-names = "rx", "tx";
152*36ba3eaeSPaul Cercueil	};
153*36ba3eaeSPaul Cercueil
154*36ba3eaeSPaul Cercueil	codec: audio-codec@100200a4 {
155*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-codec";
156*36ba3eaeSPaul Cercueil		reg = <0x10020080 0x8>;
157*36ba3eaeSPaul Cercueil
158*36ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
159*36ba3eaeSPaul Cercueil
160*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>;
161*36ba3eaeSPaul Cercueil		clock-names = "aic";
162*36ba3eaeSPaul Cercueil	};
163*36ba3eaeSPaul Cercueil
1645dad549dSPaul Cercueil	mmc: mmc@10021000 {
1655dad549dSPaul Cercueil		compatible = "ingenic,jz4740-mmc";
1665dad549dSPaul Cercueil		reg = <0x10021000 0x1000>;
1675dad549dSPaul Cercueil
1685dad549dSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MMC>;
1695dad549dSPaul Cercueil		clock-names = "mmc";
1705dad549dSPaul Cercueil
1715dad549dSPaul Cercueil		interrupt-parent = <&intc>;
1725dad549dSPaul Cercueil		interrupts = <14>;
1735dad549dSPaul Cercueil
1745dad549dSPaul Cercueil		dmas = <&dmac 27 0xffffffff>, <&dmac 26 0xffffffff>;
1755dad549dSPaul Cercueil		dma-names = "rx", "tx";
1765dad549dSPaul Cercueil
1775dad549dSPaul Cercueil		cap-sd-highspeed;
1785dad549dSPaul Cercueil		cap-mmc-highspeed;
1795dad549dSPaul Cercueil		cap-sdio-irq;
1805dad549dSPaul Cercueil	};
1815dad549dSPaul Cercueil
1828838245dSPaul Burton	uart0: serial@10030000 {
1838838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
1848838245dSPaul Burton		reg = <0x10030000 0x100>;
1858838245dSPaul Burton
1868838245dSPaul Burton		interrupt-parent = <&intc>;
1878838245dSPaul Burton		interrupts = <9>;
1888838245dSPaul Burton
1898838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART0>;
1908838245dSPaul Burton		clock-names = "baud", "module";
1918838245dSPaul Burton	};
1928838245dSPaul Burton
1938838245dSPaul Burton	uart1: serial@10031000 {
1948838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
1958838245dSPaul Burton		reg = <0x10031000 0x100>;
1968838245dSPaul Burton
1978838245dSPaul Burton		interrupt-parent = <&intc>;
1988838245dSPaul Burton		interrupts = <8>;
1998838245dSPaul Burton
2008838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART1>;
2018838245dSPaul Burton		clock-names = "baud", "module";
2028838245dSPaul Burton	};
2039d1e7875SMaarten ter Huurne
204*36ba3eaeSPaul Cercueil	adc: adc@10070000 {
205*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-adc";
206*36ba3eaeSPaul Cercueil		reg = <0x10070000 0x30>;
207*36ba3eaeSPaul Cercueil		#io-channel-cells = <1>;
208*36ba3eaeSPaul Cercueil
209*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_ADC>;
210*36ba3eaeSPaul Cercueil		clock-names = "adc";
211*36ba3eaeSPaul Cercueil
212*36ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
213*36ba3eaeSPaul Cercueil		interrupts = <12>;
214*36ba3eaeSPaul Cercueil	};
215*36ba3eaeSPaul Cercueil
216*36ba3eaeSPaul Cercueil	nemc: memory-controller@13010000 {
217*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-nemc";
218*36ba3eaeSPaul Cercueil		reg = <0x13010000 0x54>;
219*36ba3eaeSPaul Cercueil		#address-cells = <2>;
220*36ba3eaeSPaul Cercueil		#size-cells = <1>;
221*36ba3eaeSPaul Cercueil		ranges = <1 0 0x18000000 0x4000000
222*36ba3eaeSPaul Cercueil			  2 0 0x14000000 0x4000000
223*36ba3eaeSPaul Cercueil			  3 0 0x0c000000 0x4000000
224*36ba3eaeSPaul Cercueil			  4 0 0x08000000 0x4000000>;
225*36ba3eaeSPaul Cercueil
226*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
227*36ba3eaeSPaul Cercueil	};
228*36ba3eaeSPaul Cercueil
229*36ba3eaeSPaul Cercueil	ecc: ecc-controller@13010100 {
230*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-ecc";
231*36ba3eaeSPaul Cercueil		reg = <0x13010100 0x2C>;
232*36ba3eaeSPaul Cercueil
233*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
234*36ba3eaeSPaul Cercueil	};
235*36ba3eaeSPaul Cercueil
236d426c517SPaul Cercueil	dmac: dma-controller@13020000 {
237d426c517SPaul Cercueil		compatible = "ingenic,jz4740-dma";
238d426c517SPaul Cercueil		reg = <0x13020000 0xbc
239d426c517SPaul Cercueil		       0x13020300 0x14>;
240d426c517SPaul Cercueil		#dma-cells = <2>;
241d426c517SPaul Cercueil
242d426c517SPaul Cercueil		interrupt-parent = <&intc>;
24370999ec1SPaul Cercueil		interrupts = <20>;
244d426c517SPaul Cercueil
245d426c517SPaul Cercueil		clocks = <&cgu JZ4740_CLK_DMA>;
246d426c517SPaul Cercueil	};
247d426c517SPaul Cercueil
2489d1e7875SMaarten ter Huurne	uhc: uhc@13030000 {
2499d1e7875SMaarten ter Huurne		compatible = "ingenic,jz4740-ohci", "generic-ohci";
2509d1e7875SMaarten ter Huurne		reg = <0x13030000 0x1000>;
2519d1e7875SMaarten ter Huurne
2529d1e7875SMaarten ter Huurne		clocks = <&cgu JZ4740_CLK_UHC>;
2539d1e7875SMaarten ter Huurne		assigned-clocks = <&cgu JZ4740_CLK_UHC>;
2549d1e7875SMaarten ter Huurne		assigned-clock-rates = <48000000>;
2559d1e7875SMaarten ter Huurne
2569d1e7875SMaarten ter Huurne		interrupt-parent = <&intc>;
2579d1e7875SMaarten ter Huurne		interrupts = <3>;
2589d1e7875SMaarten ter Huurne
2599d1e7875SMaarten ter Huurne		status = "disabled";
2609d1e7875SMaarten ter Huurne	};
261*36ba3eaeSPaul Cercueil
262*36ba3eaeSPaul Cercueil	udc: usb@13040000 {
263*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-musb";
264*36ba3eaeSPaul Cercueil		reg = <0x13040000 0x10000>;
265*36ba3eaeSPaul Cercueil
266*36ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
267*36ba3eaeSPaul Cercueil		interrupts = <24>;
268*36ba3eaeSPaul Cercueil		interrupt-names = "mc";
269*36ba3eaeSPaul Cercueil
270*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_UDC>;
271*36ba3eaeSPaul Cercueil		clock-names = "udc";
272*36ba3eaeSPaul Cercueil	};
273*36ba3eaeSPaul Cercueil
274*36ba3eaeSPaul Cercueil	lcd: lcd-controller@13050000 {
275*36ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-lcd";
276*36ba3eaeSPaul Cercueil		reg = <0x13050000 0x1000>;
277*36ba3eaeSPaul Cercueil
278*36ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
279*36ba3eaeSPaul Cercueil		interrupts = <30>;
280*36ba3eaeSPaul Cercueil
281*36ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_LCD_PCLK>, <&cgu JZ4740_CLK_LCD>;
282*36ba3eaeSPaul Cercueil		clock-names = "lcd_pclk", "lcd";
283*36ba3eaeSPaul Cercueil	};
284ffb1843dSPaul Burton};
285