|
@@ -43,8 +43,9 @@ static void __dma_rx_complete(void *param)
|
|
|
{
|
|
|
struct uart_8250_port *p = param;
|
|
|
struct uart_8250_dma *dma = p->dma;
|
|
|
- struct tty_struct *tty = p->port.state->port.tty;
|
|
|
+ struct tty_port *tty_port = &p->port.state->port;
|
|
|
struct dma_tx_state state;
|
|
|
+ int count;
|
|
|
|
|
|
dma_sync_single_for_cpu(dma->rxchan->device->dev, dma->rx_addr,
|
|
|
dma->rx_size, DMA_FROM_DEVICE);
|
|
@@ -52,10 +53,12 @@ static void __dma_rx_complete(void *param)
|
|
|
dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state);
|
|
|
dmaengine_terminate_all(dma->rxchan);
|
|
|
|
|
|
- tty_insert_flip_string(tty, dma->rx_buf, dma->rx_size - state.residue);
|
|
|
- p->port.icount.rx += dma->rx_size - state.residue;
|
|
|
+ count = dma->rx_size - state.residue;
|
|
|
|
|
|
- tty_flip_buffer_push(tty);
|
|
|
+ tty_insert_flip_string(tty_port, dma->rx_buf, count);
|
|
|
+ p->port.icount.rx += count;
|
|
|
+
|
|
|
+ tty_flip_buffer_push(tty_port);
|
|
|
}
|
|
|
|
|
|
int serial8250_tx_dma(struct uart_8250_port *p)
|