From: Gabor Juhos Date: Wed, 13 Aug 2008 19:52:25 +0000 (+0000) Subject: [adm5120] load board's mac address on Compex devices X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=commitdiff_plain;h=a70f18326b7680bad61f07190972dcb271f829af;hp=57cdb4fc43700fcdcc3eb1d6ae3c9784de80b51c [adm5120] load board's mac address on Compex devices SVN-Revision: 12302 --- diff --git a/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/compex/compex.c b/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/compex/compex.c index adc765f5e0..10120d6226 100644 --- a/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/compex/compex.c +++ b/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/compex/compex.c @@ -11,15 +11,19 @@ #include #include +#include #include -#include #include #include #include #include +#include + +#include "compex.h" + #define COMPEX_GPIO_DEV_MASK (1 << ADM5120_GPIO_PIN5) 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) { 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_gpio(COMPEX_GPIO_DEV_MASK); + + compex_mac_setup(); } diff --git a/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/prom/myloader.c b/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/prom/myloader.c index 737c15dea2..939422681b 100644 --- a/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/prom/myloader.c +++ b/target/linux/adm5120/files-2.6.26/arch/mips/adm5120/prom/myloader.c @@ -36,6 +36,7 @@ int __init myloader_present(void) struct mylo_system_params *sysp; struct mylo_board_params *boardp; struct mylo_partition_table *parts; + int i; if (myloader_found) goto out; @@ -55,6 +56,12 @@ int __init myloader_present(void) myloader_info.svid = le32_to_cpu(sysp->svid); 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; out: diff --git a/target/linux/adm5120/files-2.6.26/include/asm-mips/mach-adm5120/prom/myloader.h b/target/linux/adm5120/files-2.6.26/include/asm-mips/mach-adm5120/prom/myloader.h index 2c40aa4056..ea8db81ed3 100644 --- a/target/linux/adm5120/files-2.6.26/include/asm-mips/mach-adm5120/prom/myloader.h +++ b/target/linux/adm5120/files-2.6.26/include/asm-mips/mach-adm5120/prom/myloader.h @@ -170,6 +170,7 @@ struct myloader_info { u32 did; u32 svid; u32 sdid; + uint8_t macs[MYLO_ETHADDR_COUNT][6]; }; extern struct myloader_info myloader_info;