Merge ../bleed-2.6
[deliverable/linux.git] / drivers / serial / pxa.c
index 7999686d7b47420fe787a7f1d49e00e0fecd04ee..8cc4cedadd995066aae68c73681ea18e4827fd46 100644 (file)
@@ -358,6 +358,9 @@ static int serial_pxa_startup(struct uart_port *port)
        unsigned long flags;
        int retval;
 
+       if (port->line == 3) /* HWUART */
+               up->mcr |= UART_MCR_AFE;
+       else
        up->mcr = 0;
 
        /*
@@ -481,8 +484,10 @@ serial_pxa_set_termios(struct uart_port *port, struct termios *termios,
 
        if ((up->port.uartclk / quot) < (2400 * 16))
                fcr = UART_FCR_ENABLE_FIFO | UART_FCR_PXAR1;
-       else
+       else if ((up->port.uartclk / quot) < (230400 * 16))
                fcr = UART_FCR_ENABLE_FIFO | UART_FCR_PXAR8;
+       else
+               fcr = UART_FCR_ENABLE_FIFO | UART_FCR_PXAR32;
 
        /*
         * Ok, we're now changing the port state.  Do it with
@@ -772,6 +777,20 @@ static struct uart_pxa_port serial_pxa_ports[] = {
                .ops            = &serial_pxa_pops,
                .line           = 2,
        },
+  }, {  /* HWUART */
+       .name   = "HWUART",
+       .cken   = CKEN4_HWUART,
+       .port = {
+               .type           = PORT_PXA,
+               .iotype         = UPIO_MEM,
+               .membase        = (void *)&HWUART,
+               .mapbase        = __PREG(HWUART),
+               .irq            = IRQ_HWUART,
+               .uartclk        = 921600 * 16,
+               .fifosize       = 64,
+               .ops            = &serial_pxa_pops,
+               .line           = 3,
+       },
   }
 };
 
This page took 0.031839 seconds and 5 git commands to generate.