diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-04-12 22:49:26 -0700 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-06-12 20:39:47 +0200 |
commit | 641e0925e4bf7adf8e2e04e3ad81b840fd71cadd (patch) | |
tree | 2ced1e5c623193212fb8204890ac9524ef5a866f /board | |
parent | c790b04d230363d03939dc008bcc80f3ba4de1ae (diff) | |
download | u-boot-imx-641e0925e4bf7adf8e2e04e3ad81b840fd71cadd.zip u-boot-imx-641e0925e4bf7adf8e2e04e3ad81b840fd71cadd.tar.gz u-boot-imx-641e0925e4bf7adf8e2e04e3ad81b840fd71cadd.tar.bz2 |
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: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Ben Warren <biggerbadderben@gmail.com>
Diffstat (limited to 'board')
-rw-r--r-- | board/davinci/common/misc.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/board/davinci/common/misc.c b/board/davinci/common/misc.c index be709bf..cfab729 100644 --- a/board/davinci/common/misc.c +++ b/board/davinci/common/misc.c @@ -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 */ |