1// SPDX-License-Identifier: GPL-2.0+ OR MIT
2//
3// Device Tree Source for UniPhier LD11 SoC
4//
5// Copyright (C) 2016 Socionext Inc.
6//   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/gpio/uniphier-gpio.h>
10
11/ {
12	compatible = "socionext,uniphier-ld11";
13	#address-cells = <2>;
14	#size-cells = <2>;
15	interrupt-parent = <&gic>;
16
17	cpus {
18		#address-cells = <2>;
19		#size-cells = <0>;
20
21		cpu-map {
22			cluster0 {
23				core0 {
24					cpu = <&cpu0>;
25				};
26				core1 {
27					cpu = <&cpu1>;
28				};
29			};
30		};
31
32		cpu0: cpu@0 {
33			device_type = "cpu";
34			compatible = "arm,cortex-a53";
35			reg = <0 0x000>;
36			clocks = <&sys_clk 33>;
37			enable-method = "psci";
38			operating-points-v2 = <&cluster0_opp>;
39		};
40
41		cpu1: cpu@1 {
42			device_type = "cpu";
43			compatible = "arm,cortex-a53";
44			reg = <0 0x001>;
45			clocks = <&sys_clk 33>;
46			enable-method = "psci";
47			operating-points-v2 = <&cluster0_opp>;
48		};
49	};
50
51	cluster0_opp: opp-table {
52		compatible = "operating-points-v2";
53		opp-shared;
54
55		opp-245000000 {
56			opp-hz = /bits/ 64 <245000000>;
57			clock-latency-ns = <300>;
58		};
59		opp-250000000 {
60			opp-hz = /bits/ 64 <250000000>;
61			clock-latency-ns = <300>;
62		};
63		opp-490000000 {
64			opp-hz = /bits/ 64 <490000000>;
65			clock-latency-ns = <300>;
66		};
67		opp-500000000 {
68			opp-hz = /bits/ 64 <500000000>;
69			clock-latency-ns = <300>;
70		};
71		opp-653334000 {
72			opp-hz = /bits/ 64 <653334000>;
73			clock-latency-ns = <300>;
74		};
75		opp-666667000 {
76			opp-hz = /bits/ 64 <666667000>;
77			clock-latency-ns = <300>;
78		};
79		opp-980000000 {
80			opp-hz = /bits/ 64 <980000000>;
81			clock-latency-ns = <300>;
82		};
83	};
84
85	psci {
86		compatible = "arm,psci-1.0";
87		method = "smc";
88	};
89
90	clocks {
91		refclk: ref {
92			compatible = "fixed-clock";
93			#clock-cells = <0>;
94			clock-frequency = <25000000>;
95		};
96	};
97
98	emmc_pwrseq: emmc-pwrseq {
99		compatible = "mmc-pwrseq-emmc";
100		reset-gpios = <&gpio UNIPHIER_GPIO_PORT(3, 2) GPIO_ACTIVE_LOW>;
101	};
102
103	timer {
104		compatible = "arm,armv8-timer";
105		interrupts = <1 13 4>,
106			     <1 14 4>,
107			     <1 11 4>,
108			     <1 10 4>;
109	};
110
111	reserved-memory {
112		#address-cells = <2>;
113		#size-cells = <2>;
114		ranges;
115
116		secure-memory@81000000 {
117			reg = <0x0 0x81000000 0x0 0x01000000>;
118			no-map;
119		};
120	};
121
122	soc@0 {
123		compatible = "simple-bus";
124		#address-cells = <1>;
125		#size-cells = <1>;
126		ranges = <0 0 0 0xffffffff>;
127
128		spi0: spi@54006000 {
129			compatible = "socionext,uniphier-scssi";
130			status = "disabled";
131			reg = <0x54006000 0x100>;
132			interrupts = <0 39 4>;
133			pinctrl-names = "default";
134			pinctrl-0 = <&pinctrl_spi0>;
135			clocks = <&peri_clk 11>;
136			resets = <&peri_rst 11>;
137		};
138
139		spi1: spi@54006100 {
140			compatible = "socionext,uniphier-scssi";
141			status = "disabled";
142			reg = <0x54006100 0x100>;
143			interrupts = <0 216 4>;
144			pinctrl-names = "default";
145			pinctrl-0 = <&pinctrl_spi1>;
146			clocks = <&peri_clk 11>;
147			resets = <&peri_rst 11>;
148		};
149
150		serial0: serial@54006800 {
151			compatible = "socionext,uniphier-uart";
152			status = "disabled";
153			reg = <0x54006800 0x40>;
154			interrupts = <0 33 4>;
155			pinctrl-names = "default";
156			pinctrl-0 = <&pinctrl_uart0>;
157			clocks = <&peri_clk 0>;
158			resets = <&peri_rst 0>;
159		};
160
161		serial1: serial@54006900 {
162			compatible = "socionext,uniphier-uart";
163			status = "disabled";
164			reg = <0x54006900 0x40>;
165			interrupts = <0 35 4>;
166			pinctrl-names = "default";
167			pinctrl-0 = <&pinctrl_uart1>;
168			clocks = <&peri_clk 1>;
169			resets = <&peri_rst 1>;
170		};
171
172		serial2: serial@54006a00 {
173			compatible = "socionext,uniphier-uart";
174			status = "disabled";
175			reg = <0x54006a00 0x40>;
176			interrupts = <0 37 4>;
177			pinctrl-names = "default";
178			pinctrl-0 = <&pinctrl_uart2>;
179			clocks = <&peri_clk 2>;
180			resets = <&peri_rst 2>;
181		};
182
183		serial3: serial@54006b00 {
184			compatible = "socionext,uniphier-uart";
185			status = "disabled";
186			reg = <0x54006b00 0x40>;
187			interrupts = <0 177 4>;
188			pinctrl-names = "default";
189			pinctrl-0 = <&pinctrl_uart3>;
190			clocks = <&peri_clk 3>;
191			resets = <&peri_rst 3>;
192		};
193
194		gpio: gpio@55000000 {
195			compatible = "socionext,uniphier-gpio";
196			reg = <0x55000000 0x200>;
197			interrupt-parent = <&aidet>;
198			interrupt-controller;
199			#interrupt-cells = <2>;
200			gpio-controller;
201			#gpio-cells = <2>;
202			gpio-ranges = <&pinctrl 0 0 0>,
203				      <&pinctrl 43 0 0>,
204				      <&pinctrl 51 0 0>,
205				      <&pinctrl 96 0 0>,
206				      <&pinctrl 160 0 0>,
207				      <&pinctrl 184 0 0>;
208			gpio-ranges-group-names = "gpio_range0",
209						  "gpio_range1",
210						  "gpio_range2",
211						  "gpio_range3",
212						  "gpio_range4",
213						  "gpio_range5";
214			ngpios = <200>;
215			socionext,interrupt-ranges = <0 48 16>, <16 154 5>,
216						     <21 217 3>;
217		};
218
219		audio@56000000 {
220			compatible = "socionext,uniphier-ld11-aio";
221			reg = <0x56000000 0x80000>;
222			interrupts = <0 144 4>;
223			pinctrl-names = "default";
224			pinctrl-0 = <&pinctrl_aout1>,
225				    <&pinctrl_aoutiec1>;
226			clock-names = "aio";
227			clocks = <&sys_clk 40>;
228			reset-names = "aio";
229			resets = <&sys_rst 40>;
230			#sound-dai-cells = <1>;
231			socionext,syscon = <&soc_glue>;
232
233			i2s_port0: port@0 {
234				i2s_hdmi: endpoint {
235				};
236			};
237
238			i2s_port1: port@1 {
239				i2s_pcmin2: endpoint {
240				};
241			};
242
243			i2s_port2: port@2 {
244				i2s_line: endpoint {
245					dai-format = "i2s";
246					remote-endpoint = <&evea_line>;
247				};
248			};
249
250			i2s_port3: port@3 {
251				i2s_hpcmout1: endpoint {
252				};
253			};
254
255			i2s_port4: port@4 {
256				i2s_hp: endpoint {
257					dai-format = "i2s";
258					remote-endpoint = <&evea_hp>;
259				};
260			};
261
262			spdif_port0: port@5 {
263				spdif_hiecout1: endpoint {
264				};
265			};
266
267			src_port0: port@6 {
268				i2s_epcmout2: endpoint {
269				};
270			};
271
272			src_port1: port@7 {
273				i2s_epcmout3: endpoint {
274				};
275			};
276
277			comp_spdif_port0: port@8 {
278				comp_spdif_hiecout1: endpoint {
279				};
280			};
281		};
282
283		codec@57900000 {
284			compatible = "socionext,uniphier-evea";
285			reg = <0x57900000 0x1000>;
286			clock-names = "evea", "exiv";
287			clocks = <&sys_clk 41>, <&sys_clk 42>;
288			reset-names = "evea", "exiv", "adamv";
289			resets = <&sys_rst 41>, <&sys_rst 42>, <&adamv_rst 0>;
290			#sound-dai-cells = <1>;
291
292			port@0 {
293				evea_line: endpoint {
294					remote-endpoint = <&i2s_line>;
295				};
296			};
297
298			port@1 {
299				evea_hp: endpoint {
300					remote-endpoint = <&i2s_hp>;
301				};
302			};
303		};
304
305		adamv@57920000 {
306			compatible = "socionext,uniphier-ld11-adamv",
307				     "simple-mfd", "syscon";
308			reg = <0x57920000 0x1000>;
309
310			adamv_rst: reset {
311				compatible = "socionext,uniphier-ld11-adamv-reset";
312				#reset-cells = <1>;
313			};
314		};
315
316		i2c0: i2c@58780000 {
317			compatible = "socionext,uniphier-fi2c";
318			status = "disabled";
319			reg = <0x58780000 0x80>;
320			#address-cells = <1>;
321			#size-cells = <0>;
322			interrupts = <0 41 4>;
323			pinctrl-names = "default";
324			pinctrl-0 = <&pinctrl_i2c0>;
325			clocks = <&peri_clk 4>;
326			resets = <&peri_rst 4>;
327			clock-frequency = <100000>;
328		};
329
330		i2c1: i2c@58781000 {
331			compatible = "socionext,uniphier-fi2c";
332			status = "disabled";
333			reg = <0x58781000 0x80>;
334			#address-cells = <1>;
335			#size-cells = <0>;
336			interrupts = <0 42 4>;
337			pinctrl-names = "default";
338			pinctrl-0 = <&pinctrl_i2c1>;
339			clocks = <&peri_clk 5>;
340			resets = <&peri_rst 5>;
341			clock-frequency = <100000>;
342		};
343
344		i2c2: i2c@58782000 {
345			compatible = "socionext,uniphier-fi2c";
346			reg = <0x58782000 0x80>;
347			#address-cells = <1>;
348			#size-cells = <0>;
349			interrupts = <0 43 4>;
350			clocks = <&peri_clk 6>;
351			resets = <&peri_rst 6>;
352			clock-frequency = <400000>;
353		};
354
355		i2c3: i2c@58783000 {
356			compatible = "socionext,uniphier-fi2c";
357			status = "disabled";
358			reg = <0x58783000 0x80>;
359			#address-cells = <1>;
360			#size-cells = <0>;
361			interrupts = <0 44 4>;
362			pinctrl-names = "default";
363			pinctrl-0 = <&pinctrl_i2c3>;
364			clocks = <&peri_clk 7>;
365			resets = <&peri_rst 7>;
366			clock-frequency = <100000>;
367		};
368
369		i2c4: i2c@58784000 {
370			compatible = "socionext,uniphier-fi2c";
371			status = "disabled";
372			reg = <0x58784000 0x80>;
373			#address-cells = <1>;
374			#size-cells = <0>;
375			interrupts = <0 45 4>;
376			pinctrl-names = "default";
377			pinctrl-0 = <&pinctrl_i2c4>;
378			clocks = <&peri_clk 8>;
379			resets = <&peri_rst 8>;
380			clock-frequency = <100000>;
381		};
382
383		i2c5: i2c@58785000 {
384			compatible = "socionext,uniphier-fi2c";
385			reg = <0x58785000 0x80>;
386			#address-cells = <1>;
387			#size-cells = <0>;
388			interrupts = <0 25 4>;
389			clocks = <&peri_clk 9>;
390			resets = <&peri_rst 9>;
391			clock-frequency = <400000>;
392		};
393
394		system_bus: system-bus@58c00000 {
395			compatible = "socionext,uniphier-system-bus";
396			status = "disabled";
397			reg = <0x58c00000 0x400>;
398			#address-cells = <2>;
399			#size-cells = <1>;
400			pinctrl-names = "default";
401			pinctrl-0 = <&pinctrl_system_bus>;
402		};
403
404		smpctrl@59801000 {
405			compatible = "socionext,uniphier-smpctrl";
406			reg = <0x59801000 0x400>;
407		};
408
409		sdctrl@59810000 {
410			compatible = "socionext,uniphier-ld11-sdctrl",
411				     "simple-mfd", "syscon";
412			reg = <0x59810000 0x400>;
413
414			sd_rst: reset {
415				compatible = "socionext,uniphier-ld11-sd-reset";
416				#reset-cells = <1>;
417			};
418		};
419
420		perictrl@59820000 {
421			compatible = "socionext,uniphier-ld11-perictrl",
422				     "simple-mfd", "syscon";
423			reg = <0x59820000 0x200>;
424
425			peri_clk: clock {
426				compatible = "socionext,uniphier-ld11-peri-clock";
427				#clock-cells = <1>;
428			};
429
430			peri_rst: reset {
431				compatible = "socionext,uniphier-ld11-peri-reset";
432				#reset-cells = <1>;
433			};
434		};
435
436		emmc: sdhc@5a000000 {
437			compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
438			reg = <0x5a000000 0x400>;
439			interrupts = <0 78 4>;
440			pinctrl-names = "default";
441			pinctrl-0 = <&pinctrl_emmc>;
442			clocks = <&sys_clk 4>;
443			resets = <&sys_rst 4>;
444			bus-width = <8>;
445			mmc-ddr-1_8v;
446			mmc-hs200-1_8v;
447			mmc-pwrseq = <&emmc_pwrseq>;
448			cdns,phy-input-delay-legacy = <9>;
449			cdns,phy-input-delay-mmc-highspeed = <2>;
450			cdns,phy-input-delay-mmc-ddr = <3>;
451			cdns,phy-dll-delay-sdclk = <21>;
452			cdns,phy-dll-delay-sdclk-hsmmc = <21>;
453		};
454
455		usb0: usb@5a800100 {
456			compatible = "socionext,uniphier-ehci", "generic-ehci";
457			status = "disabled";
458			reg = <0x5a800100 0x100>;
459			interrupts = <0 243 4>;
460			pinctrl-names = "default";
461			pinctrl-0 = <&pinctrl_usb0>;
462			clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 8>,
463				 <&mio_clk 12>;
464			resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 8>,
465				 <&mio_rst 12>;
466			phy-names = "usb";
467			phys = <&usb_phy0>;
468			has-transaction-translator;
469		};
470
471		usb1: usb@5a810100 {
472			compatible = "socionext,uniphier-ehci", "generic-ehci";
473			status = "disabled";
474			reg = <0x5a810100 0x100>;
475			interrupts = <0 244 4>;
476			pinctrl-names = "default";
477			pinctrl-0 = <&pinctrl_usb1>;
478			clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 9>,
479				 <&mio_clk 13>;
480			resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 9>,
481				 <&mio_rst 13>;
482			phy-names = "usb";
483			phys = <&usb_phy1>;
484			has-transaction-translator;
485		};
486
487		usb2: usb@5a820100 {
488			compatible = "socionext,uniphier-ehci", "generic-ehci";
489			status = "disabled";
490			reg = <0x5a820100 0x100>;
491			interrupts = <0 245 4>;
492			pinctrl-names = "default";
493			pinctrl-0 = <&pinctrl_usb2>;
494			clocks = <&sys_clk 8>, <&mio_clk 7>, <&mio_clk 10>,
495				 <&mio_clk 14>;
496			resets = <&sys_rst 8>, <&mio_rst 7>, <&mio_rst 10>,
497				 <&mio_rst 14>;
498			phy-names = "usb";
499			phys = <&usb_phy2>;
500			has-transaction-translator;
501		};
502
503		mioctrl@5b3e0000 {
504			compatible = "socionext,uniphier-ld11-mioctrl",
505				     "simple-mfd", "syscon";
506			reg = <0x5b3e0000 0x800>;
507
508			mio_clk: clock {
509				compatible = "socionext,uniphier-ld11-mio-clock";
510				#clock-cells = <1>;
511			};
512
513			mio_rst: reset {
514				compatible = "socionext,uniphier-ld11-mio-reset";
515				#reset-cells = <1>;
516				resets = <&sys_rst 7>;
517			};
518		};
519
520		soc_glue: soc-glue@5f800000 {
521			compatible = "socionext,uniphier-ld11-soc-glue",
522				     "simple-mfd", "syscon";
523			reg = <0x5f800000 0x2000>;
524
525			pinctrl: pinctrl {
526				compatible = "socionext,uniphier-ld11-pinctrl";
527			};
528
529			usb-phy {
530				compatible = "socionext,uniphier-ld11-usb2-phy";
531				#address-cells = <1>;
532				#size-cells = <0>;
533
534				usb_phy0: phy@0 {
535					reg = <0>;
536					#phy-cells = <0>;
537				};
538
539				usb_phy1: phy@1 {
540					reg = <1>;
541					#phy-cells = <0>;
542				};
543
544				usb_phy2: phy@2 {
545					reg = <2>;
546					#phy-cells = <0>;
547				};
548			};
549		};
550
551		soc-glue@5f900000 {
552			compatible = "socionext,uniphier-ld11-soc-glue-debug",
553				     "simple-mfd";
554			#address-cells = <1>;
555			#size-cells = <1>;
556			ranges = <0 0x5f900000 0x2000>;
557
558			efuse@100 {
559				compatible = "socionext,uniphier-efuse";
560				reg = <0x100 0x28>;
561			};
562
563			efuse@200 {
564				compatible = "socionext,uniphier-efuse";
565				reg = <0x200 0x68>;
566			};
567		};
568
569		aidet: aidet@5fc20000 {
570			compatible = "socionext,uniphier-ld11-aidet";
571			reg = <0x5fc20000 0x200>;
572			interrupt-controller;
573			#interrupt-cells = <2>;
574		};
575
576		gic: interrupt-controller@5fe00000 {
577			compatible = "arm,gic-v3";
578			reg = <0x5fe00000 0x10000>,	/* GICD */
579			      <0x5fe40000 0x80000>;	/* GICR */
580			interrupt-controller;
581			#interrupt-cells = <3>;
582			interrupts = <1 9 4>;
583		};
584
585		sysctrl@61840000 {
586			compatible = "socionext,uniphier-ld11-sysctrl",
587				     "simple-mfd", "syscon";
588			reg = <0x61840000 0x10000>;
589
590			sys_clk: clock {
591				compatible = "socionext,uniphier-ld11-clock";
592				#clock-cells = <1>;
593			};
594
595			sys_rst: reset {
596				compatible = "socionext,uniphier-ld11-reset";
597				#reset-cells = <1>;
598			};
599
600			watchdog {
601				compatible = "socionext,uniphier-wdt";
602			};
603		};
604
605		eth: ethernet@65000000 {
606			compatible = "socionext,uniphier-ld11-ave4";
607			status = "disabled";
608			reg = <0x65000000 0x8500>;
609			interrupts = <0 66 4>;
610			clock-names = "ether";
611			clocks = <&sys_clk 6>;
612			reset-names = "ether";
613			resets = <&sys_rst 6>;
614			phy-mode = "internal";
615			local-mac-address = [00 00 00 00 00 00];
616			socionext,syscon-phy-mode = <&soc_glue 0>;
617
618			mdio: mdio {
619				#address-cells = <1>;
620				#size-cells = <0>;
621			};
622		};
623
624		nand: nand@68000000 {
625			compatible = "socionext,uniphier-denali-nand-v5b";
626			status = "disabled";
627			reg-names = "nand_data", "denali_reg";
628			reg = <0x68000000 0x20>, <0x68100000 0x1000>;
629			#address-cells = <1>;
630			#size-cells = <0>;
631			interrupts = <0 65 4>;
632			pinctrl-names = "default";
633			pinctrl-0 = <&pinctrl_nand>;
634			clock-names = "nand", "nand_x", "ecc";
635			clocks = <&sys_clk 2>, <&sys_clk 3>, <&sys_clk 3>;
636			resets = <&sys_rst 2>;
637		};
638	};
639};
640
641#include "uniphier-pinctrl.dtsi"
642
643&pinctrl_aoutiec1 {
644	drive-strength = <4>;	/* default: 4mA */
645
646	ao1arc {
647		pins = "AO1ARC";
648		drive-strength = <8>;	/* 8mA */
649	};
650};
651