1 // SPDX-License-Identifier: GPL-2.0+ OR MIT
3 // Device Tree Source for UniPhier PXs3 SoC
5 // Copyright (C) 2017 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>
13 compatible = "socionext,uniphier-pxs3";
16 interrupt-parent = <&gic>;
41 compatible = "arm,cortex-a53";
43 clocks = <&sys_clk 33>;
44 enable-method = "psci";
45 operating-points-v2 = <&cluster0_opp>;
51 compatible = "arm,cortex-a53";
53 clocks = <&sys_clk 33>;
54 enable-method = "psci";
55 operating-points-v2 = <&cluster0_opp>;
61 compatible = "arm,cortex-a53";
63 clocks = <&sys_clk 33>;
64 enable-method = "psci";
65 operating-points-v2 = <&cluster0_opp>;
71 compatible = "arm,cortex-a53";
73 clocks = <&sys_clk 33>;
74 enable-method = "psci";
75 operating-points-v2 = <&cluster0_opp>;
80 cluster0_opp: opp-table {
81 compatible = "operating-points-v2";
85 opp-hz = /bits/ 64 <250000000>;
86 clock-latency-ns = <300>;
89 opp-hz = /bits/ 64 <325000000>;
90 clock-latency-ns = <300>;
93 opp-hz = /bits/ 64 <500000000>;
94 clock-latency-ns = <300>;
97 opp-hz = /bits/ 64 <650000000>;
98 clock-latency-ns = <300>;
101 opp-hz = /bits/ 64 <666667000>;
102 clock-latency-ns = <300>;
105 opp-hz = /bits/ 64 <866667000>;
106 clock-latency-ns = <300>;
109 opp-hz = /bits/ 64 <1000000000>;
110 clock-latency-ns = <300>;
113 opp-hz = /bits/ 64 <1300000000>;
114 clock-latency-ns = <300>;
119 compatible = "arm,psci-1.0";
125 compatible = "fixed-clock";
127 clock-frequency = <25000000>;
131 emmc_pwrseq: emmc-pwrseq {
132 compatible = "mmc-pwrseq-emmc";
133 reset-gpios = <&gpio UNIPHIER_GPIO_PORT(5, 7) GPIO_ACTIVE_LOW>;
137 compatible = "arm,armv8-timer";
138 interrupts = <1 13 4>,
146 polling-delay-passive = <250>; /* 250ms */
147 polling-delay = <1000>; /* 1000ms */
148 thermal-sensors = <&pvtctl>;
152 temperature = <110000>; /* 110C */
156 cpu_alert: cpu-alert {
157 temperature = <100000>; /* 100C */
166 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
167 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
168 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
169 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
176 #address-cells = <2>;
180 secure-memory@81000000 {
181 reg = <0x0 0x81000000 0x0 0x01000000>;
187 compatible = "simple-bus";
188 #address-cells = <1>;
190 ranges = <0 0 0 0xffffffff>;
193 compatible = "socionext,uniphier-scssi";
195 reg = <0x54006000 0x100>;
196 #address-cells = <1>;
198 interrupts = <0 39 4>;
199 pinctrl-names = "default";
200 pinctrl-0 = <&pinctrl_spi0>;
201 clocks = <&peri_clk 11>;
202 resets = <&peri_rst 11>;
206 compatible = "socionext,uniphier-scssi";
208 reg = <0x54006100 0x100>;
209 #address-cells = <1>;
211 interrupts = <0 216 4>;
212 pinctrl-names = "default";
213 pinctrl-0 = <&pinctrl_spi1>;
214 clocks = <&peri_clk 12>;
215 resets = <&peri_rst 12>;
218 serial0: serial@54006800 {
219 compatible = "socionext,uniphier-uart";
221 reg = <0x54006800 0x40>;
222 interrupts = <0 33 4>;
223 pinctrl-names = "default";
224 pinctrl-0 = <&pinctrl_uart0>;
225 clocks = <&peri_clk 0>;
226 resets = <&peri_rst 0>;
229 serial1: serial@54006900 {
230 compatible = "socionext,uniphier-uart";
232 reg = <0x54006900 0x40>;
233 interrupts = <0 35 4>;
234 pinctrl-names = "default";
235 pinctrl-0 = <&pinctrl_uart1>;
236 clocks = <&peri_clk 1>;
237 resets = <&peri_rst 1>;
240 serial2: serial@54006a00 {
241 compatible = "socionext,uniphier-uart";
243 reg = <0x54006a00 0x40>;
244 interrupts = <0 37 4>;
245 pinctrl-names = "default";
246 pinctrl-0 = <&pinctrl_uart2>;
247 clocks = <&peri_clk 2>;
248 resets = <&peri_rst 2>;
251 serial3: serial@54006b00 {
252 compatible = "socionext,uniphier-uart";
254 reg = <0x54006b00 0x40>;
255 interrupts = <0 177 4>;
256 pinctrl-names = "default";
257 pinctrl-0 = <&pinctrl_uart3>;
258 clocks = <&peri_clk 3>;
259 resets = <&peri_rst 3>;
262 gpio: gpio@55000000 {
263 compatible = "socionext,uniphier-gpio";
264 reg = <0x55000000 0x200>;
265 interrupt-parent = <&aidet>;
266 interrupt-controller;
267 #interrupt-cells = <2>;
270 gpio-ranges = <&pinctrl 0 0 0>,
273 gpio-ranges-group-names = "gpio_range0",
277 socionext,interrupt-ranges = <0 48 16>, <16 154 5>,
282 compatible = "socionext,uniphier-fi2c";
284 reg = <0x58780000 0x80>;
285 #address-cells = <1>;
287 interrupts = <0 41 4>;
288 pinctrl-names = "default";
289 pinctrl-0 = <&pinctrl_i2c0>;
290 clocks = <&peri_clk 4>;
291 resets = <&peri_rst 4>;
292 clock-frequency = <100000>;
296 compatible = "socionext,uniphier-fi2c";
298 reg = <0x58781000 0x80>;
299 #address-cells = <1>;
301 interrupts = <0 42 4>;
302 pinctrl-names = "default";
303 pinctrl-0 = <&pinctrl_i2c1>;
304 clocks = <&peri_clk 5>;
305 resets = <&peri_rst 5>;
306 clock-frequency = <100000>;
310 compatible = "socionext,uniphier-fi2c";
312 reg = <0x58782000 0x80>;
313 #address-cells = <1>;
315 interrupts = <0 43 4>;
316 pinctrl-names = "default";
317 pinctrl-0 = <&pinctrl_i2c2>;
318 clocks = <&peri_clk 6>;
319 resets = <&peri_rst 6>;
320 clock-frequency = <100000>;
324 compatible = "socionext,uniphier-fi2c";
326 reg = <0x58783000 0x80>;
327 #address-cells = <1>;
329 interrupts = <0 44 4>;
330 pinctrl-names = "default";
331 pinctrl-0 = <&pinctrl_i2c3>;
332 clocks = <&peri_clk 7>;
333 resets = <&peri_rst 7>;
334 clock-frequency = <100000>;
337 /* chip-internal connection for HDMI */
339 compatible = "socionext,uniphier-fi2c";
340 reg = <0x58786000 0x80>;
341 #address-cells = <1>;
343 interrupts = <0 26 4>;
344 clocks = <&peri_clk 10>;
345 resets = <&peri_rst 10>;
346 clock-frequency = <400000>;
349 system_bus: system-bus@58c00000 {
350 compatible = "socionext,uniphier-system-bus";
352 reg = <0x58c00000 0x400>;
353 #address-cells = <2>;
355 pinctrl-names = "default";
356 pinctrl-0 = <&pinctrl_system_bus>;
360 compatible = "socionext,uniphier-smpctrl";
361 reg = <0x59801000 0x400>;
365 compatible = "socionext,uniphier-pxs3-sdctrl",
366 "simple-mfd", "syscon";
367 reg = <0x59810000 0x400>;
370 compatible = "socionext,uniphier-pxs3-sd-clock";
375 compatible = "socionext,uniphier-pxs3-sd-reset";
381 compatible = "socionext,uniphier-pxs3-perictrl",
382 "simple-mfd", "syscon";
383 reg = <0x59820000 0x200>;
386 compatible = "socionext,uniphier-pxs3-peri-clock";
391 compatible = "socionext,uniphier-pxs3-peri-reset";
397 compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc";
398 reg = <0x5a000000 0x400>;
399 interrupts = <0 78 4>;
400 pinctrl-names = "default";
401 pinctrl-0 = <&pinctrl_emmc>;
402 clocks = <&sys_clk 4>;
403 resets = <&sys_rst 4>;
407 mmc-pwrseq = <&emmc_pwrseq>;
408 cdns,phy-input-delay-legacy = <9>;
409 cdns,phy-input-delay-mmc-highspeed = <2>;
410 cdns,phy-input-delay-mmc-ddr = <3>;
411 cdns,phy-dll-delay-sdclk = <21>;
412 cdns,phy-dll-delay-sdclk-hsmmc = <21>;
416 compatible = "socionext,uniphier-sd-v3.1.1";
418 reg = <0x5a400000 0x800>;
419 interrupts = <0 76 4>;
420 pinctrl-names = "default", "uhs";
421 pinctrl-0 = <&pinctrl_sd>;
422 pinctrl-1 = <&pinctrl_sd_uhs>;
423 clocks = <&sd_clk 0>;
424 reset-names = "host";
425 resets = <&sd_rst 0>;
433 soc_glue: soc-glue@5f800000 {
434 compatible = "socionext,uniphier-pxs3-soc-glue",
435 "simple-mfd", "syscon";
436 reg = <0x5f800000 0x2000>;
439 compatible = "socionext,uniphier-pxs3-pinctrl";
444 compatible = "socionext,uniphier-pxs3-soc-glue-debug",
446 #address-cells = <1>;
448 ranges = <0 0x5f900000 0x2000>;
451 compatible = "socionext,uniphier-efuse";
456 compatible = "socionext,uniphier-efuse";
458 #address-cells = <1>;
462 usb_rterm0: trim@54,4 {
466 usb_rterm1: trim@55,4 {
470 usb_rterm2: trim@58,4 {
474 usb_rterm3: trim@59,4 {
478 usb_sel_t0: trim@54,0 {
482 usb_sel_t1: trim@55,0 {
486 usb_sel_t2: trim@58,0 {
490 usb_sel_t3: trim@59,0 {
494 usb_hs_i0: trim@56,0 {
498 usb_hs_i2: trim@5a,0 {
505 xdmac: dma-controller@5fc10000 {
506 compatible = "socionext,uniphier-xdmac";
507 reg = <0x5fc10000 0x5300>;
508 interrupts = <0 188 4>;
513 aidet: interrupt-controller@5fc20000 {
514 compatible = "socionext,uniphier-pxs3-aidet";
515 reg = <0x5fc20000 0x200>;
516 interrupt-controller;
517 #interrupt-cells = <2>;
520 gic: interrupt-controller@5fe00000 {
521 compatible = "arm,gic-v3";
522 reg = <0x5fe00000 0x10000>, /* GICD */
523 <0x5fe80000 0x80000>; /* GICR */
524 interrupt-controller;
525 #interrupt-cells = <3>;
526 interrupts = <1 9 4>;
530 compatible = "socionext,uniphier-pxs3-sysctrl",
531 "simple-mfd", "syscon";
532 reg = <0x61840000 0x10000>;
535 compatible = "socionext,uniphier-pxs3-clock";
540 compatible = "socionext,uniphier-pxs3-reset";
545 compatible = "socionext,uniphier-wdt";
549 compatible = "socionext,uniphier-pxs3-thermal";
550 interrupts = <0 3 4>;
551 #thermal-sensor-cells = <0>;
552 socionext,tmod-calibration = <0x0f22 0x68ee>;
556 eth0: ethernet@65000000 {
557 compatible = "socionext,uniphier-pxs3-ave4";
559 reg = <0x65000000 0x8500>;
560 interrupts = <0 66 4>;
561 pinctrl-names = "default";
562 pinctrl-0 = <&pinctrl_ether_rgmii>;
563 clock-names = "ether";
564 clocks = <&sys_clk 6>;
565 reset-names = "ether";
566 resets = <&sys_rst 6>;
568 local-mac-address = [00 00 00 00 00 00];
569 socionext,syscon-phy-mode = <&soc_glue 0>;
572 #address-cells = <1>;
577 eth1: ethernet@65200000 {
578 compatible = "socionext,uniphier-pxs3-ave4";
580 reg = <0x65200000 0x8500>;
581 interrupts = <0 67 4>;
582 pinctrl-names = "default";
583 pinctrl-0 = <&pinctrl_ether1_rgmii>;
584 clock-names = "ether";
585 clocks = <&sys_clk 7>;
586 reset-names = "ether";
587 resets = <&sys_rst 7>;
589 local-mac-address = [00 00 00 00 00 00];
590 socionext,syscon-phy-mode = <&soc_glue 1>;
593 #address-cells = <1>;
599 compatible = "socionext,uniphier-dwc3", "snps,dwc3";
601 reg = <0x65a00000 0xcd00>;
602 interrupt-names = "host", "peripheral";
603 interrupts = <0 134 4>, <0 135 4>;
604 pinctrl-names = "default";
605 pinctrl-0 = <&pinctrl_usb0>, <&pinctrl_usb2>;
606 clock-names = "ref", "bus_early", "suspend";
607 clocks = <&sys_clk 12>, <&sys_clk 12>, <&sys_clk 12>;
608 resets = <&usb0_rst 15>;
609 phys = <&usb0_hsphy0>, <&usb0_hsphy1>,
610 <&usb0_ssphy0>, <&usb0_ssphy1>;
615 compatible = "socionext,uniphier-pxs3-dwc3-glue",
617 #address-cells = <1>;
619 ranges = <0 0x65b00000 0x400>;
622 compatible = "socionext,uniphier-pxs3-usb3-reset";
625 clock-names = "link";
626 clocks = <&sys_clk 12>;
627 reset-names = "link";
628 resets = <&sys_rst 12>;
631 usb0_vbus0: regulator@100 {
632 compatible = "socionext,uniphier-pxs3-usb3-regulator";
634 clock-names = "link";
635 clocks = <&sys_clk 12>;
636 reset-names = "link";
637 resets = <&sys_rst 12>;
640 usb0_vbus1: regulator@110 {
641 compatible = "socionext,uniphier-pxs3-usb3-regulator";
643 clock-names = "link";
644 clocks = <&sys_clk 12>;
645 reset-names = "link";
646 resets = <&sys_rst 12>;
649 usb0_hsphy0: hs-phy@200 {
650 compatible = "socionext,uniphier-pxs3-usb3-hsphy";
653 clock-names = "link", "phy";
654 clocks = <&sys_clk 12>, <&sys_clk 16>;
655 reset-names = "link", "phy";
656 resets = <&sys_rst 12>, <&sys_rst 16>;
657 vbus-supply = <&usb0_vbus0>;
658 nvmem-cell-names = "rterm", "sel_t", "hs_i";
659 nvmem-cells = <&usb_rterm0>, <&usb_sel_t0>,
663 usb0_hsphy1: hs-phy@210 {
664 compatible = "socionext,uniphier-pxs3-usb3-hsphy";
667 clock-names = "link", "phy";
668 clocks = <&sys_clk 12>, <&sys_clk 16>;
669 reset-names = "link", "phy";
670 resets = <&sys_rst 12>, <&sys_rst 16>;
671 vbus-supply = <&usb0_vbus1>;
672 nvmem-cell-names = "rterm", "sel_t", "hs_i";
673 nvmem-cells = <&usb_rterm1>, <&usb_sel_t1>,
677 usb0_ssphy0: ss-phy@300 {
678 compatible = "socionext,uniphier-pxs3-usb3-ssphy";
681 clock-names = "link", "phy";
682 clocks = <&sys_clk 12>, <&sys_clk 17>;
683 reset-names = "link", "phy";
684 resets = <&sys_rst 12>, <&sys_rst 17>;
685 vbus-supply = <&usb0_vbus0>;
688 usb0_ssphy1: ss-phy@310 {
689 compatible = "socionext,uniphier-pxs3-usb3-ssphy";
692 clock-names = "link", "phy";
693 clocks = <&sys_clk 12>, <&sys_clk 18>;
694 reset-names = "link", "phy";
695 resets = <&sys_rst 12>, <&sys_rst 18>;
696 vbus-supply = <&usb0_vbus1>;
701 compatible = "socionext,uniphier-dwc3", "snps,dwc3";
703 reg = <0x65c00000 0xcd00>;
704 interrupt-names = "host", "peripheral";
705 interrupts = <0 137 4>, <0 138 4>;
706 pinctrl-names = "default";
707 pinctrl-0 = <&pinctrl_usb1>, <&pinctrl_usb3>;
708 clock-names = "ref", "bus_early", "suspend";
709 clocks = <&sys_clk 13>, <&sys_clk 13>, <&sys_clk 13>;
710 resets = <&usb1_rst 15>;
711 phys = <&usb1_hsphy0>, <&usb1_hsphy1>,
717 compatible = "socionext,uniphier-pxs3-dwc3-glue",
719 #address-cells = <1>;
721 ranges = <0 0x65d00000 0x400>;
724 compatible = "socionext,uniphier-pxs3-usb3-reset";
727 clock-names = "link";
728 clocks = <&sys_clk 13>;
729 reset-names = "link";
730 resets = <&sys_rst 13>;
733 usb1_vbus0: regulator@100 {
734 compatible = "socionext,uniphier-pxs3-usb3-regulator";
736 clock-names = "link";
737 clocks = <&sys_clk 13>;
738 reset-names = "link";
739 resets = <&sys_rst 13>;
742 usb1_vbus1: regulator@110 {
743 compatible = "socionext,uniphier-pxs3-usb3-regulator";
745 clock-names = "link";
746 clocks = <&sys_clk 13>;
747 reset-names = "link";
748 resets = <&sys_rst 13>;
751 usb1_hsphy0: hs-phy@200 {
752 compatible = "socionext,uniphier-pxs3-usb3-hsphy";
755 clock-names = "link", "phy", "phy-ext";
756 clocks = <&sys_clk 13>, <&sys_clk 20>,
758 reset-names = "link", "phy";
759 resets = <&sys_rst 13>, <&sys_rst 20>;
760 vbus-supply = <&usb1_vbus0>;
761 nvmem-cell-names = "rterm", "sel_t", "hs_i";
762 nvmem-cells = <&usb_rterm2>, <&usb_sel_t2>,
766 usb1_hsphy1: hs-phy@210 {
767 compatible = "socionext,uniphier-pxs3-usb3-hsphy";
770 clock-names = "link", "phy", "phy-ext";
771 clocks = <&sys_clk 13>, <&sys_clk 20>,
773 reset-names = "link", "phy";
774 resets = <&sys_rst 13>, <&sys_rst 20>;
775 vbus-supply = <&usb1_vbus1>;
776 nvmem-cell-names = "rterm", "sel_t", "hs_i";
777 nvmem-cells = <&usb_rterm3>, <&usb_sel_t3>,
781 usb1_ssphy0: ss-phy@300 {
782 compatible = "socionext,uniphier-pxs3-usb3-ssphy";
785 clock-names = "link", "phy", "phy-ext";
786 clocks = <&sys_clk 13>, <&sys_clk 21>,
788 reset-names = "link", "phy";
789 resets = <&sys_rst 13>, <&sys_rst 21>;
790 vbus-supply = <&usb1_vbus0>;
794 pcie: pcie@66000000 {
795 compatible = "socionext,uniphier-pcie", "snps,dw-pcie";
797 reg-names = "dbi", "link", "config";
798 reg = <0x66000000 0x1000>, <0x66010000 0x10000>,
799 <0x2fff0000 0x10000>;
800 #address-cells = <3>;
802 clocks = <&sys_clk 24>;
803 resets = <&sys_rst 24>;
806 bus-range = <0x0 0xff>;
810 <0x81000000 0 0x00000000 0x2ffe0000 0 0x00010000>,
811 /* non-prefetchable memory */
812 <0x82000000 0 0x20000000 0x20000000 0 0x0ffe0000>;
813 #interrupt-cells = <1>;
814 interrupt-names = "dma", "msi";
815 interrupts = <0 224 4>, <0 225 4>;
816 interrupt-map-mask = <0 0 0 7>;
817 interrupt-map = <0 0 0 1 &pcie_intc 0>, /* INTA */
818 <0 0 0 2 &pcie_intc 1>, /* INTB */
819 <0 0 0 3 &pcie_intc 2>, /* INTC */
820 <0 0 0 4 &pcie_intc 3>; /* INTD */
821 phy-names = "pcie-phy";
824 pcie_intc: legacy-interrupt-controller {
825 interrupt-controller;
826 #interrupt-cells = <1>;
827 interrupt-parent = <&gic>;
828 interrupts = <0 226 4>;
832 pcie_phy: phy@66038000 {
833 compatible = "socionext,uniphier-pxs3-pcie-phy";
834 reg = <0x66038000 0x4000>;
836 clock-names = "link";
837 clocks = <&sys_clk 24>;
838 reset-names = "link";
839 resets = <&sys_rst 24>;
840 socionext,syscon = <&soc_glue>;
843 nand: nand-controller@68000000 {
844 compatible = "socionext,uniphier-denali-nand-v5b";
846 reg-names = "nand_data", "denali_reg";
847 reg = <0x68000000 0x20>, <0x68100000 0x1000>;
848 #address-cells = <1>;
850 interrupts = <0 65 4>;
851 pinctrl-names = "default";
852 pinctrl-0 = <&pinctrl_nand>;
853 clock-names = "nand", "nand_x", "ecc";
854 clocks = <&sys_clk 2>, <&sys_clk 3>, <&sys_clk 3>;
855 reset-names = "nand", "reg";
856 resets = <&sys_rst 2>, <&sys_rst 2>;
861 #include "uniphier-pinctrl.dtsi"