Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: ralink: adds prom and cmdline code

Add minimal code to handle commandlines.

Signed-off-by: John Crispin <blogic@openwrt.org>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/4892/

+69
+69
arch/mips/ralink/prom.c
··· 1 + /* 2 + * This program is free software; you can redistribute it and/or modify it 3 + * under the terms of the GNU General Public License version 2 as published 4 + * by the Free Software Foundation. 5 + * 6 + * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org> 7 + * Copyright (C) 2010 Joonas Lahtinen <joonas.lahtinen@gmail.com> 8 + * Copyright (C) 2013 John Crispin <blogic@openwrt.org> 9 + */ 10 + 11 + #include <linux/string.h> 12 + #include <linux/of_fdt.h> 13 + #include <linux/of_platform.h> 14 + 15 + #include <asm/bootinfo.h> 16 + #include <asm/addrspace.h> 17 + 18 + #include "common.h" 19 + 20 + struct ralink_soc_info soc_info; 21 + 22 + const char *get_system_type(void) 23 + { 24 + return soc_info.sys_type; 25 + } 26 + 27 + static __init void prom_init_cmdline(int argc, char **argv) 28 + { 29 + int i; 30 + 31 + pr_debug("prom: fw_arg0=%08x fw_arg1=%08x fw_arg2=%08x fw_arg3=%08x\n", 32 + (unsigned int)fw_arg0, (unsigned int)fw_arg1, 33 + (unsigned int)fw_arg2, (unsigned int)fw_arg3); 34 + 35 + argc = fw_arg0; 36 + argv = (char **) KSEG1ADDR(fw_arg1); 37 + 38 + if (!argv) { 39 + pr_debug("argv=%p is invalid, skipping\n", 40 + argv); 41 + return; 42 + } 43 + 44 + for (i = 0; i < argc; i++) { 45 + char *p = (char *) KSEG1ADDR(argv[i]); 46 + 47 + if (CPHYSADDR(p) && *p) { 48 + pr_debug("argv[%d]: %s\n", i, p); 49 + strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); 50 + strlcat(arcs_cmdline, p, sizeof(arcs_cmdline)); 51 + } 52 + } 53 + } 54 + 55 + void __init prom_init(void) 56 + { 57 + int argc; 58 + char **argv; 59 + 60 + prom_soc_init(&soc_info); 61 + 62 + pr_info("SoC Type: %s\n", get_system_type()); 63 + 64 + prom_init_cmdline(argc, argv); 65 + } 66 + 67 + void __init prom_free_prom_memory(void) 68 + { 69 + }