load board's mac address on Compex devices

SVN-Revision: 12302
This commit is contained in:
Gabor Juhos 2008-08-13 19:52:25 +00:00
parent 2e71a90347
commit a45f225e73
3 changed files with 27 additions and 1 deletions

View File

@ -11,15 +11,19 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/gpio.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <linux/gpio.h>
#include <asm/mach-adm5120/adm5120_info.h> #include <asm/mach-adm5120/adm5120_info.h>
#include <asm/mach-adm5120/adm5120_board.h> #include <asm/mach-adm5120/adm5120_board.h>
#include <asm/mach-adm5120/adm5120_platform.h> #include <asm/mach-adm5120/adm5120_platform.h>
#include <asm/mach-adm5120/adm5120_irq.h> #include <asm/mach-adm5120/adm5120_irq.h>
#include <asm/mach-adm5120/prom/myloader.h>
#include "compex.h"
#define COMPEX_GPIO_DEV_MASK (1 << ADM5120_GPIO_PIN5) #define COMPEX_GPIO_DEV_MASK (1 << ADM5120_GPIO_PIN5)
static void switch_bank_gpio5(unsigned bank) static void switch_bank_gpio5(unsigned bank)
@ -34,6 +38,18 @@ static void switch_bank_gpio5(unsigned bank)
} }
} }
void __init compex_mac_setup(void)
{
int i, j;
if (!myloader_present())
return;
for (i = 0; i < 6; i++)
for (j = 0; j < 6; j++)
adm5120_eth_macs[i][j] = myloader_info.macs[i][j];
}
void __init compex_generic_setup(void) void __init compex_generic_setup(void)
{ {
gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */ gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */
@ -43,4 +59,6 @@ void __init compex_generic_setup(void)
adm5120_add_device_flash(0); adm5120_add_device_flash(0);
adm5120_add_device_gpio(COMPEX_GPIO_DEV_MASK); adm5120_add_device_gpio(COMPEX_GPIO_DEV_MASK);
compex_mac_setup();
} }

View File

@ -36,6 +36,7 @@ int __init myloader_present(void)
struct mylo_system_params *sysp; struct mylo_system_params *sysp;
struct mylo_board_params *boardp; struct mylo_board_params *boardp;
struct mylo_partition_table *parts; struct mylo_partition_table *parts;
int i;
if (myloader_found) if (myloader_found)
goto out; goto out;
@ -55,6 +56,12 @@ int __init myloader_present(void)
myloader_info.svid = le32_to_cpu(sysp->svid); myloader_info.svid = le32_to_cpu(sysp->svid);
myloader_info.sdid = le32_to_cpu(sysp->sdid); myloader_info.sdid = le32_to_cpu(sysp->sdid);
for (i = 0; i < MYLO_ETHADDR_COUNT; i++) {
int j;
for (j = 0; j < 6; j++)
myloader_info.macs[i][j] = boardp->addr[i].mac[j];
}
myloader_found = 1; myloader_found = 1;
out: out:

View File

@ -170,6 +170,7 @@ struct myloader_info {
u32 did; u32 did;
u32 svid; u32 svid;
u32 sdid; u32 sdid;
uint8_t macs[MYLO_ETHADDR_COUNT][6];
}; };
extern struct myloader_info myloader_info; extern struct myloader_info myloader_info;