Skip to content

Commit

Permalink
Merge branch 'of-mdio-Fall-back-to-mdiobus_register-with-NULL-device_…
Browse files Browse the repository at this point in the history
…node'

Florian Fainelli says:

====================
of: mdio: Fall back to mdiobus_register() with NULL device_node

This patch series updates of_mdiobus_register() such that when the device_node
argument is NULL, it calls mdiobus_register() directly. This is consistent with
the behavior of of_mdiobus_register() when CONFIG_OF=n.

I only converted the most obvious drivers, there are others that have a much
less obvious behavior and specifically attempt to deal with CONFIG_ACPI.

Changes in v2:

- fixed build error in davincin_mdio.c (Grygorii)
- reworked first patch a bit: commit message, subject and removed useless
  code comment
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed May 16, 2018
2 parents c6213eb + 00e798c commit b0ec758
Show file tree
Hide file tree
Showing 12 changed files with 23 additions and 61 deletions.
8 changes: 2 additions & 6 deletions drivers/net/dsa/bcm_sf2.c
Original file line number Diff line number Diff line change
Expand Up @@ -450,12 +450,8 @@ static int bcm_sf2_mdio_register(struct dsa_switch *ds)
priv->slave_mii_bus->parent = ds->dev->parent;
priv->slave_mii_bus->phy_mask = ~priv->indir_phy_mask;

if (dn)
err = of_mdiobus_register(priv->slave_mii_bus, dn);
else
err = mdiobus_register(priv->slave_mii_bus);

if (err)
err = of_mdiobus_register(priv->slave_mii_bus, dn);
if (err && dn)
of_node_put(dn);

return err;
Expand Down
5 changes: 1 addition & 4 deletions drivers/net/dsa/mv88e6xxx/chip.c
Original file line number Diff line number Diff line change
Expand Up @@ -2454,10 +2454,7 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
return err;
}

if (np)
err = of_mdiobus_register(bus, np);
else
err = mdiobus_register(bus);
err = of_mdiobus_register(bus, np);
if (err) {
dev_err(chip->dev, "Cannot register MDIO bus (%d)\n", err);
mv88e6xxx_g2_irq_mdio_free(chip, bus);
Expand Down
12 changes: 3 additions & 9 deletions drivers/net/ethernet/cadence/macb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -591,16 +591,10 @@ static int macb_mii_init(struct macb *bp)
dev_set_drvdata(&bp->dev->dev, bp->mii_bus);

np = bp->pdev->dev.of_node;
if (pdata)
bp->mii_bus->phy_mask = pdata->phy_mask;

if (np) {
err = of_mdiobus_register(bp->mii_bus, np);
} else {
if (pdata)
bp->mii_bus->phy_mask = pdata->phy_mask;

err = mdiobus_register(bp->mii_bus);
}

err = of_mdiobus_register(bp->mii_bus, np);
if (err)
goto err_out_free_mdiobus;

Expand Down
8 changes: 2 additions & 6 deletions drivers/net/ethernet/freescale/fec_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2052,13 +2052,9 @@ static int fec_enet_mii_init(struct platform_device *pdev)
fep->mii_bus->parent = &pdev->dev;

node = of_get_child_by_name(pdev->dev.of_node, "mdio");
if (node) {
err = of_mdiobus_register(fep->mii_bus, node);
err = of_mdiobus_register(fep->mii_bus, node);
if (node)
of_node_put(node);
} else {
err = mdiobus_register(fep->mii_bus);
}

if (err)
goto err_out_free_mdiobus;

Expand Down
5 changes: 1 addition & 4 deletions drivers/net/ethernet/marvell/mvmdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,10 +348,7 @@ static int orion_mdio_probe(struct platform_device *pdev)
goto out_mdio;
}

if (pdev->dev.of_node)
ret = of_mdiobus_register(bus, pdev->dev.of_node);
else
ret = mdiobus_register(bus);
ret = of_mdiobus_register(bus, pdev->dev.of_node);
if (ret < 0) {
dev_err(&pdev->dev, "Cannot register MDIO bus (%d)\n", ret);
goto out_mdio;
Expand Down
11 changes: 3 additions & 8 deletions drivers/net/ethernet/renesas/sh_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -3025,15 +3025,10 @@ static int sh_mdio_init(struct sh_eth_private *mdp,
pdev->name, pdev->id);

/* register MDIO bus */
if (dev->of_node) {
ret = of_mdiobus_register(mdp->mii_bus, dev->of_node);
} else {
if (pd->phy_irq > 0)
mdp->mii_bus->irq[pd->phy] = pd->phy_irq;

ret = mdiobus_register(mdp->mii_bus);
}
if (pd->phy_irq > 0)
mdp->mii_bus->irq[pd->phy] = pd->phy_irq;

ret = of_mdiobus_register(mdp->mii_bus, dev->of_node);
if (ret)
goto out_free_bus;

Expand Down
5 changes: 1 addition & 4 deletions drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,10 +233,7 @@ int stmmac_mdio_register(struct net_device *ndev)
new_bus->phy_mask = mdio_bus_data->phy_mask;
new_bus->parent = priv->device;

if (mdio_node)
err = of_mdiobus_register(new_bus, mdio_node);
else
err = mdiobus_register(new_bus);
err = of_mdiobus_register(new_bus, mdio_node);
if (err != 0) {
dev_err(dev, "Cannot register the MDIO bus\n");
goto bus_register_fail;
Expand Down
8 changes: 3 additions & 5 deletions drivers/net/ethernet/ti/davinci_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -429,12 +429,10 @@ static int davinci_mdio_probe(struct platform_device *pdev)
* defined to support backward compatibility with DTs which assume that
* Davinci MDIO will always scan the bus for PHYs detection.
*/
if (dev->of_node && of_get_child_count(dev->of_node)) {
if (dev->of_node && of_get_child_count(dev->of_node))
data->skip_scan = true;
ret = of_mdiobus_register(data->bus, dev->of_node);
} else {
ret = mdiobus_register(data->bus);
}

ret = of_mdiobus_register(data->bus, dev->of_node);
if (ret)
goto bail_out;

Expand Down
6 changes: 1 addition & 5 deletions drivers/net/phy/mdio-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,11 +179,7 @@ static int mdio_gpio_probe(struct platform_device *pdev)
if (!new_bus)
return -ENODEV;

if (pdev->dev.of_node)
ret = of_mdiobus_register(new_bus, pdev->dev.of_node);
else
ret = mdiobus_register(new_bus);

ret = of_mdiobus_register(new_bus, pdev->dev.of_node);
if (ret)
mdio_gpio_bus_deinit(&pdev->dev);

Expand Down
6 changes: 1 addition & 5 deletions drivers/net/phy/mdio-mscc-miim.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,7 @@ static int mscc_miim_probe(struct platform_device *pdev)
}
}

if (pdev->dev.of_node)
ret = of_mdiobus_register(bus, pdev->dev.of_node);
else
ret = mdiobus_register(bus);

ret = of_mdiobus_register(bus, pdev->dev.of_node);
if (ret < 0) {
dev_err(&pdev->dev, "Cannot register MDIO bus (%d)\n", ret);
return ret;
Expand Down
7 changes: 2 additions & 5 deletions drivers/net/usb/lan78xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1843,12 +1843,9 @@ static int lan78xx_mdio_init(struct lan78xx_net *dev)
}

node = of_get_child_by_name(dev->udev->dev.of_node, "mdio");
if (node) {
ret = of_mdiobus_register(dev->mdiobus, node);
ret = of_mdiobus_register(dev->mdiobus, node);
if (node)
of_node_put(node);
} else {
ret = mdiobus_register(dev->mdiobus);
}
if (ret) {
netdev_err(dev->net, "can't register MDIO bus\n");
goto exit1;
Expand Down
3 changes: 3 additions & 0 deletions drivers/of/of_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,9 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
bool scanphys = false;
int addr, rc;

if (!np)
return mdiobus_register(mdio);

/* Do not continue if the node is disabled */
if (!of_device_is_available(np))
return -ENODEV;
Expand Down

0 comments on commit b0ec758

Please sign in to comment.