Hi Mike,
Mike Frysinger wrote: > Since the on-chip MAC does not have an eeprom or similar interface, force > all Blackfin boards that use this to define their own board_get_enetaddr() > function. > > Signed-off-by: Mike Frysinger <vap...@gentoo.org> > CC: Ben Warren <biggerbadder...@gmail.com> > --- > drivers/net/bfin_mac.c | 24 +++++++++++++++++++++++- > include/common.h | 2 +- > lib_blackfin/board.c | 31 ++----------------------------- > 3 files changed, 26 insertions(+), 31 deletions(-) > > diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c > index dddbb78..f074f17 100644 > --- a/drivers/net/bfin_mac.c > +++ b/drivers/net/bfin_mac.c > @@ -70,8 +70,9 @@ const ADI_DMA_CONFIG_REG txdmacfg = { > .b_FLOW = 7 /* large desc flow */ > }; > > -int bfin_EMAC_initialize(bd_t *bis) > +int bfin_EMAC_initialize(bd_t *bd) > { > + const char *ethaddr; > struct eth_device *dev; > dev = (struct eth_device *)malloc(sizeof(*dev)); > if (dev == NULL) > @@ -89,6 +90,27 @@ int bfin_EMAC_initialize(bd_t *bis) > > eth_register(dev); > > + ethaddr = getenv("ethaddr"); > +#ifndef CONFIG_ETHADDR > I know this was there before, but CONFIG_ETHADDR is kinda deprecated. We don't allow it in in-tree config files, so as far as I'm concerned we should pretend it doesn't exist. Boards should get their MAC address from an EEPROM or from the environment. > + if (ethaddr == NULL) { > + char nid[20]; > + board_get_enetaddr(bd->bi_enetaddr); > + sprintf(nid, "%02X:%02X:%02X:%02X:%02X:%02X", > How about snprintf() > + bd->bi_enetaddr[0], bd->bi_enetaddr[1], > + bd->bi_enetaddr[2], bd->bi_enetaddr[3], > + bd->bi_enetaddr[4], bd->bi_enetaddr[5]); > + setenv("ethaddr", nid); > + } else > +#endif > + { > + int i; > + char *e; > + for (i = 0; i < 6; ++i) { > + bd->bi_enetaddr[i] = simple_strtoul(ethaddr, &e, 16); > + ethaddr = (*e) ? e + 1 : e; > + } > + } > + > return 0; > } > > diff --git a/include/common.h b/include/common.h > index afee188..d4c361a 100644 > --- a/include/common.h > +++ b/include/common.h > @@ -354,7 +354,7 @@ void board_ether_init (void); > #if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_MBX) || \ > defined(CONFIG_IAD210) || defined(CONFIG_XPEDITE1K) || \ > defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) || \ > - defined(CONFIG_V38B) > + defined(CONFIG_V38B) || defined(CONFIG_BFIN_MAC) > void board_get_enetaddr (uchar *addr); > #endif > > diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c > index 01b71d4..c1fa61b 100644 > --- a/lib_blackfin/board.c > +++ b/lib_blackfin/board.c > @@ -378,35 +378,6 @@ void board_init_r(gd_t * id, ulong dest_addr) > /* relocate environment function pointers etc. */ > env_relocate(); > > -#ifdef CONFIG_CMD_NET > - /* board MAC address */ > - s = getenv("ethaddr"); > - if (s == NULL) { > -# ifndef CONFIG_ETHADDR > -# if 0 > - if (!board_get_enetaddr(bd->bi_enetaddr)) { > - char nid[20]; > - sprintf(nid, "%02X:%02X:%02X:%02X:%02X:%02X", > - bd->bi_enetaddr[0], bd->bi_enetaddr[1], > - bd->bi_enetaddr[2], bd->bi_enetaddr[3], > - bd->bi_enetaddr[4], bd->bi_enetaddr[5]); > - setenv("ethaddr", nid); > - } > -# endif > -# endif > - } else { > - int i; > - char *e; > - for (i = 0; i < 6; ++i) { > - bd->bi_enetaddr[i] = simple_strtoul(s, &e, 16); > - s = (*e) ? e + 1 : e; > - } > - } > - > - /* IP Address */ > - bd->bi_ip_addr = getenv_IPaddr("ipaddr"); > -#endif > - > /* Initialize devices */ > devices_init(); > jumptable_init(); > @@ -433,6 +404,8 @@ void board_init_r(gd_t * id, ulong dest_addr) > #endif > > #ifdef CONFIG_CMD_NET > + /* IP Address */ > + bd->bi_ip_addr = getenv_IPaddr("ipaddr"); > printf("Net: "); > eth_initialize(gd->bd); > if (getenv("ethaddr")) > regards, Ben _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot