Skip to content
Snippets Groups Projects
Commit 641e0925 authored by David Brownell's avatar David Brownell Committed by Wolfgang Denk
Browse files

DaVinci Ethernet cleanup


Chips without the EMAC controller won't need the utilities
it uses to read an Ethernet address from EEPROM; so don't
include them needlessly.

Use is_valid_ether() to validate the address from EEPROM.
All-zero addresses aren't the only invalid addresses.
A fully erased EEPROM returns all-ones, also invalid...

Switch those Ethernet utilities to use "%pM" for printing
MAC addresses; and not say ROM when they mean EEPROM.

Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Acked-by: default avatarBen Warren <biggerbadderben@gmail.com>
parent c790b04d
No related branches found
No related tags found
No related merge requests found
......@@ -25,6 +25,7 @@
#include <common.h>
#include <i2c.h>
#include <net.h>
#include <asm/arch/hardware.h>
DECLARE_GLOBAL_DATA_PTR;
......@@ -49,6 +50,8 @@ void dv_display_clk_infos(void)
((REG(PLL2_DIV2) & 0x1f) + 1) / 2);
}
#ifdef CONFIG_DRIVER_TI_EMAC
/* Read ethernet MAC address from EEPROM for DVEVM compatible boards.
* Returns 1 if found, 0 otherwise.
*/
......@@ -60,8 +63,8 @@ int dvevm_read_mac_address(uint8_t *buf)
(uint8_t *) &buf[0], 6))
goto i2cerr;
/* Check that MAC address is not null. */
if (memcmp(buf, "\0\0\0\0\0\0", 6) == 0)
/* Check that MAC address is valid. */
if (!is_valid_ether_addr(buf))
goto err;
return 1; /* Found */
......@@ -75,11 +78,11 @@ err:
}
/* If there is a MAC address in the environment, and if it is not identical to
* the MAC address in the ROM, then a warning is printed and the MAC address
* the MAC address in the EEPROM, then a warning is printed and the MAC address
* from the environment is used.
*
* If there is no MAC address in the environment, then it will be initialized
* (silently) from the value in the ROM.
* (silently) from the value in the EEPROM.
*/
void dv_configure_mac_address(uint8_t *rom_enetaddr)
{
......@@ -96,31 +99,24 @@ void dv_configure_mac_address(uint8_t *rom_enetaddr)
tmp = (*end) ? end+1 : end;
}
/* Check if ROM and U-Boot environment MAC addresses match. */
/* Check if EEPROM and U-Boot environment MAC addresses match. */
if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6) != 0 &&
memcmp(env_enetaddr, rom_enetaddr, 6) != 0) {
printf("Warning: MAC addresses don't match:\n");
printf(" ROM MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n",
rom_enetaddr[0], rom_enetaddr[1],
rom_enetaddr[2], rom_enetaddr[3],
rom_enetaddr[4], rom_enetaddr[5]);
printf(" \"ethaddr\" value: %02X:%02X:%02X:%02X:%02X:%02X\n",
env_enetaddr[0], env_enetaddr[1],
env_enetaddr[2], env_enetaddr[3],
env_enetaddr[4], env_enetaddr[5]) ;
printf(" EEPROM MAC address: %pM\n", rom_enetaddr);
printf(" \"ethaddr\" value: %pM\n", env_enetaddr) ;
debug("### Using MAC address from environment\n");
}
if (!tmp) {
char ethaddr[20];
/* There is no MAC address in the environment, so we initialize
* it from the value in the ROM. */
sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X",
rom_enetaddr[0], rom_enetaddr[1],
rom_enetaddr[2], rom_enetaddr[3],
rom_enetaddr[4], rom_enetaddr[5]) ;
debug("### Setting environment from ROM MAC address = \"%s\"\n",
* it from the value in the EEPROM. */
sprintf(ethaddr, "%pM", rom_enetaddr) ;
debug("### Setting environment from EEPROM MAC address = \"%s\"\n",
ethaddr);
setenv("ethaddr", ethaddr);
}
}
#endif /* DAVINCI_EMAC */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment