From 4bf320faced13536aa49b203035e2bc12e8a44ee Mon Sep 17 00:00:00 2001 From: juhosg Date: Wed, 13 Aug 2008 19:52:25 +0000 Subject: [adm5120] load board's mac address on Compex devices git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12302 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files-2.6.26/arch/mips/adm5120/compex/compex.c | 20 +++++++++++++++++++- .../files-2.6.26/arch/mips/adm5120/prom/myloader.c | 7 +++++++ .../include/asm-mips/mach-adm5120/prom/myloader.h | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) (limited to 'target') 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 adc765f5e..10120d622 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 737c15dea..939422681 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 2c40aa405..ea8db81ed 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; -- cgit v1.2.3