xref: /openbmc/linux/arch/mips/boot/dts/ingenic/jz4740.dtsi (revision cf2e6b8e6f6f28c186700cb93c0b9b98960705c7)
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
58*cf2e6b8eSPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>,
59*cf2e6b8eSPaul Cercueil			 <&cgu JZ4740_CLK_EXT>,
60*cf2e6b8eSPaul Cercueil			 <&cgu JZ4740_CLK_PCLK>,
61*cf2e6b8eSPaul 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		};
7736aafdbdSPaul Cercueil	};
7836aafdbdSPaul Cercueil
79262d62cbSPaul Cercueil	rtc_dev: rtc@10003000 {
80262d62cbSPaul Cercueil		compatible = "ingenic,jz4740-rtc";
81262d62cbSPaul Cercueil		reg = <0x10003000 0x40>;
82262d62cbSPaul Cercueil
83262d62cbSPaul Cercueil		interrupt-parent = <&intc>;
84262d62cbSPaul Cercueil		interrupts = <15>;
85262d62cbSPaul Cercueil
86262d62cbSPaul Cercueil		clocks = <&cgu JZ4740_CLK_RTC>;
87262d62cbSPaul Cercueil		clock-names = "rtc";
88262d62cbSPaul Cercueil	};
89262d62cbSPaul Cercueil
903951cbb5SPaul Cercueil	pinctrl: pin-controller@10010000 {
913951cbb5SPaul Cercueil		compatible = "ingenic,jz4740-pinctrl";
923951cbb5SPaul Cercueil		reg = <0x10010000 0x400>;
933951cbb5SPaul Cercueil
943951cbb5SPaul Cercueil		#address-cells = <1>;
953951cbb5SPaul Cercueil		#size-cells = <0>;
963951cbb5SPaul Cercueil
973951cbb5SPaul Cercueil		gpa: gpio@0 {
983951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
993951cbb5SPaul Cercueil			reg = <0>;
1003951cbb5SPaul Cercueil
1013951cbb5SPaul Cercueil			gpio-controller;
1023951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 0 32>;
1033951cbb5SPaul Cercueil			#gpio-cells = <2>;
1043951cbb5SPaul Cercueil
1053951cbb5SPaul Cercueil			interrupt-controller;
1063951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1073951cbb5SPaul Cercueil
1083951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1093951cbb5SPaul Cercueil			interrupts = <28>;
1103951cbb5SPaul Cercueil		};
1113951cbb5SPaul Cercueil
1123951cbb5SPaul Cercueil		gpb: gpio@1 {
1133951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1143951cbb5SPaul Cercueil			reg = <1>;
1153951cbb5SPaul Cercueil
1163951cbb5SPaul Cercueil			gpio-controller;
1173951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 32 32>;
1183951cbb5SPaul Cercueil			#gpio-cells = <2>;
1193951cbb5SPaul Cercueil
1203951cbb5SPaul Cercueil			interrupt-controller;
1213951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1223951cbb5SPaul Cercueil
1233951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1243951cbb5SPaul Cercueil			interrupts = <27>;
1253951cbb5SPaul Cercueil		};
1263951cbb5SPaul Cercueil
1273951cbb5SPaul Cercueil		gpc: gpio@2 {
1283951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1293951cbb5SPaul Cercueil			reg = <2>;
1303951cbb5SPaul Cercueil
1313951cbb5SPaul Cercueil			gpio-controller;
1323951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 64 32>;
1333951cbb5SPaul Cercueil			#gpio-cells = <2>;
1343951cbb5SPaul Cercueil
1353951cbb5SPaul Cercueil			interrupt-controller;
1363951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1373951cbb5SPaul Cercueil
1383951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1393951cbb5SPaul Cercueil			interrupts = <26>;
1403951cbb5SPaul Cercueil		};
1413951cbb5SPaul Cercueil
1423951cbb5SPaul Cercueil		gpd: gpio@3 {
1433951cbb5SPaul Cercueil			compatible = "ingenic,jz4740-gpio";
1443951cbb5SPaul Cercueil			reg = <3>;
1453951cbb5SPaul Cercueil
1463951cbb5SPaul Cercueil			gpio-controller;
1473951cbb5SPaul Cercueil			gpio-ranges = <&pinctrl 0 96 32>;
1483951cbb5SPaul Cercueil			#gpio-cells = <2>;
1493951cbb5SPaul Cercueil
1503951cbb5SPaul Cercueil			interrupt-controller;
1513951cbb5SPaul Cercueil			#interrupt-cells = <2>;
1523951cbb5SPaul Cercueil
1533951cbb5SPaul Cercueil			interrupt-parent = <&intc>;
1543951cbb5SPaul Cercueil			interrupts = <25>;
1553951cbb5SPaul Cercueil		};
1563951cbb5SPaul Cercueil	};
1573951cbb5SPaul Cercueil
15836ba3eaeSPaul Cercueil	aic: audio-controller@10020000 {
15936ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-i2s";
16036ba3eaeSPaul Cercueil		reg = <0x10020000 0x38>;
16136ba3eaeSPaul Cercueil
16236ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
16336ba3eaeSPaul Cercueil
16436ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
16536ba3eaeSPaul Cercueil		interrupts = <18>;
16636ba3eaeSPaul Cercueil
16736ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>,
16836ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_I2S>,
16936ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_EXT>,
17036ba3eaeSPaul Cercueil			 <&cgu JZ4740_CLK_PLL_HALF>;
17136ba3eaeSPaul Cercueil		clock-names = "aic", "i2s", "ext", "pll half";
17236ba3eaeSPaul Cercueil
17336ba3eaeSPaul Cercueil		dmas = <&dmac 25 0xffffffff>, <&dmac 24 0xffffffff>;
17436ba3eaeSPaul Cercueil		dma-names = "rx", "tx";
17536ba3eaeSPaul Cercueil	};
17636ba3eaeSPaul Cercueil
17736ba3eaeSPaul Cercueil	codec: audio-codec@100200a4 {
17836ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-codec";
17936ba3eaeSPaul Cercueil		reg = <0x10020080 0x8>;
18036ba3eaeSPaul Cercueil
18136ba3eaeSPaul Cercueil		#sound-dai-cells = <0>;
18236ba3eaeSPaul Cercueil
18336ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_AIC>;
18436ba3eaeSPaul Cercueil		clock-names = "aic";
18536ba3eaeSPaul Cercueil	};
18636ba3eaeSPaul Cercueil
1875dad549dSPaul Cercueil	mmc: mmc@10021000 {
1885dad549dSPaul Cercueil		compatible = "ingenic,jz4740-mmc";
1895dad549dSPaul Cercueil		reg = <0x10021000 0x1000>;
1905dad549dSPaul Cercueil
1915dad549dSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MMC>;
1925dad549dSPaul Cercueil		clock-names = "mmc";
1935dad549dSPaul Cercueil
1945dad549dSPaul Cercueil		interrupt-parent = <&intc>;
1955dad549dSPaul Cercueil		interrupts = <14>;
1965dad549dSPaul Cercueil
1975dad549dSPaul Cercueil		dmas = <&dmac 27 0xffffffff>, <&dmac 26 0xffffffff>;
1985dad549dSPaul Cercueil		dma-names = "rx", "tx";
1995dad549dSPaul Cercueil
2005dad549dSPaul Cercueil		cap-sd-highspeed;
2015dad549dSPaul Cercueil		cap-mmc-highspeed;
2025dad549dSPaul Cercueil		cap-sdio-irq;
2035dad549dSPaul Cercueil	};
2045dad549dSPaul Cercueil
2058838245dSPaul Burton	uart0: serial@10030000 {
2068838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
2078838245dSPaul Burton		reg = <0x10030000 0x100>;
2088838245dSPaul Burton
2098838245dSPaul Burton		interrupt-parent = <&intc>;
2108838245dSPaul Burton		interrupts = <9>;
2118838245dSPaul Burton
2128838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART0>;
2138838245dSPaul Burton		clock-names = "baud", "module";
2148838245dSPaul Burton	};
2158838245dSPaul Burton
2168838245dSPaul Burton	uart1: serial@10031000 {
2178838245dSPaul Burton		compatible = "ingenic,jz4740-uart";
2188838245dSPaul Burton		reg = <0x10031000 0x100>;
2198838245dSPaul Burton
2208838245dSPaul Burton		interrupt-parent = <&intc>;
2218838245dSPaul Burton		interrupts = <8>;
2228838245dSPaul Burton
2238838245dSPaul Burton		clocks = <&ext>, <&cgu JZ4740_CLK_UART1>;
2248838245dSPaul Burton		clock-names = "baud", "module";
2258838245dSPaul Burton	};
2269d1e7875SMaarten ter Huurne
22736ba3eaeSPaul Cercueil	adc: adc@10070000 {
22836ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-adc";
22936ba3eaeSPaul Cercueil		reg = <0x10070000 0x30>;
23036ba3eaeSPaul Cercueil		#io-channel-cells = <1>;
23136ba3eaeSPaul Cercueil
23236ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_ADC>;
23336ba3eaeSPaul Cercueil		clock-names = "adc";
23436ba3eaeSPaul Cercueil
23536ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
23636ba3eaeSPaul Cercueil		interrupts = <12>;
23736ba3eaeSPaul Cercueil	};
23836ba3eaeSPaul Cercueil
23936ba3eaeSPaul Cercueil	nemc: memory-controller@13010000 {
24036ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-nemc";
24136ba3eaeSPaul Cercueil		reg = <0x13010000 0x54>;
24236ba3eaeSPaul Cercueil		#address-cells = <2>;
24336ba3eaeSPaul Cercueil		#size-cells = <1>;
244*cf2e6b8eSPaul Cercueil		ranges = <1 0 0x18000000 0x4000000>,
245*cf2e6b8eSPaul Cercueil			 <2 0 0x14000000 0x4000000>,
246*cf2e6b8eSPaul Cercueil			 <3 0 0x0c000000 0x4000000>,
247*cf2e6b8eSPaul Cercueil			 <4 0 0x08000000 0x4000000>;
24836ba3eaeSPaul Cercueil
24936ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
25036ba3eaeSPaul Cercueil	};
25136ba3eaeSPaul Cercueil
25236ba3eaeSPaul Cercueil	ecc: ecc-controller@13010100 {
25336ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-ecc";
25436ba3eaeSPaul Cercueil		reg = <0x13010100 0x2C>;
25536ba3eaeSPaul Cercueil
25636ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_MCLK>;
25736ba3eaeSPaul Cercueil	};
25836ba3eaeSPaul Cercueil
259d426c517SPaul Cercueil	dmac: dma-controller@13020000 {
260d426c517SPaul Cercueil		compatible = "ingenic,jz4740-dma";
261*cf2e6b8eSPaul Cercueil		reg = <0x13020000 0xbc>, <0x13020300 0x14>;
262d426c517SPaul Cercueil		#dma-cells = <2>;
263d426c517SPaul Cercueil
264d426c517SPaul Cercueil		interrupt-parent = <&intc>;
26570999ec1SPaul Cercueil		interrupts = <20>;
266d426c517SPaul Cercueil
267d426c517SPaul Cercueil		clocks = <&cgu JZ4740_CLK_DMA>;
268d426c517SPaul Cercueil	};
269d426c517SPaul Cercueil
2709d1e7875SMaarten ter Huurne	uhc: uhc@13030000 {
2719d1e7875SMaarten ter Huurne		compatible = "ingenic,jz4740-ohci", "generic-ohci";
2729d1e7875SMaarten ter Huurne		reg = <0x13030000 0x1000>;
2739d1e7875SMaarten ter Huurne
2749d1e7875SMaarten ter Huurne		clocks = <&cgu JZ4740_CLK_UHC>;
2759d1e7875SMaarten ter Huurne		assigned-clocks = <&cgu JZ4740_CLK_UHC>;
2769d1e7875SMaarten ter Huurne		assigned-clock-rates = <48000000>;
2779d1e7875SMaarten ter Huurne
2789d1e7875SMaarten ter Huurne		interrupt-parent = <&intc>;
2799d1e7875SMaarten ter Huurne		interrupts = <3>;
2809d1e7875SMaarten ter Huurne
2819d1e7875SMaarten ter Huurne		status = "disabled";
2829d1e7875SMaarten ter Huurne	};
28336ba3eaeSPaul Cercueil
28436ba3eaeSPaul Cercueil	udc: usb@13040000 {
28536ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-musb";
28636ba3eaeSPaul Cercueil		reg = <0x13040000 0x10000>;
28736ba3eaeSPaul Cercueil
28836ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
28936ba3eaeSPaul Cercueil		interrupts = <24>;
29036ba3eaeSPaul Cercueil		interrupt-names = "mc";
29136ba3eaeSPaul Cercueil
29236ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_UDC>;
29336ba3eaeSPaul Cercueil		clock-names = "udc";
29436ba3eaeSPaul Cercueil	};
29536ba3eaeSPaul Cercueil
29636ba3eaeSPaul Cercueil	lcd: lcd-controller@13050000 {
29736ba3eaeSPaul Cercueil		compatible = "ingenic,jz4740-lcd";
29836ba3eaeSPaul Cercueil		reg = <0x13050000 0x1000>;
29936ba3eaeSPaul Cercueil
30036ba3eaeSPaul Cercueil		interrupt-parent = <&intc>;
30136ba3eaeSPaul Cercueil		interrupts = <30>;
30236ba3eaeSPaul Cercueil
30336ba3eaeSPaul Cercueil		clocks = <&cgu JZ4740_CLK_LCD_PCLK>, <&cgu JZ4740_CLK_LCD>;
30436ba3eaeSPaul Cercueil		clock-names = "lcd_pclk", "lcd";
30536ba3eaeSPaul Cercueil	};
306ffb1843dSPaul Burton};
307