x86: ce4100: allow second UART usage
authorMaxime Bizon <mbizon@freebox.fr>
Fri, 19 Oct 2012 08:45:07 +0000 (10:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 24 Oct 2012 18:34:51 +0000 (11:34 -0700)
The current CE4100 and 8250_pci code have both a limitation preventing the
registration and usage of CE4100's second UART. This patch changes the
platform code fixing up the UART port to work on a relative UART port
base address, as well as the 8250_pci code to make it register 2 UART ports
for CE4100 and pass the port index down to all consumers.

Signed-off-by: Florian Fainelli <ffainelli@freebox.fr>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/platform/ce4100/ce4100.c
drivers/tty/serial/8250/8250_pci.c

index 4c61b52191eb293bcaef2cac2380c6114cdaefcf..0dcc30e9df8cde01308f81e3bf343871a47e16ff 100644 (file)
@@ -92,8 +92,11 @@ static void ce4100_serial_fixup(int port, struct uart_port *up,
                up->membase =
                        (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE);
                up->membase += up->mapbase & ~PAGE_MASK;
+               up->mapbase += port * 0x100;
+               up->membase += port * 0x100;
                up->iotype   = UPIO_MEM32;
                up->regshift = 2;
+               up->irq = 4;
        }
 #endif
        up->iobase = 0;
index 17b7d26abf416494aac36ddd66cfd47d9824d593..cec8852dd1b6e0e3ada0b558c4bf0f7987492d0b 100644 (file)
@@ -1068,7 +1068,7 @@ ce4100_serial_setup(struct serial_private *priv,
 {
        int ret;
 
-       ret = setup_port(priv, port, 0, 0, board->reg_shift);
+       ret = setup_port(priv, port, idx, 0, board->reg_shift);
        port->port.iotype = UPIO_MEM32;
        port->port.type = PORT_XSCALE;
        port->port.flags = (port->port.flags | UPF_FIXED_PORT | UPF_FIXED_TYPE);
@@ -2658,8 +2658,8 @@ static struct pciserial_board pci_boards[] __devinitdata = {
                .first_offset   = 0x1000,
        },
        [pbn_ce4100_1_115200] = {
-               .flags          = FL_BASE0,
-               .num_ports      = 1,
+               .flags          = FL_BASE_BARS,
+               .num_ports      = 2,
                .base_baud      = 921600,
                .reg_shift      = 2,
        },