[PATCH 1/3] dt-bindings: net: move bcm6368-mdio-mux bindings to b53

From: Álvaro Fernández Rojas
Date: Fri Mar 17 2023 - 07:36:46 EST


b53 MMAP devices have a MDIO Mux bus controller that must be registered after
properly initializing the switch. If the MDIO Mux controller is registered
from a separate driver and the device has an external switch present, it will
cause a race condition which will hang the device.

Signed-off-by: Álvaro Fernández Rojas <noltari@xxxxxxxxx>
---
.../bindings/net/brcm,bcm6368-mdio-mux.yaml | 52 -------
.../devicetree/bindings/net/dsa/brcm,b53.yaml | 131 ++++++++++++++++++
2 files changed, 131 insertions(+), 52 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/net/brcm,bcm6368-mdio-mux.yaml

diff --git a/Documentation/devicetree/bindings/net/brcm,bcm6368-mdio-mux.yaml b/Documentation/devicetree/bindings/net/brcm,bcm6368-mdio-mux.yaml
deleted file mode 100644
index 9ef28c2a0afc..000000000000
--- a/Documentation/devicetree/bindings/net/brcm,bcm6368-mdio-mux.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/net/brcm,bcm6368-mdio-mux.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Broadcom BCM6368 MDIO bus multiplexer
-
-maintainers:
- - Álvaro Fernández Rojas <noltari@xxxxxxxxx>
-
-description:
- This MDIO bus multiplexer defines buses that could be internal as well as
- external to SoCs. When child bus is selected, one needs to select these two
- properties as well to generate desired MDIO transaction on appropriate bus.
-
-allOf:
- - $ref: mdio-mux.yaml#
-
-properties:
- compatible:
- const: brcm,bcm6368-mdio-mux
-
- reg:
- maxItems: 1
-
-required:
- - compatible
- - reg
-
-unevaluatedProperties: false
-
-examples:
- - |
- mdio0: mdio@10e000b0 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "brcm,bcm6368-mdio-mux";
- reg = <0x10e000b0 0x6>;
-
- mdio_int: mdio@0 {
- #address-cells = <1>;
- #size-cells = <0>;
- reg = <0>;
- };
-
- mdio_ext: mdio@1 {
- #address-cells = <1>;
- #size-cells = <0>;
- reg = <1>;
- };
- };
diff --git a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
index 5bef4128d175..b1a894899306 100644
--- a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
@@ -61,6 +61,17 @@ properties:
- brcm,bcm6368-switch
- const: brcm,bcm63xx-switch

+ big-endian:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ Set this flag for switches with big endian registers.
+
+ mdio-mux:
+ $ref: /schemas/net/mdio-mux.yaml
+ description:
+ MDIO bus multiplexer defines buses that could be internal as well as
+ external to SoCs.
+
required:
- compatible
- reg
@@ -131,6 +142,22 @@ allOf:
reg:
maxItems: 1

+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - brcm,bcm3384-switch
+ - brcm,bcm6328-switch
+ - brcm,bcm6368-switch
+ then:
+ properties:
+ reg:
+ minItems: 1
+ maxItems: 1
+ required:
+ - mdio-mux
+
unevaluatedProperties: false

examples:
@@ -262,3 +289,107 @@ examples:
};
};
};
+ - |
+ switch0: switch@10f00000 {
+ compatible = "brcm,bcm6368-switch", "brcm,bcm63xx-switch";
+ reg = <0x10f00000 0x8000>;
+ big-endian;
+
+ dsa,member = <0 0>;
+
+ mdio-mux {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ mdio@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ };
+
+ mdio@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+
+ switch@1e {
+ compatible = "brcm,bcm53125";
+ reg = <30>;
+
+ dsa,member = <1 0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ label = "lan1";
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan2";
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan3";
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan4";
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "wan";
+ };
+
+ port@8 {
+ reg = <8>;
+ label = "cpu";
+
+ phy-mode = "rgmii";
+ ethernet = <&switch0port4>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
+ };
+ };
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ switch0port4: port@4 {
+ reg = <4>;
+ label = "extsw";
+
+ phy-mode = "rgmii";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+
+ port@8 {
+ reg = <8>;
+
+ phy-mode = "internal";
+ ethernet = <&ethernet>;
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+ };
--
2.30.2