From: Bjorn Helgaas <bjorn.helgaas@hp.com>

Check for ioremap failure and use correct UPIO_{MEM,PORT} constants.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/firmware/pcdp.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff -puN drivers/firmware/pcdp.c~pcdp-console-detection-support-fixes drivers/firmware/pcdp.c
--- 25/drivers/firmware/pcdp.c~pcdp-console-detection-support-fixes	2004-06-28 20:26:06.145372840 -0700
+++ 25-akpm/drivers/firmware/pcdp.c	2004-06-28 20:26:06.148372384 -0700
@@ -60,6 +60,7 @@ setup_serial_console(int rev, struct pcd
 #ifdef CONFIG_SERIAL_8250_CONSOLE
 	struct uart_port port;
 	static char options[16];
+	int mapsize = 64;
 
 	memset(&port, 0, sizeof(port));
 #ifdef	CONFIG_KGDB_EARLY
@@ -71,11 +72,16 @@ setup_serial_console(int rev, struct pcd
 
 	if (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) {
 		port.mapbase = uart->addr.address;
-		port.membase = ioremap(port.mapbase, 64);
-		port.iotype = SERIAL_IO_MEM;
+		port.membase = ioremap(port.mapbase, mapsize);
+		if (!port.membase) {
+			printk(KERN_ERR "%s: couldn't ioremap 0x%lx-0x%lx\n",
+				__FUNCTION__, port.mapbase, port.mapbase + mapsize);
+			return;
+		}
+		port.iotype = UPIO_MEM;
 	} else if (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_IO) {
 		port.iobase = uart->addr.address;
-		port.iotype = SERIAL_IO_PORT;
+		port.iotype = UPIO_PORT;
 	} else
 		return;
 
@@ -112,7 +118,7 @@ setup_serial_console(int rev, struct pcd
 	add_preferred_console("ttyS", port.line, options);
 
 	printk(KERN_INFO "PCDP: serial console at %s 0x%lx (ttyS%d, options %s)\n",
-		port.iotype == SERIAL_IO_MEM ? "MMIO" : "I/O",
+		port.iotype == UPIO_MEM ? "MMIO" : "I/O",
 		uart->addr.address, port.line, options);
 #endif
 }
_