summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-02-11 19:19:54 -0500
committerWolfgang Denk <wd@denx.de>2009-03-20 22:39:11 +0100
commit740e8ba7d475c49c1b76058e1bf354e376b5c4e0 (patch)
tree03c70ab10f9f272c252bf9b72e94b84f82fb4156
parent6bacfa6a8e9b264d37c1262fc1f3e948d1feab81 (diff)
downloadu-boot-imx-740e8ba7d475c49c1b76058e1bf354e376b5c4e0.zip
u-boot-imx-740e8ba7d475c49c1b76058e1bf354e376b5c4e0.tar.gz
u-boot-imx-740e8ba7d475c49c1b76058e1bf354e376b5c4e0.tar.bz2
npe: get mac address from environment
The environment is the canonical storage location of the mac address, so we're killing off the global data location and moving everything to querying the env directly. The resulting code can also be simplified even further. Signed-off-by: Mike Frysinger <vapier@gentoo.org> CC: Stefan Roese <sr@denx.de> CC: Ben Warren <biggerbadderben@gmail.com>
-rw-r--r--cpu/ixp/npe/npe.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/cpu/ixp/npe/npe.c b/cpu/ixp/npe/npe.c
index 03e3bf7..2e68689 100644
--- a/cpu/ixp/npe/npe.c
+++ b/cpu/ixp/npe/npe.c
@@ -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;