Lines Matching refs:tx_dma
129 struct sprd_uart_dma tx_dma; member
217 dmaengine_pause(sp->tx_dma.chn); in sprd_stop_tx_dma()
219 dmaengine_tx_status(sp->tx_dma.chn, sp->tx_dma.cookie, &state); in sprd_stop_tx_dma()
221 trans_len = state.residue - sp->tx_dma.phys_addr; in sprd_stop_tx_dma()
224 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_stop_tx_dma()
225 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_stop_tx_dma()
228 dmaengine_terminate_all(sp->tx_dma.chn); in sprd_stop_tx_dma()
229 sp->tx_dma.trans_len = 0; in sprd_stop_tx_dma()
238 sp->tx_dma.trans_len = in sprd_tx_buf_remap()
241 sp->tx_dma.phys_addr = dma_map_single(port->dev, in sprd_tx_buf_remap()
243 sp->tx_dma.trans_len, in sprd_tx_buf_remap()
245 return dma_mapping_error(port->dev, sp->tx_dma.phys_addr); in sprd_tx_buf_remap()
257 dma_unmap_single(port->dev, sp->tx_dma.phys_addr, in sprd_complete_tx_dma()
258 sp->tx_dma.trans_len, DMA_TO_DEVICE); in sprd_complete_tx_dma()
260 xmit->tail = (xmit->tail + sp->tx_dma.trans_len) & (UART_XMIT_SIZE - 1); in sprd_complete_tx_dma()
261 port->icount.tx += sp->tx_dma.trans_len; in sprd_complete_tx_dma()
268 sp->tx_dma.trans_len = 0; in sprd_complete_tx_dma()
307 u32 burst = sp->tx_dma.trans_len > SPRD_TX_FIFO_FULL ? in sprd_tx_dma_config()
308 SPRD_TX_FIFO_FULL : sp->tx_dma.trans_len; in sprd_tx_dma_config()
317 ret = dmaengine_slave_config(sp->tx_dma.chn, &cfg); in sprd_tx_dma_config()
321 return sprd_uart_dma_submit(port, &sp->tx_dma, sp->tx_dma.trans_len, in sprd_tx_dma_config()
343 if (sp->tx_dma.trans_len) in sprd_start_tx_dma()
347 sp->tx_dma.trans_len = 0; in sprd_start_tx_dma()
492 if (sp->tx_dma.enable) in sprd_release_dma()
493 dma_release_channel(sp->tx_dma.chn); in sprd_release_dma()
495 sp->tx_dma.enable = false; in sprd_release_dma()
504 sp->tx_dma.enable = true; in sprd_request_dma()
507 sp->tx_dma.chn = dma_request_chan(port->dev, "tx"); in sprd_request_dma()
508 if (IS_ERR(sp->tx_dma.chn)) { in sprd_request_dma()
510 PTR_ERR(sp->tx_dma.chn)); in sprd_request_dma()
511 sp->tx_dma.enable = false; in sprd_request_dma()
528 if (sp->tx_dma.enable) { in sprd_stop_tx()
549 if (sp->tx_dma.enable) { in sprd_start_tx()
700 if (!(sp->rx_dma.enable || sp->tx_dma.enable)) in sprd_uart_dma_startup()