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()
723 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd); in pxad_free_desc() local
725 for (i = sw_desc->nb_desc - 1; i >= 0; i--) { in pxad_free_desc()
727 dma = sw_desc->hw_desc[i - 1]->ddadr; in pxad_free_desc()
729 dma = sw_desc->first; in pxad_free_desc()
730 dma_pool_free(sw_desc->desc_pool, in pxad_free_desc()
731 sw_desc->hw_desc[i], dma); in pxad_free_desc()
733 sw_desc->nb_desc = 0; in pxad_free_desc()
734 kfree(sw_desc); in pxad_free_desc()
740 struct pxad_desc_sw *sw_desc; in pxad_alloc_desc() local
744 sw_desc = kzalloc(struct_size(sw_desc, hw_desc, nb_hw_desc), in pxad_alloc_desc()
746 if (!sw_desc) in pxad_alloc_desc()
748 sw_desc->desc_pool = chan->desc_pool; in pxad_alloc_desc()
751 sw_desc->hw_desc[i] = dma_pool_alloc(sw_desc->desc_pool, in pxad_alloc_desc()
753 if (!sw_desc->hw_desc[i]) { in pxad_alloc_desc()
756 __func__, i, sw_desc->desc_pool); in pxad_alloc_desc()
761 sw_desc->first = dma; in pxad_alloc_desc()
763 sw_desc->hw_desc[i - 1]->ddadr = dma; in pxad_alloc_desc()
764 sw_desc->nb_desc++; in pxad_alloc_desc()
767 return sw_desc; in pxad_alloc_desc()
769 pxad_free_desc(&sw_desc->vd); in pxad_alloc_desc()
919 struct pxad_desc_sw *sw_desc; in pxad_prep_memcpy() local
935 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_memcpy()
936 if (!sw_desc) in pxad_prep_memcpy()
938 sw_desc->len = len; in pxad_prep_memcpy()
942 sw_desc->misaligned = true; in pxad_prep_memcpy()
946 hw_desc = sw_desc->hw_desc[i++]; in pxad_prep_memcpy()
955 set_updater_desc(sw_desc, flags); in pxad_prep_memcpy()
957 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_memcpy()
966 struct pxad_desc_sw *sw_desc; in pxad_prep_slave_sg() local
982 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_slave_sg()
983 if (!sw_desc) in pxad_prep_slave_sg()
989 sw_desc->len += avail; in pxad_prep_slave_sg()
994 sw_desc->misaligned = true; in pxad_prep_slave_sg()
996 sw_desc->hw_desc[j]->dcmd = in pxad_prep_slave_sg()
998 sw_desc->hw_desc[j]->dsadr = dsadr ? dsadr : dma; in pxad_prep_slave_sg()
999 sw_desc->hw_desc[j++]->dtadr = dtadr ? dtadr : dma; in pxad_prep_slave_sg()
1005 set_updater_desc(sw_desc, flags); in pxad_prep_slave_sg()
1007 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_slave_sg()
1016 struct pxad_desc_sw *sw_desc; in pxad_prep_dma_cyclic() local
1042 sw_desc = pxad_alloc_desc(chan, nb_desc + 1); in pxad_prep_dma_cyclic()
1043 if (!sw_desc) in pxad_prep_dma_cyclic()
1045 sw_desc->cyclic = true; in pxad_prep_dma_cyclic()
1046 sw_desc->len = len; in pxad_prep_dma_cyclic()
1048 phw_desc = sw_desc->hw_desc; in pxad_prep_dma_cyclic()
1058 set_updater_desc(sw_desc, flags); in pxad_prep_dma_cyclic()
1060 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_dma_cyclic()
1115 struct pxad_desc_sw *sw_desc = NULL; in pxad_residue() local
1135 sw_desc = to_pxad_sw_desc(vd); in pxad_residue()
1136 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1151 for (i = 0; i < sw_desc->nb_desc - 1; i++) { in pxad_residue()
1152 hw_desc = sw_desc->hw_desc[i]; in pxad_residue()
1153 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR) in pxad_residue()
1177 residue = sw_desc->len; in pxad_residue()
1183 __func__, vd, cookie, sw_desc, residue); in pxad_residue()