[PATCH] powerpc: udbg updates

The udbg low level io layer has an issue with udbg_getc() returning a
char (unsigned on ppc) instead of an int, thus the -1 if you had no
available input device could end up turned into 0xff, filling your
display with bogus characters. This fixes it, along with adding a little
blob to xmon to do a delay before exiting when getting an EOF and fixing
the detection of ADB keyboards in udbg_adb.c

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
diff --git a/arch/powerpc/platforms/powermac/udbg_adb.c b/arch/powerpc/platforms/powermac/udbg_adb.c
index 3d5ed23..06c8265 100644
--- a/arch/powerpc/platforms/powermac/udbg_adb.c
+++ b/arch/powerpc/platforms/powermac/udbg_adb.c
@@ -29,7 +29,7 @@
  */
 
 static void (*udbg_adb_old_putc)(char c);
-static char (*udbg_adb_old_getc)(void);
+static int (*udbg_adb_old_getc)(void);
 static int (*udbg_adb_old_getc_poll)(void);
 
 static enum {
@@ -73,7 +73,7 @@
 	"\0.\0*\0+\0\0\0\0\0/\r\0-\0"			/* 0x40 - 0x4f */
 	"\0\0000123456789\0\0\0";			/* 0x50 - 0x5f */
 
-static char udbg_adb_local_getc(void)
+static int udbg_adb_local_getc(void)
 {
 	int k, t, on;
 
@@ -116,7 +116,7 @@
 }
 #endif /* CONFIG_BOOTX_TEXT */
 
-static char udbg_adb_getc(void)
+static int udbg_adb_getc(void)
 {
 #ifdef CONFIG_BOOTX_TEXT
 	if (udbg_adb_use_btext && input_type != input_adb_none)
@@ -195,7 +195,7 @@
 	 */
 	for (np = NULL; (np = of_find_node_by_name(np, "keyboard")) != NULL;) {
 		struct device_node *parent = of_get_parent(np);
-		int found = (parent && !strcmp(parent->type, "adb") == 0);
+		int found = (parent && strcmp(parent->type, "adb") == 0);
 		of_node_put(parent);
 		if (found)
 			break;
diff --git a/arch/powerpc/platforms/powermac/udbg_scc.c b/arch/powerpc/platforms/powermac/udbg_scc.c
index df6dec4..e87d53a 100644
--- a/arch/powerpc/platforms/powermac/udbg_scc.c
+++ b/arch/powerpc/platforms/powermac/udbg_scc.c
@@ -47,14 +47,14 @@
 	return -1;
 }
 
-static char udbg_scc_getc(void)
+static int udbg_scc_getc(void)
 {
 	if (sccc) {
 		while ((in_8(sccc) & SCC_RXRDY) == 0)
 			;
 		return in_8(sccd);
 	}
-	return 0;
+	return -1;
 }
 
 static unsigned char scc_inittab[] = {
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
index 615ffb9..1fe445a 100644
--- a/arch/powerpc/platforms/pseries/lpar.c
+++ b/arch/powerpc/platforms/pseries/lpar.c
@@ -112,7 +112,7 @@
 	return ch;
 }
 
-static char udbg_hvsi_getc(void)
+static int udbg_hvsi_getc(void)
 {
 	int ch;
 	for (;;) {
@@ -173,7 +173,7 @@
 	return ch;
 }
 
-static char udbg_getcLP(void)
+static int udbg_getcLP(void)
 {
 	int ch;
 	for (;;) {