Lines Matching defs:xchan
280 * @xchan: DMA channel pointer
282 static int xdma_xfer_start(struct xdma_chan *xchan)
284 struct virt_dma_desc *vd = vchan_next_desc(&xchan->vchan);
285 struct xdma_device *xdev = xchan->xdev_hdl;
295 if (!vd || xchan->busy)
299 ret = regmap_write(xdev->rmap, xchan->base + XDMA_CHAN_CONTROL_W1C,
305 if (desc->dir != xchan->dir) {
314 ret = regmap_write(xdev->rmap, xchan->base + XDMA_SGDMA_DESC_LO, val);
319 ret = regmap_write(xdev->rmap, xchan->base + XDMA_SGDMA_DESC_HI, val);
327 ret = regmap_write(xdev->rmap, xchan->base + XDMA_SGDMA_DESC_ADJ, val);
332 ret = regmap_write(xdev->rmap, xchan->base + XDMA_CHAN_CONTROL,
337 xchan->busy = true;
350 struct xdma_chan **chans, *xchan;
407 xchan = &(*chans)[j];
408 xchan->xdev_hdl = xdev;
409 xchan->base = base + i * XDMA_CHAN_STRIDE;
410 xchan->dir = dir;
412 ret = xdma_channel_init(xchan);
415 xchan->vchan.desc_free = xdma_free_desc;
416 vchan_init(&xchan->vchan, &xdev->dma_dev);
587 struct xdma_chan *xchan = dev_id;
594 spin_lock(&xchan->vchan.lock);
597 vd = vchan_next_desc(&xchan->vchan);
601 xchan->busy = false;
603 xdev = xchan->xdev_hdl;
605 ret = regmap_read(xdev->rmap, xchan->base + XDMA_CHAN_COMPLETED_DESC,
625 xdma_xfer_start(xchan);
628 spin_unlock(&xchan->vchan.lock);