Lines Matching refs:desc

60 	struct hsu_dma_desc *desc = hsuc->desc;  in hsu_dma_chan_start()  local
80 count = (desc->nents - desc->active) % HSU_DMA_CHAN_NR_DESC; in hsu_dma_chan_start()
82 hsu_chan_writel(hsuc, HSU_CH_DxSAR(i), desc->sg[i].addr); in hsu_dma_chan_start()
83 hsu_chan_writel(hsuc, HSU_CH_DxTSR(i), desc->sg[i].len); in hsu_dma_chan_start()
89 desc->active++; in hsu_dma_chan_start()
126 hsuc->desc = NULL; in hsu_dma_start_transfer()
131 hsuc->desc = to_hsu_dma_desc(vdesc); in hsu_dma_start_transfer()
152 struct hsu_dma_desc *desc; in hsu_dma_irq() local
179 desc = hsuc->desc; in hsu_dma_irq()
180 if (desc) { in hsu_dma_irq()
182 desc->status = DMA_ERROR; in hsu_dma_irq()
183 } else if (desc->active < desc->nents) { in hsu_dma_irq()
186 vchan_cookie_complete(&desc->vdesc); in hsu_dma_irq()
187 desc->status = DMA_COMPLETE; in hsu_dma_irq()
199 struct hsu_dma_desc *desc; in hsu_dma_alloc_desc() local
201 desc = kzalloc(sizeof(*desc), GFP_NOWAIT); in hsu_dma_alloc_desc()
202 if (!desc) in hsu_dma_alloc_desc()
205 desc->sg = kcalloc(nents, sizeof(*desc->sg), GFP_NOWAIT); in hsu_dma_alloc_desc()
206 if (!desc->sg) { in hsu_dma_alloc_desc()
207 kfree(desc); in hsu_dma_alloc_desc()
211 return desc; in hsu_dma_alloc_desc()
216 struct hsu_dma_desc *desc = to_hsu_dma_desc(vdesc); in hsu_dma_desc_free() local
218 kfree(desc->sg); in hsu_dma_desc_free()
219 kfree(desc); in hsu_dma_desc_free()
228 struct hsu_dma_desc *desc; in hsu_dma_prep_slave_sg() local
232 desc = hsu_dma_alloc_desc(sg_len); in hsu_dma_prep_slave_sg()
233 if (!desc) in hsu_dma_prep_slave_sg()
237 desc->sg[i].addr = sg_dma_address(sg); in hsu_dma_prep_slave_sg()
238 desc->sg[i].len = sg_dma_len(sg); in hsu_dma_prep_slave_sg()
241 desc->nents = sg_len; in hsu_dma_prep_slave_sg()
242 desc->direction = direction; in hsu_dma_prep_slave_sg()
244 desc->status = DMA_IN_PROGRESS; in hsu_dma_prep_slave_sg()
246 return vchan_tx_prep(&hsuc->vchan, &desc->vdesc, flags); in hsu_dma_prep_slave_sg()
255 if (vchan_issue_pending(&hsuc->vchan) && !hsuc->desc) in hsu_dma_issue_pending()
260 static size_t hsu_dma_desc_size(struct hsu_dma_desc *desc) in hsu_dma_desc_size() argument
265 for (i = desc->active; i < desc->nents; i++) in hsu_dma_desc_size()
266 bytes += desc->sg[i].len; in hsu_dma_desc_size()
273 struct hsu_dma_desc *desc = hsuc->desc; in hsu_dma_active_desc_size() local
274 size_t bytes = hsu_dma_desc_size(desc); in hsu_dma_active_desc_size()
279 i = desc->active % HSU_DMA_CHAN_NR_DESC; in hsu_dma_active_desc_size()
303 if (hsuc->desc && cookie == hsuc->desc->vdesc.tx.cookie) { in hsu_dma_tx_status()
306 status = hsuc->desc->status; in hsu_dma_tx_status()
354 if (hsuc->desc && hsuc->desc->status == DMA_IN_PROGRESS) { in hsu_dma_pause()
356 hsuc->desc->status = DMA_PAUSED; in hsu_dma_pause()
369 if (hsuc->desc && hsuc->desc->status == DMA_PAUSED) { in hsu_dma_resume()
370 hsuc->desc->status = DMA_IN_PROGRESS; in hsu_dma_resume()
387 if (hsuc->desc) { in hsu_dma_terminate_all()
388 hsu_dma_desc_free(&hsuc->desc->vdesc); in hsu_dma_terminate_all()
389 hsuc->desc = NULL; in hsu_dma_terminate_all()