fix mac address setup on RouterBOARDs
SVN-Revision: 9713
This commit is contained in:
		@@ -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;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 */
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user