--- a/arch/mips/ath79/prom.c +++ b/arch/mips/ath79/prom.c @@ -16,6 +16,7 @@ #include #include +#include #include "common.h" @@ -69,6 +70,37 @@ static const char * __init ath79_prom_fi return ret; } +static int __init ath79_prom_init_myloader(void) +{ + struct myloader_info *mylo; + char mac_buf[32]; + unsigned char *mac; + + mylo = myloader_get_info(); + if (!mylo) + return 0; + + switch (mylo->did) { + case DEVID_COMPEX_WP543: + ath79_prom_append_cmdline("board", "WP543"); + break; + case DEVID_COMPEX_WPE72: + ath79_prom_append_cmdline("board", "WPE72"); + break; + default: + pr_warn("prom: unknown device id: %x\n", mylo->did); + return 0; + } + + mac = mylo->macs[0]; + snprintf(mac_buf, sizeof(mac_buf), "%02x:%02x:%02x:%02x:%02x:%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + ath79_prom_append_cmdline("ethaddr", mac_buf); + + return 1; +} + static __init void ath79_prom_init_cmdline(int argc, char **argv) { int i; @@ -88,6 +120,9 @@ void __init prom_init(void) const char *env; char **envp; + if (ath79_prom_init_myloader()) + return; + ath79_prom_init_cmdline(fw_arg0, (char **)fw_arg1); envp = (char **)fw_arg2;