fix mac address setup on RouterBOARDs

SVN-Revision: 9713
This commit is contained in:
Gabor Juhos 2007-12-12 08:43:41 +00:00
parent a3d681bba5
commit a6a8cb6a55
3 changed files with 12 additions and 17 deletions

View file

@ -64,8 +64,6 @@
#define RB153_GPIO_CF_RDY ADM5120_GPIO_P1L1 #define RB153_GPIO_CF_RDY ADM5120_GPIO_P1L1
#define RB153_GPIO_CF_WT ADM5120_GPIO_P0L0 #define RB153_GPIO_CF_WT ADM5120_GPIO_P0L0
extern struct rb_hard_settings rb_hs;
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = { static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = {
@ -219,9 +217,13 @@ static void __init rb1xx_mac_setup(void)
{ {
int i, j; int i, j;
for (i = 0; i < rb_hs.mac_count; i++) { if (!rb_hs.mac_base)
for (j = 0; j < RB_MAC_SIZE; j++) return;
adm5120_eth_macs[i][j] = rb_hs.macs[i][j];
for (i = 0; i < 6; i++) {
for (j = 0; j < 5; j++)
adm5120_eth_macs[i][j] = rb_hs.mac_base[j];
adm5120_eth_macs[i][5] = rb_hs.mac_base[5]+i;
} }
} }

View file

@ -37,7 +37,6 @@
#include "prom_read.h" #include "prom_read.h"
struct rb_hard_settings rb_hs; struct rb_hard_settings rb_hs;
EXPORT_SYMBOL(rb_hs);
static int rb_found; static int rb_found;
static int __init routerboot_load_hs(u8 *buf, u16 buflen) static int __init routerboot_load_hs(u8 *buf, u16 buflen)
@ -86,15 +85,8 @@ static int __init routerboot_load_hs(u8 *buf, u16 buflen)
rb_hs.mac_count = prom_read_le32(buf); rb_hs.mac_count = prom_read_le32(buf);
break; break;
case RB_ID_MAC_ADDRESS_PACK: case RB_ID_MAC_ADDRESS_PACK:
rb_hs.mac_count = len/RB_MAC_SIZE; if ((len / RB_MAC_SIZE) > 0)
if (rb_hs.mac_count > RB_MAX_MAC_COUNT) rb_hs.mac_base = buf;
rb_hs.mac_count = RB_MAX_MAC_COUNT;
mac = buf;
for (i = 0; i < rb_hs.mac_count; i++) {
for (j = 0; j < RB_MAC_SIZE; j++)
rb_hs.macs[i][j] = mac[j];
mac += RB_MAC_SIZE;
}
break; break;
} }

View file

@ -26,7 +26,6 @@
#define _ROUTERBOOT_H #define _ROUTERBOOT_H
#define RB_MAC_SIZE 6 #define RB_MAC_SIZE 6
#define RB_MAX_MAC_COUNT 6
struct rb_bios_settings { struct rb_bios_settings {
u32 hs_offs; /* hard settings offset */ u32 hs_offs; /* hard settings offset */
@ -41,7 +40,7 @@ struct rb_hard_settings {
char *bios_ver; /* BIOS version */ char *bios_ver; /* BIOS version */
u32 mem_size; /* memory size in bytes */ u32 mem_size; /* memory size in bytes */
u32 mac_count; /* number of mac addresses */ u32 mac_count; /* number of mac addresses */
u8 macs[RB_MAC_SIZE][RB_MAX_MAC_COUNT]; /* mac addresses */ u8 *mac_base; /* mac address base */
}; };
/* /*
@ -134,4 +133,6 @@ struct rb_hard_settings {
extern int routerboot_present(void) __init; extern int routerboot_present(void) __init;
extern char *routerboot_get_boardname(void); extern char *routerboot_get_boardname(void);
extern struct rb_hard_settings rb_hs;
#endif /* _ROUTERBOOT_H */ #endif /* _ROUTERBOOT_H */