1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Device Tree file for CZ.NIC Turris Mox Board
4 * 2019 by Marek Behun <marek.behun@nic.cz>
9 #include <dt-bindings/bus/moxtet.h>
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/input.h>
12 #include "armada-372x.dtsi"
15 model = "CZ.NIC Turris Mox Board";
16 compatible = "cznic,turris-mox", "marvell,armada3720",
25 stdout-path = "serial0:115200n8";
29 device_type = "memory";
30 reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
34 compatible = "gpio-leds";
36 label = "mox:red:activity";
37 gpios = <&gpiosb 21 GPIO_ACTIVE_LOW>;
38 linux,default-trigger = "default-on";
43 compatible = "gpio-keys";
47 linux,code = <KEY_RESTART>;
48 gpios = <&gpiosb 20 GPIO_ACTIVE_LOW>;
49 debounce-interval = <60>;
53 exp_usb3_vbus: usb3-vbus {
54 compatible = "regulator-fixed";
55 regulator-name = "usb3-vbus";
56 regulator-min-microvolt = <5000000>;
57 regulator-max-microvolt = <5000000>;
60 gpio = <&gpiosb 0 GPIO_ACTIVE_HIGH>;
64 compatible = "usb-nop-xceiv";
65 vcc-supply = <&exp_usb3_vbus>;
69 compatible = "regulator-gpio";
70 regulator-name = "vsdc";
71 regulator-min-microvolt = <1800000>;
72 regulator-max-microvolt = <3300000>;
75 gpios = <&gpiosb 23 GPIO_ACTIVE_HIGH>;
82 vsdio_reg: vsdio-reg {
83 compatible = "regulator-gpio";
84 regulator-name = "vsdio";
85 regulator-min-microvolt = <1800000>;
86 regulator-max-microvolt = <3300000>;
89 gpios = <&gpiosb 22 GPIO_ACTIVE_HIGH>;
96 sdhci1_pwrseq: sdhci1-pwrseq {
97 compatible = "mmc-pwrseq-simple";
98 reset-gpios = <&gpionb 19 GPIO_ACTIVE_HIGH>;
103 compatible = "sff,sfp+";
105 los-gpio = <&moxtet_sfp 0 GPIO_ACTIVE_HIGH>;
106 tx-fault-gpio = <&moxtet_sfp 1 GPIO_ACTIVE_HIGH>;
107 mod-def0-gpio = <&moxtet_sfp 2 GPIO_ACTIVE_LOW>;
108 tx-disable-gpio = <&moxtet_sfp 4 GPIO_ACTIVE_HIGH>;
109 rate-select0-gpio = <&moxtet_sfp 5 GPIO_ACTIVE_HIGH>;
111 /* enabled by U-Boot if SFP module is present */
117 pinctrl-names = "default";
118 pinctrl-0 = <&i2c1_pins>;
119 clock-frequency = <100000>;
123 compatible = "microchip,mcp7940x";
133 pinctrl-names = "default";
134 pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
136 max-link-speed = <2>;
137 reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
140 /* enabled by U-Boot if PCIe module is present */
149 pinctrl-names = "default";
150 pinctrl-0 = <&rgmii_pins>;
151 phy-mode = "rgmii-id";
157 phy-mode = "2500base-x";
158 managed = "in-band-status";
165 cd-gpios = <&gpionb 10 GPIO_ACTIVE_HIGH>;
166 vqmmc-supply = <&vsdc_reg>;
167 marvell,pad-type = "sd";
172 pinctrl-names = "default";
173 pinctrl-0 = <&sdio_pins>;
176 marvell,pad-type = "sd";
177 vqmmc-supply = <&vsdio_reg>;
178 mmc-pwrseq = <&sdhci1_pwrseq>;
184 pinctrl-names = "default";
185 pinctrl-0 = <&spi_quad_pins &spi_cs1_pins>;
186 assigned-clocks = <&nb_periph_clk 7>;
187 assigned-clock-parents = <&tbg 1>;
188 assigned-clock-rates = <20000000>;
191 #address-cells = <1>;
193 compatible = "jedec,spi-nor";
195 spi-max-frequency = <20000000>;
198 compatible = "fixed-partitions";
199 #address-cells = <1>;
203 label = "secure-firmware";
209 reg = <0x20000 0x160000>;
213 label = "u-boot-env";
214 reg = <0x180000 0x10000>;
218 label = "Rescue system";
219 reg = <0x190000 0x660000>;
224 reg = <0x7f0000 0x10000>;
230 #address-cells = <1>;
232 compatible = "cznic,moxtet";
234 reset-gpios = <&gpiosb 2 GPIO_ACTIVE_LOW>;
235 spi-max-frequency = <10000000>;
238 interrupt-controller;
239 #interrupt-cells = <1>;
240 interrupt-parent = <&gpiosb>;
241 interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
245 compatible = "cznic,moxtet-gpio";
261 usb-phy = <&usb3_phy>;
265 pinctrl-names = "default";
266 pinctrl-0 = <&smi_pins>;
269 phy1: ethernet-phy@1 {
273 /* switch nodes are enabled by U-Boot if modules are present */
275 compatible = "marvell,mv88e6190";
278 interrupt-parent = <&moxtet>;
279 interrupts = <MOXTET_IRQ_PERIDOT(0)>;
283 #address-cells = <1>;
286 switch0phy1: switch0phy1@1 {
290 switch0phy2: switch0phy2@2 {
294 switch0phy3: switch0phy3@3 {
298 switch0phy4: switch0phy4@4 {
302 switch0phy5: switch0phy5@5 {
306 switch0phy6: switch0phy6@6 {
310 switch0phy7: switch0phy7@7 {
314 switch0phy8: switch0phy8@8 {
320 #address-cells = <1>;
326 phy-handle = <&switch0phy1>;
332 phy-handle = <&switch0phy2>;
338 phy-handle = <&switch0phy3>;
344 phy-handle = <&switch0phy4>;
350 phy-handle = <&switch0phy5>;
356 phy-handle = <&switch0phy6>;
362 phy-handle = <&switch0phy7>;
368 phy-handle = <&switch0phy8>;
375 phy-mode = "2500base-x";
376 managed = "in-band-status";
379 switch0port10: port@a {
382 phy-mode = "2500base-x";
383 managed = "in-band-status";
384 link = <&switch1port9 &switch2port9>;
393 managed = "in-band-status";
400 compatible = "marvell,mv88e6085";
403 interrupt-parent = <&moxtet>;
404 interrupts = <MOXTET_IRQ_TOPAZ>;
408 #address-cells = <1>;
411 switch0phy1_topaz: switch0phy1@11 {
415 switch0phy2_topaz: switch0phy2@12 {
419 switch0phy3_topaz: switch0phy3@13 {
423 switch0phy4_topaz: switch0phy4@14 {
429 #address-cells = <1>;
435 phy-handle = <&switch0phy1_topaz>;
441 phy-handle = <&switch0phy2_topaz>;
447 phy-handle = <&switch0phy3_topaz>;
453 phy-handle = <&switch0phy4_topaz>;
459 phy-mode = "2500base-x";
460 managed = "in-band-status";
467 compatible = "marvell,mv88e6190";
470 interrupt-parent = <&moxtet>;
471 interrupts = <MOXTET_IRQ_PERIDOT(1)>;
475 #address-cells = <1>;
478 switch1phy1: switch1phy1@1 {
482 switch1phy2: switch1phy2@2 {
486 switch1phy3: switch1phy3@3 {
490 switch1phy4: switch1phy4@4 {
494 switch1phy5: switch1phy5@5 {
498 switch1phy6: switch1phy6@6 {
502 switch1phy7: switch1phy7@7 {
506 switch1phy8: switch1phy8@8 {
512 #address-cells = <1>;
518 phy-handle = <&switch1phy1>;
524 phy-handle = <&switch1phy2>;
530 phy-handle = <&switch1phy3>;
536 phy-handle = <&switch1phy4>;
542 phy-handle = <&switch1phy5>;
548 phy-handle = <&switch1phy6>;
554 phy-handle = <&switch1phy7>;
560 phy-handle = <&switch1phy8>;
563 switch1port9: port@9 {
566 phy-mode = "2500base-x";
567 managed = "in-band-status";
568 link = <&switch0port10>;
571 switch1port10: port@a {
574 phy-mode = "2500base-x";
575 managed = "in-band-status";
576 link = <&switch2port9>;
585 managed = "in-band-status";
592 compatible = "marvell,mv88e6085";
595 interrupt-parent = <&moxtet>;
596 interrupts = <MOXTET_IRQ_TOPAZ>;
600 #address-cells = <1>;
603 switch1phy1_topaz: switch1phy1@11 {
607 switch1phy2_topaz: switch1phy2@12 {
611 switch1phy3_topaz: switch1phy3@13 {
615 switch1phy4_topaz: switch1phy4@14 {
621 #address-cells = <1>;
627 phy-handle = <&switch1phy1_topaz>;
633 phy-handle = <&switch1phy2_topaz>;
639 phy-handle = <&switch1phy3_topaz>;
645 phy-handle = <&switch1phy4_topaz>;
651 phy-mode = "2500base-x";
652 managed = "in-band-status";
653 link = <&switch0port10>;
659 compatible = "marvell,mv88e6190";
662 interrupt-parent = <&moxtet>;
663 interrupts = <MOXTET_IRQ_PERIDOT(2)>;
667 #address-cells = <1>;
670 switch2phy1: switch2phy1@1 {
674 switch2phy2: switch2phy2@2 {
678 switch2phy3: switch2phy3@3 {
682 switch2phy4: switch2phy4@4 {
686 switch2phy5: switch2phy5@5 {
690 switch2phy6: switch2phy6@6 {
694 switch2phy7: switch2phy7@7 {
698 switch2phy8: switch2phy8@8 {
704 #address-cells = <1>;
710 phy-handle = <&switch2phy1>;
716 phy-handle = <&switch2phy2>;
722 phy-handle = <&switch2phy3>;
728 phy-handle = <&switch2phy4>;
734 phy-handle = <&switch2phy5>;
740 phy-handle = <&switch2phy6>;
746 phy-handle = <&switch2phy7>;
752 phy-handle = <&switch2phy8>;
755 switch2port9: port@9 {
758 phy-mode = "2500base-x";
759 managed = "in-band-status";
760 link = <&switch1port10 &switch0port10>;
768 managed = "in-band-status";
775 compatible = "marvell,mv88e6085";
778 interrupt-parent = <&moxtet>;
779 interrupts = <MOXTET_IRQ_TOPAZ>;
783 #address-cells = <1>;
786 switch2phy1_topaz: switch2phy1@11 {
790 switch2phy2_topaz: switch2phy2@12 {
794 switch2phy3_topaz: switch2phy3@13 {
798 switch2phy4_topaz: switch2phy4@14 {
804 #address-cells = <1>;
810 phy-handle = <&switch2phy1_topaz>;
816 phy-handle = <&switch2phy2_topaz>;
822 phy-handle = <&switch2phy3_topaz>;
828 phy-handle = <&switch2phy4_topaz>;
834 phy-mode = "2500base-x";
835 managed = "in-band-status";
836 link = <&switch1port10 &switch0port10>;