Subject: Re: [PATCHv2 net-next] dsa: Support multiple MDIO busses

From: Andrew Lunn <[email-masked]>
Date: Sun, 9 Aug 2015 19:35:17 +0200

> >The optional mii-bus properties i'm adding should be used in
> >preference to this global one, for this switch. Keeping the names the
> >same makes sense. But i did drop the dsa prefix to indicate it is
> >local, not global scope,
> 
>    Dropping a vendor prefix usually means that it's (standardized)
> common property name. I don't know where you took the "local" scope
> thing...

DSA has at least three levels of hierarchy. The following is the
example from the binding documentation. There is a 'global' scope
dsa,mii-bus = <&mii_bus0> in the top level, which is mandatory. This
patch allows optional 'local' scope mii bus to be specified at an
individual switch level. The 'local' value, if present, will override
the 'global' value.

Maybe more properties should use the dsa prefix? But dsa is not a
vendor prefix, it just refers to "Distributed Switch Architecture",
the scheme for accessing a number of Ethernet switches connected
together in a cluster. But as the binding has grown, this prefix has
not been used with new properties.

    Andrew

        dsa@0 {
                compatible = "marvell,dsa";
                #address-cells = <2>;
                #size-cells = <0>;

                interrupts = <10>;
                dsa,ethernet = <&ethernet0>;
                dsa,mii-bus = <&mii_bus0>;

                switch@0 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <16 0>;   /* MDIO address 16, switch 0 in tree */

                        port@0 {
                                reg = <0>;
                                label = "lan1";
                                phy-handle = <&phy0>;
                        };

                        port@1 {
                                reg = <1>;
                                label = "lan2";
                        };

                        port@5 {
                                reg = <5>;
                                label = "cpu";
                        };

                        switch0port6: port@6 {
                                reg = <6>;
                                label = "dsa";
                                link = <&switch1port0
                                        &switch2port0>;
                        };
                };

                switch@1 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <17 1>;   /* MDIO address 17, switch 1 in tree */
                        mii-bus = <&mii_bus1>;

                        switch1port0: port@0 {
                                reg = <0>;
                                label = "dsa";
                                link = <&switch0port6>;
                        };
                        switch1port1: port@1 {
                                reg = <1>;
                                label = "dsa";
                                link = <&switch2port1>;
                        };
                };

                switch@2 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <18 2>;   /* MDIO address 18, switch 2 in tree */
                        mii-bus = <&mii_bus1>;

                        switch2port0: port@0 {
                                reg = <0>;
                                label = "dsa";
                                link = <&switch1port1
                                        &switch0port6>;
                        };
                };
        };