// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries. */ /dts-v1/; #include "sparx5_pcb_common.dtsi" /{ gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 37 GPIO_ACTIVE_LOW>; priority = <200>; }; i2c0_imux: i2c-mux { compatible = "i2c-mux-pinctrl"; #address-cells = <1>; #size-cells = <0>; i2c-parent = <&i2c0>; }; leds { compatible = "gpio-leds"; led-0 { label = "eth60:yellow"; gpios = <&sgpio_out1 28 0 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-1 { label = "eth60:green"; gpios = <&sgpio_out1 28 1 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-2 { label = "eth61:yellow"; gpios = <&sgpio_out1 29 0 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-3 { label = "eth61:green"; gpios = <&sgpio_out1 29 1 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-4 { label = "eth62:yellow"; gpios = <&sgpio_out1 30 0 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-5 { label = "eth62:green"; gpios = <&sgpio_out1 30 1 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-6 { label = "eth63:yellow"; gpios = <&sgpio_out1 31 0 GPIO_ACTIVE_LOW>; default-state = "off"; }; led-7 { label = "eth63:green"; gpios = <&sgpio_out1 31 1 GPIO_ACTIVE_LOW>; default-state = "off"; }; }; sfp_eth60: sfp-eth60 { compatible = "sff,sfp"; i2c-bus = <&i2c_sfp1>; tx-disable-gpios = <&sgpio_out2 28 0 GPIO_ACTIVE_LOW>; rate-select0-gpios = <&sgpio_out2 28 1 GPIO_ACTIVE_HIGH>; los-gpios = <&sgpio_in2 28 0 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&sgpio_in2 28 1 GPIO_ACTIVE_LOW>; tx-fault-gpios = <&sgpio_in2 28 2 GPIO_ACTIVE_HIGH>; }; sfp_eth61: sfp-eth61 { compatible = "sff,sfp"; i2c-bus = <&i2c_sfp2>; tx-disable-gpios = <&sgpio_out2 29 0 GPIO_ACTIVE_LOW>; rate-select0-gpios = <&sgpio_out2 29 1 GPIO_ACTIVE_HIGH>; los-gpios = <&sgpio_in2 29 0 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&sgpio_in2 29 1 GPIO_ACTIVE_LOW>; tx-fault-gpios = <&sgpio_in2 29 2 GPIO_ACTIVE_HIGH>; }; sfp_eth62: sfp-eth62 { compatible = "sff,sfp"; i2c-bus = <&i2c_sfp3>; tx-disable-gpios = <&sgpio_out2 30 0 GPIO_ACTIVE_LOW>; rate-select0-gpios = <&sgpio_out2 30 1 GPIO_ACTIVE_HIGH>; los-gpios = <&sgpio_in2 30 0 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&sgpio_in2 30 1 GPIO_ACTIVE_LOW>; tx-fault-gpios = <&sgpio_in2 30 2 GPIO_ACTIVE_HIGH>; }; sfp_eth63: sfp-eth63 { compatible = "sff,sfp"; i2c-bus = <&i2c_sfp4>; tx-disable-gpios = <&sgpio_out2 31 0 GPIO_ACTIVE_LOW>; rate-select0-gpios = <&sgpio_out2 31 1 GPIO_ACTIVE_HIGH>; los-gpios = <&sgpio_in2 31 0 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&sgpio_in2 31 1 GPIO_ACTIVE_LOW>; tx-fault-gpios = <&sgpio_in2 31 2 GPIO_ACTIVE_HIGH>; }; }; &gpio { i2cmux_pins_i: i2cmux-pins { pins = "GPIO_35", "GPIO_36", "GPIO_50", "GPIO_51"; function = "twi_scl_m"; output-low; }; i2cmux_s29: i2cmux-0-pins { pins = "GPIO_35"; function = "twi_scl_m"; output-high; }; i2cmux_s30: i2cmux-1-pins { pins = "GPIO_36"; function = "twi_scl_m"; output-high; }; i2cmux_s31: i2cmux-2-pins { pins = "GPIO_50"; function = "twi_scl_m"; output-high; }; i2cmux_s32: i2cmux-3-pins { pins = "GPIO_51"; function = "twi_scl_m"; output-high; }; }; &spi0 { status = "okay"; spi@0 { compatible = "spi-mux"; mux-controls = <&mux>; #address-cells = <1>; #size-cells = <0>; reg = <0>; /* CS0 */ flash@9 { compatible = "jedec,spi-nor"; spi-max-frequency = <8000000>; reg = <0x9>; /* SPI */ }; }; }; &sgpio1 { status = "okay"; microchip,sgpio-port-ranges = <24 31>; gpio@0 { ngpios = <64>; }; gpio@1 { ngpios = <64>; }; }; &sgpio2 { status = "okay"; microchip,sgpio-port-ranges = <0 0>, <16 18>, <28 31>; }; &i2c0_imux { pinctrl-names = "i2c_sfp1", "i2c_sfp2", "i2c_sfp3", "i2c_sfp4", "idle"; pinctrl-0 = <&i2cmux_s29>; pinctrl-1 = <&i2cmux_s30>; pinctrl-2 = <&i2cmux_s31>; pinctrl-3 = <&i2cmux_s32>; pinctrl-4 = <&i2cmux_pins_i>; i2c_sfp1: i2c@0 { reg = <0x0>; #address-cells = <1>; #size-cells = <0>; }; i2c_sfp2: i2c@1 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; }; i2c_sfp3: i2c@2 { reg = <0x2>; #address-cells = <1>; #size-cells = <0>; }; i2c_sfp4: i2c@3 { reg = <0x3>; #address-cells = <1>; #size-cells = <0>; }; }; &mdio0 { status = "okay"; phy0: ethernet-phy@0 { reg = <0>; }; phy1: ethernet-phy@1 { reg = <1>; }; phy2: ethernet-phy@2 { reg = <2>; }; phy3: ethernet-phy@3 { reg = <3>; }; phy4: ethernet-phy@4 { reg = <4>; }; phy5: ethernet-phy@5 { reg = <5>; }; phy6: ethernet-phy@6 { reg = <6>; }; phy7: ethernet-phy@7 { reg = <7>; }; phy8: ethernet-phy@8 { reg = <8>; }; phy9: ethernet-phy@9 { reg = <9>; }; phy10: ethernet-phy@10 { reg = <10>; }; phy11: ethernet-phy@11 { reg = <11>; }; phy12: ethernet-phy@12 { reg = <12>; }; phy13: ethernet-phy@13 { reg = <13>; }; phy14: ethernet-phy@14 { reg = <14>; }; phy15: ethernet-phy@15 { reg = <15>; }; phy16: ethernet-phy@16 { reg = <16>; }; phy17: ethernet-phy@17 { reg = <17>; }; phy18: ethernet-phy@18 { reg = <18>; }; phy19: ethernet-phy@19 { reg = <19>; }; phy20: ethernet-phy@20 { reg = <20>; }; phy21: ethernet-phy@21 { reg = <21>; }; phy22: ethernet-phy@22 { reg = <22>; }; phy23: ethernet-phy@23 { reg = <23>; }; }; &mdio1 { status = "okay"; phy24: ethernet-phy@24 { reg = <0>; }; phy25: ethernet-phy@25 { reg = <1>; }; phy26: ethernet-phy@26 { reg = <2>; }; phy27: ethernet-phy@27 { reg = <3>; }; phy28: ethernet-phy@28 { reg = <4>; }; phy29: ethernet-phy@29 { reg = <5>; }; phy30: ethernet-phy@30 { reg = <6>; }; phy31: ethernet-phy@31 { reg = <7>; }; phy32: ethernet-phy@32 { reg = <8>; }; phy33: ethernet-phy@33 { reg = <9>; }; phy34: ethernet-phy@34 { reg = <10>; }; phy35: ethernet-phy@35 { reg = <11>; }; phy36: ethernet-phy@36 { reg = <12>; }; phy37: ethernet-phy@37 { reg = <13>; }; phy38: ethernet-phy@38 { reg = <14>; }; phy39: ethernet-phy@39 { reg = <15>; }; phy40: ethernet-phy@40 { reg = <16>; }; phy41: ethernet-phy@41 { reg = <17>; }; phy42: ethernet-phy@42 { reg = <18>; }; phy43: ethernet-phy@43 { reg = <19>; }; phy44: ethernet-phy@44 { reg = <20>; }; phy45: ethernet-phy@45 { reg = <21>; }; phy46: ethernet-phy@46 { reg = <22>; }; phy47: ethernet-phy@47 { reg = <23>; }; }; &mdio3 { status = "okay"; phy64: ethernet-phy@64 { reg = <28>; }; }; &switch { ethernet-ports { #address-cells = <1>; #size-cells = <0>; port0: port@0 { reg = <0>; microchip,bandwidth = <1000>; phys = <&serdes 13>; phy-handle = <&phy0>; phy-mode = "qsgmii"; }; port1: port@1 { reg = <1>; microchip,bandwidth = <1000>; phys = <&serdes 13>; phy-handle = <&phy1>; phy-mode = "qsgmii"; }; port2: port@2 { reg = <2>; microchip,bandwidth = <1000>; phys = <&serdes 13>; phy-handle = <&phy2>; phy-mode = "qsgmii"; }; port3: port@3 { reg = <3>; microchip,bandwidth = <1000>; phys = <&serdes 13>; phy-handle = <&phy3>; phy-mode = "qsgmii"; }; port4: port@4 { reg = <4>; microchip,bandwidth = <1000>; phys = <&serdes 14>; phy-handle = <&phy4>; phy-mode = "qsgmii"; }; port5: port@5 { reg = <5>; microchip,bandwidth = <1000>; phys = <&serdes 14>; phy-handle = <&phy5>; phy-mode = "qsgmii"; }; port6: port@6 { reg = <6>; microchip,bandwidth = <1000>; phys = <&serdes 14>; phy-handle = <&phy6>; phy-mode = "qsgmii"; }; port7: port@7 { reg = <7>; microchip,bandwidth = <1000>; phys = <&serdes 14>; phy-handle = <&phy7>; phy-mode = "qsgmii"; }; port8: port@8 { reg = <8>; microchip,bandwidth = <1000>; phys = <&serdes 15>; phy-handle = <&phy8>; phy-mode = "qsgmii"; }; port9: port@9 { reg = <9>; microchip,bandwidth = <1000>; phys = <&serdes 15>; phy-handle = <&phy9>; phy-mode = "qsgmii"; }; port10: port@10 { reg = <10>; microchip,bandwidth = <1000>; phys = <&serdes 15>; phy-handle = <&phy10>; phy-mode = "qsgmii"; }; port11: port@11 { reg = <11>; microchip,bandwidth = <1000>; phys = <&serdes 15>; phy-handle = <&phy11>; phy-mode = "qsgmii"; }; port12: port@12 { reg = <12>; microchip,bandwidth = <1000>; phys = <&serdes 16>; phy-handle = <&phy12>; phy-mode = "qsgmii"; }; port13: port@13 { reg = <13>; microchip,bandwidth = <1000>; phys = <&serdes 16>; phy-handle = <&phy13>; phy-mode = "qsgmii"; }; port14: port@14 { reg = <14>; microchip,bandwidth = <1000>; phys = <&serdes 16>; phy-handle = <&phy14>; phy-mode = "qsgmii"; }; port15: port@15 { reg = <15>; microchip,bandwidth = <1000>; phys = <&serdes 16>; phy-handle = <&phy15>; phy-mode = "qsgmii"; }; port16: port@16 { reg = <16>; microchip,bandwidth = <1000>; phys = <&serdes 17>; phy-handle = <&phy16>; phy-mode = "qsgmii"; }; port17: port@17 { reg = <17>; microchip,bandwidth = <1000>; phys = <&serdes 17>; phy-handle = <&phy17>; phy-mode = "qsgmii"; }; port18: port@18 { reg = <18>; microchip,bandwidth = <1000>; phys = <&serdes 17>; phy-handle = <&phy18>; phy-mode = "qsgmii"; }; port19: port@19 { reg = <19>; microchip,bandwidth = <1000>; phys = <&serdes 17>; phy-handle = <&phy19>; phy-mode = "qsgmii"; }; port20: port@20 { reg = <20>; microchip,bandwidth = <1000>; phys = <&serdes 18>; phy-handle = <&phy20>; phy-mode = "qsgmii"; }; port21: port@21 { reg = <21>; microchip,bandwidth = <1000>; phys = <&serdes 18>; phy-handle = <&phy21>; phy-mode = "qsgmii"; }; port22: port@22 { reg = <22>; microchip,bandwidth = <1000>; phys = <&serdes 18>; phy-handle = <&phy22>; phy-mode = "qsgmii"; }; port23: port@23 { reg = <23>; microchip,bandwidth = <1000>; phys = <&serdes 18>; phy-handle = <&phy23>; phy-mode = "qsgmii"; }; port24: port@24 { reg = <24>; microchip,bandwidth = <1000>; phys = <&serdes 19>; phy-handle = <&phy24>; phy-mode = "qsgmii"; }; port25: port@25 { reg = <25>; microchip,bandwidth = <1000>; phys = <&serdes 19>; phy-handle = <&phy25>; phy-mode = "qsgmii"; }; port26: port@26 { reg = <26>; microchip,bandwidth = <1000>; phys = <&serdes 19>; phy-handle = <&phy26>; phy-mode = "qsgmii"; }; port27: port@27 { reg = <27>; microchip,bandwidth = <1000>; phys = <&serdes 19>; phy-handle = <&phy27>; phy-mode = "qsgmii"; }; port28: port@28 { reg = <28>; microchip,bandwidth = <1000>; phys = <&serdes 20>; phy-handle = <&phy28>; phy-mode = "qsgmii"; }; port29: port@29 { reg = <29>; microchip,bandwidth = <1000>; phys = <&serdes 20>; phy-handle = <&phy29>; phy-mode = "qsgmii"; }; port30: port@30 { reg = <30>; microchip,bandwidth = <1000>; phys = <&serdes 20>; phy-handle = <&phy30>; phy-mode = "qsgmii"; }; port31: port@31 { reg = <31>; microchip,bandwidth = <1000>; phys = <&serdes 20>; phy-handle = <&phy31>; phy-mode = "qsgmii"; }; port32: port@32 { reg = <32>; microchip,bandwidth = <1000>; phys = <&serdes 21>; phy-handle = <&phy32>; phy-mode = "qsgmii"; }; port33: port@33 { reg = <33>; microchip,bandwidth = <1000>; phys = <&serdes 21>; phy-handle = <&phy33>; phy-mode = "qsgmii"; }; port34: port@34 { reg = <34>; microchip,bandwidth = <1000>; phys = <&serdes 21>; phy-handle = <&phy34>; phy-mode = "qsgmii"; }; port35: port@35 { reg = <35>; microchip,bandwidth = <1000>; phys = <&serdes 21>; phy-handle = <&phy35>; phy-mode = "qsgmii"; }; port36: port@36 { reg = <36>; microchip,bandwidth = <1000>; phys = <&serdes 22>; phy-handle = <&phy36>; phy-mode = "qsgmii"; }; port37: port@37 { reg = <37>; microchip,bandwidth = <1000>; phys = <&serdes 22>; phy-handle = <&phy37>; phy-mode = "qsgmii"; }; port38: port@38 { reg = <38>; microchip,bandwidth = <1000>; phys = <&serdes 22>; phy-handle = <&phy38>; phy-mode = "qsgmii"; }; port39: port@39 { reg = <39>; microchip,bandwidth = <1000>; phys = <&serdes 22>; phy-handle = <&phy39>; phy-mode = "qsgmii"; }; port40: port@40 { reg = <40>; microchip,bandwidth = <1000>; phys = <&serdes 23>; phy-handle = <&phy40>; phy-mode = "qsgmii"; }; port41: port@41 { reg = <41>; microchip,bandwidth = <1000>; phys = <&serdes 23>; phy-handle = <&phy41>; phy-mode = "qsgmii"; }; port42: port@42 { reg = <42>; microchip,bandwidth = <1000>; phys = <&serdes 23>; phy-handle = <&phy42>; phy-mode = "qsgmii"; }; port43: port@43 { reg = <43>; microchip,bandwidth = <1000>; phys = <&serdes 23>; phy-handle = <&phy43>; phy-mode = "qsgmii"; }; port44: port@44 { reg = <44>; microchip,bandwidth = <1000>; phys = <&serdes 24>; phy-handle = <&phy44>; phy-mode = "qsgmii"; }; port45: port@45 { reg = <45>; microchip,bandwidth = <1000>; phys = <&serdes 24>; phy-handle = <&phy45>; phy-mode = "qsgmii"; }; port46: port@46 { reg = <46>; microchip,bandwidth = <1000>; phys = <&serdes 24>; phy-handle = <&phy46>; phy-mode = "qsgmii"; }; port47: port@47 { reg = <47>; microchip,bandwidth = <1000>; phys = <&serdes 24>; phy-handle = <&phy47>; phy-mode = "qsgmii"; }; /* Then the 25G interfaces */ port60: port@60 { reg = <60>; microchip,bandwidth = <25000>; phys = <&serdes 29>; phy-mode = "10gbase-r"; sfp = <&sfp_eth60>; managed = "in-band-status"; }; port61: port@61 { reg = <61>; microchip,bandwidth = <25000>; phys = <&serdes 30>; phy-mode = "10gbase-r"; sfp = <&sfp_eth61>; managed = "in-band-status"; }; port62: port@62 { reg = <62>; microchip,bandwidth = <25000>; phys = <&serdes 31>; phy-mode = "10gbase-r"; sfp = <&sfp_eth62>; managed = "in-band-status"; }; port63: port@63 { reg = <63>; microchip,bandwidth = <25000>; phys = <&serdes 32>; phy-mode = "10gbase-r"; sfp = <&sfp_eth63>; managed = "in-band-status"; }; /* Finally the Management interface */ port64: port@64 { reg = <64>; microchip,bandwidth = <1000>; phys = <&serdes 0>; phy-handle = <&phy64>; phy-mode = "sgmii"; }; }; };