Lines Matching refs:xfer
355 dw_edma_device_transfer(struct dw_edma_transfer *xfer) in dw_edma_device_transfer() argument
357 struct dw_edma_chan *chan = dchan2dw_edma_chan(xfer->dchan); in dw_edma_device_transfer()
358 enum dma_transfer_direction dir = xfer->direction; in dw_edma_device_transfer()
407 if (xfer->type == EDMA_XFER_CYCLIC) { in dw_edma_device_transfer()
408 if (!xfer->xfer.cyclic.len || !xfer->xfer.cyclic.cnt) in dw_edma_device_transfer()
410 } else if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
411 if (xfer->xfer.sg.len < 1) in dw_edma_device_transfer()
413 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
414 if (!xfer->xfer.il->numf || xfer->xfer.il->frame_size < 1) in dw_edma_device_transfer()
416 if (!xfer->xfer.il->src_inc || !xfer->xfer.il->dst_inc) in dw_edma_device_transfer()
430 if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
431 src_addr = xfer->xfer.il->src_start; in dw_edma_device_transfer()
432 dst_addr = xfer->xfer.il->dst_start; in dw_edma_device_transfer()
443 if (xfer->type == EDMA_XFER_CYCLIC) { in dw_edma_device_transfer()
444 cnt = xfer->xfer.cyclic.cnt; in dw_edma_device_transfer()
445 } else if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
446 cnt = xfer->xfer.sg.len; in dw_edma_device_transfer()
447 sg = xfer->xfer.sg.sgl; in dw_edma_device_transfer()
448 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
449 cnt = xfer->xfer.il->numf * xfer->xfer.il->frame_size; in dw_edma_device_transfer()
450 fsz = xfer->xfer.il->frame_size; in dw_edma_device_transfer()
454 if (xfer->type == EDMA_XFER_SCATTER_GATHER && !sg) in dw_edma_device_transfer()
467 if (xfer->type == EDMA_XFER_CYCLIC) in dw_edma_device_transfer()
468 burst->sz = xfer->xfer.cyclic.len; in dw_edma_device_transfer()
469 else if (xfer->type == EDMA_XFER_SCATTER_GATHER) in dw_edma_device_transfer()
471 else if (xfer->type == EDMA_XFER_INTERLEAVED) in dw_edma_device_transfer()
472 burst->sz = xfer->xfer.il->sgl[i % fsz].size; in dw_edma_device_transfer()
479 if (xfer->type == EDMA_XFER_CYCLIC) { in dw_edma_device_transfer()
480 burst->dar = xfer->xfer.cyclic.paddr; in dw_edma_device_transfer()
481 } else if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
491 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
496 if (xfer->type == EDMA_XFER_CYCLIC) { in dw_edma_device_transfer()
497 burst->sar = xfer->xfer.cyclic.paddr; in dw_edma_device_transfer()
498 } else if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
508 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
513 if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
515 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
516 struct dma_interleaved_template *il = xfer->xfer.il; in dw_edma_device_transfer()
529 return vchan_tx_prep(&chan->vc, &desc->vd, xfer->flags); in dw_edma_device_transfer()
544 struct dw_edma_transfer xfer; in dw_edma_device_prep_slave_sg() local
546 xfer.dchan = dchan; in dw_edma_device_prep_slave_sg()
547 xfer.direction = direction; in dw_edma_device_prep_slave_sg()
548 xfer.xfer.sg.sgl = sgl; in dw_edma_device_prep_slave_sg()
549 xfer.xfer.sg.len = len; in dw_edma_device_prep_slave_sg()
550 xfer.flags = flags; in dw_edma_device_prep_slave_sg()
551 xfer.type = EDMA_XFER_SCATTER_GATHER; in dw_edma_device_prep_slave_sg()
553 return dw_edma_device_transfer(&xfer); in dw_edma_device_prep_slave_sg()
562 struct dw_edma_transfer xfer; in dw_edma_device_prep_dma_cyclic() local
564 xfer.dchan = dchan; in dw_edma_device_prep_dma_cyclic()
565 xfer.direction = direction; in dw_edma_device_prep_dma_cyclic()
566 xfer.xfer.cyclic.paddr = paddr; in dw_edma_device_prep_dma_cyclic()
567 xfer.xfer.cyclic.len = len; in dw_edma_device_prep_dma_cyclic()
568 xfer.xfer.cyclic.cnt = count; in dw_edma_device_prep_dma_cyclic()
569 xfer.flags = flags; in dw_edma_device_prep_dma_cyclic()
570 xfer.type = EDMA_XFER_CYCLIC; in dw_edma_device_prep_dma_cyclic()
572 return dw_edma_device_transfer(&xfer); in dw_edma_device_prep_dma_cyclic()
580 struct dw_edma_transfer xfer; in dw_edma_device_prep_interleaved_dma() local
582 xfer.dchan = dchan; in dw_edma_device_prep_interleaved_dma()
583 xfer.direction = ilt->dir; in dw_edma_device_prep_interleaved_dma()
584 xfer.xfer.il = ilt; in dw_edma_device_prep_interleaved_dma()
585 xfer.flags = flags; in dw_edma_device_prep_interleaved_dma()
586 xfer.type = EDMA_XFER_INTERLEAVED; in dw_edma_device_prep_interleaved_dma()
588 return dw_edma_device_transfer(&xfer); in dw_edma_device_prep_interleaved_dma()