Lines Matching refs:sw_desc
575 static void set_updater_desc(struct pxad_desc_sw *sw_desc, in set_updater_desc() argument
579 sw_desc->hw_desc[sw_desc->nb_desc - 1]; in set_updater_desc()
580 dma_addr_t dma = sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr; in set_updater_desc()
589 if (sw_desc->cyclic) in set_updater_desc()
590 sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first; in set_updater_desc()
595 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd); in is_desc_completed() local
597 sw_desc->hw_desc[sw_desc->nb_desc - 1]; in is_desc_completed()
772 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd); in pxad_free_desc() local
774 BUG_ON(sw_desc->nb_desc == 0); in pxad_free_desc()
775 for (i = sw_desc->nb_desc - 1; i >= 0; i--) { in pxad_free_desc()
777 dma = sw_desc->hw_desc[i - 1]->ddadr; in pxad_free_desc()
779 dma = sw_desc->first; in pxad_free_desc()
780 dma_pool_free(sw_desc->desc_pool, in pxad_free_desc()
781 sw_desc->hw_desc[i], dma); in pxad_free_desc()
783 sw_desc->nb_desc = 0; in pxad_free_desc()
784 kfree(sw_desc); in pxad_free_desc()
790 struct pxad_desc_sw *sw_desc; in pxad_alloc_desc() local
794 sw_desc = kzalloc(sizeof(*sw_desc) + in pxad_alloc_desc()
797 if (!sw_desc) in pxad_alloc_desc()
799 sw_desc->desc_pool = chan->desc_pool; in pxad_alloc_desc()
802 sw_desc->hw_desc[i] = dma_pool_alloc(sw_desc->desc_pool, in pxad_alloc_desc()
804 if (!sw_desc->hw_desc[i]) { in pxad_alloc_desc()
807 __func__, i, sw_desc->desc_pool); in pxad_alloc_desc()
812 sw_desc->first = dma; in pxad_alloc_desc()
814 sw_desc->hw_desc[i - 1]->ddadr = dma; in pxad_alloc_desc()
815 sw_desc->nb_desc++; in pxad_alloc_desc()
818 return sw_desc; in pxad_alloc_desc()
820 pxad_free_desc(&sw_desc->vd); in pxad_alloc_desc()
977 struct pxad_desc_sw *sw_desc; in pxad_prep_memcpy() local
993 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_memcpy()
994 if (!sw_desc) in pxad_prep_memcpy()
996 sw_desc->len = len; in pxad_prep_memcpy()
1000 sw_desc->misaligned = true; in pxad_prep_memcpy()
1004 hw_desc = sw_desc->hw_desc[i++]; in pxad_prep_memcpy()
1013 set_updater_desc(sw_desc, flags); in pxad_prep_memcpy()
1015 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_memcpy()
1024 struct pxad_desc_sw *sw_desc; in pxad_prep_slave_sg() local
1040 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_slave_sg()
1041 if (!sw_desc) in pxad_prep_slave_sg()
1047 sw_desc->len += avail; in pxad_prep_slave_sg()
1052 sw_desc->misaligned = true; in pxad_prep_slave_sg()
1054 sw_desc->hw_desc[j]->dcmd = in pxad_prep_slave_sg()
1056 sw_desc->hw_desc[j]->dsadr = dsadr ? dsadr : dma; in pxad_prep_slave_sg()
1057 sw_desc->hw_desc[j++]->dtadr = dtadr ? dtadr : dma; in pxad_prep_slave_sg()
1063 set_updater_desc(sw_desc, flags); in pxad_prep_slave_sg()
1065 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_slave_sg()
1074 struct pxad_desc_sw *sw_desc; in pxad_prep_dma_cyclic() local
1100 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_dma_cyclic()
1101 if (!sw_desc) in pxad_prep_dma_cyclic()
1103 sw_desc->cyclic = true; in pxad_prep_dma_cyclic()
1104 sw_desc->len = len; in pxad_prep_dma_cyclic()
1106 phw_desc = sw_desc->hw_desc; in pxad_prep_dma_cyclic()
1116 set_updater_desc(sw_desc, flags); in pxad_prep_dma_cyclic()
1118 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_dma_cyclic()
1173 struct pxad_desc_sw *sw_desc = NULL; in pxad_residue() local
1193 sw_desc = to_pxad_sw_desc(vd); in pxad_residue()
1194 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1209 for (i = 0; i < sw_desc->nb_desc - 1; i++) { in pxad_residue()
1210 hw_desc = sw_desc->hw_desc[i]; in pxad_residue()
1211 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1235 residue = sw_desc->len; in pxad_residue()
1241 __func__, vd, cookie, sw_desc, residue); in pxad_residue()