diff options
Diffstat (limited to 'drivers/net')
| -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;  } |