summaryrefslogtreecommitdiff
path: root/drivers/net/fec_mxc.c
diff options
context:
space:
mode:
authorTroy Kisky <troy.kisky@boundarydevices.com>2012-10-22 16:40:45 +0000
committerStefano Babic <sbabic@denx.de>2013-01-28 06:57:50 +0100
commit4dc27eed5230c485ef8016ccea6ea0abbd937d98 (patch)
treea95e325066e47a0c5d26f6fcb451e432411052a8 /drivers/net/fec_mxc.c
parentef8e3a3bbf0720068b7bf6e4f182c17679f94fa2 (diff)
downloadu-boot-imx-4dc27eed5230c485ef8016ccea6ea0abbd937d98.zip
u-boot-imx-4dc27eed5230c485ef8016ccea6ea0abbd937d98.tar.gz
u-boot-imx-4dc27eed5230c485ef8016ccea6ea0abbd937d98.tar.bz2
net: fec_mxc: only call phy_connect in fec_probe
This allows us to create the phydev before calling fec_probe in later patch. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
Diffstat (limited to 'drivers/net/fec_mxc.c')
-rw-r--r--drivers/net/fec_mxc.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 7e27210..913c561 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -392,21 +392,6 @@ static int fec_set_hwaddr(struct eth_device *dev)
return 0;
}
-static void fec_eth_phy_config(struct eth_device *dev)
-{
-#ifdef CONFIG_PHYLIB
- struct fec_priv *fec = (struct fec_priv *)dev->priv;
- struct phy_device *phydev;
-
- phydev = phy_connect(fec->bus, fec->phy_id, dev,
- PHY_INTERFACE_MODE_RGMII);
- if (phydev) {
- fec->phydev = phydev;
- phy_config(phydev);
- }
-#endif
-}
-
/*
* Do initial configuration of the FEC registers
*/
@@ -511,9 +496,7 @@ static int fec_open(struct eth_device *edev)
#endif
#ifdef CONFIG_PHYLIB
- if (!fec->phydev)
- fec_eth_phy_config(edev);
- if (fec->phydev) {
+ {
/* Start up the PHY */
int ret = phy_startup(fec->phydev);
@@ -523,8 +506,6 @@ static int fec_open(struct eth_device *edev)
return ret;
}
speed = fec->phydev->speed;
- } else {
- speed = _100BASET;
}
#else
miiphy_wait_aneg(edev);
@@ -922,6 +903,7 @@ static void fec_set_dev_name(char *dest, int dev_id)
static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr)
{
+ struct phy_device *phydev;
struct eth_device *edev;
struct fec_priv *fec;
struct mii_dev *bus;
@@ -1010,7 +992,16 @@ static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr)
memcpy(edev->enetaddr, ethaddr, 6);
}
/* Configure phy */
- fec_eth_phy_config(edev);
+#ifdef CONFIG_PHYLIB
+ phydev = phy_connect(fec->bus, phy_id, edev, PHY_INTERFACE_MODE_RGMII);
+ if (!phydev) {
+ free(bus);
+ ret = -ENOMEM;
+ goto err3;
+ }
+ fec->phydev = phydev;
+ phy_config(phydev);
+#endif
return ret;
err3: