All Northstar SoCs have BCM5301x switches (BCM53011, BCM53012) with 8
ports (0-8 without 6). By design 3 switch ports (5, 7 and 8) are
hardwired to 3 on-SoC Ethernet interfaces. Switch port 8 requires
forcing link state.
It seems that global Northstar .dtsi file is the best place to describe
those hw details. Only device specific bits (like labels) should go to
device .dts files.
This seems to fit well with a tiny exception of Asus RT-AC88U which
somehow was designed to have switch 5 connected to an extra switch. This
case was simply handled with a /delete-property/.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Reviewed-by: Christian Lamparter <chunkeey@gmail.com> (MR32+MR26)
Link: https://lore.kernel.org/r/20230605132109.7933-1-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
22 files changed:
 
                status = "disabled";
 
-               /* ports are defined in board DTS */
                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                       };
+
+                       port@4 {
+                               reg = <4>;
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               ethernet = <&gmac0>;
+                       };
+
+                       port@7 {
+                               reg = <7>;
+                               ethernet = <&gmac1>;
+                       };
+
+                       port@8 {
+                               reg = <8>;
+                               ethernet = <&gmac2>;
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
                };
        };
 
 
 
        ports {
                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@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "poe";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "lan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@4 {
-                       reg = <4>;
                        label = "lan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                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@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@4 {
-                       reg = <4>;
                        label = "poe";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                        nvmem-cells = <&et0macaddr 5>;
                        nvmem-cell-names = "mac-address";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                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";
-                       ethernet = <&gmac2>;
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                };
 
                sw0_p5: port@5 {
-                       reg = <5>;
+                       /delete-property/ethernet;
+
                        label = "extsw";
                        phy-mode = "rgmii";
 
                };
 
                port@7 {
-                       reg = <7>;
-                       ethernet = <&gmac1>;
                        label = "cpu";
 
                        fixed-link {
                };
 
                port@8 {
-                       reg = <8>;
-                       ethernet = <&gmac2>;
                        label = "cpu";
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                };
 
                port@8 {
-                       reg = <8>;
                        label = "cpu";
-                       ethernet = <&gmac2>;
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
                };
        };
 };
 
 
        ports {
                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";
-                       ethernet = <&gmac2>;
                        phy-mode = "rgmii";
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
                };
        };
 };
 
        dsa,member = <0 0>;
 
        ports {
+               sw0_p0: port@0 {
+                       label = "extsw";
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+
                port@1 {
-                       reg = <1>;
                        label = "lan7";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan4";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan8";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                };
 
                port@5 {
-                       reg = <5>;
-                       ethernet = <&gmac0>;
                        label = "cpu";
                        status = "disabled";
 
                };
 
                port@7 {
-                       reg = <7>;
-                       ethernet = <&gmac1>;
                        label = "cpu";
                        status = "disabled";
 
                };
 
                port@8 {
-                       reg = <8>;
-                       ethernet = <&gmac2>;
                        label = "cpu";
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
-               };
-
-               sw0_p0: port@0 {
-                       reg = <0>;
-                       label = "extsw";
-
-                       fixed-link {
-                               speed = <1000>;
-                               full-duplex;
-                       };
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "wan";
                        nvmem-cells = <&et0macaddr 1>;
                        nvmem-cell-names = "mac-address";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan4";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan3";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan2";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "lan1";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "poe";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "wan";
                        nvmem-cells = <&et0macaddr 1>;
                        nvmem-cell-names = "mac-address";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan4";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan3";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan2";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "lan1";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                        nvmem-cells = <&et0macaddr 5>;
                        nvmem-cell-names = "mac-address";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "lan4";
                };
 
                port@1 {
-                       reg = <1>;
                        label = "lan3";
                };
 
                port@2 {
-                       reg = <2>;
                        label = "lan2";
                };
 
                port@3 {
-                       reg = <3>;
                        label = "lan1";
                };
 
                port@4 {
-                       reg = <4>;
                        label = "wan";
                        nvmem-cells = <&et0macaddr 5>;
                        nvmem-cell-names = "mac-address";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
                };
        };
 };
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "poe";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
 
                        fixed-link {
                                speed = <1000>;
 
 
        ports {
                port@0 {
-                       reg = <0>;
                        label = "poe";
                };
 
                port@5 {
-                       reg = <5>;
                        label = "cpu";
-                       ethernet = <&gmac0>;
 
                        fixed-link {
                                speed = <1000>;