diff options
author | 2025-03-08 22:04:20 +0800 | |
---|---|---|
committer | 2025-03-08 22:04:20 +0800 | |
commit | a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch) | |
tree | 84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /arch/mips/ralink/prom.c | |
download | ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip |
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'arch/mips/ralink/prom.c')
-rw-r--r-- | arch/mips/ralink/prom.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/arch/mips/ralink/prom.c b/arch/mips/ralink/prom.c new file mode 100644 index 000000000..02e7878dc --- /dev/null +++ b/arch/mips/ralink/prom.c | |||
@@ -0,0 +1,72 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0-only | ||
2 | /* | ||
3 | * | ||
4 | * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org> | ||
5 | * Copyright (C) 2010 Joonas Lahtinen <joonas.lahtinen@gmail.com> | ||
6 | * Copyright (C) 2013 John Crispin <john@phrozen.org> | ||
7 | */ | ||
8 | |||
9 | #include <linux/string.h> | ||
10 | #include <linux/of_fdt.h> | ||
11 | #include <linux/of_platform.h> | ||
12 | |||
13 | #include <asm/bootinfo.h> | ||
14 | #include <asm/addrspace.h> | ||
15 | |||
16 | #include <asm/mach-ralink/ralink_regs.h> | ||
17 | |||
18 | #include "common.h" | ||
19 | |||
20 | struct ralink_soc_info soc_info; | ||
21 | struct rt2880_pmx_group *rt2880_pinmux_data = NULL; | ||
22 | |||
23 | enum ralink_soc_type ralink_soc; | ||
24 | EXPORT_SYMBOL_GPL(ralink_soc); | ||
25 | |||
26 | const char *get_system_type(void) | ||
27 | { | ||
28 | return soc_info.sys_type; | ||
29 | } | ||
30 | |||
31 | static __init void prom_init_cmdline(void) | ||
32 | { | ||
33 | int argc; | ||
34 | char **argv; | ||
35 | int i; | ||
36 | |||
37 | pr_debug("prom: fw_arg0=%08x fw_arg1=%08x fw_arg2=%08x fw_arg3=%08x\n", | ||
38 | (unsigned int)fw_arg0, (unsigned int)fw_arg1, | ||
39 | (unsigned int)fw_arg2, (unsigned int)fw_arg3); | ||
40 | |||
41 | argc = fw_arg0; | ||
42 | argv = (char **) KSEG1ADDR(fw_arg1); | ||
43 | |||
44 | if (!argv) { | ||
45 | pr_debug("argv=%p is invalid, skipping\n", | ||
46 | argv); | ||
47 | return; | ||
48 | } | ||
49 | |||
50 | for (i = 0; i < argc; i++) { | ||
51 | char *p = (char *) KSEG1ADDR(argv[i]); | ||
52 | |||
53 | if (CPHYSADDR(p) && *p) { | ||
54 | pr_debug("argv[%d]: %s\n", i, p); | ||
55 | strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline)); | ||
56 | strlcat(arcs_cmdline, p, sizeof(arcs_cmdline)); | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | |||
61 | void __init prom_init(void) | ||
62 | { | ||
63 | prom_soc_init(&soc_info); | ||
64 | |||
65 | pr_info("SoC Type: %s\n", get_system_type()); | ||
66 | |||
67 | prom_init_cmdline(); | ||
68 | } | ||
69 | |||
70 | void __init prom_free_prom_memory(void) | ||
71 | { | ||
72 | } | ||