Lines Matching refs:dma

163 	struct s3c24xx_uart_dma *dma = ourport->dma;  in s3c24xx_serial_stop_tx()  local
177 if (dma && dma->tx_chan && ourport->tx_in_progress == S3C24XX_TX_DMA) { in s3c24xx_serial_stop_tx()
178 dmaengine_pause(dma->tx_chan); in s3c24xx_serial_stop_tx()
179 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state); in s3c24xx_serial_stop_tx()
180 dmaengine_terminate_all(dma->tx_chan); in s3c24xx_serial_stop_tx()
182 dma->tx_transfer_addr, dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_stop_tx()
183 async_tx_ack(dma->tx_desc); in s3c24xx_serial_stop_tx()
184 count = dma->tx_bytes_requested - state.residue; in s3c24xx_serial_stop_tx()
205 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_tx_dma_complete() local
211 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state); in s3c24xx_serial_tx_dma_complete()
212 count = dma->tx_bytes_requested - state.residue; in s3c24xx_serial_tx_dma_complete()
213 async_tx_ack(dma->tx_desc); in s3c24xx_serial_tx_dma_complete()
215 dma_sync_single_for_cpu(ourport->port.dev, dma->tx_transfer_addr, in s3c24xx_serial_tx_dma_complete()
216 dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_tx_dma_complete()
291 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_start_tx_dma() local
297 dma->tx_size = count & ~(dma_get_cache_alignment() - 1); in s3c24xx_serial_start_tx_dma()
298 dma->tx_transfer_addr = dma->tx_addr + xmit->tail; in s3c24xx_serial_start_tx_dma()
300 dma_sync_single_for_device(ourport->port.dev, dma->tx_transfer_addr, in s3c24xx_serial_start_tx_dma()
301 dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_start_tx_dma()
303 dma->tx_desc = dmaengine_prep_slave_single(dma->tx_chan, in s3c24xx_serial_start_tx_dma()
304 dma->tx_transfer_addr, dma->tx_size, in s3c24xx_serial_start_tx_dma()
306 if (!dma->tx_desc) { in s3c24xx_serial_start_tx_dma()
311 dma->tx_desc->callback = s3c24xx_serial_tx_dma_complete; in s3c24xx_serial_start_tx_dma()
312 dma->tx_desc->callback_param = ourport; in s3c24xx_serial_start_tx_dma()
313 dma->tx_bytes_requested = dma->tx_size; in s3c24xx_serial_start_tx_dma()
316 dma->tx_cookie = dmaengine_submit(dma->tx_desc); in s3c24xx_serial_start_tx_dma()
317 dma_async_issue_pending(dma->tx_chan); in s3c24xx_serial_start_tx_dma()
335 if (!ourport->dma || !ourport->dma->tx_chan || in s3c24xx_serial_start_next_tx()
353 if (!ourport->dma || !ourport->dma->tx_chan) in s3c24xx_serial_start_tx()
357 if (ourport->dma && ourport->dma->tx_chan) { in s3c24xx_serial_start_tx()
366 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_uart_copy_rx_to_tty() local
372 dma_sync_single_for_cpu(ourport->port.dev, dma->rx_addr, in s3c24xx_uart_copy_rx_to_tty()
373 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_uart_copy_rx_to_tty()
381 ((unsigned char *)(ourport->dma->rx_buf)), count); in s3c24xx_uart_copy_rx_to_tty()
391 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_stop_rx() local
406 if (dma && dma->rx_chan) { in s3c24xx_serial_stop_rx()
407 dmaengine_pause(dma->tx_chan); in s3c24xx_serial_stop_rx()
408 dma_status = dmaengine_tx_status(dma->rx_chan, in s3c24xx_serial_stop_rx()
409 dma->rx_cookie, &state); in s3c24xx_serial_stop_rx()
412 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_stop_rx()
413 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_stop_rx()
454 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_rx_dma_complete() local
462 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state); in s3c24xx_serial_rx_dma_complete()
463 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_rx_dma_complete()
464 async_tx_ack(dma->rx_desc); in s3c24xx_serial_rx_dma_complete()
483 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c64xx_start_rx_dma() local
485 dma_sync_single_for_device(ourport->port.dev, dma->rx_addr, in s3c64xx_start_rx_dma()
486 dma->rx_size, DMA_FROM_DEVICE); in s3c64xx_start_rx_dma()
488 dma->rx_desc = dmaengine_prep_slave_single(dma->rx_chan, in s3c64xx_start_rx_dma()
489 dma->rx_addr, dma->rx_size, DMA_DEV_TO_MEM, in s3c64xx_start_rx_dma()
491 if (!dma->rx_desc) { in s3c64xx_start_rx_dma()
496 dma->rx_desc->callback = s3c24xx_serial_rx_dma_complete; in s3c64xx_start_rx_dma()
497 dma->rx_desc->callback_param = ourport; in s3c64xx_start_rx_dma()
498 dma->rx_bytes_requested = dma->rx_size; in s3c64xx_start_rx_dma()
500 dma->rx_cookie = dmaengine_submit(dma->rx_desc); in s3c64xx_start_rx_dma()
501 dma_async_issue_pending(dma->rx_chan); in s3c64xx_start_rx_dma()
557 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_rx_chars_dma() local
576 dmaengine_pause(dma->rx_chan); in s3c24xx_serial_rx_chars_dma()
577 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state); in s3c24xx_serial_rx_chars_dma()
578 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_rx_chars_dma()
579 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_rx_chars_dma()
696 if (ourport->dma && ourport->dma->rx_chan) in s3c24xx_serial_rx_chars()
713 if (ourport->dma && ourport->dma->tx_chan && in s3c24xx_serial_tx_chars()
855 struct s3c24xx_uart_dma *dma = p->dma; in s3c24xx_serial_request_dma() local
860 dma->rx_conf.direction = DMA_DEV_TO_MEM; in s3c24xx_serial_request_dma()
861 dma->rx_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; in s3c24xx_serial_request_dma()
862 dma->rx_conf.src_addr = p->port.mapbase + S3C2410_URXH; in s3c24xx_serial_request_dma()
863 dma->rx_conf.src_maxburst = 16; in s3c24xx_serial_request_dma()
865 dma->tx_conf.direction = DMA_MEM_TO_DEV; in s3c24xx_serial_request_dma()
866 dma->tx_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; in s3c24xx_serial_request_dma()
867 dma->tx_conf.dst_addr = p->port.mapbase + S3C2410_UTXH; in s3c24xx_serial_request_dma()
869 dma->tx_conf.dst_maxburst = 16; in s3c24xx_serial_request_dma()
871 dma->tx_conf.dst_maxburst = 1; in s3c24xx_serial_request_dma()
876 dma->rx_chan = dma_request_slave_channel_compat(mask, dma->fn, in s3c24xx_serial_request_dma()
877 dma->rx_param, p->port.dev, "rx"); in s3c24xx_serial_request_dma()
878 if (!dma->rx_chan) in s3c24xx_serial_request_dma()
881 dmaengine_slave_config(dma->rx_chan, &dma->rx_conf); in s3c24xx_serial_request_dma()
883 dma->tx_chan = dma_request_slave_channel_compat(mask, dma->fn, in s3c24xx_serial_request_dma()
884 dma->tx_param, p->port.dev, "tx"); in s3c24xx_serial_request_dma()
885 if (!dma->tx_chan) { in s3c24xx_serial_request_dma()
886 dma_release_channel(dma->rx_chan); in s3c24xx_serial_request_dma()
890 dmaengine_slave_config(dma->tx_chan, &dma->tx_conf); in s3c24xx_serial_request_dma()
893 dma->rx_size = PAGE_SIZE; in s3c24xx_serial_request_dma()
895 dma->rx_buf = kmalloc(dma->rx_size, GFP_KERNEL); in s3c24xx_serial_request_dma()
897 if (!dma->rx_buf) { in s3c24xx_serial_request_dma()
898 dma_release_channel(dma->rx_chan); in s3c24xx_serial_request_dma()
899 dma_release_channel(dma->tx_chan); in s3c24xx_serial_request_dma()
903 dma->rx_addr = dma_map_single(dma->rx_chan->device->dev, dma->rx_buf, in s3c24xx_serial_request_dma()
904 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_serial_request_dma()
909 dma->tx_addr = dma_map_single(dma->tx_chan->device->dev, in s3c24xx_serial_request_dma()
920 struct s3c24xx_uart_dma *dma = p->dma; in s3c24xx_serial_release_dma() local
922 if (dma->rx_chan) { in s3c24xx_serial_release_dma()
923 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_release_dma()
924 dma_unmap_single(dma->rx_chan->device->dev, dma->rx_addr, in s3c24xx_serial_release_dma()
925 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_serial_release_dma()
926 kfree(dma->rx_buf); in s3c24xx_serial_release_dma()
927 dma_release_channel(dma->rx_chan); in s3c24xx_serial_release_dma()
928 dma->rx_chan = NULL; in s3c24xx_serial_release_dma()
931 if (dma->tx_chan) { in s3c24xx_serial_release_dma()
932 dmaengine_terminate_all(dma->tx_chan); in s3c24xx_serial_release_dma()
933 dma_unmap_single(dma->tx_chan->device->dev, dma->tx_addr, in s3c24xx_serial_release_dma()
935 dma_release_channel(dma->tx_chan); in s3c24xx_serial_release_dma()
936 dma->tx_chan = NULL; in s3c24xx_serial_release_dma()
967 if (ourport->dma) in s3c24xx_serial_shutdown()
1030 if (ourport->dma) { in s3c64xx_serial_startup()
1730 ourport->dma = devm_kzalloc(port->dev, in s3c24xx_serial_init_port()
1731 sizeof(*ourport->dma), in s3c24xx_serial_init_port()
1733 if (!ourport->dma) in s3c24xx_serial_init_port()