Lines Matching refs:desc

89 	struct fsl_re_desc *desc;  in fsl_re_tx_submit()  local
94 desc = to_fsl_re_dma_desc(tx); in fsl_re_tx_submit()
99 list_add_tail(&desc->node, &re_chan->submit_q); in fsl_re_tx_submit()
110 struct fsl_re_desc *desc, *_desc; in fsl_re_issue_pending() local
119 list_for_each_entry_safe(desc, _desc, &re_chan->submit_q, node) { in fsl_re_issue_pending()
123 list_move_tail(&desc->node, &re_chan->active_q); in fsl_re_issue_pending()
126 &desc->hwdesc, sizeof(struct fsl_re_hw_desc)); in fsl_re_issue_pending()
136 static void fsl_re_desc_done(struct fsl_re_desc *desc) in fsl_re_desc_done() argument
138 dma_cookie_complete(&desc->async_tx); in fsl_re_desc_done()
139 dma_descriptor_unmap(&desc->async_tx); in fsl_re_desc_done()
140 dmaengine_desc_get_callback_invoke(&desc->async_tx, NULL); in fsl_re_desc_done()
145 struct fsl_re_desc *desc, *_desc; in fsl_re_cleanup_descs() local
149 list_for_each_entry_safe(desc, _desc, &re_chan->ack_q, node) { in fsl_re_cleanup_descs()
150 if (async_tx_test_ack(&desc->async_tx)) in fsl_re_cleanup_descs()
151 list_move_tail(&desc->node, &re_chan->free_q); in fsl_re_cleanup_descs()
161 struct fsl_re_desc *desc, *_desc; in fsl_re_dequeue() local
174 list_for_each_entry_safe(desc, _desc, &re_chan->active_q, in fsl_re_dequeue()
177 if (desc->hwdesc.lbea32 == hwdesc->lbea32 && in fsl_re_dequeue()
178 desc->hwdesc.addr_low == hwdesc->addr_low) { in fsl_re_dequeue()
185 fsl_re_desc_done(desc); in fsl_re_dequeue()
186 list_move_tail(&desc->node, &re_chan->ack_q); in fsl_re_dequeue()
251 struct fsl_re_desc *desc, in fsl_re_init_desc() argument
254 desc->re_chan = re_chan; in fsl_re_init_desc()
255 desc->async_tx.tx_submit = fsl_re_tx_submit; in fsl_re_init_desc()
256 dma_async_tx_descriptor_init(&desc->async_tx, &re_chan->chan); in fsl_re_init_desc()
257 INIT_LIST_HEAD(&desc->node); in fsl_re_init_desc()
259 desc->hwdesc.fmt32 = FSL_RE_FRAME_FORMAT << FSL_RE_HWDESC_FMT_SHIFT; in fsl_re_init_desc()
260 desc->hwdesc.lbea32 = upper_32_bits(paddr); in fsl_re_init_desc()
261 desc->hwdesc.addr_low = lower_32_bits(paddr); in fsl_re_init_desc()
262 desc->cf_addr = cf; in fsl_re_init_desc()
263 desc->cf_paddr = paddr; in fsl_re_init_desc()
265 desc->cdb_addr = (void *)(cf + FSL_RE_CF_DESC_SIZE); in fsl_re_init_desc()
266 desc->cdb_paddr = paddr + FSL_RE_CF_DESC_SIZE; in fsl_re_init_desc()
268 return desc; in fsl_re_init_desc()
274 struct fsl_re_desc *desc = NULL; in fsl_re_chan_alloc_desc() local
284 desc = list_first_entry(&re_chan->free_q, in fsl_re_chan_alloc_desc()
286 list_del(&desc->node); in fsl_re_chan_alloc_desc()
288 desc->async_tx.flags = flags; in fsl_re_chan_alloc_desc()
292 if (!desc) { in fsl_re_chan_alloc_desc()
293 desc = kzalloc(sizeof(*desc), GFP_NOWAIT); in fsl_re_chan_alloc_desc()
294 if (!desc) in fsl_re_chan_alloc_desc()
300 kfree(desc); in fsl_re_chan_alloc_desc()
304 desc = fsl_re_init_desc(re_chan, desc, cf, paddr); in fsl_re_chan_alloc_desc()
305 desc->async_tx.flags = flags; in fsl_re_chan_alloc_desc()
312 return desc; in fsl_re_chan_alloc_desc()
321 struct fsl_re_desc *desc; in fsl_re_prep_dma_genq() local
336 desc = fsl_re_chan_alloc_desc(re_chan, flags); in fsl_re_prep_dma_genq()
337 if (desc <= 0) in fsl_re_prep_dma_genq()
351 xor = desc->cdb_addr; in fsl_re_prep_dma_genq()
367 cf = desc->cf_addr; in fsl_re_prep_dma_genq()
368 fill_cfd_frame(cf, 0, sizeof(*xor), desc->cdb_paddr, 0); in fsl_re_prep_dma_genq()
383 return &desc->async_tx; in fsl_re_prep_dma_genq()
408 struct fsl_re_desc *desc; in fsl_re_prep_dma_pq() local
440 desc = to_fsl_re_dma_desc(tx); in fsl_re_prep_dma_pq()
460 desc = fsl_re_chan_alloc_desc(re_chan, flags); in fsl_re_prep_dma_pq()
461 if (desc <= 0) in fsl_re_prep_dma_pq()
471 pq = desc->cdb_addr; in fsl_re_prep_dma_pq()
488 cf = desc->cf_addr; in fsl_re_prep_dma_pq()
489 fill_cfd_frame(cf, 0, sizeof(struct fsl_re_pq_cdb), desc->cdb_paddr, 0); in fsl_re_prep_dma_pq()
517 return &desc->async_tx; in fsl_re_prep_dma_pq()
530 struct fsl_re_desc *desc; in fsl_re_prep_dma_memcpy() local
544 desc = fsl_re_chan_alloc_desc(re_chan, flags); in fsl_re_prep_dma_memcpy()
545 if (desc <= 0) in fsl_re_prep_dma_memcpy()
554 move = desc->cdb_addr; in fsl_re_prep_dma_memcpy()
558 cf = desc->cf_addr; in fsl_re_prep_dma_memcpy()
559 fill_cfd_frame(cf, 0, sizeof(*move), desc->cdb_paddr, 0); in fsl_re_prep_dma_memcpy()
569 return &desc->async_tx; in fsl_re_prep_dma_memcpy()
575 struct fsl_re_desc *desc; in fsl_re_alloc_chan_resources() local
582 desc = kzalloc(sizeof(*desc), GFP_KERNEL); in fsl_re_alloc_chan_resources()
583 if (!desc) in fsl_re_alloc_chan_resources()
589 kfree(desc); in fsl_re_alloc_chan_resources()
593 INIT_LIST_HEAD(&desc->node); in fsl_re_alloc_chan_resources()
594 fsl_re_init_desc(re_chan, desc, cf, paddr); in fsl_re_alloc_chan_resources()
596 list_add_tail(&desc->node, &re_chan->free_q); in fsl_re_alloc_chan_resources()
605 struct fsl_re_desc *desc; in fsl_re_free_chan_resources() local
609 desc = list_first_entry(&re_chan->free_q, in fsl_re_free_chan_resources()
613 list_del(&desc->node); in fsl_re_free_chan_resources()
614 dma_pool_free(re_chan->re_dev->cf_desc_pool, desc->cf_addr, in fsl_re_free_chan_resources()
615 desc->cf_paddr); in fsl_re_free_chan_resources()
616 kfree(desc); in fsl_re_free_chan_resources()