xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/uniphier-pro4.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*4882a593Smuzhiyun//
3*4882a593Smuzhiyun// Device Tree Source for UniPhier Pro4 SoC
4*4882a593Smuzhiyun//
5*4882a593Smuzhiyun// Copyright (C) 2015-2016 Socionext Inc.
6*4882a593Smuzhiyun//   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <dt-bindings/gpio/uniphier-gpio.h>
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun/ {
11*4882a593Smuzhiyun	compatible = "socionext,uniphier-pro4";
12*4882a593Smuzhiyun	#address-cells = <1>;
13*4882a593Smuzhiyun	#size-cells = <1>;
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	cpus {
16*4882a593Smuzhiyun		#address-cells = <1>;
17*4882a593Smuzhiyun		#size-cells = <0>;
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun		cpu@0 {
20*4882a593Smuzhiyun			device_type = "cpu";
21*4882a593Smuzhiyun			compatible = "arm,cortex-a9";
22*4882a593Smuzhiyun			reg = <0>;
23*4882a593Smuzhiyun			enable-method = "psci";
24*4882a593Smuzhiyun			next-level-cache = <&l2>;
25*4882a593Smuzhiyun		};
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun		cpu@1 {
28*4882a593Smuzhiyun			device_type = "cpu";
29*4882a593Smuzhiyun			compatible = "arm,cortex-a9";
30*4882a593Smuzhiyun			reg = <1>;
31*4882a593Smuzhiyun			enable-method = "psci";
32*4882a593Smuzhiyun			next-level-cache = <&l2>;
33*4882a593Smuzhiyun		};
34*4882a593Smuzhiyun	};
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	psci {
37*4882a593Smuzhiyun		compatible = "arm,psci-0.2";
38*4882a593Smuzhiyun		method = "smc";
39*4882a593Smuzhiyun	};
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	clocks {
42*4882a593Smuzhiyun		refclk: ref {
43*4882a593Smuzhiyun			compatible = "fixed-clock";
44*4882a593Smuzhiyun			#clock-cells = <0>;
45*4882a593Smuzhiyun			clock-frequency = <25000000>;
46*4882a593Smuzhiyun		};
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun		arm_timer_clk: arm-timer {
49*4882a593Smuzhiyun			#clock-cells = <0>;
50*4882a593Smuzhiyun			compatible = "fixed-clock";
51*4882a593Smuzhiyun			clock-frequency = <50000000>;
52*4882a593Smuzhiyun		};
53*4882a593Smuzhiyun	};
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	soc {
56*4882a593Smuzhiyun		compatible = "simple-bus";
57*4882a593Smuzhiyun		#address-cells = <1>;
58*4882a593Smuzhiyun		#size-cells = <1>;
59*4882a593Smuzhiyun		ranges;
60*4882a593Smuzhiyun		interrupt-parent = <&intc>;
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun		l2: cache-controller@500c0000 {
63*4882a593Smuzhiyun			compatible = "socionext,uniphier-system-cache";
64*4882a593Smuzhiyun			reg = <0x500c0000 0x2000>, <0x503c0100 0x4>,
65*4882a593Smuzhiyun			      <0x506c0000 0x400>;
66*4882a593Smuzhiyun			interrupts = <0 174 4>, <0 175 4>;
67*4882a593Smuzhiyun			cache-unified;
68*4882a593Smuzhiyun			cache-size = <(768 * 1024)>;
69*4882a593Smuzhiyun			cache-sets = <256>;
70*4882a593Smuzhiyun			cache-line-size = <128>;
71*4882a593Smuzhiyun			cache-level = <2>;
72*4882a593Smuzhiyun		};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun		spi0: spi@54006000 {
75*4882a593Smuzhiyun			compatible = "socionext,uniphier-scssi";
76*4882a593Smuzhiyun			status = "disabled";
77*4882a593Smuzhiyun			reg = <0x54006000 0x100>;
78*4882a593Smuzhiyun			#address-cells = <1>;
79*4882a593Smuzhiyun			#size-cells = <0>;
80*4882a593Smuzhiyun			interrupts = <0 39 4>;
81*4882a593Smuzhiyun			pinctrl-names = "default";
82*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_spi0>;
83*4882a593Smuzhiyun			clocks = <&peri_clk 11>;
84*4882a593Smuzhiyun			resets = <&peri_rst 11>;
85*4882a593Smuzhiyun		};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun		serial0: serial@54006800 {
88*4882a593Smuzhiyun			compatible = "socionext,uniphier-uart";
89*4882a593Smuzhiyun			status = "disabled";
90*4882a593Smuzhiyun			reg = <0x54006800 0x40>;
91*4882a593Smuzhiyun			interrupts = <0 33 4>;
92*4882a593Smuzhiyun			pinctrl-names = "default";
93*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_uart0>;
94*4882a593Smuzhiyun			clocks = <&peri_clk 0>;
95*4882a593Smuzhiyun			resets = <&peri_rst 0>;
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun		serial1: serial@54006900 {
99*4882a593Smuzhiyun			compatible = "socionext,uniphier-uart";
100*4882a593Smuzhiyun			status = "disabled";
101*4882a593Smuzhiyun			reg = <0x54006900 0x40>;
102*4882a593Smuzhiyun			interrupts = <0 35 4>;
103*4882a593Smuzhiyun			pinctrl-names = "default";
104*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_uart1>;
105*4882a593Smuzhiyun			clocks = <&peri_clk 1>;
106*4882a593Smuzhiyun			resets = <&peri_rst 1>;
107*4882a593Smuzhiyun		};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun		serial2: serial@54006a00 {
110*4882a593Smuzhiyun			compatible = "socionext,uniphier-uart";
111*4882a593Smuzhiyun			status = "disabled";
112*4882a593Smuzhiyun			reg = <0x54006a00 0x40>;
113*4882a593Smuzhiyun			interrupts = <0 37 4>;
114*4882a593Smuzhiyun			pinctrl-names = "default";
115*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_uart2>;
116*4882a593Smuzhiyun			clocks = <&peri_clk 2>;
117*4882a593Smuzhiyun			resets = <&peri_rst 2>;
118*4882a593Smuzhiyun		};
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun		serial3: serial@54006b00 {
121*4882a593Smuzhiyun			compatible = "socionext,uniphier-uart";
122*4882a593Smuzhiyun			status = "disabled";
123*4882a593Smuzhiyun			reg = <0x54006b00 0x40>;
124*4882a593Smuzhiyun			interrupts = <0 177 4>;
125*4882a593Smuzhiyun			pinctrl-names = "default";
126*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_uart3>;
127*4882a593Smuzhiyun			clocks = <&peri_clk 3>;
128*4882a593Smuzhiyun			resets = <&peri_rst 3>;
129*4882a593Smuzhiyun		};
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun		gpio: gpio@55000000 {
132*4882a593Smuzhiyun			compatible = "socionext,uniphier-gpio";
133*4882a593Smuzhiyun			reg = <0x55000000 0x200>;
134*4882a593Smuzhiyun			interrupt-parent = <&aidet>;
135*4882a593Smuzhiyun			interrupt-controller;
136*4882a593Smuzhiyun			#interrupt-cells = <2>;
137*4882a593Smuzhiyun			gpio-controller;
138*4882a593Smuzhiyun			#gpio-cells = <2>;
139*4882a593Smuzhiyun			gpio-ranges = <&pinctrl 0 0 0>;
140*4882a593Smuzhiyun			gpio-ranges-group-names = "gpio_range";
141*4882a593Smuzhiyun			ngpios = <248>;
142*4882a593Smuzhiyun			socionext,interrupt-ranges = <0 48 16>, <16 154 5>;
143*4882a593Smuzhiyun		};
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun		i2c0: i2c@58780000 {
146*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
147*4882a593Smuzhiyun			status = "disabled";
148*4882a593Smuzhiyun			reg = <0x58780000 0x80>;
149*4882a593Smuzhiyun			#address-cells = <1>;
150*4882a593Smuzhiyun			#size-cells = <0>;
151*4882a593Smuzhiyun			interrupts = <0 41 4>;
152*4882a593Smuzhiyun			pinctrl-names = "default";
153*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_i2c0>;
154*4882a593Smuzhiyun			clocks = <&peri_clk 4>;
155*4882a593Smuzhiyun			resets = <&peri_rst 4>;
156*4882a593Smuzhiyun			clock-frequency = <100000>;
157*4882a593Smuzhiyun		};
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun		i2c1: i2c@58781000 {
160*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
161*4882a593Smuzhiyun			status = "disabled";
162*4882a593Smuzhiyun			reg = <0x58781000 0x80>;
163*4882a593Smuzhiyun			#address-cells = <1>;
164*4882a593Smuzhiyun			#size-cells = <0>;
165*4882a593Smuzhiyun			interrupts = <0 42 4>;
166*4882a593Smuzhiyun			pinctrl-names = "default";
167*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_i2c1>;
168*4882a593Smuzhiyun			clocks = <&peri_clk 5>;
169*4882a593Smuzhiyun			resets = <&peri_rst 5>;
170*4882a593Smuzhiyun			clock-frequency = <100000>;
171*4882a593Smuzhiyun		};
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun		i2c2: i2c@58782000 {
174*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
175*4882a593Smuzhiyun			status = "disabled";
176*4882a593Smuzhiyun			reg = <0x58782000 0x80>;
177*4882a593Smuzhiyun			#address-cells = <1>;
178*4882a593Smuzhiyun			#size-cells = <0>;
179*4882a593Smuzhiyun			interrupts = <0 43 4>;
180*4882a593Smuzhiyun			pinctrl-names = "default";
181*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_i2c2>;
182*4882a593Smuzhiyun			clocks = <&peri_clk 6>;
183*4882a593Smuzhiyun			resets = <&peri_rst 6>;
184*4882a593Smuzhiyun			clock-frequency = <100000>;
185*4882a593Smuzhiyun		};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun		i2c3: i2c@58783000 {
188*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
189*4882a593Smuzhiyun			status = "disabled";
190*4882a593Smuzhiyun			reg = <0x58783000 0x80>;
191*4882a593Smuzhiyun			#address-cells = <1>;
192*4882a593Smuzhiyun			#size-cells = <0>;
193*4882a593Smuzhiyun			interrupts = <0 44 4>;
194*4882a593Smuzhiyun			pinctrl-names = "default";
195*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_i2c3>;
196*4882a593Smuzhiyun			clocks = <&peri_clk 7>;
197*4882a593Smuzhiyun			resets = <&peri_rst 7>;
198*4882a593Smuzhiyun			clock-frequency = <100000>;
199*4882a593Smuzhiyun		};
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun		/* i2c4 does not exist */
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun		/* chip-internal connection for DMD */
204*4882a593Smuzhiyun		i2c5: i2c@58785000 {
205*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
206*4882a593Smuzhiyun			reg = <0x58785000 0x80>;
207*4882a593Smuzhiyun			#address-cells = <1>;
208*4882a593Smuzhiyun			#size-cells = <0>;
209*4882a593Smuzhiyun			interrupts = <0 25 4>;
210*4882a593Smuzhiyun			clocks = <&peri_clk 9>;
211*4882a593Smuzhiyun			resets = <&peri_rst 9>;
212*4882a593Smuzhiyun			clock-frequency = <400000>;
213*4882a593Smuzhiyun		};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun		/* chip-internal connection for HDMI */
216*4882a593Smuzhiyun		i2c6: i2c@58786000 {
217*4882a593Smuzhiyun			compatible = "socionext,uniphier-fi2c";
218*4882a593Smuzhiyun			reg = <0x58786000 0x80>;
219*4882a593Smuzhiyun			#address-cells = <1>;
220*4882a593Smuzhiyun			#size-cells = <0>;
221*4882a593Smuzhiyun			interrupts = <0 26 4>;
222*4882a593Smuzhiyun			clocks = <&peri_clk 10>;
223*4882a593Smuzhiyun			resets = <&peri_rst 10>;
224*4882a593Smuzhiyun			clock-frequency = <400000>;
225*4882a593Smuzhiyun		};
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun		system_bus: system-bus@58c00000 {
228*4882a593Smuzhiyun			compatible = "socionext,uniphier-system-bus";
229*4882a593Smuzhiyun			status = "disabled";
230*4882a593Smuzhiyun			reg = <0x58c00000 0x400>;
231*4882a593Smuzhiyun			#address-cells = <2>;
232*4882a593Smuzhiyun			#size-cells = <1>;
233*4882a593Smuzhiyun			pinctrl-names = "default";
234*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_system_bus>;
235*4882a593Smuzhiyun		};
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun		smpctrl@59801000 {
238*4882a593Smuzhiyun			compatible = "socionext,uniphier-smpctrl";
239*4882a593Smuzhiyun			reg = <0x59801000 0x400>;
240*4882a593Smuzhiyun		};
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun		mioctrl@59810000 {
243*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-mioctrl",
244*4882a593Smuzhiyun				     "simple-mfd", "syscon";
245*4882a593Smuzhiyun			reg = <0x59810000 0x800>;
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun			mio_clk: clock {
248*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-mio-clock";
249*4882a593Smuzhiyun				#clock-cells = <1>;
250*4882a593Smuzhiyun			};
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun			mio_rst: reset {
253*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-mio-reset";
254*4882a593Smuzhiyun				#reset-cells = <1>;
255*4882a593Smuzhiyun			};
256*4882a593Smuzhiyun		};
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun		perictrl@59820000 {
259*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-perictrl",
260*4882a593Smuzhiyun				     "simple-mfd", "syscon";
261*4882a593Smuzhiyun			reg = <0x59820000 0x200>;
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun			peri_clk: clock {
264*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-peri-clock";
265*4882a593Smuzhiyun				#clock-cells = <1>;
266*4882a593Smuzhiyun			};
267*4882a593Smuzhiyun
268*4882a593Smuzhiyun			peri_rst: reset {
269*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-peri-reset";
270*4882a593Smuzhiyun				#reset-cells = <1>;
271*4882a593Smuzhiyun			};
272*4882a593Smuzhiyun		};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun		dmac: dma-controller@5a000000 {
275*4882a593Smuzhiyun			compatible = "socionext,uniphier-mio-dmac";
276*4882a593Smuzhiyun			reg = <0x5a000000 0x1000>;
277*4882a593Smuzhiyun			interrupts = <0 68 4>, <0 68 4>, <0 69 4>, <0 70 4>,
278*4882a593Smuzhiyun				     <0 71 4>, <0 72 4>, <0 73 4>, <0 74 4>;
279*4882a593Smuzhiyun			clocks = <&mio_clk 7>;
280*4882a593Smuzhiyun			resets = <&mio_rst 7>;
281*4882a593Smuzhiyun			#dma-cells = <1>;
282*4882a593Smuzhiyun		};
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun		sd: mmc@5a400000 {
285*4882a593Smuzhiyun			compatible = "socionext,uniphier-sd-v2.91";
286*4882a593Smuzhiyun			status = "disabled";
287*4882a593Smuzhiyun			reg = <0x5a400000 0x200>;
288*4882a593Smuzhiyun			interrupts = <0 76 4>;
289*4882a593Smuzhiyun			pinctrl-names = "default", "uhs";
290*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_sd>;
291*4882a593Smuzhiyun			pinctrl-1 = <&pinctrl_sd_uhs>;
292*4882a593Smuzhiyun			clocks = <&mio_clk 0>;
293*4882a593Smuzhiyun			reset-names = "host", "bridge";
294*4882a593Smuzhiyun			resets = <&mio_rst 0>, <&mio_rst 3>;
295*4882a593Smuzhiyun			dma-names = "rx-tx";
296*4882a593Smuzhiyun			dmas = <&dmac 4>;
297*4882a593Smuzhiyun			bus-width = <4>;
298*4882a593Smuzhiyun			cap-sd-highspeed;
299*4882a593Smuzhiyun			sd-uhs-sdr12;
300*4882a593Smuzhiyun			sd-uhs-sdr25;
301*4882a593Smuzhiyun			sd-uhs-sdr50;
302*4882a593Smuzhiyun		};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun		emmc: mmc@5a500000 {
305*4882a593Smuzhiyun			compatible = "socionext,uniphier-sd-v2.91";
306*4882a593Smuzhiyun			status = "disabled";
307*4882a593Smuzhiyun			reg = <0x5a500000 0x200>;
308*4882a593Smuzhiyun			interrupts = <0 78 4>;
309*4882a593Smuzhiyun			pinctrl-names = "default";
310*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_emmc>;
311*4882a593Smuzhiyun			clocks = <&mio_clk 1>;
312*4882a593Smuzhiyun			reset-names = "host", "bridge", "hw";
313*4882a593Smuzhiyun			resets = <&mio_rst 1>, <&mio_rst 4>, <&mio_rst 6>;
314*4882a593Smuzhiyun			dma-names = "rx-tx";
315*4882a593Smuzhiyun			dmas = <&dmac 5>;
316*4882a593Smuzhiyun			bus-width = <8>;
317*4882a593Smuzhiyun			cap-mmc-highspeed;
318*4882a593Smuzhiyun			cap-mmc-hw-reset;
319*4882a593Smuzhiyun			non-removable;
320*4882a593Smuzhiyun		};
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun		sd1: mmc@5a600000 {
323*4882a593Smuzhiyun			compatible = "socionext,uniphier-sd-v2.91";
324*4882a593Smuzhiyun			status = "disabled";
325*4882a593Smuzhiyun			reg = <0x5a600000 0x200>;
326*4882a593Smuzhiyun			interrupts = <0 85 4>;
327*4882a593Smuzhiyun			pinctrl-names = "default";
328*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_sd1>;
329*4882a593Smuzhiyun			clocks = <&mio_clk 2>;
330*4882a593Smuzhiyun			reset-names = "host", "bridge";
331*4882a593Smuzhiyun			resets = <&mio_rst 2>, <&mio_rst 5>;
332*4882a593Smuzhiyun			dma-names = "rx-tx";
333*4882a593Smuzhiyun			dmas = <&dmac 6>;
334*4882a593Smuzhiyun			bus-width = <4>;
335*4882a593Smuzhiyun			cap-sd-highspeed;
336*4882a593Smuzhiyun		};
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun		usb2: usb@5a800100 {
339*4882a593Smuzhiyun			compatible = "socionext,uniphier-ehci", "generic-ehci";
340*4882a593Smuzhiyun			status = "disabled";
341*4882a593Smuzhiyun			reg = <0x5a800100 0x100>;
342*4882a593Smuzhiyun			interrupts = <0 80 4>;
343*4882a593Smuzhiyun			pinctrl-names = "default";
344*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_usb2>;
345*4882a593Smuzhiyun			clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 8>,
346*4882a593Smuzhiyun				 <&mio_clk 12>;
347*4882a593Smuzhiyun			resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 8>,
348*4882a593Smuzhiyun				 <&mio_rst 12>;
349*4882a593Smuzhiyun			phy-names = "usb";
350*4882a593Smuzhiyun			phys = <&usb_phy0>;
351*4882a593Smuzhiyun			has-transaction-translator;
352*4882a593Smuzhiyun		};
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun		usb3: usb@5a810100 {
355*4882a593Smuzhiyun			compatible = "socionext,uniphier-ehci", "generic-ehci";
356*4882a593Smuzhiyun			status = "disabled";
357*4882a593Smuzhiyun			reg = <0x5a810100 0x100>;
358*4882a593Smuzhiyun			interrupts = <0 81 4>;
359*4882a593Smuzhiyun			pinctrl-names = "default";
360*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_usb3>;
361*4882a593Smuzhiyun			clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 9>,
362*4882a593Smuzhiyun				 <&mio_clk 13>;
363*4882a593Smuzhiyun			resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 9>,
364*4882a593Smuzhiyun				 <&mio_rst 13>;
365*4882a593Smuzhiyun			phy-names = "usb";
366*4882a593Smuzhiyun			phys = <&usb_phy1>;
367*4882a593Smuzhiyun			has-transaction-translator;
368*4882a593Smuzhiyun		};
369*4882a593Smuzhiyun
370*4882a593Smuzhiyun		soc_glue: soc-glue@5f800000 {
371*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-soc-glue",
372*4882a593Smuzhiyun				     "simple-mfd", "syscon";
373*4882a593Smuzhiyun			reg = <0x5f800000 0x2000>;
374*4882a593Smuzhiyun
375*4882a593Smuzhiyun			pinctrl: pinctrl {
376*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-pinctrl";
377*4882a593Smuzhiyun			};
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun			usb-phy {
380*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb2-phy";
381*4882a593Smuzhiyun				#address-cells = <1>;
382*4882a593Smuzhiyun				#size-cells = <0>;
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun				usb_phy0: phy@0 {
385*4882a593Smuzhiyun					reg = <0>;
386*4882a593Smuzhiyun					#phy-cells = <0>;
387*4882a593Smuzhiyun				};
388*4882a593Smuzhiyun
389*4882a593Smuzhiyun				usb_phy1: phy@1 {
390*4882a593Smuzhiyun					reg = <1>;
391*4882a593Smuzhiyun					#phy-cells = <0>;
392*4882a593Smuzhiyun				};
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun				usb_phy2: phy@2 {
395*4882a593Smuzhiyun					reg = <2>;
396*4882a593Smuzhiyun					#phy-cells = <0>;
397*4882a593Smuzhiyun					vbus-supply = <&usb0_vbus>;
398*4882a593Smuzhiyun				};
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun				usb_phy3: phy@3 {
401*4882a593Smuzhiyun					reg = <3>;
402*4882a593Smuzhiyun					#phy-cells = <0>;
403*4882a593Smuzhiyun					vbus-supply = <&usb1_vbus>;
404*4882a593Smuzhiyun				};
405*4882a593Smuzhiyun			};
406*4882a593Smuzhiyun		};
407*4882a593Smuzhiyun
408*4882a593Smuzhiyun		soc-glue@5f900000 {
409*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-soc-glue-debug",
410*4882a593Smuzhiyun				     "simple-mfd";
411*4882a593Smuzhiyun			#address-cells = <1>;
412*4882a593Smuzhiyun			#size-cells = <1>;
413*4882a593Smuzhiyun			ranges = <0 0x5f900000 0x2000>;
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun			efuse@100 {
416*4882a593Smuzhiyun				compatible = "socionext,uniphier-efuse";
417*4882a593Smuzhiyun				reg = <0x100 0x28>;
418*4882a593Smuzhiyun			};
419*4882a593Smuzhiyun
420*4882a593Smuzhiyun			efuse@130 {
421*4882a593Smuzhiyun				compatible = "socionext,uniphier-efuse";
422*4882a593Smuzhiyun				reg = <0x130 0x8>;
423*4882a593Smuzhiyun			};
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun			efuse@200 {
426*4882a593Smuzhiyun				compatible = "socionext,uniphier-efuse";
427*4882a593Smuzhiyun				reg = <0x200 0x14>;
428*4882a593Smuzhiyun			};
429*4882a593Smuzhiyun		};
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun		xdmac: dma-controller@5fc10000 {
432*4882a593Smuzhiyun			compatible = "socionext,uniphier-xdmac";
433*4882a593Smuzhiyun			reg = <0x5fc10000 0x5300>;
434*4882a593Smuzhiyun			interrupts = <0 188 4>;
435*4882a593Smuzhiyun			dma-channels = <16>;
436*4882a593Smuzhiyun			#dma-cells = <2>;
437*4882a593Smuzhiyun		};
438*4882a593Smuzhiyun
439*4882a593Smuzhiyun		aidet: interrupt-controller@5fc20000 {
440*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-aidet";
441*4882a593Smuzhiyun			reg = <0x5fc20000 0x200>;
442*4882a593Smuzhiyun			interrupt-controller;
443*4882a593Smuzhiyun			#interrupt-cells = <2>;
444*4882a593Smuzhiyun		};
445*4882a593Smuzhiyun
446*4882a593Smuzhiyun		timer@60000200 {
447*4882a593Smuzhiyun			compatible = "arm,cortex-a9-global-timer";
448*4882a593Smuzhiyun			reg = <0x60000200 0x20>;
449*4882a593Smuzhiyun			interrupts = <1 11 0x304>;
450*4882a593Smuzhiyun			clocks = <&arm_timer_clk>;
451*4882a593Smuzhiyun		};
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun		timer@60000600 {
454*4882a593Smuzhiyun			compatible = "arm,cortex-a9-twd-timer";
455*4882a593Smuzhiyun			reg = <0x60000600 0x20>;
456*4882a593Smuzhiyun			interrupts = <1 13 0x304>;
457*4882a593Smuzhiyun			clocks = <&arm_timer_clk>;
458*4882a593Smuzhiyun		};
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun		intc: interrupt-controller@60001000 {
461*4882a593Smuzhiyun			compatible = "arm,cortex-a9-gic";
462*4882a593Smuzhiyun			reg = <0x60001000 0x1000>,
463*4882a593Smuzhiyun			      <0x60000100 0x100>;
464*4882a593Smuzhiyun			#interrupt-cells = <3>;
465*4882a593Smuzhiyun			interrupt-controller;
466*4882a593Smuzhiyun		};
467*4882a593Smuzhiyun
468*4882a593Smuzhiyun		sysctrl@61840000 {
469*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-sysctrl",
470*4882a593Smuzhiyun				     "simple-mfd", "syscon";
471*4882a593Smuzhiyun			reg = <0x61840000 0x10000>;
472*4882a593Smuzhiyun
473*4882a593Smuzhiyun			sys_clk: clock {
474*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-clock";
475*4882a593Smuzhiyun				#clock-cells = <1>;
476*4882a593Smuzhiyun			};
477*4882a593Smuzhiyun
478*4882a593Smuzhiyun			sys_rst: reset {
479*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-reset";
480*4882a593Smuzhiyun				#reset-cells = <1>;
481*4882a593Smuzhiyun			};
482*4882a593Smuzhiyun		};
483*4882a593Smuzhiyun
484*4882a593Smuzhiyun		eth: ethernet@65000000 {
485*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-ave4";
486*4882a593Smuzhiyun			status = "disabled";
487*4882a593Smuzhiyun			reg = <0x65000000 0x8500>;
488*4882a593Smuzhiyun			interrupts = <0 66 4>;
489*4882a593Smuzhiyun			pinctrl-names = "default";
490*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_ether_rgmii>;
491*4882a593Smuzhiyun			clock-names = "gio", "ether", "ether-gb", "ether-phy";
492*4882a593Smuzhiyun			clocks = <&sys_clk 12>, <&sys_clk 6>, <&sys_clk 7>,
493*4882a593Smuzhiyun				 <&sys_clk 10>;
494*4882a593Smuzhiyun			reset-names = "gio", "ether";
495*4882a593Smuzhiyun			resets = <&sys_rst 12>, <&sys_rst 6>;
496*4882a593Smuzhiyun			phy-mode = "rgmii";
497*4882a593Smuzhiyun			local-mac-address = [00 00 00 00 00 00];
498*4882a593Smuzhiyun			socionext,syscon-phy-mode = <&soc_glue 0>;
499*4882a593Smuzhiyun
500*4882a593Smuzhiyun			mdio: mdio {
501*4882a593Smuzhiyun				#address-cells = <1>;
502*4882a593Smuzhiyun				#size-cells = <0>;
503*4882a593Smuzhiyun			};
504*4882a593Smuzhiyun		};
505*4882a593Smuzhiyun
506*4882a593Smuzhiyun		usb0: usb@65a00000 {
507*4882a593Smuzhiyun			compatible = "socionext,uniphier-dwc3", "snps,dwc3";
508*4882a593Smuzhiyun			status = "disabled";
509*4882a593Smuzhiyun			reg = <0x65a00000 0xcd00>;
510*4882a593Smuzhiyun			interrupt-names = "host", "peripheral";
511*4882a593Smuzhiyun			interrupts = <0 134 4>, <0 135 4>;
512*4882a593Smuzhiyun			pinctrl-names = "default";
513*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_usb0>;
514*4882a593Smuzhiyun			clock-names = "ref", "bus_early", "suspend";
515*4882a593Smuzhiyun			clocks = <&sys_clk 12>, <&sys_clk 12>, <&sys_clk 12>;
516*4882a593Smuzhiyun			resets = <&usb0_rst 4>;
517*4882a593Smuzhiyun			phys = <&usb_phy2>, <&usb0_ssphy>;
518*4882a593Smuzhiyun			dr_mode = "host";
519*4882a593Smuzhiyun		};
520*4882a593Smuzhiyun
521*4882a593Smuzhiyun		usb-glue@65b00000 {
522*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-dwc3-glue",
523*4882a593Smuzhiyun				     "simple-mfd";
524*4882a593Smuzhiyun			#address-cells = <1>;
525*4882a593Smuzhiyun			#size-cells = <1>;
526*4882a593Smuzhiyun			ranges = <0 0x65b00000 0x100>;
527*4882a593Smuzhiyun
528*4882a593Smuzhiyun			usb0_vbus: regulator@0 {
529*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb3-regulator";
530*4882a593Smuzhiyun				reg = <0 0x10>;
531*4882a593Smuzhiyun				clock-names = "gio", "link";
532*4882a593Smuzhiyun				clocks = <&sys_clk 12>, <&sys_clk 14>;
533*4882a593Smuzhiyun				reset-names = "gio", "link";
534*4882a593Smuzhiyun				resets = <&sys_rst 12>, <&sys_rst 14>;
535*4882a593Smuzhiyun			};
536*4882a593Smuzhiyun
537*4882a593Smuzhiyun			usb0_ssphy: ss-phy@10 {
538*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb3-ssphy";
539*4882a593Smuzhiyun				reg = <0x10 0x10>;
540*4882a593Smuzhiyun				#phy-cells = <0>;
541*4882a593Smuzhiyun				clock-names = "gio", "link";
542*4882a593Smuzhiyun				clocks = <&sys_clk 12>, <&sys_clk 14>;
543*4882a593Smuzhiyun				reset-names = "gio", "link";
544*4882a593Smuzhiyun				resets = <&sys_rst 12>, <&sys_rst 14>;
545*4882a593Smuzhiyun				vbus-supply = <&usb0_vbus>;
546*4882a593Smuzhiyun			};
547*4882a593Smuzhiyun
548*4882a593Smuzhiyun			usb0_rst: reset@40 {
549*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb3-reset";
550*4882a593Smuzhiyun				reg = <0x40 0x4>;
551*4882a593Smuzhiyun				#reset-cells = <1>;
552*4882a593Smuzhiyun				clock-names = "gio", "link";
553*4882a593Smuzhiyun				clocks = <&sys_clk 12>, <&sys_clk 14>;
554*4882a593Smuzhiyun				reset-names = "gio", "link";
555*4882a593Smuzhiyun				resets = <&sys_rst 12>, <&sys_rst 14>;
556*4882a593Smuzhiyun			};
557*4882a593Smuzhiyun		};
558*4882a593Smuzhiyun
559*4882a593Smuzhiyun		usb1: usb@65c00000 {
560*4882a593Smuzhiyun			compatible = "socionext,uniphier-dwc3", "snps,dwc3";
561*4882a593Smuzhiyun			status = "disabled";
562*4882a593Smuzhiyun			reg = <0x65c00000 0xcd00>;
563*4882a593Smuzhiyun			interrupt-names = "host", "peripheral";
564*4882a593Smuzhiyun			interrupts = <0 137 4>, <0 138 4>;
565*4882a593Smuzhiyun			pinctrl-names = "default";
566*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_usb1>;
567*4882a593Smuzhiyun			clock-names = "ref", "bus_early", "suspend";
568*4882a593Smuzhiyun			clocks = <&sys_clk 12>, <&sys_clk 12>, <&sys_clk 12>;
569*4882a593Smuzhiyun			resets = <&usb1_rst 4>;
570*4882a593Smuzhiyun			phys = <&usb_phy3>;
571*4882a593Smuzhiyun			dr_mode = "host";
572*4882a593Smuzhiyun		};
573*4882a593Smuzhiyun
574*4882a593Smuzhiyun		usb-glue@65d00000 {
575*4882a593Smuzhiyun			compatible = "socionext,uniphier-pro4-dwc3-glue",
576*4882a593Smuzhiyun				     "simple-mfd";
577*4882a593Smuzhiyun			#address-cells = <1>;
578*4882a593Smuzhiyun			#size-cells = <1>;
579*4882a593Smuzhiyun			ranges = <0 0x65d00000 0x100>;
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun			usb1_vbus: regulator@0 {
582*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb3-regulator";
583*4882a593Smuzhiyun				reg = <0 0x10>;
584*4882a593Smuzhiyun				clock-names = "gio", "link";
585*4882a593Smuzhiyun				clocks = <&sys_clk 12>, <&sys_clk 15>;
586*4882a593Smuzhiyun				reset-names = "gio", "link";
587*4882a593Smuzhiyun				resets = <&sys_rst 12>, <&sys_rst 15>;
588*4882a593Smuzhiyun			};
589*4882a593Smuzhiyun
590*4882a593Smuzhiyun			usb1_rst: reset@40 {
591*4882a593Smuzhiyun				compatible = "socionext,uniphier-pro4-usb3-reset";
592*4882a593Smuzhiyun				reg = <0x40 0x4>;
593*4882a593Smuzhiyun				#reset-cells = <1>;
594*4882a593Smuzhiyun				clock-names = "gio", "link";
595*4882a593Smuzhiyun				clocks = <&sys_clk 12>, <&sys_clk 15>;
596*4882a593Smuzhiyun				reset-names = "gio", "link";
597*4882a593Smuzhiyun				resets = <&sys_rst 12>, <&sys_rst 15>;
598*4882a593Smuzhiyun			};
599*4882a593Smuzhiyun		};
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun		nand: nand-controller@68000000 {
602*4882a593Smuzhiyun			compatible = "socionext,uniphier-denali-nand-v5a";
603*4882a593Smuzhiyun			status = "disabled";
604*4882a593Smuzhiyun			reg-names = "nand_data", "denali_reg";
605*4882a593Smuzhiyun			reg = <0x68000000 0x20>, <0x68100000 0x1000>;
606*4882a593Smuzhiyun			#address-cells = <1>;
607*4882a593Smuzhiyun			#size-cells = <0>;
608*4882a593Smuzhiyun			interrupts = <0 65 4>;
609*4882a593Smuzhiyun			pinctrl-names = "default";
610*4882a593Smuzhiyun			pinctrl-0 = <&pinctrl_nand>;
611*4882a593Smuzhiyun			clock-names = "nand", "nand_x", "ecc";
612*4882a593Smuzhiyun			clocks = <&sys_clk 2>, <&sys_clk 3>, <&sys_clk 3>;
613*4882a593Smuzhiyun			reset-names = "nand", "reg";
614*4882a593Smuzhiyun			resets = <&sys_rst 2>, <&sys_rst 2>;
615*4882a593Smuzhiyun		};
616*4882a593Smuzhiyun	};
617*4882a593Smuzhiyun};
618*4882a593Smuzhiyun
619*4882a593Smuzhiyun#include "uniphier-pinctrl.dtsi"
620