| 12345678910111213141516171819202122232425262728293031323334353637 |
- --- a/drivers/net/ethernet/lantiq_etop.c
- +++ b/drivers/net/ethernet/lantiq_etop.c
- @@ -30,6 +30,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>
-
- @@ -553,7 +554,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) {
- @@ -573,7 +575,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;
- }
|