Lines Matching refs:dma

164 	struct s3c24xx_uart_dma *dma = ourport->dma;  in s3c24xx_serial_stop_tx()  local
178 if (dma && dma->tx_chan && ourport->tx_in_progress == S3C24XX_TX_DMA) { in s3c24xx_serial_stop_tx()
179 dmaengine_pause(dma->tx_chan); in s3c24xx_serial_stop_tx()
180 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state); in s3c24xx_serial_stop_tx()
181 dmaengine_terminate_all(dma->tx_chan); in s3c24xx_serial_stop_tx()
183 dma->tx_transfer_addr, dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_stop_tx()
184 async_tx_ack(dma->tx_desc); in s3c24xx_serial_stop_tx()
185 count = dma->tx_bytes_requested - state.residue; in s3c24xx_serial_stop_tx()
206 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_tx_dma_complete() local
212 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state); in s3c24xx_serial_tx_dma_complete()
213 count = dma->tx_bytes_requested - state.residue; in s3c24xx_serial_tx_dma_complete()
214 async_tx_ack(dma->tx_desc); in s3c24xx_serial_tx_dma_complete()
216 dma_sync_single_for_cpu(ourport->port.dev, dma->tx_transfer_addr, in s3c24xx_serial_tx_dma_complete()
217 dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_tx_dma_complete()
292 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_start_tx_dma() local
298 dma->tx_size = count & ~(dma_get_cache_alignment() - 1); in s3c24xx_serial_start_tx_dma()
299 dma->tx_transfer_addr = dma->tx_addr + xmit->tail; in s3c24xx_serial_start_tx_dma()
301 dma_sync_single_for_device(ourport->port.dev, dma->tx_transfer_addr, in s3c24xx_serial_start_tx_dma()
302 dma->tx_size, DMA_TO_DEVICE); in s3c24xx_serial_start_tx_dma()
304 dma->tx_desc = dmaengine_prep_slave_single(dma->tx_chan, in s3c24xx_serial_start_tx_dma()
305 dma->tx_transfer_addr, dma->tx_size, in s3c24xx_serial_start_tx_dma()
307 if (!dma->tx_desc) { in s3c24xx_serial_start_tx_dma()
312 dma->tx_desc->callback = s3c24xx_serial_tx_dma_complete; in s3c24xx_serial_start_tx_dma()
313 dma->tx_desc->callback_param = ourport; in s3c24xx_serial_start_tx_dma()
314 dma->tx_bytes_requested = dma->tx_size; in s3c24xx_serial_start_tx_dma()
317 dma->tx_cookie = dmaengine_submit(dma->tx_desc); in s3c24xx_serial_start_tx_dma()
318 dma_async_issue_pending(dma->tx_chan); in s3c24xx_serial_start_tx_dma()
336 if (!ourport->dma || !ourport->dma->tx_chan || in s3c24xx_serial_start_next_tx()
354 if (!ourport->dma || !ourport->dma->tx_chan) in s3c24xx_serial_start_tx()
358 if (ourport->dma && ourport->dma->tx_chan) { in s3c24xx_serial_start_tx()
367 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_uart_copy_rx_to_tty() local
373 dma_sync_single_for_cpu(ourport->port.dev, dma->rx_addr, in s3c24xx_uart_copy_rx_to_tty()
374 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_uart_copy_rx_to_tty()
382 ((unsigned char *)(ourport->dma->rx_buf)), count); in s3c24xx_uart_copy_rx_to_tty()
418 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_stop_rx() local
433 if (dma && dma->rx_chan) { in s3c24xx_serial_stop_rx()
434 dmaengine_pause(dma->tx_chan); in s3c24xx_serial_stop_rx()
435 dma_status = dmaengine_tx_status(dma->rx_chan, in s3c24xx_serial_stop_rx()
436 dma->rx_cookie, &state); in s3c24xx_serial_stop_rx()
439 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_stop_rx()
440 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_stop_rx()
481 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_rx_dma_complete() local
489 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state); in s3c24xx_serial_rx_dma_complete()
490 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_rx_dma_complete()
491 async_tx_ack(dma->rx_desc); in s3c24xx_serial_rx_dma_complete()
510 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c64xx_start_rx_dma() local
512 dma_sync_single_for_device(ourport->port.dev, dma->rx_addr, in s3c64xx_start_rx_dma()
513 dma->rx_size, DMA_FROM_DEVICE); in s3c64xx_start_rx_dma()
515 dma->rx_desc = dmaengine_prep_slave_single(dma->rx_chan, in s3c64xx_start_rx_dma()
516 dma->rx_addr, dma->rx_size, DMA_DEV_TO_MEM, in s3c64xx_start_rx_dma()
518 if (!dma->rx_desc) { in s3c64xx_start_rx_dma()
523 dma->rx_desc->callback = s3c24xx_serial_rx_dma_complete; in s3c64xx_start_rx_dma()
524 dma->rx_desc->callback_param = ourport; in s3c64xx_start_rx_dma()
525 dma->rx_bytes_requested = dma->rx_size; in s3c64xx_start_rx_dma()
527 dma->rx_cookie = dmaengine_submit(dma->rx_desc); in s3c64xx_start_rx_dma()
528 dma_async_issue_pending(dma->rx_chan); in s3c64xx_start_rx_dma()
582 struct s3c24xx_uart_dma *dma = ourport->dma; in s3c24xx_serial_rx_chars_dma() local
601 dmaengine_pause(dma->rx_chan); in s3c24xx_serial_rx_chars_dma()
602 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state); in s3c24xx_serial_rx_chars_dma()
603 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_rx_chars_dma()
604 received = dma->rx_bytes_requested - state.residue; in s3c24xx_serial_rx_chars_dma()
721 if (ourport->dma && ourport->dma->rx_chan) in s3c24xx_serial_rx_chars()
738 if (ourport->dma && ourport->dma->tx_chan && in s3c24xx_serial_tx_chars()
880 struct s3c24xx_uart_dma *dma = p->dma; in s3c24xx_serial_request_dma() local
885 dma->rx_conf.direction = DMA_DEV_TO_MEM; in s3c24xx_serial_request_dma()
886 dma->rx_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; in s3c24xx_serial_request_dma()
887 dma->rx_conf.src_addr = p->port.mapbase + S3C2410_URXH; in s3c24xx_serial_request_dma()
888 dma->rx_conf.src_maxburst = 16; in s3c24xx_serial_request_dma()
890 dma->tx_conf.direction = DMA_MEM_TO_DEV; in s3c24xx_serial_request_dma()
891 dma->tx_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; in s3c24xx_serial_request_dma()
892 dma->tx_conf.dst_addr = p->port.mapbase + S3C2410_UTXH; in s3c24xx_serial_request_dma()
894 dma->tx_conf.dst_maxburst = 16; in s3c24xx_serial_request_dma()
896 dma->tx_conf.dst_maxburst = 1; in s3c24xx_serial_request_dma()
901 dma->rx_chan = dma_request_slave_channel_compat(mask, dma->fn, in s3c24xx_serial_request_dma()
902 dma->rx_param, p->port.dev, "rx"); in s3c24xx_serial_request_dma()
903 if (!dma->rx_chan) in s3c24xx_serial_request_dma()
906 dmaengine_slave_config(dma->rx_chan, &dma->rx_conf); in s3c24xx_serial_request_dma()
908 dma->tx_chan = dma_request_slave_channel_compat(mask, dma->fn, in s3c24xx_serial_request_dma()
909 dma->tx_param, p->port.dev, "tx"); in s3c24xx_serial_request_dma()
910 if (!dma->tx_chan) { in s3c24xx_serial_request_dma()
911 dma_release_channel(dma->rx_chan); in s3c24xx_serial_request_dma()
915 dmaengine_slave_config(dma->tx_chan, &dma->tx_conf); in s3c24xx_serial_request_dma()
918 dma->rx_size = PAGE_SIZE; in s3c24xx_serial_request_dma()
920 dma->rx_buf = kmalloc(dma->rx_size, GFP_KERNEL); in s3c24xx_serial_request_dma()
922 if (!dma->rx_buf) { in s3c24xx_serial_request_dma()
923 dma_release_channel(dma->rx_chan); in s3c24xx_serial_request_dma()
924 dma_release_channel(dma->tx_chan); in s3c24xx_serial_request_dma()
928 dma->rx_addr = dma_map_single(dma->rx_chan->device->dev, dma->rx_buf, in s3c24xx_serial_request_dma()
929 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_serial_request_dma()
934 dma->tx_addr = dma_map_single(dma->tx_chan->device->dev, in s3c24xx_serial_request_dma()
945 struct s3c24xx_uart_dma *dma = p->dma; in s3c24xx_serial_release_dma() local
947 if (dma->rx_chan) { in s3c24xx_serial_release_dma()
948 dmaengine_terminate_all(dma->rx_chan); in s3c24xx_serial_release_dma()
949 dma_unmap_single(dma->rx_chan->device->dev, dma->rx_addr, in s3c24xx_serial_release_dma()
950 dma->rx_size, DMA_FROM_DEVICE); in s3c24xx_serial_release_dma()
951 kfree(dma->rx_buf); in s3c24xx_serial_release_dma()
952 dma_release_channel(dma->rx_chan); in s3c24xx_serial_release_dma()
953 dma->rx_chan = NULL; in s3c24xx_serial_release_dma()
956 if (dma->tx_chan) { in s3c24xx_serial_release_dma()
957 dmaengine_terminate_all(dma->tx_chan); in s3c24xx_serial_release_dma()
958 dma_unmap_single(dma->tx_chan->device->dev, dma->tx_addr, in s3c24xx_serial_release_dma()
960 dma_release_channel(dma->tx_chan); in s3c24xx_serial_release_dma()
961 dma->tx_chan = NULL; in s3c24xx_serial_release_dma()
992 if (ourport->dma) in s3c24xx_serial_shutdown()
1055 if (ourport->dma) { in s3c64xx_serial_startup()
1755 ourport->dma = devm_kzalloc(port->dev, in s3c24xx_serial_init_port()
1756 sizeof(*ourport->dma), in s3c24xx_serial_init_port()
1758 if (!ourport->dma) in s3c24xx_serial_init_port()