Lines Matching refs:async_desc

355 	struct adm_async_desc *async_desc;  in adm_prep_slave_sg()  local
405 async_desc = kzalloc(sizeof(*async_desc), GFP_NOWAIT); in adm_prep_slave_sg()
406 if (!async_desc) { in adm_prep_slave_sg()
411 async_desc->mux = achan->mux ? ADM_CRCI_CTL_MUX_SEL : 0; in adm_prep_slave_sg()
412 async_desc->crci = crci; in adm_prep_slave_sg()
413 async_desc->blk_size = blk_size; in adm_prep_slave_sg()
414 async_desc->dma_len = single_count * sizeof(struct adm_desc_hw_single) + in adm_prep_slave_sg()
418 async_desc->cpl = kzalloc(async_desc->dma_len, GFP_NOWAIT); in adm_prep_slave_sg()
419 if (!async_desc->cpl) { in adm_prep_slave_sg()
424 async_desc->adev = adev; in adm_prep_slave_sg()
427 cple = PTR_ALIGN(async_desc->cpl, ADM_DESC_ALIGN); in adm_prep_slave_sg()
431 async_desc->length += sg_dma_len(sg); in adm_prep_slave_sg()
441 async_desc->dma_addr = dma_map_single(adev->dev, async_desc->cpl, in adm_prep_slave_sg()
442 async_desc->dma_len, in adm_prep_slave_sg()
444 if (dma_mapping_error(adev->dev, async_desc->dma_addr)) { in adm_prep_slave_sg()
449 cple_addr = async_desc->dma_addr + ((void *)cple - async_desc->cpl); in adm_prep_slave_sg()
455 *cple |= (async_desc->dma_addr + ADM_DESC_ALIGN) >> 3; in adm_prep_slave_sg()
459 return vchan_tx_prep(&achan->vc, &async_desc->vd, flags); in adm_prep_slave_sg()
462 kfree(async_desc); in adm_prep_slave_sg()
518 struct adm_async_desc *async_desc; in adm_start_dma() local
528 async_desc = container_of(vd, struct adm_async_desc, vd); in adm_start_dma()
529 achan->curr_txd = async_desc; in adm_start_dma()
549 if (async_desc->crci) { in adm_start_dma()
550 writel(async_desc->mux | async_desc->blk_size, in adm_start_dma()
551 adev->regs + ADM_CRCI_CTL(async_desc->crci, adev->ee)); in adm_start_dma()
558 writel(ALIGN(async_desc->dma_addr, ADM_DESC_ALIGN) >> 3, in adm_start_dma()
573 struct adm_async_desc *async_desc; in adm_dma_irq() local
603 async_desc = achan->curr_txd; in adm_dma_irq()
607 if (async_desc) { in adm_dma_irq()
608 vchan_cookie_complete(&async_desc->vd); in adm_dma_irq()
688 struct adm_async_desc *async_desc = container_of(vd, in adm_dma_free_desc() local
691 dma_unmap_single(async_desc->adev->dev, async_desc->dma_addr, in adm_dma_free_desc()
692 async_desc->dma_len, DMA_TO_DEVICE); in adm_dma_free_desc()
693 kfree(async_desc->cpl); in adm_dma_free_desc()
694 kfree(async_desc); in adm_dma_free_desc()