#define RB153_GPIO_CF_RDY ADM5120_GPIO_P1L1
#define RB153_GPIO_CF_WT ADM5120_GPIO_P0L0
-extern struct rb_hard_settings rb_hs;
-
/*--------------------------------------------------------------------------*/
static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = {
{
int i, j;
- for (i = 0; i < rb_hs.mac_count; i++) {
- for (j = 0; j < RB_MAC_SIZE; j++)
- adm5120_eth_macs[i][j] = rb_hs.macs[i][j];
+ if (!rb_hs.mac_base)
+ return;
+
+ 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;
}
}
#include "prom_read.h"
struct rb_hard_settings rb_hs;
-EXPORT_SYMBOL(rb_hs);
static int rb_found;
static int __init routerboot_load_hs(u8 *buf, u16 buflen)
rb_hs.mac_count = prom_read_le32(buf);
break;
case RB_ID_MAC_ADDRESS_PACK:
- rb_hs.mac_count = len/RB_MAC_SIZE;
- if (rb_hs.mac_count > RB_MAX_MAC_COUNT)
- 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;
- }
+ if ((len / RB_MAC_SIZE) > 0)
+ rb_hs.mac_base = buf;
break;
}
#define _ROUTERBOOT_H
#define RB_MAC_SIZE 6
-#define RB_MAX_MAC_COUNT 6
struct rb_bios_settings {
u32 hs_offs; /* hard settings offset */
char *bios_ver; /* BIOS version */
u32 mem_size; /* memory size in bytes */
u32 mac_count; /* number of mac addresses */
- u8 macs[RB_MAC_SIZE][RB_MAX_MAC_COUNT]; /* mac addresses */
+ u8 *mac_base; /* mac address base */
};
/*
extern int routerboot_present(void) __init;
extern char *routerboot_get_boardname(void);
+extern struct rb_hard_settings rb_hs;
+
#endif /* _ROUTERBOOT_H */