xref: /openbmc/linux/arch/mips/boot/dts/ingenic/jz4740.dtsi (revision bf40bf5ecf3f96b95c0ed8d6badf0b34df879adf)
1b2441318SGreg Kroah-Hartman// SPDX-License-Identifier: GPL-2.0
2ff1930c6SPaul Burton#include <dt-bindings/clock/jz4740-cgu.h>
311479e8eSPaul Cercueil#include <dt-bindings/clock/ingenic,tcu.h>
4ff1930c6SPaul Burton
5ffb1843dSPaul Burton/ {
6ffb1843dSPaul Burton	#address-cells = <1>;
7ffb1843dSPaul Burton	#size-cells = <1>;
8ffb1843dSPaul Burton	compatible = "ingenic,jz4740";
98e8261ebSPaul Burton
105214cae7SAntony Pavlov	cpuintc: interrupt-controller {
118e8261ebSPaul Burton		#address-cells = <0>;
128e8261ebSPaul Burton		#interrupt-cells = <1>;
138e8261ebSPaul Burton		interrupt-controller;
148e8261ebSPaul Burton		compatible = "mti,cpu-interrupt-controller";
158e8261ebSPaul Burton	};
16adbdce77SPaul Burton
17adbdce77SPaul Burton	intc: interrupt-controller@10001000 {
18adbdce77SPaul Burton		compatible = "ingenic,jz4740-intc";
19adbdce77SPaul Burton		reg = <0x10001000 0x14>;
20adbdce77SPaul Burton
21adbdce77SPaul Burton		interrupt-controller;
22adbdce77SPaul Burton		#interrupt-cells = <1>;
23adbdce77SPaul Burton
24adbdce77SPaul Burton		interrupt-parent = <&cpuintc>;
25adbdce77SPaul Burton		interrupts = <2>;
26adbdce77SPaul Burton	};
27ff1930c6SPaul Burton
28ff1930c6SPaul Burton	ext: ext {
29ff1930c6SPaul Burton		compatible = "fixed-clock";
30ff1930c6SPaul Burton		#clock-cells = <0>;
31ff1930c6SPaul Burton	};
32ff1930c6SPaul Burton
33ff1930c6SPaul Burton	rtc: rtc {
34ff1930c6SPaul Burton		compatible = "fixed-clock";
35ff1930c6SPaul Burton		#clock-cells = <0>;
36ff1930c6SPaul Burton		clock-frequency = <32768>;
37ff1930c6SPaul Burton	};
38ff1930c6SPaul Burton
39ff1930c6SPaul Burton	cgu: jz4740-cgu@10000000 {
40ff1930c6SPaul Burton		compatible = "ingenic,jz4740-cgu";
41ff1930c6SPaul Burton		reg = <0x10000000 0x100>;
42ff1930c6SPaul Burton
43ff1930c6SPaul Burton		clocks = <&ext>, <&rtc>;
44ff1930c6SPaul Burton		clock-names = "ext", "rtc";
45ff1930c6SPaul Burton
46ff1930c6SPaul Burton		#clock-cells = <1>;
47ff1930c6SPaul Burton	};
488838245dSPaul Burton
4936aafdbdSPaul Cercueil	tcu: timer@10002000 {
5036aafdbdSPaul Cercueil		compatible = "ingenic,jz4740-tcu", "simple-mfd";
5136aafdbdSPaul Cercueil		reg = <0x10002000 0x1000>;
5236aafdbdSPaul Cercueil		#address-cells = <1>;
5336aafdbdSPaul Cercueil		#size-cells = <1>;
5436aafdbdSPaul Cercueil		ranges = <0x0 0x10002000 0x1000>;
5536aafdbdSPaul Cercueil
5636aafdbdSPaul Cercueil		#clock-cells = <1>;
5736aafdbdSPaul Cercueil
58cf2e6b8eSPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>,
59cf2e6b8eSPaul Cercueil			 <&cgu JZ4740_CLK_EXT>,
60cf2e6b8eSPaul Cercueil			 <&cgu JZ4740_CLK_PCLK>,
61cf2e6b8eSPaul Cercueil			 <&cgu JZ4740_CLK_TCU>;
6236aafdbdSPaul Cercueil		clock-names = "rtc", "ext", "pclk", "tcu";
6336aafdbdSPaul Cercueil
6436aafdbdSPaul Cercueil		interrupt-controller;
6536aafdbdSPaul Cercueil		#interrupt-cells = <1>;
6636aafdbdSPaul Cercueil
6736aafdbdSPaul Cercueil		interrupt-parent = <&intc>;
6836aafdbdSPaul Cercueil		interrupts = <23 22 21>;
6911479e8eSPaul Cercueil
7011479e8eSPaul Cercueil		watchdog: watchdog@0 {
7111479e8eSPaul Cercueil			compatible = "ingenic,jz4740-watchdog";
7211479e8eSPaul Cercueil			reg = <0x0 0xc>;
7311479e8eSPaul Cercueil
7411479e8eSPaul Cercueil			clocks = <&tcu TCU_CLK_WDT>;
7511479e8eSPaul Cercueil			clock-names = "wdt";
7611479e8eSPaul Cercueil		};
77*bf40bf5eSPaul Cercueil
78*bf40bf5eSPaul Cercueil		pwm: pwm@40 {
79*bf40bf5eSPaul Cercueil			compatible = "ingenic,jz4740-pwm";
80*bf40bf5eSPaul Cercueil			reg = <0x40 0x80>;
81*bf40bf5eSPaul Cercueil
82*bf40bf5eSPaul Cercueil			#pwm-cells = <3>;
83*bf40bf5eSPaul Cercueil
84*bf40bf5eSPaul Cercueil			clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>,
85*bf40bf5eSPaul Cercueil				 <&tcu TCU_CLK_TIMER2>, <&tcu TCU_CLK_TIMER3>,
86*bf40bf5eSPaul Cercueil				 <&tcu TCU_CLK_TIMER4>, <&tcu TCU_CLK_TIMER5>,
87*bf40bf5eSPaul Cercueil				 <&tcu TCU_CLK_TIMER6>, <&tcu TCU_CLK_TIMER7>;
88*bf40bf5eSPaul Cercueil			clock-names = "timer0", "timer1", "timer2", "timer3",
89*bf40bf5eSPaul Cercueil				      "timer4", "timer5", "timer6", "timer7";
90*bf40bf5eSPaul Cercueil		};
9136aafdbdSPaul Cercueil	};
9236aafdbdSPaul Cercueil
93262d62cbSPaul Cercueil	rtc_dev: rtc@10003000 {
94262d62cbSPaul Cercueil		compatible = "ingenic,jz4740-rtc";
95262d62cbSPaul Cercueil		reg = <0x10003000 0x40>;
96262d62cbSPaul Cercueil
97262d62cbSPaul Cercueil		interrupt-parent = <&intc>;
98262d62cbSPaul Cercueil		interrupts = <15>;
99262d62cbSPaul Cercueil
100262d62cbSPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>;
101262d62cbSPaul Cercueil		clock-names = "rtc";
102262d62cbSPaul Cercueil	};
103262d62cbSPaul Cercueil
1043951cbb5SPaul Cercueil	pinctrl: pin-controller@10010000 {
1053951cbb5SPaul Cercueil		compatible = "ingenic,jz4740-pinctrl";
1063951cbb5SPaul Cercueil		reg = <0x10010000 0x400>;
1073951cbb5SPaul Cercueil
1083951cbb5SPaul Cercueil		#address-cells = <1>;
1093951cbb5SPaul Cercueil		#size-cells = <0>;
1103951cbb5SPaul Cercueil
1113951cbb5SPaul Cercueil		gpa: gpio@0 {
1123951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1133951cbb5SPaul Cercueil			reg = <0>;
1143951cbb5SPaul Cercueil
1153951cbb5SPaul Cercueil			gpio-controller;
1163951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 0 32>;
1173951cbb5SPaul Cercueil			#gpio-cells = <2>;
1183951cbb5SPaul Cercueil
1193951cbb5SPaul Cercueil			interrupt-controller;
1203951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1213951cbb5SPaul Cercueil
1223951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1233951cbb5SPaul Cercueil			interrupts = <28>;
1243951cbb5SPaul Cercueil		};
1253951cbb5SPaul Cercueil
1263951cbb5SPaul Cercueil		gpb: gpio@1 {
1273951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1283951cbb5SPaul Cercueil			reg = <1>;
1293951cbb5SPaul Cercueil
1303951cbb5SPaul Cercueil			gpio-controller;
1313951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 32 32>;
1323951cbb5SPaul Cercueil			#gpio-cells = <2>;
1333951cbb5SPaul Cercueil
1343951cbb5SPaul Cercueil			interrupt-controller;
1353951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1363951cbb5SPaul Cercueil
1373951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1383951cbb5SPaul Cercueil			interrupts = <27>;
1393951cbb5SPaul Cercueil		};
1403951cbb5SPaul Cercueil
1413951cbb5SPaul Cercueil		gpc: gpio@2 {
1423951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1433951cbb5SPaul Cercueil			reg = <2>;
1443951cbb5SPaul Cercueil
1453951cbb5SPaul Cercueil			gpio-controller;
1463951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 64 32>;
1473951cbb5SPaul Cercueil			#gpio-cells = <2>;
1483951cbb5SPaul Cercueil
1493951cbb5SPaul Cercueil			interrupt-controller;
1503951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1513951cbb5SPaul Cercueil
1523951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1533951cbb5SPaul Cercueil			interrupts = <26>;
1543951cbb5SPaul Cercueil		};
1553951cbb5SPaul Cercueil
1563951cbb5SPaul Cercueil		gpd: gpio@3 {
1573951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1583951cbb5SPaul Cercueil			reg = <3>;
1593951cbb5SPaul Cercueil
1603951cbb5SPaul Cercueil			gpio-controller;
1613951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 96 32>;
1623951cbb5SPaul Cercueil			#gpio-cells = <2>;
1633951cbb5SPaul Cercueil
1643951cbb5SPaul Cercueil			interrupt-controller;
1653951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1663951cbb5SPaul Cercueil
1673951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1683951cbb5SPaul Cercueil			interrupts = <25>;
1693951cbb5SPaul Cercueil		};
1703951cbb5SPaul Cercueil	};
1713951cbb5SPaul Cercueil
17236ba3eaeSPaul Cercueil	aic: audio-controller@10020000 {
17336ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-i2s";
17436ba3eaeSPaul Cercueil		reg = <0x10020000 0x38>;
17536ba3eaeSPaul Cercueil
17636ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
17736ba3eaeSPaul Cercueil
17836ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
17936ba3eaeSPaul Cercueil		interrupts = <18>;
18036ba3eaeSPaul Cercueil
18136ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>,
18236ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_I2S>,
18336ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_EXT>,
18436ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_PLL_HALF>;
18536ba3eaeSPaul Cercueil		clock-names = "aic", "i2s", "ext", "pll half";
18636ba3eaeSPaul Cercueil
18736ba3eaeSPaul Cercueil		dmas = <&dmac 25 0xffffffff>, <&dmac 24 0xffffffff>;
18836ba3eaeSPaul Cercueil		dma-names = "rx", "tx";
18936ba3eaeSPaul Cercueil	};
19036ba3eaeSPaul Cercueil
19136ba3eaeSPaul Cercueil	codec: audio-codec@100200a4 {
19236ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-codec";
19336ba3eaeSPaul Cercueil		reg = <0x10020080 0x8>;
19436ba3eaeSPaul Cercueil
19536ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
19636ba3eaeSPaul Cercueil
19736ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>;
19836ba3eaeSPaul Cercueil		clock-names = "aic";
19936ba3eaeSPaul Cercueil	};
20036ba3eaeSPaul Cercueil
2015dad549dSPaul Cercueil	mmc: mmc@10021000 {
2025dad549dSPaul Cercueil		compatible = "ingenic,jz4740-mmc";
2035dad549dSPaul Cercueil		reg = <0x10021000 0x1000>;
2045dad549dSPaul Cercueil
2055dad549dSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MMC>;
2065dad549dSPaul Cercueil		clock-names = "mmc";
2075dad549dSPaul Cercueil
2085dad549dSPaul Cercueil		interrupt-parent = <&intc>;
2095dad549dSPaul Cercueil		interrupts = <14>;
2105dad549dSPaul Cercueil
2115dad549dSPaul Cercueil		dmas = <&dmac 27 0xffffffff>, <&dmac 26 0xffffffff>;
2125dad549dSPaul Cercueil		dma-names = "rx", "tx";
2135dad549dSPaul Cercueil
2145dad549dSPaul Cercueil		cap-sd-highspeed;
2155dad549dSPaul Cercueil		cap-mmc-highspeed;
2165dad549dSPaul Cercueil		cap-sdio-irq;
2175dad549dSPaul Cercueil	};
2185dad549dSPaul Cercueil
2198838245dSPaul Burton	uart0: serial@10030000 {
2208838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
2218838245dSPaul Burton		reg = <0x10030000 0x100>;
2228838245dSPaul Burton
2238838245dSPaul Burton		interrupt-parent = <&intc>;
2248838245dSPaul Burton		interrupts = <9>;
2258838245dSPaul Burton
2268838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART0>;
2278838245dSPaul Burton		clock-names = "baud", "module";
2288838245dSPaul Burton	};
2298838245dSPaul Burton
2308838245dSPaul Burton	uart1: serial@10031000 {
2318838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
2328838245dSPaul Burton		reg = <0x10031000 0x100>;
2338838245dSPaul Burton
2348838245dSPaul Burton		interrupt-parent = <&intc>;
2358838245dSPaul Burton		interrupts = <8>;
2368838245dSPaul Burton
2378838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART1>;
2388838245dSPaul Burton		clock-names = "baud", "module";
2398838245dSPaul Burton	};
2409d1e7875SMaarten ter Huurne
24136ba3eaeSPaul Cercueil	adc: adc@10070000 {
24236ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-adc";
24336ba3eaeSPaul Cercueil		reg = <0x10070000 0x30>;
24436ba3eaeSPaul Cercueil		#io-channel-cells = <1>;
24536ba3eaeSPaul Cercueil
24636ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_ADC>;
24736ba3eaeSPaul Cercueil		clock-names = "adc";
24836ba3eaeSPaul Cercueil
24936ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
25036ba3eaeSPaul Cercueil		interrupts = <12>;
25136ba3eaeSPaul Cercueil	};
25236ba3eaeSPaul Cercueil
25336ba3eaeSPaul Cercueil	nemc: memory-controller@13010000 {
25436ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-nemc";
25536ba3eaeSPaul Cercueil		reg = <0x13010000 0x54>;
25636ba3eaeSPaul Cercueil		#address-cells = <2>;
25736ba3eaeSPaul Cercueil		#size-cells = <1>;
258cf2e6b8eSPaul Cercueil		ranges = <1 0 0x18000000 0x4000000>,
259cf2e6b8eSPaul Cercueil			 <2 0 0x14000000 0x4000000>,
260cf2e6b8eSPaul Cercueil			 <3 0 0x0c000000 0x4000000>,
261cf2e6b8eSPaul Cercueil			 <4 0 0x08000000 0x4000000>;
26236ba3eaeSPaul Cercueil
26336ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
26436ba3eaeSPaul Cercueil	};
26536ba3eaeSPaul Cercueil
26636ba3eaeSPaul Cercueil	ecc: ecc-controller@13010100 {
26736ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-ecc";
26836ba3eaeSPaul Cercueil		reg = <0x13010100 0x2C>;
26936ba3eaeSPaul Cercueil
27036ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
27136ba3eaeSPaul Cercueil	};
27236ba3eaeSPaul Cercueil
273d426c517SPaul Cercueil	dmac: dma-controller@13020000 {
274d426c517SPaul Cercueil		compatible = "ingenic,jz4740-dma";
275cf2e6b8eSPaul Cercueil		reg = <0x13020000 0xbc>, <0x13020300 0x14>;
276d426c517SPaul Cercueil		#dma-cells = <2>;
277d426c517SPaul Cercueil
278d426c517SPaul Cercueil		interrupt-parent = <&intc>;
27970999ec1SPaul Cercueil		interrupts = <20>;
280d426c517SPaul Cercueil
281d426c517SPaul Cercueil		clocks = <&cgu JZ4740_CLK_DMA>;
282d426c517SPaul Cercueil	};
283d426c517SPaul Cercueil
2849d1e7875SMaarten ter Huurne	uhc: uhc@13030000 {
2859d1e7875SMaarten ter Huurne		compatible = "ingenic,jz4740-ohci", "generic-ohci";
2869d1e7875SMaarten ter Huurne		reg = <0x13030000 0x1000>;
2879d1e7875SMaarten ter Huurne
2889d1e7875SMaarten ter Huurne		clocks = <&cgu JZ4740_CLK_UHC>;
2899d1e7875SMaarten ter Huurne		assigned-clocks = <&cgu JZ4740_CLK_UHC>;
2909d1e7875SMaarten ter Huurne		assigned-clock-rates = <48000000>;
2919d1e7875SMaarten ter Huurne
2929d1e7875SMaarten ter Huurne		interrupt-parent = <&intc>;
2939d1e7875SMaarten ter Huurne		interrupts = <3>;
2949d1e7875SMaarten ter Huurne
2959d1e7875SMaarten ter Huurne		status = "disabled";
2969d1e7875SMaarten ter Huurne	};
29736ba3eaeSPaul Cercueil
29836ba3eaeSPaul Cercueil	udc: usb@13040000 {
29936ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-musb";
30036ba3eaeSPaul Cercueil		reg = <0x13040000 0x10000>;
30136ba3eaeSPaul Cercueil
30236ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
30336ba3eaeSPaul Cercueil		interrupts = <24>;
30436ba3eaeSPaul Cercueil		interrupt-names = "mc";
30536ba3eaeSPaul Cercueil
30636ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_UDC>;
30736ba3eaeSPaul Cercueil		clock-names = "udc";
30836ba3eaeSPaul Cercueil	};
30936ba3eaeSPaul Cercueil
31036ba3eaeSPaul Cercueil	lcd: lcd-controller@13050000 {
31136ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-lcd";
31236ba3eaeSPaul Cercueil		reg = <0x13050000 0x1000>;
31336ba3eaeSPaul Cercueil
31436ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
31536ba3eaeSPaul Cercueil		interrupts = <30>;
31636ba3eaeSPaul Cercueil
31736ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_LCD_PCLK>, <&cgu JZ4740_CLK_LCD>;
31836ba3eaeSPaul Cercueil		clock-names = "lcd_pclk", "lcd";
31936ba3eaeSPaul Cercueil	};
320ffb1843dSPaul Burton};
321