USB: serial: io_edgeport: fix NULL-deref at open
[pandora-kernel.git] / drivers / firmware / pcdp.c
index c2ad72f..a330492 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/console.h>
 #include <linux/efi.h>
 #include <linux/serial.h>
+#include <linux/serial_8250.h>
 #include <asm/vga.h>
 #include "pcdp.h"
 
@@ -26,11 +27,11 @@ setup_serial_console(struct pcdp_uart *uart)
        static char options[64], *p = options;
        char parity;
 
-       mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY);
-       p += sprintf(p, "console=uart,%s,0x%lx",
+       mmio = (uart->addr.space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY);
+       p += sprintf(p, "uart8250,%s,0x%llx",
                mmio ? "mmio" : "io", uart->addr.address);
        if (uart->baud) {
-               p += sprintf(p, ",%lu", uart->baud);
+               p += sprintf(p, ",%llu", uart->baud);
                if (uart->bits) {
                        switch (uart->parity) {
                            case 0x2: parity = 'e'; break;
@@ -41,7 +42,8 @@ setup_serial_console(struct pcdp_uart *uart)
                }
        }
 
-       return early_serial_console_init(options);
+       add_preferred_console("uart", 8250, &options[9]);
+       return setup_early_serial8250_console(options);
 #else
        return -ENODEV;
 #endif
@@ -93,7 +95,7 @@ efi_setup_pcdp_console(char *cmdline)
        if (efi.hcdp == EFI_INVALID_TABLE_ADDR)
                return -ENODEV;
 
-       pcdp = ioremap(efi.hcdp, 4096);
+       pcdp = early_ioremap(efi.hcdp, 4096);
        printk(KERN_INFO "PCDP: v%d at 0x%lx\n", pcdp->rev, efi.hcdp);
 
        if (strstr(cmdline, "console=hcdp")) {
@@ -129,6 +131,6 @@ efi_setup_pcdp_console(char *cmdline)
        }
 
 out:
-       iounmap(pcdp);
+       early_iounmap(pcdp, 4096);
        return rc;
 }