Lines Matching refs:desc

76 	struct ccp_dma_desc *desc, *dtmp;
78 list_for_each_entry_safe(desc, dtmp, list, entry) {
79 ccp_free_cmd_resources(ccp, &desc->active);
80 ccp_free_cmd_resources(ccp, &desc->pending);
82 list_del(&desc->entry);
83 kmem_cache_free(ccp->dma_desc_cache, desc);
108 struct ccp_dma_desc *desc, *dtmp;
110 list_for_each_entry_safe_reverse(desc, dtmp, list, entry) {
111 if (!async_tx_test_ack(&desc->tx_desc))
114 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc);
116 ccp_free_cmd_resources(ccp, &desc->active);
117 ccp_free_cmd_resources(ccp, &desc->pending);
119 list_del(&desc->entry);
120 kmem_cache_free(ccp->dma_desc_cache, desc);
139 static int ccp_issue_next_cmd(struct ccp_dma_desc *desc)
144 cmd = list_first_entry(&desc->pending, struct ccp_dma_cmd, entry);
145 list_move(&cmd->entry, &desc->active);
147 dev_dbg(desc->ccp->dev, "%s - tx %d, cmd=%p\n", __func__,
148 desc->tx_desc.cookie, cmd);
154 dev_dbg(desc->ccp->dev, "%s - error: ret=%d, tx %d, cmd=%p\n", __func__,
155 ret, desc->tx_desc.cookie, cmd);
160 static void ccp_free_active_cmd(struct ccp_dma_desc *desc)
164 cmd = list_first_entry_or_null(&desc->active, struct ccp_dma_cmd,
169 dev_dbg(desc->ccp->dev, "%s - freeing tx %d cmd=%p\n",
170 __func__, desc->tx_desc.cookie, cmd);
173 kmem_cache_free(desc->ccp->dma_cmd_cache, cmd);
177 struct ccp_dma_desc *desc)
180 if (desc)
181 list_move(&desc->entry, &chan->complete);
184 desc = list_first_entry_or_null(&chan->active, struct ccp_dma_desc,
187 return desc;
191 struct ccp_dma_desc *desc)
198 if (desc) {
200 ccp_free_active_cmd(desc);
202 if (!list_empty(&desc->pending)) {
204 if (desc->status != DMA_ERROR)
205 return desc;
208 ccp_free_cmd_resources(desc->ccp,
209 &desc->pending);
212 tx_desc = &desc->tx_desc;
219 if (desc) {
220 if (desc->status != DMA_ERROR)
221 desc->status = DMA_COMPLETE;
223 dev_dbg(desc->ccp->dev,
225 desc->tx_desc.cookie, desc->status);
231 desc = __ccp_next_dma_desc(chan, desc);
240 } while (desc);
247 struct ccp_dma_desc *desc;
252 desc = list_empty(&chan->active)
258 return desc;
263 struct ccp_dma_desc *desc = data;
270 chan = container_of(desc->tx_desc.chan, struct ccp_dma_chan,
274 __func__, desc->tx_desc.cookie, err);
277 desc->status = DMA_ERROR;
281 desc = ccp_handle_active_desc(chan, desc);
284 if (!desc || (chan->status == DMA_PAUSED))
287 ret = ccp_issue_next_cmd(desc);
291 desc->status = DMA_ERROR;
299 struct ccp_dma_desc *desc = container_of(tx_desc, struct ccp_dma_desc,
310 list_move_tail(&desc->entry, &chan->pending);
334 struct ccp_dma_desc *desc;
336 desc = kmem_cache_zalloc(chan->ccp->dma_desc_cache, GFP_NOWAIT);
337 if (!desc)
340 dma_async_tx_descriptor_init(&desc->tx_desc, &chan->dma_chan);
341 desc->tx_desc.flags = flags;
342 desc->tx_desc.tx_submit = ccp_tx_submit;
343 desc->ccp = chan->ccp;
344 INIT_LIST_HEAD(&desc->entry);
345 INIT_LIST_HEAD(&desc->pending);
346 INIT_LIST_HEAD(&desc->active);
347 desc->status = DMA_IN_PROGRESS;
349 return desc;
362 struct ccp_dma_desc *desc;
378 desc = ccp_alloc_dma_desc(chan, flags);
379 if (!desc)
438 ccp_cmd->data = desc;
440 list_add_tail(&cmd->entry, &desc->pending);
456 desc->len = total_len;
458 if (list_empty(&desc->pending))
461 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc);
465 list_add_tail(&desc->entry, &chan->created);
469 return desc;
472 ccp_free_cmd_resources(ccp, &desc->pending);
473 kmem_cache_free(ccp->dma_desc_cache, desc);
484 struct ccp_dma_desc *desc;
499 desc = ccp_create_desc(dma_chan, &dst_sg, 1, &src_sg, 1, flags);
500 if (!desc)
503 return &desc->tx_desc;
511 struct ccp_dma_desc *desc;
513 desc = ccp_alloc_dma_desc(chan, flags);
514 if (!desc)
517 return &desc->tx_desc;
524 struct ccp_dma_desc *desc;
531 desc = __ccp_pending_to_active(chan);
536 if (desc)
537 ccp_cmd_callback(desc, 0);
546 struct ccp_dma_desc *desc;
560 list_for_each_entry(desc, &chan->complete, entry) {
561 if (desc->tx_desc.cookie != cookie)
564 ret = desc->status;
593 struct ccp_dma_desc *desc;
598 desc = list_first_entry_or_null(&chan->active, struct ccp_dma_desc,
607 if (desc)
608 ccp_cmd_callback(desc, 0);
698 "%s-dmaengine-desc-cache",