]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - cpu/ixp/npe/npe.c
npe: get mac address from environment
[karo-tx-uboot.git] / cpu / ixp / npe / npe.c
index 03e3bf7c168077d1e7c101227fb5730454cfab34..2e6868960a0172151013633e56664c1fcfa27932 100644 (file)
@@ -565,25 +565,19 @@ int npe_initialize(bd_t * bis)
        struct eth_device *dev;
        int eth_num = 0;
        struct npe *p_npe = NULL;
+       uchar enetaddr[6];
 
        for (eth_num = 0; eth_num < CONFIG_SYS_NPE_NUMS; eth_num++) {
 
                /* See if we can actually bring up the interface, otherwise, skip it */
-               switch (eth_num) {
-               default:                /* fall through */
-               case 0:
-                       if (memcmp (bis->bi_enetaddr, "\0\0\0\0\0\0", 6) == 0) {
-                               continue;
-                       }
-                       break;
 #ifdef CONFIG_HAS_ETH1
-               case 1:
-                       if (memcmp (bis->bi_enet1addr, "\0\0\0\0\0\0", 6) == 0) {
+               if (eth_num == 1) {
+                       if (!eth_getenv_enetaddr("eth1addr", enetaddr))
                                continue;
-                       }
-                       break;
+               } else
 #endif
-               }
+                       if (!eth_getenv_enetaddr("ethaddr", enetaddr))
+                               continue;
 
                /* Allocate device structure */
                dev = (struct eth_device *)malloc(sizeof(*dev));
@@ -603,22 +597,14 @@ int npe_initialize(bd_t * bis)
                }
                memset(p_npe, 0, sizeof(struct npe));
 
-               switch (eth_num) {
-               default:                /* fall through */
-               case 0:
-                       memcpy(dev->enetaddr, bis->bi_enetaddr, 6);
-                       p_npe->eth_id = 0;
-                       p_npe->phy_no = CONFIG_PHY_ADDR;
-                       break;
-
+               p_npe->eth_id = eth_num;
+               memcpy(dev->enetaddr, enetaddr, 6);
 #ifdef CONFIG_HAS_ETH1
-               case 1:
-                       memcpy(dev->enetaddr, bis->bi_enet1addr, 6);
-                       p_npe->eth_id = 1;
+               if (eth_num == 1)
                        p_npe->phy_no = CONFIG_PHY1_ADDR;
-                       break;
+               else
 #endif
-               }
+                       p_npe->phy_no = CONFIG_PHY_ADDR;
 
                sprintf(dev->name, "NPE%d", eth_num);
                dev->priv = (void *)p_npe;