
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 vapier@gentoo.org CC: Ben Warren biggerbadderben@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