diff options
Diffstat (limited to 'target/linux/lantiq/patches-4.19/0701-NET-lantiq-etop-of-mido.patch')
-rw-r--r-- | target/linux/lantiq/patches-4.19/0701-NET-lantiq-etop-of-mido.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/target/linux/lantiq/patches-4.19/0701-NET-lantiq-etop-of-mido.patch b/target/linux/lantiq/patches-4.19/0701-NET-lantiq-etop-of-mido.patch new file mode 100644 index 0000000000..5dc4b81522 --- /dev/null +++ b/target/linux/lantiq/patches-4.19/0701-NET-lantiq-etop-of-mido.patch @@ -0,0 +1,37 @@ +--- a/drivers/net/ethernet/lantiq_etop.c ++++ b/drivers/net/ethernet/lantiq_etop.c +@@ -40,6 +40,7 @@ + #include <linux/of_net.h> + #include <linux/of_irq.h> + #include <linux/of_platform.h> ++#include <linux/of_mdio.h> + + #include <asm/checksum.h> + +@@ -567,7 +568,8 @@ static int + ltq_etop_mdio_init(struct net_device *dev) + { + struct ltq_etop_priv *priv = netdev_priv(dev); +- int err; ++ struct device_node *mdio_np = NULL; ++ int err, ret; + + priv->mii_bus = mdiobus_alloc(); + if (!priv->mii_bus) { +@@ -587,7 +589,15 @@ ltq_etop_mdio_init(struct net_device *de + priv->mii_bus->name = "ltq_mii"; + snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", + priv->pdev->name, priv->pdev->id); +- if (mdiobus_register(priv->mii_bus)) { ++ ++ mdio_np = of_get_child_by_name(priv->pdev->dev.of_node, "mdio-bus"); ++ ++ if (mdio_np) ++ ret = of_mdiobus_register(priv->mii_bus, mdio_np); ++ else ++ ret = mdiobus_register(priv->mii_bus); ++ ++ if (ret) { + err = -ENXIO; + goto err_out_free_mdiobus; + } |