X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fserial%2F8250.c;h=a235711fd02ac6765e2dd67256c8b993260217d2;hb=58c854019752bcedaf0288a2edfd6bfd6c14fe73;hp=f94109cbb46e683a6a6f7d2fee29d7915b21cc93;hpb=aac38fd578e277b77765e82a14fafc647031d11a;p=linux-2.6-omap-h63xx.git diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index f94109cbb46..a235711fd02 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -1505,7 +1505,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 } /* @@ -2169,6 +2173,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); @@ -2195,6 +2212,11 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) unsigned int size = 8 << up->port.regshift; int ret = 0; +#ifdef CONFIG_ARCH_OMAP + if (is_omap_port((unsigned int)up->port.membase)) + size = 0x16 << up->port.regshift; +#endif + switch (up->port.iotype) { case UPIO_AU: size = 0x100000;