diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-02-19 07:50:56 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-02-22 08:17:11 +0100 |
commit | ea096f2fa7ac14ddfacf9e82af7f073d77cbd06c (patch) | |
tree | 03c3e43e90c7d50f5a2a55260798d32a53db00a8 /drivers/net/cpsw.c | |
parent | 3ca8217df19114c553697ab0fdb0a72ba15cef8d (diff) | |
download | barebox-ea096f2fa7ac14ddfacf9e82af7f073d77cbd06c.tar.gz barebox-ea096f2fa7ac14ddfacf9e82af7f073d77cbd06c.tar.xz |
net: cpsw: Call phy_device_connect() earlier
We only want to register a slave when a valid phy is available.
Instead of manually calling mdiobus_scan() and phy_register_device()
we can let this do from phy_device_connect() which also works for
fixed phys.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net/cpsw.c')
-rw-r--r-- | drivers/net/cpsw.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c index d11ca33f70..928b97774b 100644 --- a/drivers/net/cpsw.c +++ b/drivers/net/cpsw.c @@ -761,11 +761,6 @@ static int cpsw_open(struct eth_device *edev) dev_dbg(&slave->dev, "* %s\n", __func__); - ret = phy_device_connect(edev, &priv->miibus, slave->phy_id, - cpsw_adjust_link, 0, slave->phy_if); - if (ret) - return ret; - /* soft reset the controller and initialize priv */ soft_reset(priv, &priv->regs->soft_reset); @@ -913,16 +908,11 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num, struct eth_device *edev = &slave->edev; struct device_d *dev = &slave->dev; int ret; - struct phy_device *phy; - phy = mdiobus_scan(&priv->miibus, priv->slaves[slave_num].phy_id); - if (IS_ERR(phy)) { - ret = PTR_ERR(phy); - goto err_out; - } + edev->parent = dev; - phy->dev.device_node = priv->slaves[slave_num].dev.device_node; - ret = phy_register_device(phy); + ret = phy_device_connect(edev, &priv->miibus, slave->phy_id, + cpsw_adjust_link, 0, slave->phy_if); if (ret) goto err_out; @@ -948,7 +938,6 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num, edev->recv = cpsw_recv; edev->get_ethaddr = cpsw_get_hwaddr; edev->set_ethaddr = cpsw_set_hwaddr; - edev->parent = dev; ret = eth_register(edev); if (ret) @@ -957,7 +946,7 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num, return 0; err_register_dev: - phy_unregister_device(phy); + phy_unregister_device(edev->phydev); err_register_edev: unregister_device(dev); err_out: |