{
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);
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)