Lines Matching refs:rx_dma
126 struct sprd_uart_dma rx_dma;
180 if (sp->rx_dma.enable)
181 dmaengine_terminate_all(sp->rx_dma.chn);
354 sp->rx_dma.virt = dma_alloc_coherent(sp->port.dev, SPRD_UART_RX_SIZE,
355 &sp->rx_dma.phys_addr, GFP_KERNEL);
356 if (!sp->rx_dma.virt)
364 if (sp->rx_dma.virt)
366 sp->rx_dma.virt, sp->rx_dma.phys_addr);
367 sp->rx_dma.virt = NULL;
381 return dmaengine_slave_config(sp->rx_dma.chn, &cfg);
390 port->icount.rx += sp->rx_dma.trans_len;
391 tty_insert_flip_string(tty, sp->rx_buf_tail, sp->rx_dma.trans_len);
402 status = dmaengine_tx_status(sp->rx_dma.chn,
403 sp->rx_dma.cookie, &state);
407 if (!state.residue && sp->pos == sp->rx_dma.phys_addr)
411 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE +
412 sp->rx_dma.phys_addr - sp->pos;
413 sp->pos = sp->rx_dma.phys_addr;
415 sp->rx_dma.trans_len = state.residue - sp->pos;
420 sp->rx_buf_tail += sp->rx_dma.trans_len;
434 status = dmaengine_tx_status(sp->rx_dma.chn,
435 sp->rx_dma.cookie, &state);
442 if (sp->pos != sp->rx_dma.phys_addr) {
443 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE +
444 sp->rx_dma.phys_addr - sp->pos;
446 sp->rx_buf_tail += sp->rx_dma.trans_len;
461 if (!sp->rx_dma.enable)
464 sp->pos = sp->rx_dma.phys_addr;
465 sp->rx_buf_tail = sp->rx_dma.virt;
471 return sprd_uart_dma_submit(port, &sp->rx_dma, SPRD_UART_RX_SIZE,
482 if (sp->rx_dma.enable)
483 dma_release_channel(sp->rx_dma.chn);
489 sp->rx_dma.enable = false;
498 sp->rx_dma.enable = true;
507 sp->rx_dma.chn = dma_request_chan(port->dev, "rx");
508 if (IS_ERR(sp->rx_dma.chn)) {
510 PTR_ERR(sp->rx_dma.chn));
511 sp->rx_dma.enable = false;
600 if (sp->rx_dma.enable) {
674 if (!(sp->rx_dma.enable || sp->tx_dma.enable))
679 sp->rx_dma.enable = false;
680 dma_release_channel(sp->rx_dma.chn);
733 if (!sp->rx_dma.enable)