Lines Matching refs:desc
85 struct mmp_pdma_desc_hw desc; member
96 struct dma_async_tx_descriptor desc; member
297 struct mmp_pdma_desc_sw *desc; in start_pending_queue() local
324 desc = list_first_entry(&chan->chain_pending, in start_pending_queue()
332 set_desc(chan->phy, desc->async_tx.phys); in start_pending_queue()
342 struct mmp_pdma_desc_sw *desc = tx_to_mmp_pdma_desc(tx); in mmp_pdma_tx_submit() local
349 list_for_each_entry(child, &desc->tx_list, node) { in mmp_pdma_tx_submit()
354 list_splice_tail_init(&desc->tx_list, &chan->chain_pending); in mmp_pdma_tx_submit()
364 struct mmp_pdma_desc_sw *desc; in mmp_pdma_alloc_descriptor() local
367 desc = dma_pool_alloc(chan->desc_pool, GFP_ATOMIC, &pdesc); in mmp_pdma_alloc_descriptor()
368 if (!desc) { in mmp_pdma_alloc_descriptor()
373 memset(desc, 0, sizeof(*desc)); in mmp_pdma_alloc_descriptor()
374 INIT_LIST_HEAD(&desc->tx_list); in mmp_pdma_alloc_descriptor()
375 dma_async_tx_descriptor_init(&desc->async_tx, &chan->chan); in mmp_pdma_alloc_descriptor()
377 desc->async_tx.tx_submit = mmp_pdma_tx_submit; in mmp_pdma_alloc_descriptor()
378 desc->async_tx.phys = pdesc; in mmp_pdma_alloc_descriptor()
380 return desc; in mmp_pdma_alloc_descriptor()
417 struct mmp_pdma_desc_sw *desc, *_desc; in mmp_pdma_free_desc_list() local
419 list_for_each_entry_safe(desc, _desc, list, node) { in mmp_pdma_free_desc_list()
420 list_del(&desc->node); in mmp_pdma_free_desc_list()
421 dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys); in mmp_pdma_free_desc_list()
479 new->desc.dcmd = chan->dcmd | (DCMD_LENGTH & copy); in mmp_pdma_prep_memcpy()
480 new->desc.dsadr = dma_src; in mmp_pdma_prep_memcpy()
481 new->desc.dtadr = dma_dst; in mmp_pdma_prep_memcpy()
486 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_memcpy()
511 new->desc.ddadr = DDADR_STOP; in mmp_pdma_prep_memcpy()
512 new->desc.dcmd |= DCMD_ENDIRQEN; in mmp_pdma_prep_memcpy()
557 new->desc.dcmd = chan->dcmd | (DCMD_LENGTH & len); in mmp_pdma_prep_slave_sg()
559 new->desc.dsadr = addr; in mmp_pdma_prep_slave_sg()
560 new->desc.dtadr = chan->dev_addr; in mmp_pdma_prep_slave_sg()
562 new->desc.dsadr = chan->dev_addr; in mmp_pdma_prep_slave_sg()
563 new->desc.dtadr = addr; in mmp_pdma_prep_slave_sg()
569 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_slave_sg()
588 new->desc.ddadr = DDADR_STOP; in mmp_pdma_prep_slave_sg()
589 new->desc.dcmd |= DCMD_ENDIRQEN; in mmp_pdma_prep_slave_sg()
648 new->desc.dcmd = (chan->dcmd | DCMD_ENDIRQEN | in mmp_pdma_prep_dma_cyclic()
650 new->desc.dsadr = dma_src; in mmp_pdma_prep_dma_cyclic()
651 new->desc.dtadr = dma_dst; in mmp_pdma_prep_dma_cyclic()
656 prev->desc.ddadr = new->async_tx.phys; in mmp_pdma_prep_dma_cyclic()
677 new->desc.ddadr = first->async_tx.phys; in mmp_pdma_prep_dma_cyclic()
779 start = sw->desc.dtadr; in mmp_pdma_residue()
781 start = sw->desc.dsadr; in mmp_pdma_residue()
783 len = sw->desc.dcmd & DCMD_LENGTH; in mmp_pdma_residue()
814 if (cyclic || !(sw->desc.dcmd & DCMD_ENDIRQEN)) in mmp_pdma_residue()
865 struct mmp_pdma_desc_sw *desc, *_desc; in dma_do_tasklet() local
874 desc = chan->cyclic_first; in dma_do_tasklet()
875 cb = desc->async_tx.callback; in dma_do_tasklet()
876 cb_data = desc->async_tx.callback_param; in dma_do_tasklet()
888 list_for_each_entry_safe(desc, _desc, &chan->chain_running, node) { in dma_do_tasklet()
893 list_move(&desc->node, &chain_cleanup); in dma_do_tasklet()
900 if (desc->desc.dcmd & DCMD_ENDIRQEN) { in dma_do_tasklet()
901 dma_cookie_t cookie = desc->async_tx.cookie; in dma_do_tasklet()
902 dma_cookie_complete(&desc->async_tx); in dma_do_tasklet()
919 list_for_each_entry_safe(desc, _desc, &chain_cleanup, node) { in dma_do_tasklet()
920 struct dma_async_tx_descriptor *txd = &desc->async_tx; in dma_do_tasklet()
923 list_del(&desc->node); in dma_do_tasklet()
928 dma_pool_free(chan->desc_pool, desc, txd->phys); in dma_do_tasklet()