Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  *
0004  *  Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
0005  *  Copyright (C) 2010 Joonas Lahtinen <joonas.lahtinen@gmail.com>
0006  *  Copyright (C) 2013 John Crispin <john@phrozen.org>
0007  */
0008 
0009 #include <linux/string.h>
0010 #include <linux/of_fdt.h>
0011 #include <linux/of_platform.h>
0012 
0013 #include <asm/bootinfo.h>
0014 #include <asm/addrspace.h>
0015 
0016 #include <asm/mach-ralink/ralink_regs.h>
0017 
0018 #include "common.h"
0019 
0020 struct ralink_soc_info soc_info;
0021 
0022 enum ralink_soc_type ralink_soc;
0023 EXPORT_SYMBOL_GPL(ralink_soc);
0024 
0025 const char *get_system_type(void)
0026 {
0027     return soc_info.sys_type;
0028 }
0029 
0030 static __init void prom_init_cmdline(void)
0031 {
0032     int argc;
0033     char **argv;
0034     int i;
0035 
0036     pr_debug("prom: fw_arg0=%08x fw_arg1=%08x fw_arg2=%08x fw_arg3=%08x\n",
0037            (unsigned int)fw_arg0, (unsigned int)fw_arg1,
0038            (unsigned int)fw_arg2, (unsigned int)fw_arg3);
0039 
0040     argc = fw_arg0;
0041     argv = (char **) KSEG1ADDR(fw_arg1);
0042 
0043     if (!argv) {
0044         pr_debug("argv=%p is invalid, skipping\n",
0045                argv);
0046         return;
0047     }
0048 
0049     for (i = 0; i < argc; i++) {
0050         char *p = (char *) KSEG1ADDR(argv[i]);
0051 
0052         if (CPHYSADDR(p) && *p) {
0053             pr_debug("argv[%d]: %s\n", i, p);
0054             strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline));
0055             strlcat(arcs_cmdline, p, sizeof(arcs_cmdline));
0056         }
0057     }
0058 }
0059 
0060 void __init prom_init(void)
0061 {
0062     prom_soc_init(&soc_info);
0063 
0064     pr_info("SoC Type: %s\n", get_system_type());
0065 
0066     prom_init_cmdline();
0067 }