261 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0 OR MIT)2%YAML 1.23---4$id: http://devicetree.org/schemas/net/dsa/mscc,ocelot.yaml#5$schema: http://devicetree.org/meta-schemas/core.yaml#6 7title: Microchip Ocelot Switch Family8 9maintainers:10 - Vladimir Oltean <vladimir.oltean@nxp.com>11 - Claudiu Manoil <claudiu.manoil@nxp.com>12 - Alexandre Belloni <alexandre.belloni@bootlin.com>13 - UNGLinuxDriver@microchip.com14 15description: |16 There are multiple switches which are either part of the Ocelot-1 family, or17 derivatives of this architecture. These switches can be found embedded in18 various SoCs and accessed using MMIO, or as discrete chips and accessed over19 SPI or PCIe. The present DSA binding shall be used when the host controlling20 them performs packet I/O primarily through an Ethernet port of the switch21 (which is attached to an Ethernet port of the host), rather than through22 Frame DMA or register-based I/O.23 24 VSC9953 (Seville):25 26 This is found in the NXP T1040, where it is a memory-mapped platform27 device.28 29 The following PHY interface types are supported:30 31 - phy-mode = "internal": on ports 8 and 932 - phy-mode = "sgmii": on ports 0, 1, 2, 3, 4, 5, 6, 733 - phy-mode = "qsgmii": on ports 0, 1, 2, 3, 4, 5, 6, 734 - phy-mode = "1000base-x": on ports 0, 1, 2, 3, 4, 5, 6, 735 36 VSC9959 (Felix):37 38 This is found in the NXP LS1028A. It is a PCI device, part of the larger39 enetc root complex. As a result, the ethernet-switch node is a sub-node of40 the PCIe root complex node and its "reg" property conforms to the parent41 node bindings, describing it as PF 5 of device 0, bus 0.42 43 If any external switch port is enabled, the enetc PF2 (enetc_port2) should44 be enabled as well. This is because the internal MDIO bus (exposed through45 EA BAR 0) used to access the MAC PCS registers truly belongs to the enetc46 port 2 and not to Felix.47 48 The following PHY interface types are supported:49 50 - phy-mode = "internal": on ports 4 and 551 - phy-mode = "sgmii": on ports 0, 1, 2, 352 - phy-mode = "qsgmii": on ports 0, 1, 2, 353 - phy-mode = "usxgmii": on ports 0, 1, 2, 354 - phy-mode = "1000base-x": on ports 0, 1, 2, 355 - phy-mode = "2500base-x": on ports 0, 1, 2, 356 57properties:58 compatible:59 enum:60 - mscc,vsc9953-switch61 - pci1957,eef062 63 reg:64 maxItems: 165 66 interrupts:67 maxItems: 168 69 description:70 Used to signal availability of PTP TX timestamps, and state changes of71 the MAC merge layer of ports that support Frame Preemption.72 73 little-endian: true74 big-endian: true75 76required:77 - compatible78 - reg79 80allOf:81 - $ref: dsa.yaml#/$defs/ethernet-ports82 - if:83 properties:84 compatible:85 const: pci1957,eef086 then:87 required:88 - interrupts89 90unevaluatedProperties: false91 92examples:93 # Felix VSC9959 (NXP LS1028A)94 - |95 #include <dt-bindings/interrupt-controller/arm-gic.h>96 97 pcie { /* Integrated Endpoint Root Complex */98 #address-cells = <3>;99 #size-cells = <2>;100 101 ethernet-switch@0,5 {102 compatible = "pci1957,eef0";103 reg = <0x000500 0 0 0 0>;104 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;105 106 ethernet-ports {107 #address-cells = <1>;108 #size-cells = <0>;109 110 port@0 {111 reg = <0>;112 phy-mode = "qsgmii";113 phy-handle = <&phy0>;114 managed = "in-band-status";115 };116 117 port@1 {118 reg = <1>;119 phy-mode = "qsgmii";120 phy-handle = <&phy1>;121 managed = "in-band-status";122 };123 124 port@2 {125 reg = <2>;126 phy-mode = "qsgmii";127 phy-handle = <&phy2>;128 managed = "in-band-status";129 };130 131 port@3 {132 reg = <3>;133 phy-mode = "qsgmii";134 phy-handle = <&phy3>;135 managed = "in-band-status";136 };137 138 port@4 {139 reg = <4>;140 ethernet = <&enetc_port2>;141 phy-mode = "internal";142 143 fixed-link {144 speed = <2500>;145 full-duplex;146 pause;147 };148 };149 150 port@5 {151 reg = <5>;152 ethernet = <&enetc_port3>;153 phy-mode = "internal";154 155 fixed-link {156 speed = <1000>;157 full-duplex;158 pause;159 };160 };161 };162 };163 };164 # Seville VSC9953 (NXP T1040)165 - |166 soc {167 #address-cells = <1>;168 #size-cells = <1>;169 170 ethernet-switch@800000 {171 compatible = "mscc,vsc9953-switch";172 reg = <0x800000 0x290000>;173 little-endian;174 175 ethernet-ports {176 #address-cells = <1>;177 #size-cells = <0>;178 179 port@0 {180 reg = <0>;181 phy-mode = "qsgmii";182 phy-handle = <&phy0>;183 managed = "in-band-status";184 };185 186 port@1 {187 reg = <1>;188 phy-mode = "qsgmii";189 phy-handle = <&phy1>;190 managed = "in-band-status";191 };192 193 port@2 {194 reg = <2>;195 phy-mode = "qsgmii";196 phy-handle = <&phy2>;197 managed = "in-band-status";198 };199 200 port@3 {201 reg = <3>;202 phy-mode = "qsgmii";203 phy-handle = <&phy3>;204 managed = "in-band-status";205 };206 207 port@4 {208 reg = <4>;209 phy-mode = "qsgmii";210 phy-handle = <&phy4>;211 managed = "in-band-status";212 };213 214 port@5 {215 reg = <5>;216 phy-mode = "qsgmii";217 phy-handle = <&phy5>;218 managed = "in-band-status";219 };220 221 port@6 {222 reg = <6>;223 phy-mode = "qsgmii";224 phy-handle = <&phy6>;225 managed = "in-band-status";226 };227 228 port@7 {229 reg = <7>;230 phy-mode = "qsgmii";231 phy-handle = <&phy7>;232 managed = "in-band-status";233 };234 235 port@8 {236 reg = <8>;237 phy-mode = "internal";238 ethernet = <&enet0>;239 240 fixed-link {241 speed = <2500>;242 full-duplex;243 pause;244 };245 };246 247 port@9 {248 reg = <9>;249 phy-mode = "internal";250 ethernet = <&enet1>;251 252 fixed-link {253 speed = <2500>;254 full-duplex;255 pause;256 };257 };258 };259 };260 };261