| # SPDX-License-Identifier: (GPL-2.0 OR MIT) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/net/dsa/mscc,ocelot.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Microchip Ocelot Switch Family |
| |
| maintainers: |
| - Vladimir Oltean <vladimir.oltean@nxp.com> |
| - Claudiu Manoil <claudiu.manoil@nxp.com> |
| - Alexandre Belloni <alexandre.belloni@bootlin.com> |
| - UNGLinuxDriver@microchip.com |
| |
| description: | |
| There are multiple switches which are either part of the Ocelot-1 family, or |
| derivatives of this architecture. These switches can be found embedded in |
| various SoCs and accessed using MMIO, or as discrete chips and accessed over |
| SPI or PCIe. The present DSA binding shall be used when the host controlling |
| them performs packet I/O primarily through an Ethernet port of the switch |
| (which is attached to an Ethernet port of the host), rather than through |
| Frame DMA or register-based I/O. |
| |
| VSC9953 (Seville): |
| |
| This is found in the NXP T1040, where it is a memory-mapped platform |
| device. |
| |
| The following PHY interface types are supported: |
| |
| - phy-mode = "internal": on ports 8 and 9 |
| - phy-mode = "sgmii": on ports 0, 1, 2, 3, 4, 5, 6, 7 |
| - phy-mode = "qsgmii": on ports 0, 1, 2, 3, 4, 5, 6, 7 |
| - phy-mode = "1000base-x": on ports 0, 1, 2, 3, 4, 5, 6, 7 |
| |
| VSC9959 (Felix): |
| |
| This is found in the NXP LS1028A. It is a PCI device, part of the larger |
| enetc root complex. As a result, the ethernet-switch node is a sub-node of |
| the PCIe root complex node and its "reg" property conforms to the parent |
| node bindings, describing it as PF 5 of device 0, bus 0. |
| |
| If any external switch port is enabled, the enetc PF2 (enetc_port2) should |
| be enabled as well. This is because the internal MDIO bus (exposed through |
| EA BAR 0) used to access the MAC PCS registers truly belongs to the enetc |
| port 2 and not to Felix. |
| |
| The following PHY interface types are supported: |
| |
| - phy-mode = "internal": on ports 4 and 5 |
| - phy-mode = "sgmii": on ports 0, 1, 2, 3 |
| - phy-mode = "qsgmii": on ports 0, 1, 2, 3 |
| - phy-mode = "usxgmii": on ports 0, 1, 2, 3 |
| - phy-mode = "1000base-x": on ports 0, 1, 2, 3 |
| - phy-mode = "2500base-x": on ports 0, 1, 2, 3 |
| |
| properties: |
| compatible: |
| enum: |
| - mscc,vsc9953-switch |
| - pci1957,eef0 |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 1 |
| |
| description: |
| Used to signal availability of PTP TX timestamps, and state changes of |
| the MAC merge layer of ports that support Frame Preemption. |
| |
| little-endian: true |
| big-endian: true |
| |
| required: |
| - compatible |
| - reg |
| |
| allOf: |
| - $ref: dsa.yaml#/$defs/ethernet-ports |
| - if: |
| properties: |
| compatible: |
| const: pci1957,eef0 |
| then: |
| required: |
| - interrupts |
| |
| unevaluatedProperties: false |
| |
| examples: |
| # Felix VSC9959 (NXP LS1028A) |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| pcie { /* Integrated Endpoint Root Complex */ |
| #address-cells = <3>; |
| #size-cells = <2>; |
| |
| ethernet-switch@0,5 { |
| compatible = "pci1957,eef0"; |
| reg = <0x000500 0 0 0 0>; |
| interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; |
| |
| ethernet-ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy0>; |
| managed = "in-band-status"; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy1>; |
| managed = "in-band-status"; |
| }; |
| |
| port@2 { |
| reg = <2>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy2>; |
| managed = "in-band-status"; |
| }; |
| |
| port@3 { |
| reg = <3>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy3>; |
| managed = "in-band-status"; |
| }; |
| |
| port@4 { |
| reg = <4>; |
| ethernet = <&enetc_port2>; |
| phy-mode = "internal"; |
| |
| fixed-link { |
| speed = <2500>; |
| full-duplex; |
| pause; |
| }; |
| }; |
| |
| port@5 { |
| reg = <5>; |
| ethernet = <&enetc_port3>; |
| phy-mode = "internal"; |
| |
| fixed-link { |
| speed = <1000>; |
| full-duplex; |
| pause; |
| }; |
| }; |
| }; |
| }; |
| }; |
| # Seville VSC9953 (NXP T1040) |
| - | |
| soc { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| ethernet-switch@800000 { |
| compatible = "mscc,vsc9953-switch"; |
| reg = <0x800000 0x290000>; |
| little-endian; |
| |
| ethernet-ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy0>; |
| managed = "in-band-status"; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy1>; |
| managed = "in-band-status"; |
| }; |
| |
| port@2 { |
| reg = <2>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy2>; |
| managed = "in-band-status"; |
| }; |
| |
| port@3 { |
| reg = <3>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy3>; |
| managed = "in-band-status"; |
| }; |
| |
| port@4 { |
| reg = <4>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy4>; |
| managed = "in-band-status"; |
| }; |
| |
| port@5 { |
| reg = <5>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy5>; |
| managed = "in-band-status"; |
| }; |
| |
| port@6 { |
| reg = <6>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy6>; |
| managed = "in-band-status"; |
| }; |
| |
| port@7 { |
| reg = <7>; |
| phy-mode = "qsgmii"; |
| phy-handle = <&phy7>; |
| managed = "in-band-status"; |
| }; |
| |
| port@8 { |
| reg = <8>; |
| phy-mode = "internal"; |
| ethernet = <&enet0>; |
| |
| fixed-link { |
| speed = <2500>; |
| full-duplex; |
| pause; |
| }; |
| }; |
| |
| port@9 { |
| reg = <9>; |
| phy-mode = "internal"; |
| ethernet = <&enet1>; |
| |
| fixed-link { |
| speed = <2500>; |
| full-duplex; |
| pause; |
| }; |
| }; |
| }; |
| }; |
| }; |