| // 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"; |
| }; |
| }; |
| }; |