drivers/serial/8250.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 103 insertions(+), 1 deletions(-)
-diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
-index 737b4c9..65ee974 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
-@@ -196,7 +196,7 @@ static const struct serial8250_config uart_config[] = {
+@@ -199,7 +199,7 @@ static const struct serial8250_config ua
[PORT_16550A] = {
.name = "16550A",
.fifo_size = 16,
.fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
.flags = UART_CAP_FIFO,
},
-@@ -403,6 +403,10 @@ static unsigned int mem_serial_in(struct uart_port *p, int offset)
+@@ -406,6 +406,10 @@ static unsigned int mem_serial_in(struct
static void mem_serial_out(struct uart_port *p, int offset, int value)
{
offset = map_8250_out_reg(p, offset) << p->regshift;
writeb(value, p->membase + offset);
}
-@@ -2215,6 +2219,83 @@ static void serial8250_shutdown(struct uart_port *port)
+@@ -2214,6 +2218,83 @@ static void serial8250_shutdown(struct u
serial_unlink_irq_chain(up);
}
static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
{
unsigned int quot;
-@@ -2234,6 +2315,7 @@ static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int
+@@ -2233,6 +2314,7 @@ static unsigned int serial8250_get_divis
return quot;
}
static void
serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
-@@ -2243,6 +2325,9 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2242,6 +2324,9 @@ serial8250_set_termios(struct uart_port
unsigned char cval, fcr = 0;
unsigned long flags;
unsigned int baud, quot;
switch (termios->c_cflag & CSIZE) {
case CS5:
-@@ -2277,7 +2362,12 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2276,7 +2361,12 @@ serial8250_set_termios(struct uart_port
baud = uart_get_baud_rate(port, termios, old,
port->uartclk / 16 / 0xffff,
port->uartclk / 16);
/*
* Oxford Semi 952 rev B workaround
-@@ -2355,6 +2445,10 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2354,6 +2444,10 @@ serial8250_set_termios(struct uart_port
if (up->capabilities & UART_CAP_UUE)
up->ier |= UART_IER_UUE | UART_IER_RTOIE;
serial_out(up, UART_IER, up->ier);
if (up->capabilities & UART_CAP_EFR) {
-@@ -2389,7 +2483,15 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
+@@ -2388,7 +2482,15 @@ serial8250_set_termios(struct uart_port
serial_outp(up, UART_LCR, cval | UART_LCR_DLAB);/* set DLAB */
}
/*
* LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
---
-1.5.6.5
-