Lines Matching refs:xchan

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