board/BuR/common: try to setup cpsw mac-address from the devicetree
authorHannes Petermaier <oe5hpm@oevsv.at>
Tue, 3 Feb 2015 12:22:27 +0000 (13:22 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 6 Mar 2015 01:13:17 +0000 (20:13 -0500)
since we have a dtb blob programmed on the board we try to setup the cpsw
interface with the programmed mac.
If this method fails, we fall back to the device-fuses.

Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at>
board/BuR/common/common.c

index 7d0e05ce7ce35eb2afb42b482d5665c40f59c021..18e1520b383c9a05fb773fb1c3cf775b1c9f59a4 100644 (file)
@@ -591,9 +591,9 @@ static struct cpsw_platform_data cpsw_data = {
 int board_eth_init(bd_t *bis)
 {
        int rv = 0;
-       uint8_t mac_addr[6];
+       char mac_addr[6];
+       const char *mac = 0;
        uint32_t mac_hi, mac_lo;
-
        /* try reading mac address from efuse */
        mac_lo = readl(&cdev->macid0l);
        mac_hi = readl(&cdev->macid0h);
@@ -607,14 +607,19 @@ int board_eth_init(bd_t *bis)
 #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
        (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
        if (!getenv("ethaddr")) {
-               printf("<ethaddr> not set. Validating first E-fuse MAC ... ");
-
-               if (is_valid_ether_addr(mac_addr)) {
-                       printf("using: %02X:%02X:%02X:%02X:%02X:%02X.\n",
-                              mac_addr[0], mac_addr[1], mac_addr[2],
-                              mac_addr[3], mac_addr[4], mac_addr[5]
-                               );
-                       eth_setenv_enetaddr("ethaddr", mac_addr);
+               #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_USE_FDT)
+               printf("<ethaddr> not set. trying DTB ... ");
+               mac = dtbmacaddr(0);
+               #endif
+               if (!mac) {
+                       printf("<ethaddr> not set. validating E-fuse MAC ... ");
+                       if (is_valid_ether_addr((const u8 *)mac_addr))
+                               mac = (const char *)mac_addr;
+               }
+
+               if (mac) {
+                       printf("using: %pM on ", mac);
+                       eth_setenv_enetaddr("ethaddr", (const u8 *)mac);
                }
        }
        writel(MII_MODE_ENABLE, &cdev->miisel);