[PATCH] PowerPC: Fix find_legacy_serial_ports on OPB.

Valentine Barshak vbarshak at ru.mvista.com
Fri Oct 12 01:26:09 EST 2007


Currently find_legacy_serial_ports() can find no serial ports on the OPB.
Thus no legacy boot console can be initialized. Just the early udbg console
works, which is initialized with udbg_init_44x_as1() on the UART's physical
address specified in kernel config. This happens because we look for ns16750
and higher serial devices only and expect opb node to have a device type
property. This patch makes it look for ns16550 compatible devices and use
of_device_is_compatible() for opb instead of checking device type.
Lack of legacy serial ports found causes problems for KGDB over serial.

Signed-off-by: Valentine Barshak <vbarshak at ru.mvista.com>
---
 arch/powerpc/kernel/legacy_serial.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff -pruN linux-2.6.orig/arch/powerpc/kernel/legacy_serial.c linux-2.6/arch/powerpc/kernel/legacy_serial.c
--- linux-2.6.orig/arch/powerpc/kernel/legacy_serial.c	2007-10-11 17:12:09.000000000 +0400
+++ linux-2.6/arch/powerpc/kernel/legacy_serial.c	2007-10-11 17:40:11.000000000 +0400
@@ -340,9 +340,9 @@ void __init find_legacy_serial_ports(voi
 	}
 
 	/* First fill our array with opb bus ports */
-	for (np = NULL; (np = of_find_compatible_node(np, "serial", "ns16750")) != NULL;) {
+	for (np = NULL; (np = of_find_compatible_node(np, "serial", "ns16550")) != NULL;) {
 		struct device_node *opb = of_get_parent(np);
-		if (opb && !strcmp(opb->type, "opb")) {
+		if (opb && of_device_is_compatible(opb, "ibm,opb")) {
 			index = add_legacy_soc_port(np, np);
 			if (index >= 0 && np == stdout)
 				legacy_serial_console = index;



More information about the Linuxppc-dev mailing list