[PATCH net-next] dt-bindings: net: dsa: convert ocelot.txt to dt-schema

Vladimir Oltean vladimir.oltean at nxp.com
Mon Sep 12 08:37:02 PDT 2022


Replace the free-form description of device tree bindings for VSC9959
and VSC9953 with a YAML formatted dt-schema description. This contains
more or less the same information, but reworded to be a bit more
succint.

Signed-off-by: Vladimir Oltean <vladimir.oltean at nxp.com>
---
 .../bindings/net/dsa/mscc,ocelot.yaml         | 239 ++++++++++++++++++
 .../devicetree/bindings/net/dsa/ocelot.txt    | 213 ----------------
 2 files changed, 239 insertions(+), 213 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
 delete mode 100644 Documentation/devicetree/bindings/net/dsa/ocelot.txt

diff --git a/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
new file mode 100644
index 000000000000..36c63ec16c05
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml
@@ -0,0 +1,239 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%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 Device Tree Bindings
+
+maintainers:
+  - Vladimir Oltean <vladimir.oltean at nxp.com>
+  - Claudiu Manoil <claudiu.manoil at nxp.com>
+  - Alexandre Belloni <alexandre.belloni at bootlin.com>
+  - UNGLinuxDriver at microchip.com
+
+description: |
+  There are multiple switches part of the Ocelot family.
+
+  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, regardless of whether it is configured as the DSA
+    master or not. This is because the Felix PHYLINK implementation accesses
+    the MAC PCS registers, which in hardware truly belong 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
+
+allOf:
+  - $ref: dsa.yaml#
+
+properties:
+  compatible:
+    enum:
+      - mscc,vsc9953-switch
+      - pci1957,eef0
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+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 at 0,5 {
+                    compatible = "pci1957,eef0";
+                    reg = <0x000500 0 0 0 0>;
+                    /* IEP INT_B */
+                    interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+
+                    ethernet-ports {
+                            #address-cells = <1>;
+                            #size-cells = <0>;
+
+                            port at 0 {
+                                    reg = <0>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy0>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 1 {
+                                    reg = <1>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy1>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 2 {
+                                    reg = <2>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy2>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 3 {
+                                    reg = <3>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy3>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 4 {
+                                    reg = <4>;
+                                    ethernet = <&enetc_port2>;
+                                    phy-mode = "internal";
+
+                                    fixed-link {
+                                            speed = <2500>;
+                                            full-duplex;
+                                            pause;
+                                    };
+                            };
+
+                            port at 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 at 800000 {
+                    compatible = "mscc,vsc9953-switch";
+                    reg = <0x800000 0x290000>;
+                    little-endian;
+
+                    ethernet-ports {
+                            #address-cells = <1>;
+                            #size-cells = <0>;
+
+                            port at 0 {
+                                    reg = <0>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy0>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 1 {
+                                    reg = <1>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy1>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 2 {
+                                    reg = <2>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy2>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 3 {
+                                    reg = <3>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy3>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 4 {
+                                    reg = <4>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy4>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 5 {
+                                    reg = <5>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy5>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 6 {
+                                    reg = <6>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy6>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 7 {
+                                    reg = <7>;
+                                    phy-mode = "qsgmii";
+                                    phy-handle = <&phy7>;
+                                    managed = "in-band-status";
+                            };
+
+                            port at 8 {
+                                    reg = <8>;
+                                    phy-mode = "internal";
+                                    ethernet = <&enet0>;
+
+                                    fixed-link {
+                                            speed = <2500>;
+                                            full-duplex;
+                                            pause;
+                                    };
+                            };
+
+                            port at 9 {
+                                    reg = <9>;
+                                    phy-mode = "internal";
+                                    ethernet = <&enet1>;
+
+                                    fixed-link {
+                                            speed = <2500>;
+                                            full-duplex;
+                                            pause;
+                                    };
+                            };
+                    };
+            };
+    };
diff --git a/Documentation/devicetree/bindings/net/dsa/ocelot.txt b/Documentation/devicetree/bindings/net/dsa/ocelot.txt
deleted file mode 100644
index 7a271d070b72..000000000000
--- a/Documentation/devicetree/bindings/net/dsa/ocelot.txt
+++ /dev/null
@@ -1,213 +0,0 @@
-Microchip Ocelot switch driver family
-=====================================
-
-Felix
------
-
-Currently the switches supported by the felix driver are:
-
-- VSC9959 (Felix)
-- VSC9953 (Seville)
-
-The VSC9959 switch 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:
-
-* reg: Specifies PCIe Device Number and Function Number of the endpoint device,
-  in this case for the Ethernet L2Switch it is PF5 (of device 0, bus 0).
-
-It does not require a "compatible" string.
-
-The interrupt line is used to signal availability of PTP TX timestamps and for
-TSN frame preemption.
-
-For the external switch ports, depending on board configuration, "phy-mode" and
-"phy-handle" are populated by board specific device tree instances. Ports 4 and
-5 are fixed as internal ports in the NXP LS1028A instantiation.
-
-The CPU port property ("ethernet") configures the feature called "NPI port" in
-the Ocelot hardware core. The CPU port in Ocelot is a set of queues, which are
-connected, in the Node Processor Interface (NPI) mode, to an Ethernet port.
-By default, in fsl-ls1028a.dtsi, the NPI port is assigned to the internal
-2.5Gbps port at 4, but can be moved to the 1Gbps port at 5, depending on the specific
-use case.  Moving the NPI port to an external switch port is hardware possible,
-but there is no platform support for the Linux system on the LS1028A chip to
-operate as an entire slave DSA chip.  NPI functionality (and therefore DSA
-tagging) is supported on a single port at a time.
-
-Any port can be disabled (and in fsl-ls1028a.dtsi, they are indeed all disabled
-by default, and should be enabled on a per-board basis). But if any external
-switch port is enabled at all, the ENETC PF2 (enetc_port2) should be enabled as
-well, regardless of whether it is configured as the DSA master or not. This is
-because the Felix PHYLINK implementation accesses the MAC PCS registers, which
-in hardware truly belong to the ENETC port #2 and not to Felix.
-
-Supported PHY interface types (appropriate SerDes protocol setting changes are
-needed in the RCW binary):
-
-* 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 = "2500base-x": on ports 0, 1, 2, 3
-
-For the rest of the device tree binding definitions, which are standard DSA and
-PCI, refer to the following documents:
-
-Documentation/devicetree/bindings/net/dsa/dsa.txt
-Documentation/devicetree/bindings/pci/pci.txt
-
-Example:
-
-&soc {
-	pcie at 1f0000000 { /* Integrated Endpoint Root Complex */
-		ethernet-switch at 0,5 {
-			reg = <0x000500 0 0 0 0>;
-			/* IEP INT_B */
-			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
-
-			ports {
-				#address-cells = <1>;
-				#size-cells = <0>;
-
-				/* External ports */
-				port at 0 {
-					reg = <0>;
-					label = "swp0";
-				};
-
-				port at 1 {
-					reg = <1>;
-					label = "swp1";
-				};
-
-				port at 2 {
-					reg = <2>;
-					label = "swp2";
-				};
-
-				port at 3 {
-					reg = <3>;
-					label = "swp3";
-				};
-
-				/* Tagging CPU port */
-				port at 4 {
-					reg = <4>;
-					ethernet = <&enetc_port2>;
-					phy-mode = "internal";
-
-					fixed-link {
-						speed = <2500>;
-						full-duplex;
-					};
-				};
-
-				/* Non-tagging CPU port */
-				port at 5 {
-					reg = <5>;
-					phy-mode = "internal";
-					status = "disabled";
-
-					fixed-link {
-						speed = <1000>;
-						full-duplex;
-					};
-				};
-			};
-		};
-	};
-};
-
-The VSC9953 switch is found inside NXP T1040. It is a platform device with the
-following required properties:
-
-- compatible:
-	Must be "mscc,vsc9953-switch".
-
-Supported PHY interface types (appropriate SerDes protocol setting changes are
-needed in the RCW binary):
-
-* 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
-
-Example:
-
-&soc {
-	ethernet-switch at 800000 {
-		#address-cells = <0x1>;
-		#size-cells = <0x0>;
-		compatible = "mscc,vsc9953-switch";
-		little-endian;
-		reg = <0x800000 0x290000>;
-
-		ports {
-			#address-cells = <0x1>;
-			#size-cells = <0x0>;
-
-			port at 0 {
-				reg = <0x0>;
-				label = "swp0";
-			};
-
-			port at 1 {
-				reg = <0x1>;
-				label = "swp1";
-			};
-
-			port at 2 {
-				reg = <0x2>;
-				label = "swp2";
-			};
-
-			port at 3 {
-				reg = <0x3>;
-				label = "swp3";
-			};
-
-			port at 4 {
-				reg = <0x4>;
-				label = "swp4";
-			};
-
-			port at 5 {
-				reg = <0x5>;
-				label = "swp5";
-			};
-
-			port at 6 {
-				reg = <0x6>;
-				label = "swp6";
-			};
-
-			port at 7 {
-				reg = <0x7>;
-				label = "swp7";
-			};
-
-			port at 8 {
-				reg = <0x8>;
-				phy-mode = "internal";
-				ethernet = <&enet0>;
-
-				fixed-link {
-					speed = <2500>;
-					full-duplex;
-				};
-			};
-
-			port at 9 {
-				reg = <0x9>;
-				phy-mode = "internal";
-				status = "disabled";
-
-				fixed-link {
-					speed = <2500>;
-					full-duplex;
-				};
-			};
-		};
-	};
-};
-- 
2.34.1




More information about the linux-arm-kernel mailing list