Patchwork [U-Boot,V3,7/9] net: fec_mxc: only call phy_connect in fec_probe

login
register
mail settings
Submitter Troy Kisky
Date Oct. 23, 2012, 2:40 a.m.
Message ID <1350960047-23404-8-git-send-email-troy.kisky@boundarydevices.com>
Download mbox | patch
Permalink /patch/193319/
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Comments

Troy Kisky - Oct. 23, 2012, 2:40 a.m.
This allows us to create the phydev before calling
fec_probe in later patch.

Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
---
 drivers/net/fec_mxc.c |   33 ++++++++++++---------------------
 1 file changed, 12 insertions(+), 21 deletions(-)

Patch

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: