xref: /openbmc/u-boot/arch/arm/dts/uniphier-pro5.dtsi (revision 9d466f2f)
1/*
2 * Device Tree Source for UniPhier Pro5 SoC
3 *
4 * Copyright (C) 2015-2016 Socionext Inc.
5 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
6 *
7 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
8 */
9
10/ {
11	compatible = "socionext,uniphier-pro5";
12	#address-cells = <1>;
13	#size-cells = <1>;
14
15	cpus {
16		#address-cells = <1>;
17		#size-cells = <0>;
18
19		cpu@0 {
20			device_type = "cpu";
21			compatible = "arm,cortex-a9";
22			reg = <0>;
23			clocks = <&sys_clk 32>;
24			enable-method = "psci";
25			next-level-cache = <&l2>;
26			operating-points-v2 = <&cpu_opp>;
27		};
28
29		cpu@1 {
30			device_type = "cpu";
31			compatible = "arm,cortex-a9";
32			reg = <1>;
33			clocks = <&sys_clk 32>;
34			enable-method = "psci";
35			next-level-cache = <&l2>;
36			operating-points-v2 = <&cpu_opp>;
37		};
38	};
39
40	cpu_opp: opp-table {
41		compatible = "operating-points-v2";
42		opp-shared;
43
44		opp-100000000 {
45			opp-hz = /bits/ 64 <100000000>;
46			clock-latency-ns = <300>;
47		};
48		opp-116667000 {
49			opp-hz = /bits/ 64 <116667000>;
50			clock-latency-ns = <300>;
51		};
52		opp-150000000 {
53			opp-hz = /bits/ 64 <150000000>;
54			clock-latency-ns = <300>;
55		};
56		opp-175000000 {
57			opp-hz = /bits/ 64 <175000000>;
58			clock-latency-ns = <300>;
59		};
60		opp-200000000 {
61			opp-hz = /bits/ 64 <200000000>;
62			clock-latency-ns = <300>;
63		};
64		opp-233334000 {
65			opp-hz = /bits/ 64 <233334000>;
66			clock-latency-ns = <300>;
67		};
68		opp-300000000 {
69			opp-hz = /bits/ 64 <300000000>;
70			clock-latency-ns = <300>;
71		};
72		opp-350000000 {
73			opp-hz = /bits/ 64 <350000000>;
74			clock-latency-ns = <300>;
75		};
76		opp-400000000 {
77			opp-hz = /bits/ 64 <400000000>;
78			clock-latency-ns = <300>;
79		};
80		opp-466667000 {
81			opp-hz = /bits/ 64 <466667000>;
82			clock-latency-ns = <300>;
83		};
84		opp-600000000 {
85			opp-hz = /bits/ 64 <600000000>;
86			clock-latency-ns = <300>;
87		};
88		opp-700000000 {
89			opp-hz = /bits/ 64 <700000000>;
90			clock-latency-ns = <300>;
91		};
92		opp-800000000 {
93			opp-hz = /bits/ 64 <800000000>;
94			clock-latency-ns = <300>;
95		};
96		opp-933334000 {
97			opp-hz = /bits/ 64 <933334000>;
98			clock-latency-ns = <300>;
99		};
100		opp-1200000000 {
101			opp-hz = /bits/ 64 <1200000000>;
102			clock-latency-ns = <300>;
103		};
104		opp-1400000000 {
105			opp-hz = /bits/ 64 <1400000000>;
106			clock-latency-ns = <300>;
107		};
108	};
109
110	psci {
111		compatible = "arm,psci-0.2";
112		method = "smc";
113	};
114
115	clocks {
116		refclk: ref {
117			compatible = "fixed-clock";
118			#clock-cells = <0>;
119			clock-frequency = <20000000>;
120		};
121
122		arm_timer_clk: arm-timer {
123			#clock-cells = <0>;
124			compatible = "fixed-clock";
125			clock-frequency = <50000000>;
126		};
127	};
128
129	soc {
130		compatible = "simple-bus";
131		#address-cells = <1>;
132		#size-cells = <1>;
133		ranges;
134		interrupt-parent = <&intc>;
135
136		l2: l2-cache@500c0000 {
137			compatible = "socionext,uniphier-system-cache";
138			reg = <0x500c0000 0x2000>, <0x503c0100 0x8>,
139			      <0x506c0000 0x400>;
140			interrupts = <0 190 4>, <0 191 4>;
141			cache-unified;
142			cache-size = <(2 * 1024 * 1024)>;
143			cache-sets = <512>;
144			cache-line-size = <128>;
145			cache-level = <2>;
146			next-level-cache = <&l3>;
147		};
148
149		l3: l3-cache@500c8000 {
150			compatible = "socionext,uniphier-system-cache";
151			reg = <0x500c8000 0x2000>, <0x503c8100 0x8>,
152			      <0x506c8000 0x400>;
153			interrupts = <0 174 4>, <0 175 4>;
154			cache-unified;
155			cache-size = <(2 * 1024 * 1024)>;
156			cache-sets = <512>;
157			cache-line-size = <256>;
158			cache-level = <3>;
159		};
160
161		serial0: serial@54006800 {
162			compatible = "socionext,uniphier-uart";
163			status = "disabled";
164			reg = <0x54006800 0x40>;
165			interrupts = <0 33 4>;
166			pinctrl-names = "default";
167			pinctrl-0 = <&pinctrl_uart0>;
168			clocks = <&peri_clk 0>;
169			clock-frequency = <73728000>;
170			resets = <&peri_rst 0>;
171		};
172
173		serial1: serial@54006900 {
174			compatible = "socionext,uniphier-uart";
175			status = "disabled";
176			reg = <0x54006900 0x40>;
177			interrupts = <0 35 4>;
178			pinctrl-names = "default";
179			pinctrl-0 = <&pinctrl_uart1>;
180			clocks = <&peri_clk 1>;
181			clock-frequency = <73728000>;
182			resets = <&peri_rst 1>;
183		};
184
185		serial2: serial@54006a00 {
186			compatible = "socionext,uniphier-uart";
187			status = "disabled";
188			reg = <0x54006a00 0x40>;
189			interrupts = <0 37 4>;
190			pinctrl-names = "default";
191			pinctrl-0 = <&pinctrl_uart2>;
192			clocks = <&peri_clk 2>;
193			clock-frequency = <73728000>;
194			resets = <&peri_rst 2>;
195		};
196
197		serial3: serial@54006b00 {
198			compatible = "socionext,uniphier-uart";
199			status = "disabled";
200			reg = <0x54006b00 0x40>;
201			interrupts = <0 177 4>;
202			pinctrl-names = "default";
203			pinctrl-0 = <&pinctrl_uart3>;
204			clocks = <&peri_clk 3>;
205			clock-frequency = <73728000>;
206			resets = <&peri_rst 3>;
207		};
208
209		gpio: gpio@55000000 {
210			compatible = "socionext,uniphier-gpio";
211			reg = <0x55000000 0x200>;
212			interrupt-parent = <&aidet>;
213			interrupt-controller;
214			#interrupt-cells = <2>;
215			gpio-controller;
216			#gpio-cells = <2>;
217			gpio-ranges = <&pinctrl 0 0 0>;
218			gpio-ranges-group-names = "gpio_range";
219			ngpios = <248>;
220			socionext,interrupt-ranges = <0 48 16>, <16 154 5>;
221		};
222
223		i2c0: i2c@58780000 {
224			compatible = "socionext,uniphier-fi2c";
225			status = "disabled";
226			reg = <0x58780000 0x80>;
227			#address-cells = <1>;
228			#size-cells = <0>;
229			interrupts = <0 41 4>;
230			pinctrl-names = "default";
231			pinctrl-0 = <&pinctrl_i2c0>;
232			clocks = <&peri_clk 4>;
233			resets = <&peri_rst 4>;
234			clock-frequency = <100000>;
235		};
236
237		i2c1: i2c@58781000 {
238			compatible = "socionext,uniphier-fi2c";
239			status = "disabled";
240			reg = <0x58781000 0x80>;
241			#address-cells = <1>;
242			#size-cells = <0>;
243			interrupts = <0 42 4>;
244			pinctrl-names = "default";
245			pinctrl-0 = <&pinctrl_i2c1>;
246			clocks = <&peri_clk 5>;
247			resets = <&peri_rst 5>;
248			clock-frequency = <100000>;
249		};
250
251		i2c2: i2c@58782000 {
252			compatible = "socionext,uniphier-fi2c";
253			status = "disabled";
254			reg = <0x58782000 0x80>;
255			#address-cells = <1>;
256			#size-cells = <0>;
257			interrupts = <0 43 4>;
258			pinctrl-names = "default";
259			pinctrl-0 = <&pinctrl_i2c2>;
260			clocks = <&peri_clk 6>;
261			resets = <&peri_rst 6>;
262			clock-frequency = <100000>;
263		};
264
265		i2c3: i2c@58783000 {
266			compatible = "socionext,uniphier-fi2c";
267			status = "disabled";
268			reg = <0x58783000 0x80>;
269			#address-cells = <1>;
270			#size-cells = <0>;
271			interrupts = <0 44 4>;
272			pinctrl-names = "default";
273			pinctrl-0 = <&pinctrl_i2c3>;
274			clocks = <&peri_clk 7>;
275			resets = <&peri_rst 7>;
276			clock-frequency = <100000>;
277		};
278
279		/* i2c4 does not exist */
280
281		/* chip-internal connection for DMD */
282		i2c5: i2c@58785000 {
283			compatible = "socionext,uniphier-fi2c";
284			reg = <0x58785000 0x80>;
285			#address-cells = <1>;
286			#size-cells = <0>;
287			interrupts = <0 25 4>;
288			clocks = <&peri_clk 9>;
289			resets = <&peri_rst 9>;
290			clock-frequency = <400000>;
291		};
292
293		/* chip-internal connection for HDMI */
294		i2c6: i2c@58786000 {
295			compatible = "socionext,uniphier-fi2c";
296			reg = <0x58786000 0x80>;
297			#address-cells = <1>;
298			#size-cells = <0>;
299			interrupts = <0 26 4>;
300			clocks = <&peri_clk 10>;
301			resets = <&peri_rst 10>;
302			clock-frequency = <400000>;
303		};
304
305		system_bus: system-bus@58c00000 {
306			compatible = "socionext,uniphier-system-bus";
307			status = "disabled";
308			reg = <0x58c00000 0x400>;
309			#address-cells = <2>;
310			#size-cells = <1>;
311			pinctrl-names = "default";
312			pinctrl-0 = <&pinctrl_system_bus>;
313		};
314
315		smpctrl@59801000 {
316			compatible = "socionext,uniphier-smpctrl";
317			reg = <0x59801000 0x400>;
318		};
319
320		sdctrl@59810000 {
321			compatible = "socionext,uniphier-pro5-sdctrl",
322				     "simple-mfd", "syscon";
323			reg = <0x59810000 0x400>;
324
325			sd_clk: clock {
326				compatible = "socionext,uniphier-pro5-sd-clock";
327				#clock-cells = <1>;
328			};
329
330			sd_rst: reset {
331				compatible = "socionext,uniphier-pro5-sd-reset";
332				#reset-cells = <1>;
333			};
334		};
335
336		perictrl@59820000 {
337			compatible = "socionext,uniphier-pro5-perictrl",
338				     "simple-mfd", "syscon";
339			reg = <0x59820000 0x200>;
340
341			peri_clk: clock {
342				compatible = "socionext,uniphier-pro5-peri-clock";
343				#clock-cells = <1>;
344			};
345
346			peri_rst: reset {
347				compatible = "socionext,uniphier-pro5-peri-reset";
348				#reset-cells = <1>;
349			};
350		};
351
352		soc-glue@5f800000 {
353			compatible = "socionext,uniphier-pro5-soc-glue",
354				     "simple-mfd", "syscon";
355			reg = <0x5f800000 0x2000>;
356
357			pinctrl: pinctrl {
358				compatible = "socionext,uniphier-pro5-pinctrl";
359			};
360		};
361
362		soc-glue@5f900000 {
363			compatible = "socionext,uniphier-pro5-soc-glue-debug",
364				     "simple-mfd";
365			#address-cells = <1>;
366			#size-cells = <1>;
367			ranges = <0 0x5f900000 0x2000>;
368
369			efuse@100 {
370				compatible = "socionext,uniphier-efuse";
371				reg = <0x100 0x28>;
372			};
373
374			efuse@130 {
375				compatible = "socionext,uniphier-efuse";
376				reg = <0x130 0x8>;
377			};
378
379			efuse@200 {
380				compatible = "socionext,uniphier-efuse";
381				reg = <0x200 0x28>;
382			};
383
384			efuse@300 {
385				compatible = "socionext,uniphier-efuse";
386				reg = <0x300 0x14>;
387			};
388
389			efuse@400 {
390				compatible = "socionext,uniphier-efuse";
391				reg = <0x400 0x8>;
392			};
393		};
394
395		aidet: aidet@5fc20000 {
396			compatible = "socionext,uniphier-pro5-aidet";
397			reg = <0x5fc20000 0x200>;
398			interrupt-controller;
399			#interrupt-cells = <2>;
400		};
401
402		timer@60000200 {
403			compatible = "arm,cortex-a9-global-timer";
404			reg = <0x60000200 0x20>;
405			interrupts = <1 11 0x304>;
406			clocks = <&arm_timer_clk>;
407		};
408
409		timer@60000600 {
410			compatible = "arm,cortex-a9-twd-timer";
411			reg = <0x60000600 0x20>;
412			interrupts = <1 13 0x304>;
413			clocks = <&arm_timer_clk>;
414		};
415
416		intc: interrupt-controller@60001000 {
417			compatible = "arm,cortex-a9-gic";
418			reg = <0x60001000 0x1000>,
419			      <0x60000100 0x100>;
420			#interrupt-cells = <3>;
421			interrupt-controller;
422		};
423
424		sysctrl@61840000 {
425			compatible = "socionext,uniphier-pro5-sysctrl",
426				     "simple-mfd", "syscon";
427			reg = <0x61840000 0x10000>;
428
429			sys_clk: clock {
430				compatible = "socionext,uniphier-pro5-clock";
431				#clock-cells = <1>;
432			};
433
434			sys_rst: reset {
435				compatible = "socionext,uniphier-pro5-reset";
436				#reset-cells = <1>;
437			};
438		};
439
440		usb0: usb@65b00000 {
441			compatible = "socionext,uniphier-pro5-dwc3";
442			status = "disabled";
443			reg = <0x65b00000 0x1000>;
444			#address-cells = <1>;
445			#size-cells = <1>;
446			ranges;
447			pinctrl-names = "default";
448			pinctrl-0 = <&pinctrl_usb0>;
449			dwc3@65a00000 {
450				compatible = "snps,dwc3";
451				reg = <0x65a00000 0x10000>;
452				interrupts = <0 134 4>;
453				dr_mode = "host";
454				tx-fifo-resize;
455			};
456		};
457
458		usb1: usb@65d00000 {
459			compatible = "socionext,uniphier-pro5-dwc3";
460			status = "disabled";
461			reg = <0x65d00000 0x1000>;
462			#address-cells = <1>;
463			#size-cells = <1>;
464			ranges;
465			pinctrl-names = "default";
466			pinctrl-0 = <&pinctrl_usb1>, <&pinctrl_usb2>;
467			dwc3@65c00000 {
468				compatible = "snps,dwc3";
469				reg = <0x65c00000 0x10000>;
470				interrupts = <0 137 4>;
471				dr_mode = "host";
472				tx-fifo-resize;
473			};
474		};
475
476		nand: nand@68000000 {
477			compatible = "socionext,uniphier-denali-nand-v5b";
478			status = "disabled";
479			reg-names = "nand_data", "denali_reg";
480			reg = <0x68000000 0x20>, <0x68100000 0x1000>;
481			interrupts = <0 65 4>;
482			pinctrl-names = "default";
483			pinctrl-0 = <&pinctrl_nand2cs>;
484			clocks = <&sys_clk 2>;
485			resets = <&sys_rst 2>;
486		};
487
488		emmc: sdhc@68400000 {
489			compatible = "socionext,uniphier-sdhc";
490			status = "disabled";
491			reg = <0x68400000 0x800>;
492			interrupts = <0 78 4>;
493			pinctrl-names = "default";
494			pinctrl-0 = <&pinctrl_emmc>;
495			clocks = <&sd_clk 1>;
496			reset-names = "host";
497			resets = <&sd_rst 1>;
498			bus-width = <8>;
499			non-removable;
500			cap-mmc-highspeed;
501			cap-mmc-hw-reset;
502			no-3-3-v;
503		};
504
505		sd: sdhc@68800000 {
506			compatible = "socionext,uniphier-sdhc";
507			status = "disabled";
508			reg = <0x68800000 0x800>;
509			interrupts = <0 76 4>;
510			pinctrl-names = "default", "1.8v";
511			pinctrl-0 = <&pinctrl_sd>;
512			pinctrl-1 = <&pinctrl_sd_1v8>;
513			clocks = <&sd_clk 0>;
514			reset-names = "host";
515			resets = <&sd_rst 0>;
516			bus-width = <4>;
517			cap-sd-highspeed;
518			sd-uhs-sdr12;
519			sd-uhs-sdr25;
520			sd-uhs-sdr50;
521		};
522	};
523};
524
525#include "uniphier-pinctrl.dtsi"
526