vserver 1.9.5.x5
[linux-2.6.git] / arch / mips / pmc-sierra / yosemite / prom.c
index 5b4ef33..1fb3e69 100644 (file)
@@ -4,9 +4,11 @@
  * Free Software Foundation;  either version 2 of the  License, or (at your
  * option) any later version.
  *
- * Copyright (C) 2003 PMC-Sierra Inc.
+ * Copyright (C) 2003, 2004 PMC-Sierra Inc.
  * Author: Manish Lachwani (lachwani@pmc-sierra.com)
+ * Copyright (C) 2004 Ralf Baechle
  */
+#include <linux/config.h>
 #include <linux/init.h>
 #include <linux/sched.h>
 #include <linux/mm.h>
 #include <asm/bootinfo.h>
 #include <asm/pmon.h>
 
+#ifdef CONFIG_SMP
+extern void prom_grab_secondary(void);
+#else
+#define prom_grab_secondary() do { } while (0)
+#endif
+
 #include "setup.h"
 
 struct callvectors *debug_vectors;
@@ -35,7 +43,7 @@ const char *get_system_type(void)
 
 static void prom_cpu0_exit(void *arg)
 {
-       void *nvram = (void *) YOSEMITE_NVRAM_BASE_ADDR;
+       void *nvram = (void *) YOSEMITE_RTC_BASE;
 
        /* Ask the NVRAM/RTC/watchdog chip to assert reset in 1/16 second */
        writeb(0x84, nvram + 0xff7);
@@ -86,8 +94,6 @@ void __init prom_init(void)
        _machine_halt = prom_halt;
        _machine_power_off = prom_halt;
 
-#ifdef CONFIG_MIPS32
-
        debug_vectors = cv;
        arcs_cmdline[0] = '\0';
 
@@ -101,6 +107,11 @@ void __init prom_init(void)
                strcat(arcs_cmdline, " ");
        }
 
+#ifdef CONFIG_SERIAL_8250_CONSOLE
+       if ((strstr(arcs_cmdline, "console=ttyS")) == NULL)
+               strcat(arcs_cmdline, "console=ttyS0,115200");
+#endif
+
        while (*env) {
                if (strncmp("ocd_base", *env, strlen("ocd_base")) == 0)
                        yosemite_base =
@@ -114,16 +125,11 @@ void __init prom_init(void)
 
                env++;
        }
-#endif /* CONFIG_MIPS32 */
-
-#ifdef CONFIG_MIPS64
-
-       /* Do nothing for the 64-bit for now. Just implement for the 32-bit */
-
-#endif /* CONFIG_MIPS64 */
 
        mips_machgroup = MACH_GROUP_TITAN;
        mips_machtype = MACH_TITAN_YOSEMITE;
+
+       prom_grab_secondary();
 }
 
 void __init prom_free_prom_memory(void)