[PATCH] ppc64: Consolidate early console and PPCDBG code
authorMilton Miller <miltonm@bga.com>
Tue, 6 Sep 2005 01:57:27 +0000 (11:57 +1000)
committerPaul Mackerras <paulus@samba.org>
Tue, 6 Sep 2005 06:07:37 +0000 (16:07 +1000)
Consolidate the early console and PPCDBG code in udbg.c

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/ppc64/kernel/setup.c
arch/ppc64/kernel/udbg.c
include/asm-ppc64/udbg.h

index 059cca2e25382923151411bf02cb486bd6a56b33..aff408bffdd50f846fb3141dd45fa59ce6674a81 100644 (file)
@@ -108,7 +108,6 @@ int boot_cpuid = 0;
 int boot_cpuid_phys = 0;
 dev_t boot_dev;
 u64 ppc64_pft_size;
-u64 ppc64_debug_switch;
 
 struct ppc64_caches ppc64_caches;
 EXPORT_SYMBOL_GPL(ppc64_caches);
@@ -154,34 +153,6 @@ struct screen_info screen_info = {
        .orig_video_points = 16
 };
 
-/*
- * Initialize the PPCDBG state.  Called before relocation has been enabled.
- */
-void __init ppcdbg_initialize(void)
-{
-       ppc64_debug_switch = PPC_DEBUG_DEFAULT; /* | PPCDBG_BUSWALK | */
-       /* PPCDBG_PHBINIT | PPCDBG_MM | PPCDBG_MMINIT | PPCDBG_TCEINIT | PPCDBG_TCE */;
-}
-
-/*
- * Early boot console based on udbg
- */
-static struct console udbg_console = {
-       .name   = "udbg",
-       .write  = udbg_console_write,
-       .flags  = CON_PRINTBUFFER,
-       .index  = -1,
-};
-static int early_console_initialized;
-
-void __init disable_early_printk(void)
-{
-       if (!early_console_initialized)
-               return;
-       unregister_console(&udbg_console);
-       early_console_initialized = 0;
-}
-
 #if defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_SMP)
 
 static int smt_enabled_cmdline;
@@ -630,8 +601,7 @@ void __init setup_system(void)
        /*
         * Register early console
         */
-       early_console_initialized = 1;
-       register_console(&udbg_console);
+       register_early_udbg_console();
 
        /* Save unparsed command line copy for /proc/cmdline */
        strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE);
index 07164020f3a9aa0e446bb86a346f7d97a5d76a0f..ed6766e21f5a4c5df82405b2ac5530aec54f4e36 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/config.h>
 #include <linux/types.h>
 #include <linux/sched.h>
+#include <linux/console.h>
 #include <asm/ppcdebug.h>
 #include <asm/processor.h>
 
@@ -21,6 +22,7 @@ void (*udbg_putc)(unsigned char c);
 unsigned char (*udbg_getc)(void);
 int (*udbg_getc_poll)(void);
 
+/* udbg library, used by xmon et al */
 void udbg_puts(const char *s)
 {
        if (udbg_putc) {
@@ -75,11 +77,6 @@ int udbg_read(char *buf, int buflen)
        return i;
 }
 
-void udbg_console_write(struct console *con, const char *s, unsigned int n)
-{
-       udbg_write(s, n);
-}
-
 #define UDBG_BUFSIZE 256
 void udbg_printf(const char *fmt, ...)
 {
@@ -92,6 +89,10 @@ void udbg_printf(const char *fmt, ...)
        va_end(args);
 }
 
+/* PPCDBG stuff */
+
+u64 ppc64_debug_switch;
+
 /* Special print used by PPCDBG() macro */
 void udbg_ppcdbg(unsigned long debug_flags, const char *fmt, ...)
 {
@@ -131,3 +132,43 @@ unsigned long udbg_ifdebug(unsigned long flags)
 {
        return (flags & ppc64_debug_switch);
 }
+
+/*
+ * Initialize the PPCDBG state.  Called before relocation has been enabled.
+ */
+void __init ppcdbg_initialize(void)
+{
+       ppc64_debug_switch = PPC_DEBUG_DEFAULT; /* | PPCDBG_BUSWALK | */
+       /* PPCDBG_PHBINIT | PPCDBG_MM | PPCDBG_MMINIT | PPCDBG_TCEINIT | PPCDBG_TCE */;
+}
+
+/*
+ * Early boot console based on udbg
+ */
+static void udbg_console_write(struct console *con, const char *s,
+               unsigned int n)
+{
+       udbg_write(s, n);
+}
+
+static struct console udbg_console = {
+       .name   = "udbg",
+       .write  = udbg_console_write,
+       .flags  = CON_PRINTBUFFER,
+       .index  = -1,
+};
+
+void __init disable_early_printk(void)
+{
+       unregister_console(&udbg_console);
+}
+
+/* called by setup_system */
+void register_early_udbg_console(void)
+{
+       register_console(&udbg_console);
+}
+
+#if 0   /* if you want to use this as a regular output console */
+console_initcall(register_udbg_console);
+#endif
index 2cf1e87fd7d22f70cba1f715b16c72194128edc8..c786604aef02efcc28319c71f1ffe9fc7ab00ce7 100644 (file)
@@ -2,6 +2,7 @@
 #define __UDBG_HDR
 
 #include <linux/compiler.h>
+#include <linux/init.h>
 
 /*
  * c 2001 PPC 64 Team, IBM Corp
@@ -20,12 +21,11 @@ extern void udbg_puts(const char *s);
 extern int udbg_write(const char *s, int n);
 extern int udbg_read(char *buf, int buflen);
 
-struct console;
-extern void udbg_console_write(struct console *con, const char *s, unsigned int n);
+extern void register_early_udbg_console(void);
 extern void udbg_printf(const char *fmt, ...);
 extern void udbg_ppcdbg(unsigned long flags, const char *fmt, ...);
 extern unsigned long udbg_ifdebug(unsigned long flags);
-
+extern void __init ppcdbg_initialize(void);
 
 extern void udbg_init_uart(void __iomem *comport, unsigned int speed);
 #endif