diff options
| -rw-r--r-- | board/MAI/AmigaOneG3SE/enet.c | 42 | 
1 files changed, 8 insertions, 34 deletions
| diff --git a/board/MAI/AmigaOneG3SE/enet.c b/board/MAI/AmigaOneG3SE/enet.c index 0b4dfe6aa..ac969a9e2 100644 --- a/board/MAI/AmigaOneG3SE/enet.c +++ b/board/MAI/AmigaOneG3SE/enet.c @@ -600,7 +600,7 @@ static int eth_3com_init (struct eth_device *dev, bd_t * bis)  	ias_cmd = (struct descriptor *) &tx_ring[tx_cur];  	ias_cmd->status = cpu_to_le32 (1 << 31);	/* set DnIndicate bit.                  */  	ias_cmd->next = 0; -	ias_cmd->addr = cpu_to_le32 ((u32) & bis->bi_enetaddr[0]); +	ias_cmd->addr = cpu_to_le32 ((u32) dev->enetaddr);  	ias_cmd->length = cpu_to_le32 (6 | LAST_FRAG);  	/* Tell the adapter where the TX ring is located */ @@ -787,6 +787,10 @@ static void read_hw_addr (struct eth_device *dev, bd_t * bis)  	unsigned int checksum = 0;  	int i, j, timer; +	/* First, try the env ... if that works, we're all done! */ +	if (eth_getenv_enetaddr("ethaddr", hw_addr)) +		goto Done; +  	/* Read the station address from the EEPROM. */  	EL3WINDOW (dev, 0); @@ -827,40 +831,10 @@ static void read_hw_addr (struct eth_device *dev, bd_t * bis)  		hw_addr[j + 1] = (u8) ((ETH_INW (dev, j) >> 8) & 0xff);  	} -	for (i = 0; i < ETH_ALEN; i++) { -		if (hw_addr[i] != bis->bi_enetaddr[i]) { -/*			printf("Warning: HW address don't match:\n"); */ -/*			printf("Address in 3Com Window 2 is	    " */ -/*			       "%02X:%02X:%02X:%02X:%02X:%02X\n", */ -/*			       hw_addr[0], hw_addr[1], hw_addr[2], */ -/*			       hw_addr[3], hw_addr[4], hw_addr[5]); */ -/*			printf("Address used by U-Boot is " */ -/*			       "%02X:%02X:%02X:%02X:%02X:%02X\n", */ -/*			       bis->bi_enetaddr[0], bis->bi_enetaddr[1],  */ -/*			       bis->bi_enetaddr[2], bis->bi_enetaddr[3],  */ -/*			       bis->bi_enetaddr[4], bis->bi_enetaddr[5]); */ -/*			goto Done; */ -			char buffer[256]; - -			if (bis->bi_enetaddr[0] == 0 -			    && bis->bi_enetaddr[1] == 0 -			    && bis->bi_enetaddr[2] == 0 -			    && bis->bi_enetaddr[3] == 0 -			    && bis->bi_enetaddr[4] == 0 -			    && bis->bi_enetaddr[5] == 0) { - -				sprintf (buffer, -					 "%02X:%02X:%02X:%02X:%02X:%02X", -					 hw_addr[0], hw_addr[1], hw_addr[2], -					 hw_addr[3], hw_addr[4], hw_addr[5]); -				setenv ("ethaddr", buffer); -			} -		} -	} - -	for (i = 0; i < ETH_ALEN; i++) -		dev->enetaddr[i] = hw_addr[i]; +	/* Save the result in the environment */ +	eth_setenv_enetaddr("ethaddr", hw_addr);  Done: +	memcpy(dev->enetaddr, hw_addr, 6);  	return;  } |