[PATCH] ppc64: Take udbg out of ppc_md
Take udbg out of ppc_md. Allows us to not overwrite early udbg inits when assigning ppc_md. Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
7f853352e7
commit
c8f1c8be62
@@ -192,9 +192,9 @@ static unsigned char udbg_getcLP(void)
|
|||||||
void udbg_init_debug_lpar(void)
|
void udbg_init_debug_lpar(void)
|
||||||
{
|
{
|
||||||
vtermno = 0;
|
vtermno = 0;
|
||||||
ppc_md.udbg_putc = udbg_putcLP;
|
udbg_putc = udbg_putcLP;
|
||||||
ppc_md.udbg_getc = udbg_getcLP;
|
udbg_getc = udbg_getcLP;
|
||||||
ppc_md.udbg_getc_poll = udbg_getc_pollLP;
|
udbg_getc_poll = udbg_getc_pollLP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* returns 0 if couldn't find or use /chosen/stdout as console */
|
/* returns 0 if couldn't find or use /chosen/stdout as console */
|
||||||
@@ -227,18 +227,18 @@ int find_udbg_vterm(void)
|
|||||||
termno = (u32 *)get_property(stdout_node, "reg", NULL);
|
termno = (u32 *)get_property(stdout_node, "reg", NULL);
|
||||||
if (termno) {
|
if (termno) {
|
||||||
vtermno = termno[0];
|
vtermno = termno[0];
|
||||||
ppc_md.udbg_putc = udbg_putcLP;
|
udbg_putc = udbg_putcLP;
|
||||||
ppc_md.udbg_getc = udbg_getcLP;
|
udbg_getc = udbg_getcLP;
|
||||||
ppc_md.udbg_getc_poll = udbg_getc_pollLP;
|
udbg_getc_poll = udbg_getc_pollLP;
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
} else if (device_is_compatible(stdout_node, "hvterm-protocol")) {
|
} else if (device_is_compatible(stdout_node, "hvterm-protocol")) {
|
||||||
termno = (u32 *)get_property(stdout_node, "reg", NULL);
|
termno = (u32 *)get_property(stdout_node, "reg", NULL);
|
||||||
if (termno) {
|
if (termno) {
|
||||||
vtermno = termno[0];
|
vtermno = termno[0];
|
||||||
ppc_md.udbg_putc = udbg_hvsi_putc;
|
udbg_putc = udbg_hvsi_putc;
|
||||||
ppc_md.udbg_getc = udbg_hvsi_getc;
|
udbg_getc = udbg_hvsi_getc;
|
||||||
ppc_md.udbg_getc_poll = udbg_hvsi_getc_poll;
|
udbg_getc_poll = udbg_hvsi_getc_poll;
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -332,16 +332,13 @@ static void __init pmac_init_early(void)
|
|||||||
sccdbg = 1;
|
sccdbg = 1;
|
||||||
udbg_init_scc(NULL);
|
udbg_init_scc(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
|
||||||
#ifdef CONFIG_BOOTX_TEXT
|
#ifdef CONFIG_BOOTX_TEXT
|
||||||
|
else {
|
||||||
init_boot_display();
|
init_boot_display();
|
||||||
|
|
||||||
ppc_md.udbg_putc = btext_putc;
|
udbg_putc = btext_putc;
|
||||||
ppc_md.udbg_getc = NULL;
|
|
||||||
ppc_md.udbg_getc_poll = NULL;
|
|
||||||
#endif /* CONFIG_BOOTX_TEXT */
|
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_BOOTX_TEXT */
|
||||||
|
|
||||||
/* Setup interrupt mapping options */
|
/* Setup interrupt mapping options */
|
||||||
ppc64_interrupt_controller = IC_OPEN_PIC;
|
ppc64_interrupt_controller = IC_OPEN_PIC;
|
||||||
|
@@ -89,7 +89,7 @@ extern void udbg_init_maple_realmode(void);
|
|||||||
#define EARLY_DEBUG_INIT() udbg_init_maple_realmode()
|
#define EARLY_DEBUG_INIT() udbg_init_maple_realmode()
|
||||||
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
|
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
|
||||||
#define EARLY_DEBUG_INIT() \
|
#define EARLY_DEBUG_INIT() \
|
||||||
do { ppc_md.udbg_putc = call_rtas_display_status_delay; } while(0)
|
do { udbg_putc = call_rtas_display_status_delay; } while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* extern void *stab; */
|
/* extern void *stab; */
|
||||||
@@ -425,12 +425,6 @@ void __init early_setup(unsigned long dt_ptr)
|
|||||||
}
|
}
|
||||||
ppc_md = **mach;
|
ppc_md = **mach;
|
||||||
|
|
||||||
/* our udbg callbacks got overriden by the above, let's put them
|
|
||||||
* back in. Ultimately, I want those things to be split from the
|
|
||||||
* main ppc_md
|
|
||||||
*/
|
|
||||||
EARLY_DEBUG_INIT();
|
|
||||||
|
|
||||||
DBG("Found, Initializing memory management...\n");
|
DBG("Found, Initializing memory management...\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -20,14 +20,18 @@
|
|||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
|
|
||||||
|
void (*udbg_putc)(unsigned char c);
|
||||||
|
unsigned char (*udbg_getc)(void);
|
||||||
|
int (*udbg_getc_poll)(void);
|
||||||
|
|
||||||
void udbg_puts(const char *s)
|
void udbg_puts(const char *s)
|
||||||
{
|
{
|
||||||
if (ppc_md.udbg_putc) {
|
if (udbg_putc) {
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if (s && *s != '\0') {
|
if (s && *s != '\0') {
|
||||||
while ((c = *s++) != '\0')
|
while ((c = *s++) != '\0')
|
||||||
ppc_md.udbg_putc(c);
|
udbg_putc(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
@@ -42,12 +46,12 @@ int udbg_write(const char *s, int n)
|
|||||||
int remain = n;
|
int remain = n;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
if (!ppc_md.udbg_putc)
|
if (!udbg_putc)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (s && *s != '\0') {
|
if (s && *s != '\0') {
|
||||||
while (((c = *s++) != '\0') && (remain-- > 0)) {
|
while (((c = *s++) != '\0') && (remain-- > 0)) {
|
||||||
ppc_md.udbg_putc(c);
|
udbg_putc(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,12 +63,12 @@ int udbg_read(char *buf, int buflen)
|
|||||||
char c, *p = buf;
|
char c, *p = buf;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!ppc_md.udbg_getc)
|
if (!udbg_getc)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = 0; i < buflen; ++i) {
|
for (i = 0; i < buflen; ++i) {
|
||||||
do {
|
do {
|
||||||
c = ppc_md.udbg_getc();
|
c = udbg_getc();
|
||||||
} while (c == 0x11 || c == 0x13);
|
} while (c == 0x11 || c == 0x13);
|
||||||
if (c == 0)
|
if (c == 0)
|
||||||
break;
|
break;
|
||||||
|
@@ -99,9 +99,9 @@ void udbg_init_uart(void __iomem *comport, unsigned int speed)
|
|||||||
out_8(&udbg_comport->lcr, 0x03); /* 8 data, 1 stop, no parity */
|
out_8(&udbg_comport->lcr, 0x03); /* 8 data, 1 stop, no parity */
|
||||||
out_8(&udbg_comport->mcr, 0x03); /* RTS/DTR */
|
out_8(&udbg_comport->mcr, 0x03); /* RTS/DTR */
|
||||||
out_8(&udbg_comport->fcr ,0x07); /* Clear & enable FIFOs */
|
out_8(&udbg_comport->fcr ,0x07); /* Clear & enable FIFOs */
|
||||||
ppc_md.udbg_putc = udbg_550_putc;
|
udbg_putc = udbg_550_putc;
|
||||||
ppc_md.udbg_getc = udbg_550_getc;
|
udbg_getc = udbg_550_getc;
|
||||||
ppc_md.udbg_getc_poll = udbg_550_getc_poll;
|
udbg_getc_poll = udbg_550_getc_poll;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,8 +121,8 @@ void udbg_init_maple_realmode(void)
|
|||||||
{
|
{
|
||||||
udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8;
|
udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8;
|
||||||
|
|
||||||
ppc_md.udbg_putc = udbg_maple_real_putc;
|
udbg_putc = udbg_maple_real_putc;
|
||||||
ppc_md.udbg_getc = NULL;
|
udbg_getc = NULL;
|
||||||
ppc_md.udbg_getc_poll = NULL;
|
udbg_getc_poll = NULL;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PPC_MAPLE */
|
#endif /* CONFIG_PPC_MAPLE */
|
||||||
|
@@ -111,9 +111,9 @@ void udbg_init_scc(struct device_node *np)
|
|||||||
for (i = 0; i < sizeof(scc_inittab); ++i)
|
for (i = 0; i < sizeof(scc_inittab); ++i)
|
||||||
out_8(sccc, scc_inittab[i]);
|
out_8(sccc, scc_inittab[i]);
|
||||||
|
|
||||||
ppc_md.udbg_putc = udbg_scc_putc;
|
udbg_putc = udbg_scc_putc;
|
||||||
ppc_md.udbg_getc = udbg_scc_getc;
|
udbg_getc = udbg_scc_getc;
|
||||||
ppc_md.udbg_getc_poll = udbg_scc_getc_poll;
|
udbg_getc_poll = udbg_scc_getc_poll;
|
||||||
|
|
||||||
udbg_puts("Hello World !\n");
|
udbg_puts("Hello World !\n");
|
||||||
}
|
}
|
||||||
@@ -132,7 +132,7 @@ void udbg_init_pmac_realmode(void)
|
|||||||
sccc = (volatile u8 __iomem *)0x80013020ul;
|
sccc = (volatile u8 __iomem *)0x80013020ul;
|
||||||
sccd = (volatile u8 __iomem *)0x80013030ul;
|
sccd = (volatile u8 __iomem *)0x80013030ul;
|
||||||
|
|
||||||
ppc_md.udbg_putc = udbg_real_scc_putc;
|
udbg_putc = udbg_real_scc_putc;
|
||||||
ppc_md.udbg_getc = NULL;
|
udbg_getc = NULL;
|
||||||
ppc_md.udbg_getc_poll = NULL;
|
udbg_getc_poll = NULL;
|
||||||
}
|
}
|
||||||
|
@@ -61,8 +61,8 @@ xmon_read(void *handle, void *ptr, int nb)
|
|||||||
int
|
int
|
||||||
xmon_read_poll(void)
|
xmon_read_poll(void)
|
||||||
{
|
{
|
||||||
if (ppc_md.udbg_getc_poll)
|
if (udbg_getc_poll)
|
||||||
return ppc_md.udbg_getc_poll();
|
return udbg_getc_poll();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -103,11 +103,6 @@ struct machdep_calls {
|
|||||||
|
|
||||||
void (*progress)(char *, unsigned short);
|
void (*progress)(char *, unsigned short);
|
||||||
|
|
||||||
/* Debug interface. Low level I/O to some terminal device */
|
|
||||||
void (*udbg_putc)(unsigned char c);
|
|
||||||
unsigned char (*udbg_getc)(void);
|
|
||||||
int (*udbg_getc_poll)(void);
|
|
||||||
|
|
||||||
/* Interface for platform error logging */
|
/* Interface for platform error logging */
|
||||||
void (*log_error)(char *buf, unsigned int err_type, int fatal);
|
void (*log_error)(char *buf, unsigned int err_type, int fatal);
|
||||||
|
|
||||||
|
@@ -12,17 +12,20 @@
|
|||||||
* 2 of the License, or (at your option) any later version.
|
* 2 of the License, or (at your option) any later version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void udbg_init_uart(void __iomem *comport, unsigned int speed);
|
extern void (*udbg_putc)(unsigned char c);
|
||||||
void udbg_putc(unsigned char c);
|
extern unsigned char (*udbg_getc)(void);
|
||||||
unsigned char udbg_getc(void);
|
extern int (*udbg_getc_poll)(void);
|
||||||
int udbg_getc_poll(void);
|
|
||||||
void udbg_puts(const char *s);
|
|
||||||
int udbg_write(const char *s, int n);
|
|
||||||
int udbg_read(char *buf, int buflen);
|
|
||||||
struct console;
|
|
||||||
void udbg_console_write(struct console *con, const char *s, unsigned int n);
|
|
||||||
void udbg_printf(const char *fmt, ...);
|
|
||||||
void udbg_ppcdbg(unsigned long flags, const char *fmt, ...);
|
|
||||||
unsigned long udbg_ifdebug(unsigned long flags);
|
|
||||||
|
|
||||||
|
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 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 udbg_init_uart(void __iomem *comport, unsigned int speed);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user