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);
357 sp->rx_dma.virt = dma_alloc_coherent(sp->port.dev, SPRD_UART_RX_SIZE,
358 &sp->rx_dma.phys_addr, GFP_KERNEL);
359 if (!sp->rx_dma.virt)
367 if (sp->rx_dma.virt)
369 sp->rx_dma.virt, sp->rx_dma.phys_addr);
370 sp->rx_dma.virt = NULL;
384 return dmaengine_slave_config(sp->rx_dma.chn, &cfg);
393 port->icount.rx += sp->rx_dma.trans_len;
394 tty_insert_flip_string(tty, sp->rx_buf_tail, sp->rx_dma.trans_len);
405 status = dmaengine_tx_status(sp->rx_dma.chn,
406 sp->rx_dma.cookie, &state);
410 if (!state.residue && sp->pos == sp->rx_dma.phys_addr)
414 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE +
415 sp->rx_dma.phys_addr - sp->pos;
416 sp->pos = sp->rx_dma.phys_addr;
418 sp->rx_dma.trans_len = state.residue - sp->pos;
423 sp->rx_buf_tail += sp->rx_dma.trans_len;
437 status = dmaengine_tx_status(sp->rx_dma.chn,
438 sp->rx_dma.cookie, &state);
445 if (sp->pos != sp->rx_dma.phys_addr) {
446 sp->rx_dma.trans_len = SPRD_UART_RX_SIZE +
447 sp->rx_dma.phys_addr - sp->pos;
449 sp->rx_buf_tail += sp->rx_dma.trans_len;
464 if (!sp->rx_dma.enable)
467 sp->pos = sp->rx_dma.phys_addr;
468 sp->rx_buf_tail = sp->rx_dma.virt;
474 return sprd_uart_dma_submit(port, &sp->rx_dma, SPRD_UART_RX_SIZE,
485 if (sp->rx_dma.enable)
486 dma_release_channel(sp->rx_dma.chn);
492 sp->rx_dma.enable = false;
501 sp->rx_dma.enable = true;
510 sp->rx_dma.chn = dma_request_chan(port->dev, "rx");
511 if (IS_ERR(sp->rx_dma.chn)) {
513 PTR_ERR(sp->rx_dma.chn));
514 sp->rx_dma.enable = false;
602 if (sp->rx_dma.enable) {
699 if (!(sp->rx_dma.enable || sp->tx_dma.enable))
704 sp->rx_dma.enable = false;
705 dma_release_channel(sp->rx_dma.chn);
758 if (!sp->rx_dma.enable)