]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
net: fec_mxc: only call phy_connect in fec_probe
authorTroy Kisky <troy.kisky@boundarydevices.com>
Mon, 22 Oct 2012 16:40:45 +0000 (16:40 +0000)
committerStefano Babic <sbabic@denx.de>
Mon, 28 Jan 2013 05:57:50 +0000 (06:57 +0100)
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

index 7e2721070efd478f5ec05ccc2f3785b893dec346..913c5617b2069974c5a5cbb71448f6b4d84119ff 100644 (file)
@@ -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: