]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/pcs440ep/pcs440ep.c
boards: get mac address from env and move load_sernum_ethaddr() to board init
[karo-tx-uboot.git] / board / pcs440ep / pcs440ep.c
index 5fd3291e4a9c92c305a80454f26b4edae301ab15..27272142c17548ced2c65ed3d64baacb67604c2c 100644 (file)
@@ -182,14 +182,21 @@ int board_early_init_f(void)
 }
 
 #define EEPROM_LEN     256
-void load_sernum_ethaddr (void)
+static void load_ethaddr(void)
 {
+       int     ok_ethaddr, ok_eth1addr;
        int     ret;
        char    buf[EEPROM_LEN];
        char    mac[32];
        char    *use_eeprom;
        u16     checksumcrc16 = 0;
 
+       /* If the env is sane, then nothing for us to do */
+       ok_ethaddr = eth_getenv_enetaddr("ethaddr", buf);
+       ok_eth1addr = eth_getenv_enetaddr("eth1addr", buf);
+       if (ok_ethaddr && ok_eth1addr)
+               return;
+
        /* read the MACs from EEprom */
        status_led_set (0, STATUS_LED_ON);
        status_led_set (1, STATUS_LED_ON);
@@ -207,22 +214,10 @@ void load_sernum_ethaddr (void)
                        printf("%s: EEPROM Checksum not OK\n", __FUNCTION__);
                } else {
                        /* get the MACs */
-                       sprintf (mac, "%02x:%02x:%02x:%02x:%02x:%02x",
-                               buf[3],
-                               buf[4],
-                               buf[5],
-                               buf[6],
-                               buf[7],
-                               buf[8]);
-                       setenv ("ethaddr", (char *) mac);
-                       sprintf (mac, "%02x:%02x:%02x:%02x:%02x:%02x",
-                               buf[9],
-                               buf[10],
-                               buf[11],
-                               buf[12],
-                               buf[13],
-                               buf[14]);
-                       setenv ("eth1addr", (char *) mac);
+                       if (!ok_ethaddr)
+                               eth_setenv_enetaddr("ethaddr", &buf[3]);
+                       if (!ok_eth1addr)
+                               eth_setenv_enetaddr("eth1addr", &buf[9]);
                        return;
                }
        }
@@ -446,6 +441,8 @@ int misc_init_r (void)
        uint pbcr;
        int size_val = 0;
 
+       load_ethaddr();
+
        /* Re-do sizing to get full correct info */
        mtdcr(ebccfga, pb0cr);
        pbcr = mfdcr(ebccfgd);