diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-05-09 18:21:59 -0400 |
---|---|---|
committer | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-05-09 18:21:59 -0400 |
commit | 05ab3014636ff60a319d37cdf37dca594b015eec (patch) | |
tree | d9d948a5ecd5e10cd511ebca328df2ef08d5e076 /drivers/serial/21285.c | |
parent | 88d7bd8cb9eb8d64bf7997600b0d64f7834047c5 (diff) |
[PATCH] Serial: Add uart_insert_char()
Add uart_insert_char(), which handles inserting characters into the
flip buffer. This helper function handles the correct semantics
for handling overrun in addition to inserting normal characters.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
Diffstat (limited to 'drivers/serial/21285.c')
-rw-r--r-- | drivers/serial/21285.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c index 33fbda79f350..0b10169961eb 100644 --- a/drivers/serial/21285.c +++ b/drivers/serial/21285.c | |||
@@ -126,18 +126,8 @@ static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *r | |||
126 | flag = TTY_FRAME; | 126 | flag = TTY_FRAME; |
127 | } | 127 | } |
128 | 128 | ||
129 | if ((rxs & port->ignore_status_mask) == 0) { | 129 | uart_insert_char(port, rxs, RXSTAT_OVERRUN, ch, flag); |
130 | tty_insert_flip_char(tty, ch, flag); | 130 | |
131 | } | ||
132 | if ((rxs & RXSTAT_OVERRUN) && | ||
133 | tty->flip.count < TTY_FLIPBUF_SIZE) { | ||
134 | /* | ||
135 | * Overrun is special, since it's reported | ||
136 | * immediately, and doesn't affect the current | ||
137 | * character. | ||
138 | */ | ||
139 | tty_insert_flip_char(tty, 0, TTY_OVERRUN); | ||
140 | } | ||
141 | status = *CSR_UARTFLG; | 131 | status = *CSR_UARTFLG; |
142 | } | 132 | } |
143 | tty_flip_buffer_push(tty); | 133 | tty_flip_buffer_push(tty); |