Originally, most of the platforms using this driver did not define an mdio 
subnode
in the devicetree. Commit e34d65 ("stmmac: create of compatible mdio bus for 
stmmac driver")
introduced a backward compatibily issue by using of_mdiobus_register explicitly
with an mdio subnode. This patch fixes the issue by calling the function
mdiobus_register, when mdio subnode is not found. The driver is now compatible
with both modes.

Signed-off-by: Romain Perier <romain.per...@gmail.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c 
b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index 16c85cc..0034de44 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -218,8 +218,7 @@ int stmmac_mdio_register(struct net_device *ndev)
                if (mdio_node) {
                        netdev_dbg(ndev, "FOUND MDIO subnode\n");
                } else {
-                       netdev_err(ndev, "NO MDIO subnode\n");
-                       return 0;
+                       netdev_warn(ndev, "No MDIO subnode found\n");
                }
        }
 
@@ -251,7 +250,10 @@ int stmmac_mdio_register(struct net_device *ndev)
        new_bus->phy_mask = mdio_bus_data->phy_mask;
        new_bus->parent = priv->device;
 
-       err = of_mdiobus_register(new_bus, mdio_node);
+       if (IS_ENABLED(CONFIG_OF) && mdio_node)
+               err = of_mdiobus_register(new_bus, mdio_node);
+       else
+               err = mdiobus_register(new_bus);
        if (err != 0) {
                pr_err("%s: Cannot register as MDIO bus\n", new_bus->name);
                goto bus_register_fail;
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to