|
@@ -23,13 +23,12 @@
|
|
|
#include <linux/string.h>
|
|
|
#include <linux/kernel.h>
|
|
|
|
|
|
-#include <asm/bootinfo.h>
|
|
|
#include <asm/gt64120.h>
|
|
|
#include <asm/io.h>
|
|
|
#include <asm/cacheflush.h>
|
|
|
#include <asm/smp-ops.h>
|
|
|
#include <asm/traps.h>
|
|
|
-
|
|
|
+#include <asm/fw/fw.h>
|
|
|
#include <asm/gcmpregs.h>
|
|
|
#include <asm/mips-boards/prom.h>
|
|
|
#include <asm/mips-boards/generic.h>
|
|
@@ -38,15 +37,6 @@
|
|
|
|
|
|
#include <asm/mips-boards/malta.h>
|
|
|
|
|
|
-int prom_argc;
|
|
|
-int *_prom_argv, *_prom_envp;
|
|
|
-
|
|
|
-/*
|
|
|
- * YAMON (32-bit PROM) pass arguments and environment as 32-bit pointer.
|
|
|
- * This macro take care of sign extension, if running in 64-bit mode.
|
|
|
- */
|
|
|
-#define prom_envp(index) ((char *)(long)_prom_envp[(index)])
|
|
|
-
|
|
|
int init_debug;
|
|
|
|
|
|
static int mips_revision_corid;
|
|
@@ -62,74 +52,6 @@ unsigned long _pcictrl_gt64120;
|
|
|
/* MIPS System controller register base */
|
|
|
unsigned long _pcictrl_msc;
|
|
|
|
|
|
-char *prom_getenv(char *envname)
|
|
|
-{
|
|
|
- /*
|
|
|
- * Return a pointer to the given environment variable.
|
|
|
- * In 64-bit mode: we're using 64-bit pointers, but all pointers
|
|
|
- * in the PROM structures are only 32-bit, so we need some
|
|
|
- * workarounds, if we are running in 64-bit mode.
|
|
|
- */
|
|
|
- int i, index=0;
|
|
|
-
|
|
|
- i = strlen(envname);
|
|
|
-
|
|
|
- while (prom_envp(index)) {
|
|
|
- if(strncmp(envname, prom_envp(index), i) == 0) {
|
|
|
- return(prom_envp(index+1));
|
|
|
- }
|
|
|
- index += 2;
|
|
|
- }
|
|
|
-
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-static inline unsigned char str2hexnum(unsigned char c)
|
|
|
-{
|
|
|
- if (c >= '0' && c <= '9')
|
|
|
- return c - '0';
|
|
|
- if (c >= 'a' && c <= 'f')
|
|
|
- return c - 'a' + 10;
|
|
|
- return 0; /* foo */
|
|
|
-}
|
|
|
-
|
|
|
-static inline void str2eaddr(unsigned char *ea, unsigned char *str)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < 6; i++) {
|
|
|
- unsigned char num;
|
|
|
-
|
|
|
- if((*str == '.') || (*str == ':'))
|
|
|
- str++;
|
|
|
- num = str2hexnum(*str++) << 4;
|
|
|
- num |= (str2hexnum(*str++));
|
|
|
- ea[i] = num;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-int get_ethernet_addr(char *ethernet_addr)
|
|
|
-{
|
|
|
- char *ethaddr_str;
|
|
|
-
|
|
|
- ethaddr_str = prom_getenv("ethaddr");
|
|
|
- if (!ethaddr_str) {
|
|
|
- printk("ethaddr not set in boot prom\n");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- str2eaddr(ethernet_addr, ethaddr_str);
|
|
|
-
|
|
|
- if (init_debug > 1) {
|
|
|
- int i;
|
|
|
- printk("get_ethernet_addr: ");
|
|
|
- for (i=0; i<5; i++)
|
|
|
- printk("%02x:", (unsigned char)*(ethernet_addr+i));
|
|
|
- printk("%02x\n", *(ethernet_addr+i));
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
|
|
static void __init console_config(void)
|
|
|
{
|
|
@@ -138,8 +60,8 @@ static void __init console_config(void)
|
|
|
char parity = '\0', bits = '\0', flow = '\0';
|
|
|
char *s;
|
|
|
|
|
|
- if ((strstr(prom_getcmdline(), "console=")) == NULL) {
|
|
|
- s = prom_getenv("modetty0");
|
|
|
+ if ((strstr(fw_getcmdline(), "console=")) == NULL) {
|
|
|
+ s = fw_getenv("modetty0");
|
|
|
if (s) {
|
|
|
while (*s >= '0' && *s <= '9')
|
|
|
baud = baud*10 + *s++ - '0';
|
|
@@ -159,7 +81,7 @@ static void __init console_config(void)
|
|
|
if (flow == '\0')
|
|
|
flow = 'r';
|
|
|
sprintf(console_string, " console=ttyS0,%d%c%c%c", baud, parity, bits, flow);
|
|
|
- strcat(prom_getcmdline(), console_string);
|
|
|
+ strcat(fw_getcmdline(), console_string);
|
|
|
pr_info("Config serial console:%s\n", console_string);
|
|
|
}
|
|
|
}
|
|
@@ -193,10 +115,6 @@ extern struct plat_smp_ops msmtc_smp_ops;
|
|
|
|
|
|
void __init prom_init(void)
|
|
|
{
|
|
|
- prom_argc = fw_arg0;
|
|
|
- _prom_argv = (int *) fw_arg1;
|
|
|
- _prom_envp = (int *) fw_arg2;
|
|
|
-
|
|
|
mips_display_message("LINUX");
|
|
|
|
|
|
/*
|
|
@@ -353,8 +271,8 @@ void __init prom_init(void)
|
|
|
board_nmi_handler_setup = mips_nmi_setup;
|
|
|
board_ejtag_handler_setup = mips_ejtag_setup;
|
|
|
|
|
|
- prom_init_cmdline();
|
|
|
- prom_meminit();
|
|
|
+ fw_init_cmdline();
|
|
|
+ fw_meminit();
|
|
|
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
|
|
console_config();
|
|
|
#endif
|