diff options
Diffstat (limited to 'target/linux/ar71xx/patches-3.2/506-MIPS-ath79-prom-parse-redboot-args.patch')
-rw-r--r-- | target/linux/ar71xx/patches-3.2/506-MIPS-ath79-prom-parse-redboot-args.patch | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/target/linux/ar71xx/patches-3.2/506-MIPS-ath79-prom-parse-redboot-args.patch b/target/linux/ar71xx/patches-3.2/506-MIPS-ath79-prom-parse-redboot-args.patch deleted file mode 100644 index aab959b900..0000000000 --- a/target/linux/ar71xx/patches-3.2/506-MIPS-ath79-prom-parse-redboot-args.patch +++ /dev/null @@ -1,86 +0,0 @@ ---- a/arch/mips/ath79/prom.c -+++ b/arch/mips/ath79/prom.c -@@ -19,6 +19,8 @@ - - #include "common.h" - -+static char ath79_cmdline_buf[COMMAND_LINE_SIZE] __initdata; -+ - static inline int is_valid_ram_addr(void *addr) - { - if (((u32) addr > KSEG0) && -@@ -32,6 +34,41 @@ static inline int is_valid_ram_addr(void - return 0; - } - -+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)); -+} -+ -+static const char * __init ath79_prom_find_env(char **envp, const char *name) -+{ -+ const char *ret = NULL; -+ int len; -+ char **p; -+ -+ if (!is_valid_ram_addr(envp)) -+ return NULL; -+ -+ len = strlen(name); -+ for (p = envp; is_valid_ram_addr(*p); p++) { -+ if (strncmp(name, *p, len) == 0 && (*p)[len] == '=') { -+ ret = *p + len + 1; -+ break; -+ } -+ -+ /* RedBoot env comes in pointer pairs - key, value */ -+ if (strncmp(name, *p, len) == 0 && (*p)[len] == 0) -+ if (is_valid_ram_addr(*(++p))) { -+ ret = *p; -+ break; -+ } -+ } -+ -+ return ret; -+} -+ - static __init void ath79_prom_init_cmdline(int argc, char **argv) - { - int i; -@@ -48,7 +85,32 @@ static __init void ath79_prom_init_cmdli - - void __init prom_init(void) - { -+ const char *env; -+ char **envp; -+ - ath79_prom_init_cmdline(fw_arg0, (char **)fw_arg1); -+ -+ envp = (char **)fw_arg2; -+ if (!strstr(arcs_cmdline, "ethaddr=")) { -+ env = ath79_prom_find_env(envp, "ethaddr"); -+ if (env) -+ ath79_prom_append_cmdline("ethaddr", env); -+ } -+ -+ if (!strstr(arcs_cmdline, "board=")) { -+ env = ath79_prom_find_env(envp, "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); -+ } -+ } - } - - void __init prom_free_prom_memory(void) |