Lines Matching refs:desc
86 struct mmp_pdma_desc_hw desc; member
97 struct dma_async_tx_descriptor desc; member
298 struct mmp_pdma_desc_sw *desc; in start_pending_queue() local
325 desc = list_first_entry(&chan->chain_pending, in start_pending_queue()
333 set_desc(chan->phy, desc->async_tx.phys); in start_pending_queue()
343 struct mmp_pdma_desc_sw *desc = tx_to_mmp_pdma_desc(tx); in mmp_pdma_tx_submit() local
350 list_for_each_entry(child, &desc->tx_list, node) { in mmp_pdma_tx_submit()
355 list_splice_tail_init(&desc->tx_list, &chan->chain_pending); in mmp_pdma_tx_submit()
365 struct mmp_pdma_desc_sw *desc; in mmp_pdma_alloc_descriptor() local
368 desc = dma_pool_alloc(chan->desc_pool, GFP_ATOMIC, &pdesc); in mmp_pdma_alloc_descriptor()
369 if (!desc) { in mmp_pdma_alloc_descriptor()
374 memset(desc, 0, sizeof(*desc)); in mmp_pdma_alloc_descriptor()
375 INIT_LIST_HEAD(&desc->tx_list); in mmp_pdma_alloc_descriptor()
376 dma_async_tx_descriptor_init(&desc->async_tx, &chan->chan); in mmp_pdma_alloc_descriptor()
378 desc->async_tx.tx_submit = mmp_pdma_tx_submit; in mmp_pdma_alloc_descriptor()
379 desc->async_tx.phys = pdesc; in mmp_pdma_alloc_descriptor()
381 return desc; in mmp_pdma_alloc_descriptor()
418 struct mmp_pdma_desc_sw *desc, *_desc; in mmp_pdma_free_desc_list() local
420 list_for_each_entry_safe(desc, _desc, list, node) { in mmp_pdma_free_desc_list()
421 list_del(&desc->node); in mmp_pdma_free_desc_list()
422 dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys); in mmp_pdma_free_desc_list()
480 new->desc.dcmd = chan->dcmd | (DCMD_LENGTH & copy); in mmp_pdma_prep_memcpy()
481 new->desc.dsadr = dma_src; in mmp_pdma_prep_memcpy()
482 new->desc.dtadr = dma_dst; in mmp_pdma_prep_memcpy()
487 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_memcpy()
512 new->desc.ddadr = DDADR_STOP; in mmp_pdma_prep_memcpy()
513 new->desc.dcmd |= DCMD_ENDIRQEN; in mmp_pdma_prep_memcpy()
558 new->desc.dcmd = chan->dcmd | (DCMD_LENGTH & len); in mmp_pdma_prep_slave_sg()
560 new->desc.dsadr = addr; in mmp_pdma_prep_slave_sg()
561 new->desc.dtadr = chan->dev_addr; in mmp_pdma_prep_slave_sg()
563 new->desc.dsadr = chan->dev_addr; in mmp_pdma_prep_slave_sg()
564 new->desc.dtadr = addr; in mmp_pdma_prep_slave_sg()
570 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_slave_sg()
589 new->desc.ddadr = DDADR_STOP; in mmp_pdma_prep_slave_sg()
590 new->desc.dcmd |= DCMD_ENDIRQEN; in mmp_pdma_prep_slave_sg()
649 new->desc.dcmd = (chan->dcmd | DCMD_ENDIRQEN | in mmp_pdma_prep_dma_cyclic()
651 new->desc.dsadr = dma_src; in mmp_pdma_prep_dma_cyclic()
652 new->desc.dtadr = dma_dst; in mmp_pdma_prep_dma_cyclic()
657 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_dma_cyclic()
678 new->desc.ddadr = first->async_tx.phys; in mmp_pdma_prep_dma_cyclic()
780 start = sw->desc.dtadr; in mmp_pdma_residue()
782 start = sw->desc.dsadr; in mmp_pdma_residue()
784 len = sw->desc.dcmd & DCMD_LENGTH; in mmp_pdma_residue()
815 if (cyclic || !(sw->desc.dcmd & DCMD_ENDIRQEN)) in mmp_pdma_residue()
866 struct mmp_pdma_desc_sw *desc, *_desc; in dma_do_tasklet() local
875 desc = chan->cyclic_first; in dma_do_tasklet()
876 cb = desc->async_tx.callback; in dma_do_tasklet()
877 cb_data = desc->async_tx.callback_param; in dma_do_tasklet()
889 list_for_each_entry_safe(desc, _desc, &chan->chain_running, node) { in dma_do_tasklet()
894 list_move(&desc->node, &chain_cleanup); in dma_do_tasklet()
901 if (desc->desc.dcmd & DCMD_ENDIRQEN) { in dma_do_tasklet()
902 dma_cookie_t cookie = desc->async_tx.cookie; in dma_do_tasklet()
903 dma_cookie_complete(&desc->async_tx); in dma_do_tasklet()
920 list_for_each_entry_safe(desc, _desc, &chain_cleanup, node) { in dma_do_tasklet()
921 struct dma_async_tx_descriptor *txd = &desc->async_tx; in dma_do_tasklet()
924 list_del(&desc->node); in dma_do_tasklet()
929 dma_pool_free(chan->desc_pool, desc, txd->phys); in dma_do_tasklet()