Message ID | 20240104140037.374166-10-vladimir.oltean@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 04a4bc9dddc7bd316ba555338c04b885581be5ae |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | ds->user_mii_bus cleanup (part 1) | expand |
On Thu, Jan 04, 2024 at 04:00:36PM +0200, Vladimir Oltean wrote: > The bcm_sf2 driver does something strange. Instead of calling > of_mdiobus_register() with an OF node argument, it manually assigns the > bus->dev->of_node and then calls the non-OF mdiobus_register(). This > circumvents some code from __of_mdiobus_register() from running, which > sets the auto-scan mask, parses some device tree properties, etc. > > I'm going to go out on a limb and say that the OF node isn't, in fact, > needed at all, and can be removed. The MDIO diversion as initially > implemented in commit 461cd1b03e32 ("net: dsa: bcm_sf2: Register our > slave MDIO bus") looked quite different than it is now, after commit > 771089c2a485 ("net: dsa: bcm_sf2: Ensure that MDIO diversion is used"). > Initially, it made sense, as bcm_sf2 was registering another set of > driver ops for the "brcm,unimac-mdio" OF node. But now, it deletes all > phandles, which makes "phy-handle"s unable to find PHYs, which means > that it always goes through the OF-unaware dsa_user_phy_connect(). > > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk> > --- > drivers/net/dsa/bcm_sf2.c | 1 - > 1 file changed, 1 deletion(-)
On 1/4/24 06:00, Vladimir Oltean wrote: > The bcm_sf2 driver does something strange. Instead of calling > of_mdiobus_register() with an OF node argument, it manually assigns the > bus->dev->of_node and then calls the non-OF mdiobus_register(). This > circumvents some code from __of_mdiobus_register() from running, which > sets the auto-scan mask, parses some device tree properties, etc. > > I'm going to go out on a limb and say that the OF node isn't, in fact, > needed at all, and can be removed. The MDIO diversion as initially > implemented in commit 461cd1b03e32 ("net: dsa: bcm_sf2: Register our > slave MDIO bus") looked quite different than it is now, after commit > 771089c2a485 ("net: dsa: bcm_sf2: Ensure that MDIO diversion is used"). > Initially, it made sense, as bcm_sf2 was registering another set of > driver ops for the "brcm,unimac-mdio" OF node. But now, it deletes all > phandles, which makes "phy-handle"s unable to find PHYs, which means > that it always goes through the OF-unaware dsa_user_phy_connect(). > > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index cadee5505c29..19b325fa5a27 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -635,7 +635,6 @@ static int bcm_sf2_mdio_register(struct dsa_switch *ds) priv->user_mii_bus->write = bcm_sf2_sw_mdio_write; snprintf(priv->user_mii_bus->id, MII_BUS_ID_SIZE, "sf2-%d", index++); - priv->user_mii_bus->dev.of_node = dn; /* Include the pseudo-PHY address to divert reads towards our * workaround. This is only required for 7445D0, since 7445E0
The bcm_sf2 driver does something strange. Instead of calling of_mdiobus_register() with an OF node argument, it manually assigns the bus->dev->of_node and then calls the non-OF mdiobus_register(). This circumvents some code from __of_mdiobus_register() from running, which sets the auto-scan mask, parses some device tree properties, etc. I'm going to go out on a limb and say that the OF node isn't, in fact, needed at all, and can be removed. The MDIO diversion as initially implemented in commit 461cd1b03e32 ("net: dsa: bcm_sf2: Register our slave MDIO bus") looked quite different than it is now, after commit 771089c2a485 ("net: dsa: bcm_sf2: Ensure that MDIO diversion is used"). Initially, it made sense, as bcm_sf2 was registering another set of driver ops for the "brcm,unimac-mdio" OF node. But now, it deletes all phandles, which makes "phy-handle"s unable to find PHYs, which means that it always goes through the OF-unaware dsa_user_phy_connect(). Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> --- drivers/net/dsa/bcm_sf2.c | 1 - 1 file changed, 1 deletion(-)