1 // SPDX-License-Identifier: GPL-2.0+ OR MIT
3 // Device Tree Source for UniPhier LD20 SoC
5 // Copyright (C) 2015-2016 Socionext Inc.
6 // Author: Masahiro Yamada <yamada.masahiro@socionext.com>
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/gpio/uniphier-gpio.h>
10 #include <dt-bindings/thermal/thermal.h>
12 /memreserve/ 0x80000000 0x02000000;
15 compatible = "socionext,uniphier-ld20";
18 interrupt-parent = <&gic>;
46 compatible = "arm,cortex-a72";
48 clocks = <&sys_clk 32>;
49 enable-method = "psci";
50 operating-points-v2 = <&cluster0_opp>;
56 compatible = "arm,cortex-a72";
58 clocks = <&sys_clk 32>;
59 enable-method = "psci";
60 operating-points-v2 = <&cluster0_opp>;
66 compatible = "arm,cortex-a53";
68 clocks = <&sys_clk 33>;
69 enable-method = "psci";
70 operating-points-v2 = <&cluster1_opp>;
76 compatible = "arm,cortex-a53";
78 clocks = <&sys_clk 33>;
79 enable-method = "psci";
80 operating-points-v2 = <&cluster1_opp>;
85 cluster0_opp: opp-table0 {
86 compatible = "operating-points-v2";
90 opp-hz = /bits/ 64 <250000000>;
91 clock-latency-ns = <300>;
94 opp-hz = /bits/ 64 <275000000>;
95 clock-latency-ns = <300>;
98 opp-hz = /bits/ 64 <500000000>;
99 clock-latency-ns = <300>;
102 opp-hz = /bits/ 64 <550000000>;
103 clock-latency-ns = <300>;
106 opp-hz = /bits/ 64 <666667000>;
107 clock-latency-ns = <300>;
110 opp-hz = /bits/ 64 <733334000>;
111 clock-latency-ns = <300>;
114 opp-hz = /bits/ 64 <1000000000>;
115 clock-latency-ns = <300>;
118 opp-hz = /bits/ 64 <1100000000>;
119 clock-latency-ns = <300>;
123 cluster1_opp: opp-table1 {
124 compatible = "operating-points-v2";
128 opp-hz = /bits/ 64 <250000000>;
129 clock-latency-ns = <300>;
132 opp-hz = /bits/ 64 <275000000>;
133 clock-latency-ns = <300>;
136 opp-hz = /bits/ 64 <500000000>;
137 clock-latency-ns = <300>;
140 opp-hz = /bits/ 64 <550000000>;
141 clock-latency-ns = <300>;
144 opp-hz = /bits/ 64 <666667000>;
145 clock-latency-ns = <300>;
148 opp-hz = /bits/ 64 <733334000>;
149 clock-latency-ns = <300>;
152 opp-hz = /bits/ 64 <1000000000>;
153 clock-latency-ns = <300>;
156 opp-hz = /bits/ 64 <1100000000>;
157 clock-latency-ns = <300>;
162 compatible = "arm,psci-1.0";
168 compatible = "fixed-clock";
170 clock-frequency = <25000000>;
174 emmc_pwrseq: emmc-pwrseq {
175 compatible = "mmc-pwrseq-emmc";
176 reset-gpios = <&gpio UNIPHIER_GPIO_PORT(3, 2) GPIO_ACTIVE_LOW>;
180 compatible = "arm,armv8-timer";
181 interrupts = <1 13 4>,
189 polling-delay-passive = <250>; /* 250ms */
190 polling-delay = <1000>; /* 1000ms */
191 thermal-sensors = <&pvtctl>;
195 temperature = <110000>; /* 110C */
199 cpu_alert: cpu-alert {
200 temperature = <100000>; /* 100C */
209 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
210 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
211 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
212 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
219 compatible = "simple-bus";
220 #address-cells = <1>;
222 ranges = <0 0 0 0xffffffff>;
225 compatible = "socionext,uniphier-scssi";
227 reg = <0x54006000 0x100>;
228 interrupts = <0 39 4>;
229 pinctrl-names = "default";
230 pinctrl-0 = <&pinctrl_spi0>;
231 clocks = <&peri_clk 11>;
232 resets = <&peri_rst 11>;
236 compatible = "socionext,uniphier-scssi";
238 reg = <0x54006100 0x100>;
239 interrupts = <0 216 4>;
240 pinctrl-names = "default";
241 pinctrl-0 = <&pinctrl_spi1>;
242 clocks = <&peri_clk 11>;
243 resets = <&peri_rst 11>;
247 compatible = "socionext,uniphier-scssi";
249 reg = <0x54006200 0x100>;
250 interrupts = <0 229 4>;
251 pinctrl-names = "default";
252 pinctrl-0 = <&pinctrl_spi2>;
253 clocks = <&peri_clk 11>;
254 resets = <&peri_rst 11>;
258 compatible = "socionext,uniphier-scssi";
260 reg = <0x54006300 0x100>;
261 interrupts = <0 230 4>;
262 pinctrl-names = "default";
263 pinctrl-0 = <&pinctrl_spi3>;
264 clocks = <&peri_clk 11>;
265 resets = <&peri_rst 11>;
268 serial0: serial@54006800 {
269 compatible = "socionext,uniphier-uart";
271 reg = <0x54006800 0x40>;
272 interrupts = <0 33 4>;
273 pinctrl-names = "default";
274 pinctrl-0 = <&pinctrl_uart0>;
275 clocks = <&peri_clk 0>;
276 resets = <&peri_rst 0>;
279 serial1: serial@54006900 {
280 compatible = "socionext,uniphier-uart";
282 reg = <0x54006900 0x40>;
283 interrupts = <0 35 4>;
284 pinctrl-names = "default";
285 pinctrl-0 = <&pinctrl_uart1>;
286 clocks = <&peri_clk 1>;
287 resets = <&peri_rst 1>;
290 serial2: serial@54006a00 {
291 compatible = "socionext,uniphier-uart";
293 reg = <0x54006a00 0x40>;
294 interrupts = <0 37 4>;
295 pinctrl-names = "default";
296 pinctrl-0 = <&pinctrl_uart2>;
297 clocks = <&peri_clk 2>;
298 resets = <&peri_rst 2>;
301 serial3: serial@54006b00 {
302 compatible = "socionext,uniphier-uart";
304 reg = <0x54006b00 0x40>;
305 interrupts = <0 177 4>;
306 pinctrl-names = "default";
307 pinctrl-0 = <&pinctrl_uart3>;
308 clocks = <&peri_clk 3>;
309 resets = <&peri_rst 3>;
312 gpio: gpio@55000000 {
313 compatible = "socionext,uniphier-gpio";
314 reg = <0x55000000 0x200>;
315 interrupt-parent = <&aidet>;
316 interrupt-controller;
317 #interrupt-cells = <2>;
320 gpio-ranges = <&pinctrl 0 0 0>,
323 gpio-ranges-group-names = "gpio_range0",
327 socionext,interrupt-ranges = <0 48 16>, <16 154 5>,
332 compatible = "socionext,uniphier-ld20-aio";
333 reg = <0x56000000 0x80000>;
334 interrupts = <0 144 4>;
335 pinctrl-names = "default";
336 pinctrl-0 = <&pinctrl_aout1>,
339 clocks = <&sys_clk 40>;
341 resets = <&sys_rst 40>;
342 #sound-dai-cells = <1>;
343 socionext,syscon = <&soc_glue>;
351 i2s_pcmin2: endpoint {
358 remote-endpoint = <&evea_line>;
363 i2s_hpcmout1: endpoint {
370 remote-endpoint = <&evea_hp>;
374 spdif_port0: port@5 {
375 spdif_hiecout1: endpoint {
380 i2s_epcmout2: endpoint {
385 i2s_epcmout3: endpoint {
389 comp_spdif_port0: port@8 {
390 comp_spdif_hiecout1: endpoint {
396 compatible = "socionext,uniphier-evea";
397 reg = <0x57900000 0x1000>;
398 clock-names = "evea", "exiv";
399 clocks = <&sys_clk 41>, <&sys_clk 42>;
400 reset-names = "evea", "exiv", "adamv";
401 resets = <&sys_rst 41>, <&sys_rst 42>, <&adamv_rst 0>;
402 #sound-dai-cells = <1>;
405 evea_line: endpoint {
406 remote-endpoint = <&i2s_line>;
412 remote-endpoint = <&i2s_hp>;
418 compatible = "socionext,uniphier-ld20-adamv",
419 "simple-mfd", "syscon";
420 reg = <0x57920000 0x1000>;
423 compatible = "socionext,uniphier-ld20-adamv-reset";
429 compatible = "socionext,uniphier-fi2c";
431 reg = <0x58780000 0x80>;
432 #address-cells = <1>;
434 interrupts = <0 41 4>;
435 pinctrl-names = "default";
436 pinctrl-0 = <&pinctrl_i2c0>;
437 clocks = <&peri_clk 4>;
438 resets = <&peri_rst 4>;
439 clock-frequency = <100000>;
443 compatible = "socionext,uniphier-fi2c";
445 reg = <0x58781000 0x80>;
446 #address-cells = <1>;
448 interrupts = <0 42 4>;
449 pinctrl-names = "default";
450 pinctrl-0 = <&pinctrl_i2c1>;
451 clocks = <&peri_clk 5>;
452 resets = <&peri_rst 5>;
453 clock-frequency = <100000>;
457 compatible = "socionext,uniphier-fi2c";
458 reg = <0x58782000 0x80>;
459 #address-cells = <1>;
461 interrupts = <0 43 4>;
462 clocks = <&peri_clk 6>;
463 resets = <&peri_rst 6>;
464 clock-frequency = <400000>;
468 compatible = "socionext,uniphier-fi2c";
470 reg = <0x58783000 0x80>;
471 #address-cells = <1>;
473 interrupts = <0 44 4>;
474 pinctrl-names = "default";
475 pinctrl-0 = <&pinctrl_i2c3>;
476 clocks = <&peri_clk 7>;
477 resets = <&peri_rst 7>;
478 clock-frequency = <100000>;
482 compatible = "socionext,uniphier-fi2c";
484 reg = <0x58784000 0x80>;
485 #address-cells = <1>;
487 interrupts = <0 45 4>;
488 pinctrl-names = "default";
489 pinctrl-0 = <&pinctrl_i2c4>;
490 clocks = <&peri_clk 8>;
491 resets = <&peri_rst 8>;
492 clock-frequency = <100000>;
496 compatible = "socionext,uniphier-fi2c";
497 reg = <0x58785000 0x80>;
498 #address-cells = <1>;
500 interrupts = <0 25 4>;
501 clocks = <&peri_clk 9>;
502 resets = <&peri_rst 9>;
503 clock-frequency = <400000>;
506 system_bus: system-bus@58c00000 {
507 compatible = "socionext,uniphier-system-bus";
509 reg = <0x58c00000 0x400>;
510 #address-cells = <2>;
512 pinctrl-names = "default";
513 pinctrl-0 = <&pinctrl_system_bus>;
517 compatible = "socionext,uniphier-smpctrl";
518 reg = <0x59801000 0x400>;
522 compatible = "socionext,uniphier-ld20-sdctrl",
523 "simple-mfd", "syscon";
524 reg = <0x59810000 0x400>;
527 compatible = "socionext,uniphier-ld20-sd-clock";
532 compatible = "socionext,uniphier-ld20-sd-reset";
538 compatible = "socionext,uniphier-ld20-perictrl",
539 "simple-mfd", "syscon";
540 reg = <0x59820000 0x200>;
543 compatible = "socionext,uniphier-ld20-peri-clock";
548 compatible = "socionext,uniphier-ld20-peri-reset";
553 emmc: sdhc@5a000000 {
554 compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
555 reg = <0x5a000000 0x400>;
556 interrupts = <0 78 4>;
557 pinctrl-names = "default";
558 pinctrl-0 = <&pinctrl_emmc>;
559 clocks = <&sys_clk 4>;
560 resets = <&sys_rst 4>;
564 mmc-pwrseq = <&emmc_pwrseq>;
565 cdns,phy-input-delay-legacy = <9>;
566 cdns,phy-input-delay-mmc-highspeed = <2>;
567 cdns,phy-input-delay-mmc-ddr = <3>;
568 cdns,phy-dll-delay-sdclk = <21>;
569 cdns,phy-dll-delay-sdclk-hsmmc = <21>;
573 compatible = "socionext,uniphier-sd-v3.1.1";
575 reg = <0x5a400000 0x800>;
576 interrupts = <0 76 4>;
577 pinctrl-names = "default";
578 pinctrl-0 = <&pinctrl_sd>;
579 clocks = <&sd_clk 0>;
580 reset-names = "host";
581 resets = <&sd_rst 0>;
586 soc_glue: soc-glue@5f800000 {
587 compatible = "socionext,uniphier-ld20-soc-glue",
588 "simple-mfd", "syscon";
589 reg = <0x5f800000 0x2000>;
592 compatible = "socionext,uniphier-ld20-pinctrl";
597 compatible = "socionext,uniphier-ld20-soc-glue-debug",
599 #address-cells = <1>;
601 ranges = <0 0x5f900000 0x2000>;
604 compatible = "socionext,uniphier-efuse";
609 compatible = "socionext,uniphier-efuse";
611 #address-cells = <1>;
615 usb_rterm0: trim@54,4 {
619 usb_rterm1: trim@55,4 {
623 usb_rterm2: trim@58,4 {
627 usb_rterm3: trim@59,4 {
631 usb_sel_t0: trim@54,0 {
635 usb_sel_t1: trim@55,0 {
639 usb_sel_t2: trim@58,0 {
643 usb_sel_t3: trim@59,0 {
647 usb_hs_i0: trim@56,0 {
651 usb_hs_i2: trim@5a,0 {
658 aidet: aidet@5fc20000 {
659 compatible = "socionext,uniphier-ld20-aidet";
660 reg = <0x5fc20000 0x200>;
661 interrupt-controller;
662 #interrupt-cells = <2>;
665 gic: interrupt-controller@5fe00000 {
666 compatible = "arm,gic-v3";
667 reg = <0x5fe00000 0x10000>, /* GICD */
668 <0x5fe80000 0x80000>; /* GICR */
669 interrupt-controller;
670 #interrupt-cells = <3>;
671 interrupts = <1 9 4>;
675 compatible = "socionext,uniphier-ld20-sysctrl",
676 "simple-mfd", "syscon";
677 reg = <0x61840000 0x10000>;
680 compatible = "socionext,uniphier-ld20-clock";
685 compatible = "socionext,uniphier-ld20-reset";
690 compatible = "socionext,uniphier-wdt";
694 compatible = "socionext,uniphier-ld20-thermal";
695 interrupts = <0 3 4>;
696 #thermal-sensor-cells = <0>;
697 socionext,tmod-calibration = <0x0f22 0x68ee>;
701 eth: ethernet@65000000 {
702 compatible = "socionext,uniphier-ld20-ave4";
704 reg = <0x65000000 0x8500>;
705 interrupts = <0 66 4>;
706 pinctrl-names = "default";
707 pinctrl-0 = <&pinctrl_ether_rgmii>;
708 clock-names = "ether";
709 clocks = <&sys_clk 6>;
710 reset-names = "ether";
711 resets = <&sys_rst 6>;
713 local-mac-address = [00 00 00 00 00 00];
714 socionext,syscon-phy-mode = <&soc_glue 0>;
717 #address-cells = <1>;
723 compatible = "socionext,uniphier-dwc3", "snps,dwc3";
725 reg = <0x65a00000 0xcd00>;
726 interrupt-names = "host";
727 interrupts = <0 134 4>;
728 pinctrl-names = "default";
729 pinctrl-0 = <&pinctrl_usb0>, <&pinctrl_usb1>,
730 <&pinctrl_usb2>, <&pinctrl_usb3>;
731 clock-names = "ref", "bus_early", "suspend";
732 clocks = <&sys_clk 14>, <&sys_clk 14>, <&sys_clk 14>;
733 resets = <&usb_rst 15>;
734 phys = <&usb_hsphy0>, <&usb_hsphy1>,
735 <&usb_hsphy2>, <&usb_hsphy3>,
736 <&usb_ssphy0>, <&usb_ssphy1>;
741 compatible = "socionext,uniphier-ld20-dwc3-glue",
743 #address-cells = <1>;
745 ranges = <0 0x65b00000 0x400>;
748 compatible = "socionext,uniphier-ld20-usb3-reset";
751 clock-names = "link";
752 clocks = <&sys_clk 14>;
753 reset-names = "link";
754 resets = <&sys_rst 14>;
757 usb_vbus0: regulator@100 {
758 compatible = "socionext,uniphier-ld20-usb3-regulator";
760 clock-names = "link";
761 clocks = <&sys_clk 14>;
762 reset-names = "link";
763 resets = <&sys_rst 14>;
766 usb_vbus1: regulator@110 {
767 compatible = "socionext,uniphier-ld20-usb3-regulator";
769 clock-names = "link";
770 clocks = <&sys_clk 14>;
771 reset-names = "link";
772 resets = <&sys_rst 14>;
775 usb_vbus2: regulator@120 {
776 compatible = "socionext,uniphier-ld20-usb3-regulator";
778 clock-names = "link";
779 clocks = <&sys_clk 14>;
780 reset-names = "link";
781 resets = <&sys_rst 14>;
784 usb_vbus3: regulator@130 {
785 compatible = "socionext,uniphier-ld20-usb3-regulator";
787 clock-names = "link";
788 clocks = <&sys_clk 14>;
789 reset-names = "link";
790 resets = <&sys_rst 14>;
793 usb_hsphy0: hs-phy@200 {
794 compatible = "socionext,uniphier-ld20-usb3-hsphy";
797 clock-names = "link", "phy";
798 clocks = <&sys_clk 14>, <&sys_clk 16>;
799 reset-names = "link", "phy";
800 resets = <&sys_rst 14>, <&sys_rst 16>;
801 vbus-supply = <&usb_vbus0>;
802 nvmem-cell-names = "rterm", "sel_t", "hs_i";
803 nvmem-cells = <&usb_rterm0>, <&usb_sel_t0>,
807 usb_hsphy1: hs-phy@210 {
808 compatible = "socionext,uniphier-ld20-usb3-hsphy";
811 clock-names = "link", "phy";
812 clocks = <&sys_clk 14>, <&sys_clk 16>;
813 reset-names = "link", "phy";
814 resets = <&sys_rst 14>, <&sys_rst 16>;
815 vbus-supply = <&usb_vbus1>;
816 nvmem-cell-names = "rterm", "sel_t", "hs_i";
817 nvmem-cells = <&usb_rterm1>, <&usb_sel_t1>,
821 usb_hsphy2: hs-phy@220 {
822 compatible = "socionext,uniphier-ld20-usb3-hsphy";
825 clock-names = "link", "phy";
826 clocks = <&sys_clk 14>, <&sys_clk 17>;
827 reset-names = "link", "phy";
828 resets = <&sys_rst 14>, <&sys_rst 17>;
829 vbus-supply = <&usb_vbus2>;
830 nvmem-cell-names = "rterm", "sel_t", "hs_i";
831 nvmem-cells = <&usb_rterm2>, <&usb_sel_t2>,
835 usb_hsphy3: hs-phy@230 {
836 compatible = "socionext,uniphier-ld20-usb3-hsphy";
839 clock-names = "link", "phy";
840 clocks = <&sys_clk 14>, <&sys_clk 17>;
841 reset-names = "link", "phy";
842 resets = <&sys_rst 14>, <&sys_rst 17>;
843 vbus-supply = <&usb_vbus3>;
844 nvmem-cell-names = "rterm", "sel_t", "hs_i";
845 nvmem-cells = <&usb_rterm3>, <&usb_sel_t3>,
849 usb_ssphy0: ss-phy@300 {
850 compatible = "socionext,uniphier-ld20-usb3-ssphy";
853 clock-names = "link", "phy";
854 clocks = <&sys_clk 14>, <&sys_clk 18>;
855 reset-names = "link", "phy";
856 resets = <&sys_rst 14>, <&sys_rst 18>;
857 vbus-supply = <&usb_vbus0>;
860 usb_ssphy1: ss-phy@310 {
861 compatible = "socionext,uniphier-ld20-usb3-ssphy";
864 clock-names = "link", "phy";
865 clocks = <&sys_clk 14>, <&sys_clk 19>;
866 reset-names = "link", "phy";
867 resets = <&sys_rst 14>, <&sys_rst 19>;
868 vbus-supply = <&usb_vbus1>;
872 pcie: pcie@66000000 {
873 compatible = "socionext,uniphier-pcie", "snps,dw-pcie";
875 reg-names = "dbi", "link", "config";
876 reg = <0x66000000 0x1000>, <0x66010000 0x10000>,
877 <0x2fff0000 0x10000>;
878 #address-cells = <3>;
880 clocks = <&sys_clk 24>;
881 resets = <&sys_rst 24>;
884 bus-range = <0x0 0xff>;
888 <0x81000000 0 0x00000000 0x2ffe0000 0 0x00010000>,
889 /* non-prefetchable memory */
890 <0x82000000 0 0x20000000 0x20000000 0 0x0ffe0000>;
891 #interrupt-cells = <1>;
892 interrupt-names = "dma", "msi";
893 interrupts = <0 224 4>, <0 225 4>;
894 interrupt-map-mask = <0 0 0 7>;
895 interrupt-map = <0 0 0 1 &pcie_intc 0>, /* INTA */
896 <0 0 0 2 &pcie_intc 1>, /* INTB */
897 <0 0 0 3 &pcie_intc 2>, /* INTC */
898 <0 0 0 4 &pcie_intc 3>; /* INTD */
899 phy-names = "pcie-phy";
902 pcie_intc: legacy-interrupt-controller {
903 interrupt-controller;
904 #interrupt-cells = <1>;
905 interrupt-parent = <&gic>;
906 interrupts = <0 226 4>;
910 pcie_phy: phy@66038000 {
911 compatible = "socionext,uniphier-ld20-pcie-phy";
912 reg = <0x66038000 0x4000>;
914 clocks = <&sys_clk 24>;
915 resets = <&sys_rst 24>;
916 socionext,syscon = <&soc_glue>;
919 nand: nand@68000000 {
920 compatible = "socionext,uniphier-denali-nand-v5b";
922 reg-names = "nand_data", "denali_reg";
923 reg = <0x68000000 0x20>, <0x68100000 0x1000>;
924 interrupts = <0 65 4>;
925 pinctrl-names = "default";
926 pinctrl-0 = <&pinctrl_nand>;
927 clock-names = "nand", "nand_x", "ecc";
928 clocks = <&sys_clk 2>, <&sys_clk 3>, <&sys_clk 3>;
929 resets = <&sys_rst 2>;
934 #include "uniphier-pinctrl.dtsi"
937 drive-strength = <4>; /* default: 3.5mA */
941 drive-strength = <5>; /* 5mA */
946 drive-strength = <4>; /* default: 3.5mA */
950 drive-strength = <11>; /* 11mA */