Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8f1c8be authored by Milton Miller's avatar Milton Miller Committed by Paul Mackerras
Browse files

[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: default avatarMilton Miller <miltonm@bga.com>
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 7f853352
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -192,9 +192,9 @@ static unsigned char udbg_getcLP(void)
void udbg_init_debug_lpar(void)
{
	vtermno = 0;
	ppc_md.udbg_putc = udbg_putcLP;
	ppc_md.udbg_getc = udbg_getcLP;
	ppc_md.udbg_getc_poll = udbg_getc_pollLP;
	udbg_putc = udbg_putcLP;
	udbg_getc = udbg_getcLP;
	udbg_getc_poll = udbg_getc_pollLP;
}

/* 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);
			if (termno) {
				vtermno = termno[0];
				ppc_md.udbg_putc = udbg_putcLP;
				ppc_md.udbg_getc = udbg_getcLP;
				ppc_md.udbg_getc_poll = udbg_getc_pollLP;
				udbg_putc = udbg_putcLP;
				udbg_getc = udbg_getcLP;
				udbg_getc_poll = udbg_getc_pollLP;
				found = 1;
			}
		} else if (device_is_compatible(stdout_node, "hvterm-protocol")) {
			termno = (u32 *)get_property(stdout_node, "reg", NULL);
			if (termno) {
				vtermno = termno[0];
				ppc_md.udbg_putc = udbg_hvsi_putc;
				ppc_md.udbg_getc = udbg_hvsi_getc;
				ppc_md.udbg_getc_poll = udbg_hvsi_getc_poll;
				udbg_putc = udbg_hvsi_putc;
				udbg_getc = udbg_hvsi_getc;
				udbg_getc_poll = udbg_hvsi_getc_poll;
				found = 1;
			}
		}
+3 −6
Original line number Diff line number Diff line
@@ -332,16 +332,13 @@ static void __init pmac_init_early(void)
		sccdbg = 1;
       		udbg_init_scc(NULL);
       	}

	else {
#ifdef CONFIG_BOOTX_TEXT
	else {
		init_boot_display();

		ppc_md.udbg_putc = btext_putc;
		ppc_md.udbg_getc = NULL;
		ppc_md.udbg_getc_poll = NULL;
#endif /* CONFIG_BOOTX_TEXT */
		udbg_putc = btext_putc;
	}
#endif /* CONFIG_BOOTX_TEXT */

	/* Setup interrupt mapping options */
	ppc64_interrupt_controller = IC_OPEN_PIC;
+1 −7
Original line number Diff line number Diff line
@@ -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_pmac_realmode()
#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

/* extern void *stab; */
@@ -425,12 +425,6 @@ void __init early_setup(unsigned long dt_ptr)
	}
	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");

	/*
+10 −6
Original line number Diff line number Diff line
@@ -20,14 +20,18 @@
#include <asm/io.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)
{
	if (ppc_md.udbg_putc) {
	if (udbg_putc) {
		char c;

		if (s && *s != '\0') {
			while ((c = *s++) != '\0')
				ppc_md.udbg_putc(c);
				udbg_putc(c);
		}
	}
#if 0
@@ -42,12 +46,12 @@ int udbg_write(const char *s, int n)
	int remain = n;
	char c;

	if (!ppc_md.udbg_putc)
	if (!udbg_putc)
		return 0;

	if (s && *s != '\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;
	int i;

	if (!ppc_md.udbg_getc)
	if (!udbg_getc)
		return 0;

	for (i = 0; i < buflen; ++i) {
		do {
			c = ppc_md.udbg_getc();
			c = udbg_getc();
		} while (c == 0x11 || c == 0x13);
		if (c == 0)
			break;
+6 −6
Original line number Diff line number Diff line
@@ -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->mcr, 0x03);	/* RTS/DTR */
		out_8(&udbg_comport->fcr ,0x07);	/* Clear & enable FIFOs */
		ppc_md.udbg_putc = udbg_550_putc;
		ppc_md.udbg_getc = udbg_550_getc;
		ppc_md.udbg_getc_poll = udbg_550_getc_poll;
		udbg_putc = udbg_550_putc;
		udbg_getc = udbg_550_getc;
		udbg_getc_poll = udbg_550_getc_poll;
	}
}

@@ -121,8 +121,8 @@ void udbg_init_maple_realmode(void)
{
	udbg_comport = (volatile struct NS16550 __iomem *)0xf40003f8;

	ppc_md.udbg_putc = udbg_maple_real_putc;
	ppc_md.udbg_getc = NULL;
	ppc_md.udbg_getc_poll = NULL;
	udbg_putc = udbg_maple_real_putc;
	udbg_getc = NULL;
	udbg_getc_poll = NULL;
}
#endif /* CONFIG_PPC_MAPLE */
Loading