From 641e0925e4bf7adf8e2e04e3ad81b840fd71cadd Mon Sep 17 00:00:00 2001 From: David Brownell Date: Sun, 12 Apr 2009 22:49:26 -0700 Subject: 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 Acked-by: Ben Warren --- board/davinci/common/misc.c | 34 +++++++++++++++------------------- 1 file 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 #include +#include #include 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 */ -- cgit v1.1