--- a/arch/mips/ath79/prom.c +++ b/arch/mips/ath79/prom.c @@ -22,10 +22,39 @@ #include "common.h" +static char ath79_cmdline_buf[COMMAND_LINE_SIZE] __initdata; + +static void __init ath79_prom_append_cmdline(const char *name, + const char *value) +{ + snprintf(ath79_cmdline_buf, sizeof(ath79_cmdline_buf), + " %s=%s", name, value); + strlcat(arcs_cmdline, ath79_cmdline_buf, sizeof(arcs_cmdline)); +} + void __init prom_init(void) { + const char *env; + fw_init_cmdline(); + env = fw_getenv("ethaddr"); + if (env) + ath79_prom_append_cmdline("ethaddr", env); + + env = fw_getenv("board"); + if (env) { + /* Workaround for buggy bootloaders */ + if (strcmp(env, "RouterStation") == 0 || + strcmp(env, "Ubiquiti AR71xx-based board") == 0) + env = "UBNT-RS"; + + if (strcmp(env, "RouterStation PRO") == 0) + env = "UBNT-RSPRO"; + + ath79_prom_append_cmdline("board", env); + } + #ifdef CONFIG_BLK_DEV_INITRD /* Read the initrd address from the firmware environment */ initrd_start = fw_getenvl("initrd_start");