X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?p=linux-2.6-omap-h63xx.git;a=blobdiff_plain;f=drivers%2Fserial%2F8250.c;fp=drivers%2Fserial%2F8250.c;h=67877b1be0dd818e08b634d3d3c1d715603889c5;hp=b4b39811b44544cc76a4c71e00c5c02567a765c2;hb=b934c987ee1764eb09b8843a3ee00eabc24bd52c;hpb=14fc69723d3442ef46f8f82b3f481e82f06a346d diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index b4b39811b44..67877b1be0d 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -1596,7 +1596,11 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) DEBUG_INTR("end.\n"); +#ifdef CONFIG_ARCH_OMAP15XX + return IRQ_HANDLED; /* FIXME: iir status not ready on 1510 */ +#else return IRQ_RETVAL(handled); +#endif } /* @@ -2387,6 +2391,19 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, /* emulated UARTs (Lucent Venus 167x) need two steps */ serial_outp(up, UART_FCR, UART_FCR_ENABLE_FIFO); } + + /* Note that we need to set ECB to access write water mark + * bits. First allow FCR tx fifo write, then set fcr with + * possible TX fifo settings. */ + if (uart_config[up->port.type].flags & UART_CAP_EFR) { + serial_outp(up, UART_LCR, 0xbf); /* Access EFR */ + serial_outp(up, UART_EFR, UART_EFR_ECB); + serial_outp(up, UART_LCR, 0x0); /* Access FCR */ + serial_outp(up, UART_FCR, fcr); + serial_outp(up, UART_LCR, 0xbf); /* Access EFR */ + serial_outp(up, UART_EFR, 0); + serial_outp(up, UART_LCR, cval); /* Access FCR */ + } else serial_outp(up, UART_FCR, fcr); /* set fcr */ } serial8250_set_mctrl(&up->port, up->port.mctrl);