]> git.sur5r.net Git - u-boot/commitdiff
DaVinci Ethernet cleanup
authorDavid Brownell <dbrownell@users.sourceforge.net>
Mon, 13 Apr 2009 05:49:26 +0000 (22:49 -0700)
committerWolfgang Denk <wd@denx.de>
Fri, 12 Jun 2009 18:39:47 +0000 (20:39 +0200)
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>
board/davinci/common/misc.c

index be709bf81e9046c74331911644f6c8a37c5687b7..cfab729bbbcee19464e0b857879793e22ea002b3 100644 (file)
@@ -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 */