Lines Matching refs:async_desc
593 struct bam_async_desc *async_desc; in bam_prep_slave_sg() local
610 async_desc = kzalloc(sizeof(*async_desc) + in bam_prep_slave_sg()
613 if (!async_desc) in bam_prep_slave_sg()
617 async_desc->flags |= DESC_FLAG_NWD; in bam_prep_slave_sg()
620 async_desc->flags |= DESC_FLAG_EOT; in bam_prep_slave_sg()
622 async_desc->flags |= DESC_FLAG_INT; in bam_prep_slave_sg()
624 async_desc->num_desc = num_alloc; in bam_prep_slave_sg()
625 async_desc->curr_desc = async_desc->desc; in bam_prep_slave_sg()
626 async_desc->dir = direction; in bam_prep_slave_sg()
629 desc = async_desc->desc; in bam_prep_slave_sg()
646 async_desc->length += desc->size; in bam_prep_slave_sg()
651 return vchan_tx_prep(&bchan->vc, &async_desc->vd, flags); in bam_prep_slave_sg()
654 kfree(async_desc); in bam_prep_slave_sg()
736 struct bam_async_desc *async_desc; in process_channel_irqs() local
756 async_desc = bchan->curr_txd; in process_channel_irqs()
758 if (async_desc) { in process_channel_irqs()
759 async_desc->num_desc -= async_desc->xfer_len; in process_channel_irqs()
760 async_desc->curr_desc += async_desc->xfer_len; in process_channel_irqs()
764 bchan->head += async_desc->xfer_len; in process_channel_irqs()
772 if (!async_desc->num_desc) in process_channel_irqs()
773 vchan_cookie_complete(&async_desc->vd); in process_channel_irqs()
775 list_add(&async_desc->vd.node, in process_channel_irqs()
886 struct bam_async_desc *async_desc; in bam_start_dma() local
898 async_desc = container_of(vd, struct bam_async_desc, vd); in bam_start_dma()
899 bchan->curr_txd = async_desc; in bam_start_dma()
903 bam_chan_init_hw(bchan, async_desc->dir); in bam_start_dma()
907 bam_apply_new_config(bchan, async_desc->dir); in bam_start_dma()
911 if (async_desc->num_desc > MAX_DESCRIPTORS) in bam_start_dma()
912 async_desc->xfer_len = MAX_DESCRIPTORS; in bam_start_dma()
914 async_desc->xfer_len = async_desc->num_desc; in bam_start_dma()
917 if (async_desc->num_desc == async_desc->xfer_len) in bam_start_dma()
918 desc[async_desc->xfer_len - 1].flags = async_desc->flags; in bam_start_dma()
920 desc[async_desc->xfer_len - 1].flags |= DESC_FLAG_INT; in bam_start_dma()
922 if (bchan->tail + async_desc->xfer_len > MAX_DESCRIPTORS) { in bam_start_dma()
927 memcpy(fifo, &desc[partial], (async_desc->xfer_len - partial) * in bam_start_dma()
931 async_desc->xfer_len * sizeof(struct bam_desc_hw)); in bam_start_dma()
934 bchan->tail += async_desc->xfer_len; in bam_start_dma()
994 struct bam_async_desc *async_desc = container_of(vd, in bam_dma_free_desc() local
997 kfree(async_desc); in bam_dma_free_desc()