Lines Matching defs:dma

25 #include <linux/dma-mapping.h>
140 struct s3c24xx_uart_dma *dma;
284 struct s3c24xx_uart_dma *dma = ourport->dma;
297 if (dma && dma->tx_chan && ourport->tx_in_progress == S3C24XX_TX_DMA) {
298 dmaengine_pause(dma->tx_chan);
299 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state);
300 dmaengine_terminate_all(dma->tx_chan);
302 dma->tx_transfer_addr, dma->tx_size, DMA_TO_DEVICE);
303 async_tx_ack(dma->tx_desc);
304 count = dma->tx_bytes_requested - state.residue;
325 struct s3c24xx_uart_dma *dma = ourport->dma;
330 dmaengine_tx_status(dma->tx_chan, dma->tx_cookie, &state);
331 count = dma->tx_bytes_requested - state.residue;
332 async_tx_ack(dma->tx_desc);
334 dma_sync_single_for_cpu(ourport->port.dev, dma->tx_transfer_addr,
335 dma->tx_size, DMA_TO_DEVICE);
361 /* Enable tx dma mode */
408 struct s3c24xx_uart_dma *dma = ourport->dma;
413 dma->tx_size = count & ~(dma_get_cache_alignment() - 1);
414 dma->tx_transfer_addr = dma->tx_addr + xmit->tail;
416 dma_sync_single_for_device(ourport->port.dev, dma->tx_transfer_addr,
417 dma->tx_size, DMA_TO_DEVICE);
419 dma->tx_desc = dmaengine_prep_slave_single(dma->tx_chan,
420 dma->tx_transfer_addr, dma->tx_size,
422 if (!dma->tx_desc) {
427 dma->tx_desc->callback = s3c24xx_serial_tx_dma_complete;
428 dma->tx_desc->callback_param = ourport;
429 dma->tx_bytes_requested = dma->tx_size;
432 dma->tx_cookie = dmaengine_submit(dma->tx_desc);
433 dma_async_issue_pending(dma->tx_chan);
451 if (!ourport->dma || !ourport->dma->tx_chan ||
469 if (!ourport->dma || !ourport->dma->tx_chan)
473 if (ourport->dma && ourport->dma->tx_chan) {
482 struct s3c24xx_uart_dma *dma = ourport->dma;
488 dma_sync_single_for_cpu(ourport->port.dev, dma->rx_addr,
489 dma->rx_size, DMA_FROM_DEVICE);
497 ((unsigned char *)(ourport->dma->rx_buf)), count);
507 struct s3c24xx_uart_dma *dma = ourport->dma;
522 if (dma && dma->rx_chan) {
523 dmaengine_pause(dma->tx_chan);
524 dma_status = dmaengine_tx_status(dma->rx_chan,
525 dma->rx_cookie, &state);
528 received = dma->rx_bytes_requested - state.residue;
529 dmaengine_terminate_all(dma->rx_chan);
570 struct s3c24xx_uart_dma *dma = ourport->dma;
578 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state);
579 received = dma->rx_bytes_requested - state.residue;
580 async_tx_ack(dma->rx_desc);
599 struct s3c24xx_uart_dma *dma = ourport->dma;
601 dma_sync_single_for_device(ourport->port.dev, dma->rx_addr,
602 dma->rx_size, DMA_FROM_DEVICE);
604 dma->rx_desc = dmaengine_prep_slave_single(dma->rx_chan,
605 dma->rx_addr, dma->rx_size, DMA_DEV_TO_MEM,
607 if (!dma->rx_desc) {
612 dma->rx_desc->callback = s3c24xx_serial_rx_dma_complete;
613 dma->rx_desc->callback_param = ourport;
614 dma->rx_bytes_requested = dma->rx_size;
616 dma->rx_cookie = dmaengine_submit(dma->rx_desc);
617 dma_async_issue_pending(dma->rx_chan);
673 struct s3c24xx_uart_dma *dma = ourport->dma;
692 dmaengine_pause(dma->rx_chan);
693 dmaengine_tx_status(dma->rx_chan, dma->rx_cookie, &state);
694 dmaengine_terminate_all(dma->rx_chan);
695 received = dma->rx_bytes_requested - state.residue;
820 if (ourport->dma && ourport->dma->rx_chan)
837 if (ourport->dma && ourport->dma->tx_chan &&
976 struct s3c24xx_uart_dma *dma = p->dma;
982 dma->rx_conf.direction = DMA_DEV_TO_MEM;
983 dma->rx_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
984 dma->rx_conf.src_addr = p->port.mapbase + S3C2410_URXH;
985 dma->rx_conf.src_maxburst = 1;
987 dma->tx_conf.direction = DMA_MEM_TO_DEV;
988 dma->tx_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
989 dma->tx_conf.dst_addr = p->port.mapbase + S3C2410_UTXH;
990 dma->tx_conf.dst_maxburst = 1;
992 dma->rx_chan = dma_request_chan(p->port.dev, "rx");
994 if (IS_ERR(dma->rx_chan)) {
996 ret = PTR_ERR(dma->rx_chan);
1000 ret = dma_get_slave_caps(dma->rx_chan, &dma_caps);
1008 dmaengine_slave_config(dma->rx_chan, &dma->rx_conf);
1010 dma->tx_chan = dma_request_chan(p->port.dev, "tx");
1011 if (IS_ERR(dma->tx_chan)) {
1013 ret = PTR_ERR(dma->tx_chan);
1017 ret = dma_get_slave_caps(dma->tx_chan, &dma_caps);
1025 dmaengine_slave_config(dma->tx_chan, &dma->tx_conf);
1028 dma->rx_size = PAGE_SIZE;
1030 dma->rx_buf = kmalloc(dma->rx_size, GFP_KERNEL);
1031 if (!dma->rx_buf) {
1036 dma->rx_addr = dma_map_single(p->port.dev, dma->rx_buf,
1037 dma->rx_size, DMA_FROM_DEVICE);
1038 if (dma_mapping_error(p->port.dev, dma->rx_addr)) {
1045 dma->tx_addr = dma_map_single(p->port.dev, p->port.state->xmit.buf,
1047 if (dma_mapping_error(p->port.dev, dma->tx_addr)) {
1056 dma_unmap_single(p->port.dev, dma->rx_addr, dma->rx_size,
1059 kfree(dma->rx_buf);
1061 dma_release_channel(dma->tx_chan);
1063 dma_release_channel(dma->rx_chan);
1072 struct s3c24xx_uart_dma *dma = p->dma;
1074 if (dma->rx_chan) {
1075 dmaengine_terminate_all(dma->rx_chan);
1076 dma_unmap_single(p->port.dev, dma->rx_addr,
1077 dma->rx_size, DMA_FROM_DEVICE);
1078 kfree(dma->rx_buf);
1079 dma_release_channel(dma->rx_chan);
1080 dma->rx_chan = NULL;
1083 if (dma->tx_chan) {
1084 dmaengine_terminate_all(dma->tx_chan);
1085 dma_unmap_single(p->port.dev, dma->tx_addr,
1087 dma_release_channel(dma->tx_chan);
1088 dma->tx_chan = NULL;
1119 if (ourport->dma)
1175 if (ourport->dma) {
1178 devm_kfree(port->dev, ourport->dma);
1179 ourport->dma = NULL;
1927 ourport->dma = devm_kzalloc(port->dev,
1928 sizeof(*ourport->dma),
1930 if (!ourport->dma) {