aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/ar7/prom.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/ar7/prom.c')
-rw-r--r--arch/mips/ar7/prom.c78
1 files changed, 32 insertions, 46 deletions
diff --git a/arch/mips/ar7/prom.c b/arch/mips/ar7/prom.c
index c1fdd3682812..52385790e5c1 100644
--- a/arch/mips/ar7/prom.c
+++ b/arch/mips/ar7/prom.c
@@ -32,8 +32,8 @@
32#define MAX_ENTRY 80 32#define MAX_ENTRY 80
33 33
34struct env_var { 34struct env_var {
35 char *name; 35 char *name;
36 char *value; 36 char *value;
37}; 37};
38 38
39static struct env_var adam2_env[MAX_ENTRY]; 39static struct env_var adam2_env[MAX_ENTRY];
@@ -41,6 +41,7 @@ static struct env_var adam2_env[MAX_ENTRY];
41char *prom_getenv(const char *name) 41char *prom_getenv(const char *name)
42{ 42{
43 int i; 43 int i;
44
44 for (i = 0; (i < MAX_ENTRY) && adam2_env[i].name; i++) 45 for (i = 0; (i < MAX_ENTRY) && adam2_env[i].name; i++)
45 if (!strcmp(name, adam2_env[i].name)) 46 if (!strcmp(name, adam2_env[i].name))
46 return adam2_env[i].value; 47 return adam2_env[i].value;
@@ -49,65 +50,50 @@ char *prom_getenv(const char *name)
49} 50}
50EXPORT_SYMBOL(prom_getenv); 51EXPORT_SYMBOL(prom_getenv);
51 52
52char * __init prom_getcmdline(void)
53{
54 return &(arcs_cmdline[0]);
55}
56
57static void __init ar7_init_cmdline(int argc, char *argv[]) 53static void __init ar7_init_cmdline(int argc, char *argv[])
58{ 54{
59 char *cp; 55 int i;
60 int actr;
61
62 actr = 1; /* Always ignore argv[0] */
63 56
64 cp = &(arcs_cmdline[0]); 57 for (i = 1; i < argc; i++) {
65 while (actr < argc) { 58 strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE);
66 strcpy(cp, argv[actr]); 59 if (i < (argc - 1))
67 cp += strlen(argv[actr]); 60 strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
68 *cp++ = ' ';
69 actr++;
70 }
71 if (cp != &(arcs_cmdline[0])) {
72 /* get rid of trailing space */
73 --cp;
74 *cp = '\0';
75 } 61 }
76} 62}
77 63
78struct psbl_rec { 64struct psbl_rec {
79 u32 psbl_size; 65 u32 psbl_size;
80 u32 env_base; 66 u32 env_base;
81 u32 env_size; 67 u32 env_size;
82 u32 ffs_base; 68 u32 ffs_base;
83 u32 ffs_size; 69 u32 ffs_size;
84}; 70};
85 71
86static __initdata char psp_env_version[] = "TIENV0.8"; 72static __initdata char psp_env_version[] = "TIENV0.8";
87 73
88struct psp_env_chunk { 74struct psp_env_chunk {
89 u8 num; 75 u8 num;
90 u8 ctrl; 76 u8 ctrl;
91 u16 csum; 77 u16 csum;
92 u8 len; 78 u8 len;
93 char data[11]; 79 char data[11];
94} __attribute__ ((packed)); 80} __attribute__ ((packed));
95 81
96struct psp_var_map_entry { 82struct psp_var_map_entry {
97 u8 num; 83 u8 num;
98 char *value; 84 char *value;
99}; 85};
100 86
101static struct psp_var_map_entry psp_var_map[] = { 87static struct psp_var_map_entry psp_var_map[] = {
102 { 1, "cpufrequency" }, 88 { 1, "cpufrequency" },
103 { 2, "memsize" }, 89 { 2, "memsize" },
104 { 3, "flashsize" }, 90 { 3, "flashsize" },
105 { 4, "modetty0" }, 91 { 4, "modetty0" },
106 { 5, "modetty1" }, 92 { 5, "modetty1" },
107 { 8, "maca" }, 93 { 8, "maca" },
108 { 9, "macb" }, 94 { 9, "macb" },
109 { 28, "sysfrequency" }, 95 { 28, "sysfrequency" },
110 { 38, "mipsfrequency" }, 96 { 38, "mipsfrequency" },
111}; 97};
112 98
113/* 99/*
@@ -154,6 +140,7 @@ static char * __init lookup_psp_var_map(u8 num)
154static void __init add_adam2_var(char *name, char *value) 140static void __init add_adam2_var(char *name, char *value)
155{ 141{
156 int i; 142 int i;
143
157 for (i = 0; i < MAX_ENTRY; i++) { 144 for (i = 0; i < MAX_ENTRY; i++) {
158 if (!adam2_env[i].name) { 145 if (!adam2_env[i].name) {
159 adam2_env[i].name = name; 146 adam2_env[i].name = name;
@@ -216,7 +203,7 @@ static void __init console_config(void)
216 char parity = '\0', bits = '\0', flow = '\0'; 203 char parity = '\0', bits = '\0', flow = '\0';
217 char *s, *p; 204 char *s, *p;
218 205
219 if (strstr(prom_getcmdline(), "console=")) 206 if (strstr(arcs_cmdline, "console="))
220 return; 207 return;
221 208
222 s = prom_getenv("modetty0"); 209 s = prom_getenv("modetty0");
@@ -250,7 +237,7 @@ static void __init console_config(void)
250 else 237 else
251 sprintf(console_string, " console=ttyS0,%d%c%c", baud, parity, 238 sprintf(console_string, " console=ttyS0,%d%c%c", baud, parity,
252 bits); 239 bits);
253 strcat(prom_getcmdline(), console_string); 240 strlcat(arcs_cmdline, console_string, COMMAND_LINE_SIZE);
254#endif 241#endif
255} 242}
256 243
@@ -279,4 +266,3 @@ int prom_putchar(char c)
279 serial_out(UART_TX, c); 266 serial_out(UART_TX, c);
280 return 1; 267 return 1;
281} 268}
282