Lines Matching refs:desc
211 struct axi_dmac_desc *desc; in axi_dmac_start_transfer() local
220 desc = chan->next_desc; in axi_dmac_start_transfer()
222 if (!desc) { in axi_dmac_start_transfer()
227 desc = to_axi_dmac_desc(vdesc); in axi_dmac_start_transfer()
229 sg = &desc->sg[desc->num_submitted]; in axi_dmac_start_transfer()
237 desc->num_submitted++; in axi_dmac_start_transfer()
238 if (desc->num_submitted == desc->num_sgs || in axi_dmac_start_transfer()
239 desc->have_partial_xfer) { in axi_dmac_start_transfer()
240 if (desc->cyclic) in axi_dmac_start_transfer()
241 desc->num_submitted = 0; /* Start again */ in axi_dmac_start_transfer()
246 chan->next_desc = desc; in axi_dmac_start_transfer()
266 if (chan->hw_cyclic && desc->cyclic && !desc->vdesc.tx.callback && in axi_dmac_start_transfer()
267 desc->num_sgs == 1) in axi_dmac_start_transfer()
297 struct axi_dmac_desc *desc; in axi_dmac_dequeue_partial_xfers() local
307 list_for_each_entry(desc, &chan->active_descs, vdesc.node) { in axi_dmac_dequeue_partial_xfers()
308 for (i = 0; i < desc->num_sgs; i++) { in axi_dmac_dequeue_partial_xfers()
309 sg = &desc->sg[i]; in axi_dmac_dequeue_partial_xfers()
313 desc->have_partial_xfer = true; in axi_dmac_dequeue_partial_xfers()
481 struct axi_dmac_desc *desc; in axi_dmac_alloc_desc() local
484 desc = kzalloc(struct_size(desc, sg, num_sgs), GFP_NOWAIT); in axi_dmac_alloc_desc()
485 if (!desc) in axi_dmac_alloc_desc()
489 desc->sg[i].id = AXI_DMAC_SG_UNUSED; in axi_dmac_alloc_desc()
491 desc->num_sgs = num_sgs; in axi_dmac_alloc_desc()
493 return desc; in axi_dmac_alloc_desc()
545 struct axi_dmac_desc *desc; in axi_dmac_prep_slave_sg() local
558 desc = axi_dmac_alloc_desc(num_sgs); in axi_dmac_prep_slave_sg()
559 if (!desc) in axi_dmac_prep_slave_sg()
562 dsg = desc->sg; in axi_dmac_prep_slave_sg()
567 kfree(desc); in axi_dmac_prep_slave_sg()
575 desc->cyclic = false; in axi_dmac_prep_slave_sg()
577 return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); in axi_dmac_prep_slave_sg()
586 struct axi_dmac_desc *desc; in axi_dmac_prep_dma_cyclic() local
602 desc = axi_dmac_alloc_desc(num_periods * num_segments); in axi_dmac_prep_dma_cyclic()
603 if (!desc) in axi_dmac_prep_dma_cyclic()
607 period_len, desc->sg); in axi_dmac_prep_dma_cyclic()
609 desc->cyclic = true; in axi_dmac_prep_dma_cyclic()
611 return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); in axi_dmac_prep_dma_cyclic()
619 struct axi_dmac_desc *desc; in axi_dmac_prep_interleaved() local
657 desc = axi_dmac_alloc_desc(1); in axi_dmac_prep_interleaved()
658 if (!desc) in axi_dmac_prep_interleaved()
662 desc->sg[0].src_addr = xt->src_start; in axi_dmac_prep_interleaved()
663 desc->sg[0].src_stride = xt->sgl[0].size + src_icg; in axi_dmac_prep_interleaved()
667 desc->sg[0].dest_addr = xt->dst_start; in axi_dmac_prep_interleaved()
668 desc->sg[0].dest_stride = xt->sgl[0].size + dst_icg; in axi_dmac_prep_interleaved()
672 desc->sg[0].x_len = xt->sgl[0].size; in axi_dmac_prep_interleaved()
673 desc->sg[0].y_len = xt->numf; in axi_dmac_prep_interleaved()
675 desc->sg[0].x_len = xt->sgl[0].size * xt->numf; in axi_dmac_prep_interleaved()
676 desc->sg[0].y_len = 1; in axi_dmac_prep_interleaved()
680 desc->cyclic = true; in axi_dmac_prep_interleaved()
682 return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); in axi_dmac_prep_interleaved()
820 unsigned int val, desc; in axi_dmac_read_chan_config() local
822 desc = axi_dmac_read(dmac, AXI_DMAC_REG_INTERFACE_DESC); in axi_dmac_read_chan_config()
823 if (desc == 0) { in axi_dmac_read_chan_config()
828 val = AXI_DMAC_DMA_SRC_TYPE_GET(desc); in axi_dmac_read_chan_config()
835 val = AXI_DMAC_DMA_DST_TYPE_GET(desc); in axi_dmac_read_chan_config()
842 val = AXI_DMAC_DMA_SRC_WIDTH_GET(desc); in axi_dmac_read_chan_config()
850 val = AXI_DMAC_DMA_DST_WIDTH_GET(desc); in axi_dmac_read_chan_config()