diff options
| author | Troy Kisky <troy.kisky@boundarydevices.com> | 2012-10-22 16:40:45 +0000 | 
|---|---|---|
| committer | Stefano Babic <sbabic@denx.de> | 2013-01-28 06:57:50 +0100 | 
| commit | 4dc27eed5230c485ef8016ccea6ea0abbd937d98 (patch) | |
| tree | a95e325066e47a0c5d26f6fcb451e432411052a8 /drivers/net/fec_mxc.c | |
| parent | ef8e3a3bbf0720068b7bf6e4f182c17679f94fa2 (diff) | |
| download | olio-uboot-2014.01-4dc27eed5230c485ef8016ccea6ea0abbd937d98.tar.xz olio-uboot-2014.01-4dc27eed5230c485ef8016ccea6ea0abbd937d98.zip | |
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.c | 33 | 
1 files changed, 12 insertions, 21 deletions
| diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 7e2721070..913c5617b 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: |