
Hi,
the board I'm currently working on has an ASIX AX88796 NE2000 clone but no EEPROM attached to it. Hence, the get_prom() routine returns zeros only so the system won't work.
This patch takes the MAC address given by CONFIG_ETHADDR and translates it to numeric values. This could probably go to some other, more generic place, but I didn't find any.
Best regards, Daniel
diff --git a/drivers/net/ne2000_base.c b/drivers/net/ne2000_base.c index f93f932..f8480a3 100644 --- a/drivers/net/ne2000_base.c +++ b/drivers/net/ne2000_base.c @@ -693,6 +693,7 @@ int eth_init(bd_t *bd) {
nic.base = (u8 *) CONFIG_DRIVER_NE2000_BASE;
+#ifndef CONFIG_ETHADDR r = get_prom(dev_addr, nic.base); if (!r) return -1; @@ -703,6 +704,20 @@ int eth_init(bd_t *bd) { dev_addr[4], dev_addr[5]) ; PRINTK("Set environment from HW MAC addr = "%s"\n", ethaddr); setenv ("ethaddr", ethaddr); +#else /* CONFIG_ETHADDR */ +#define STR(X) #X +#define XSTR(X) STR(X) + strncpy(ethaddr, XSTR(CONFIG_ETHADDR), sizeof(ethaddr)); + + /* replace all colons by NULL characters */ + for (r = 0; r < strlen(ethaddr); r++) + if (ethaddr[r] == ':') + ethaddr[r] = '\0'; + + /* convert the string notation */ + for (r = 0; r < 6; r++) + dev_addr[r] = simple_strtol(ethaddr + (r * 3), NULL, 16); +#endif
nic.data = nic.base + DP_DATA; nic.tx_buf1 = START_PG;