[PATCH] ppc64: Consolidate early console and PPCDBG code
Anton Blanchard
anton at samba.org
Tue Sep 6 11:57:27 EST 2005
From: Milton Miller <miltonm at bga.com>
Consolidate the early console and PPCDBG code in udbg.c
Signed-off-by: Milton Miller <miltonm at bga.com>
Signed-off-by: Anton Blanchard <anton at samba.org>
Index: build/arch/ppc64/kernel/setup.c
===================================================================
--- build.orig/arch/ppc64/kernel/setup.c 2005-09-05 20:29:46.000000000 +1000
+++ build/arch/ppc64/kernel/setup.c 2005-09-05 20:33:24.000000000 +1000
@@ -108,7 +108,6 @@
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 @@
.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 @@
/*
* 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: build/arch/ppc64/kernel/udbg.c
===================================================================
--- build.orig/arch/ppc64/kernel/udbg.c 2005-09-05 20:29:47.000000000 +1000
+++ build/arch/ppc64/kernel/udbg.c 2005-09-05 20:29:48.000000000 +1000
@@ -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 @@
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 @@
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 @@
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 @@
{
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: build/include/asm-ppc64/udbg.h
===================================================================
--- build.orig/include/asm-ppc64/udbg.h 2005-09-05 20:29:46.000000000 +1000
+++ build/include/asm-ppc64/udbg.h 2005-09-05 20:29:48.000000000 +1000
@@ -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 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
More information about the Linuxppc64-dev
mailing list