Lines Matching refs:sw_desc
516 static void set_updater_desc(struct pxad_desc_sw *sw_desc, in set_updater_desc() argument
520 sw_desc->hw_desc[sw_desc->nb_desc - 1]; in set_updater_desc()
521 dma_addr_t dma = sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr; in set_updater_desc()
530 if (sw_desc->cyclic) in set_updater_desc()
531 sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first; in set_updater_desc()
536 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd); in is_desc_completed() local
538 sw_desc->hw_desc[sw_desc->nb_desc - 1]; in is_desc_completed()
724 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd); in pxad_free_desc() local
726 BUG_ON(sw_desc->nb_desc == 0); in pxad_free_desc()
727 for (i = sw_desc->nb_desc - 1; i >= 0; i--) { in pxad_free_desc()
729 dma = sw_desc->hw_desc[i - 1]->ddadr; in pxad_free_desc()
731 dma = sw_desc->first; in pxad_free_desc()
732 dma_pool_free(sw_desc->desc_pool, in pxad_free_desc()
733 sw_desc->hw_desc[i], dma); in pxad_free_desc()
735 sw_desc->nb_desc = 0; in pxad_free_desc()
736 kfree(sw_desc); in pxad_free_desc()
742 struct pxad_desc_sw *sw_desc; in pxad_alloc_desc() local
746 sw_desc = kzalloc(sizeof(*sw_desc) + in pxad_alloc_desc()
749 if (!sw_desc) in pxad_alloc_desc()
751 sw_desc->desc_pool = chan->desc_pool; in pxad_alloc_desc()
754 sw_desc->hw_desc[i] = dma_pool_alloc(sw_desc->desc_pool, in pxad_alloc_desc()
756 if (!sw_desc->hw_desc[i]) { in pxad_alloc_desc()
759 __func__, i, sw_desc->desc_pool); in pxad_alloc_desc()
764 sw_desc->first = dma; in pxad_alloc_desc()
766 sw_desc->hw_desc[i - 1]->ddadr = dma; in pxad_alloc_desc()
767 sw_desc->nb_desc++; in pxad_alloc_desc()
770 return sw_desc; in pxad_alloc_desc()
772 pxad_free_desc(&sw_desc->vd); in pxad_alloc_desc()
922 struct pxad_desc_sw *sw_desc; in pxad_prep_memcpy() local
938 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_memcpy()
939 if (!sw_desc) in pxad_prep_memcpy()
941 sw_desc->len = len; in pxad_prep_memcpy()
945 sw_desc->misaligned = true; in pxad_prep_memcpy()
949 hw_desc = sw_desc->hw_desc[i++]; in pxad_prep_memcpy()
958 set_updater_desc(sw_desc, flags); in pxad_prep_memcpy()
960 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_memcpy()
969 struct pxad_desc_sw *sw_desc; in pxad_prep_slave_sg() local
985 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_slave_sg()
986 if (!sw_desc) in pxad_prep_slave_sg()
992 sw_desc->len += avail; in pxad_prep_slave_sg()
997 sw_desc->misaligned = true; in pxad_prep_slave_sg()
999 sw_desc->hw_desc[j]->dcmd = in pxad_prep_slave_sg()
1001 sw_desc->hw_desc[j]->dsadr = dsadr ? dsadr : dma; in pxad_prep_slave_sg()
1002 sw_desc->hw_desc[j++]->dtadr = dtadr ? dtadr : dma; in pxad_prep_slave_sg()
1008 set_updater_desc(sw_desc, flags); in pxad_prep_slave_sg()
1010 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_slave_sg()
1019 struct pxad_desc_sw *sw_desc; in pxad_prep_dma_cyclic() local
1045 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_dma_cyclic()
1046 if (!sw_desc) in pxad_prep_dma_cyclic()
1048 sw_desc->cyclic = true; in pxad_prep_dma_cyclic()
1049 sw_desc->len = len; in pxad_prep_dma_cyclic()
1051 phw_desc = sw_desc->hw_desc; in pxad_prep_dma_cyclic()
1061 set_updater_desc(sw_desc, flags); in pxad_prep_dma_cyclic()
1063 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_dma_cyclic()
1118 struct pxad_desc_sw *sw_desc = NULL; in pxad_residue() local
1138 sw_desc = to_pxad_sw_desc(vd); in pxad_residue()
1139 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1154 for (i = 0; i < sw_desc->nb_desc - 1; i++) { in pxad_residue()
1155 hw_desc = sw_desc->hw_desc[i]; in pxad_residue()
1156 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1180 residue = sw_desc->len; in pxad_residue()
1186 __func__, vd, cookie, sw_desc, residue); in pxad_residue()