|
@@ -385,32 +385,6 @@ static void s3c24xx_uart_copy_rx_to_tty(struct s3c24xx_uart_port *ourport,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static int s3c24xx_serial_rx_fifocnt(struct s3c24xx_uart_port *ourport,
|
|
|
- unsigned long ufstat);
|
|
|
-
|
|
|
-static void uart_rx_drain_fifo(struct s3c24xx_uart_port *ourport)
|
|
|
-{
|
|
|
- struct uart_port *port = &ourport->port;
|
|
|
- struct tty_port *tty = &port->state->port;
|
|
|
- unsigned int ch, ufstat;
|
|
|
- unsigned int count;
|
|
|
-
|
|
|
- ufstat = rd_regl(port, S3C2410_UFSTAT);
|
|
|
- count = s3c24xx_serial_rx_fifocnt(ourport, ufstat);
|
|
|
-
|
|
|
- if (!count)
|
|
|
- return;
|
|
|
-
|
|
|
- while (count-- > 0) {
|
|
|
- ch = rd_regb(port, S3C2410_URXH);
|
|
|
-
|
|
|
- ourport->port.icount.rx++;
|
|
|
- tty_insert_flip_char(tty, ch, TTY_NORMAL);
|
|
|
- }
|
|
|
-
|
|
|
- tty_flip_buffer_push(tty);
|
|
|
-}
|
|
|
-
|
|
|
static void s3c24xx_serial_stop_rx(struct uart_port *port)
|
|
|
{
|
|
|
struct s3c24xx_uart_port *ourport = to_ourport(port);
|
|
@@ -573,6 +547,8 @@ static void enable_rx_pio(struct s3c24xx_uart_port *ourport)
|
|
|
ourport->rx_mode = S3C24XX_RX_PIO;
|
|
|
}
|
|
|
|
|
|
+static void s3c24xx_serial_rx_drain_fifo(struct s3c24xx_uart_port *ourport);
|
|
|
+
|
|
|
static irqreturn_t s3c24xx_serial_rx_chars_dma(void *dev_id)
|
|
|
{
|
|
|
unsigned int utrstat, ufstat, received;
|
|
@@ -606,7 +582,7 @@ static irqreturn_t s3c24xx_serial_rx_chars_dma(void *dev_id)
|
|
|
enable_rx_pio(ourport);
|
|
|
}
|
|
|
|
|
|
- uart_rx_drain_fifo(ourport);
|
|
|
+ s3c24xx_serial_rx_drain_fifo(ourport);
|
|
|
|
|
|
if (tty) {
|
|
|
tty_flip_buffer_push(t);
|