Message ID | 20220523013233.20045-1-luizluca@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fe7324b932222574a0721b80e72c6c5fe57960d1 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,RESEND] net: dsa: OF-ware slave_mii_bus | expand |
In the last attempt, this patch was part of a doc+net series. However, Rob Herring NAKed the binding patch as we cannot define a "mdio" node in dsa.yaml without breaking anyone who references dsa.yaml to need to redefine/specialize that same node. https://lore.kernel.org/lkml/Yhfmi2Mn6e0NMXh3@robh.at.kernel.org/ So, the generic slave "mdio" node must be declared on each device that might use it in the future. Regards, Luiz
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Sun, 22 May 2022 22:32:34 -0300 you wrote: > If found, register the DSA internally allocated slave_mii_bus with an OF > "mdio" child object. It can save some drivers from creating their > custom internal MDIO bus. > > Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> > Reviewed-by: Andrew Lunn <andrew@lunn.ch> > Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> > > [...] Here is the summary with links: - [net-next,RESEND] net: dsa: OF-ware slave_mii_bus https://git.kernel.org/netdev/net-next/c/fe7324b93222 You are awesome, thank you!
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index d0a2452a1e24..cac48a741f27 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -13,6 +13,7 @@ #include <linux/slab.h> #include <linux/rtnetlink.h> #include <linux/of.h> +#include <linux/of_mdio.h> #include <linux/of_net.h> #include <net/devlink.h> #include <net/sch_generic.h> @@ -852,6 +853,7 @@ static int dsa_switch_setup_tag_protocol(struct dsa_switch *ds) static int dsa_switch_setup(struct dsa_switch *ds) { struct dsa_devlink_priv *dl_priv; + struct device_node *dn; struct dsa_port *dp; int err; @@ -907,7 +909,10 @@ static int dsa_switch_setup(struct dsa_switch *ds) dsa_slave_mii_bus_init(ds); - err = mdiobus_register(ds->slave_mii_bus); + dn = of_get_child_by_name(ds->dev->of_node, "mdio"); + + err = of_mdiobus_register(ds->slave_mii_bus, dn); + of_node_put(dn); if (err < 0) goto free_slave_mii_bus; }