--- a/arch/mips/ath79/prom.c +++ b/arch/mips/ath79/prom.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "common.h" @@ -32,10 +33,44 @@ static void __init ath79_prom_append_cmd strlcat(arcs_cmdline, ath79_cmdline_buf, sizeof(arcs_cmdline)); } +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; +} + void __init prom_init(void) { const char *env; + if (ath79_prom_init_myloader()) + return; + fw_init_cmdline(); env = fw_getenv("ethaddr");