diff options
| author | Detlev Zundel <dzu@denx.de> | 2010-04-08 11:49:59 +0200 | 
|---|---|---|
| committer | Ben Warren <biggerbadderben@gmail.com> | 2010-05-03 14:52:48 -0700 | 
| commit | 5525856d59910c72687ab6201f39cdf1c04cfc15 (patch) | |
| tree | 5a0a597be345912ed079b12e0f11e061327b286e /drivers/net/mpc512x_fec.c | |
| parent | 910119b3c462fd6367536899ee43de1eb7d22d8e (diff) | |
| download | olio-uboot-2014.01-5525856d59910c72687ab6201f39cdf1c04cfc15.tar.xz olio-uboot-2014.01-5525856d59910c72687ab6201f39cdf1c04cfc15.zip | |
mpc512x_fec: Move PHY initialization from probe into init routine.
This saves the autonegotation delay when not using ethernet in U-Boot
Signed-off-by: Detlev Zundel <dzu@denx.de>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
Diffstat (limited to 'drivers/net/mpc512x_fec.c')
| -rw-r--r-- | drivers/net/mpc512x_fec.c | 29 | 
1 files changed, 7 insertions, 22 deletions
| diff --git a/drivers/net/mpc512x_fec.c b/drivers/net/mpc512x_fec.c index 3aba748aa..c580c827a 100644 --- a/drivers/net/mpc512x_fec.c +++ b/drivers/net/mpc512x_fec.c @@ -160,7 +160,7 @@ static void mpc512x_fec_tbd_scrub (mpc512x_fec_priv *fec)  }  /********************************************************************/ -static void mpc512x_fec_set_hwaddr (mpc512x_fec_priv *fec, char *mac) +static void mpc512x_fec_set_hwaddr (mpc512x_fec_priv *fec, unsigned char *mac)  {  	u8 currByte;			/* byte for which to compute the CRC */  	int byte;			/* loop - counter */ @@ -226,6 +226,12 @@ static int mpc512x_fec_init (struct eth_device *dev, bd_t * bis)  	printf ("mpc512x_fec_init... Begin\n");  #endif +	mpc512x_fec_set_hwaddr (fec, dev->enetaddr); +	out_be32(&fec->eth->gaddr1, 0x00000000); +	out_be32(&fec->eth->gaddr2, 0x00000000); + +	mpc512x_fec_init_phy (dev, bis); +  	/* Set interrupt mask register */  	out_be32(&fec->eth->imask, 0x00000000); @@ -611,8 +617,6 @@ int mpc512x_fec_initialize (bd_t * bis)  	volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;  	mpc512x_fec_priv *fec;  	struct eth_device *dev; -	int i; -	char *tmp, *end, env_enetaddr[6];  	void * bd;  	fec = (mpc512x_fec_priv *) malloc (sizeof(*fec)); @@ -663,25 +667,6 @@ int mpc512x_fec_initialize (bd_t * bis)  	 */  	out_be32(&fec->eth->ievent, 0xffffffff); -	/* -	 * Try to set the mac address now. The fec mac address is -	 * a garbage after reset. When not using fec for booting -	 * the Linux fec driver will try to work with this garbage. -	 */ -	tmp = getenv ("ethaddr"); -	if (tmp) { -		for (i=0; i<6; i++) { -			env_enetaddr[i] = tmp ? simple_strtoul (tmp, &end, 16) : 0; -			if (tmp) -				tmp = (*end) ? end+1 : end; -		} -		mpc512x_fec_set_hwaddr (fec, env_enetaddr); -		out_be32(&fec->eth->gaddr1, 0x00000000); -		out_be32(&fec->eth->gaddr2, 0x00000000); -	} - -	mpc512x_fec_init_phy (dev, bis); -  	return 1;  } |