Lines Matching defs:sw_desc

516 static void set_updater_desc(struct pxad_desc_sw *sw_desc,
520 sw_desc->hw_desc[sw_desc->nb_desc - 1];
521 dma_addr_t dma = sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr;
530 if (sw_desc->cyclic)
531 sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first;
536 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd);
538 sw_desc->hw_desc[sw_desc->nb_desc - 1];
724 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd);
726 for (i = sw_desc->nb_desc - 1; i >= 0; i--) {
728 dma = sw_desc->hw_desc[i - 1]->ddadr;
730 dma = sw_desc->first;
731 dma_pool_free(sw_desc->desc_pool,
732 sw_desc->hw_desc[i], dma);
734 sw_desc->nb_desc = 0;
735 kfree(sw_desc);
741 struct pxad_desc_sw *sw_desc;
745 sw_desc = kzalloc(sizeof(*sw_desc) +
748 if (!sw_desc)
750 sw_desc->desc_pool = chan->desc_pool;
753 sw_desc->hw_desc[i] = dma_pool_alloc(sw_desc->desc_pool,
755 if (!sw_desc->hw_desc[i]) {
758 __func__, i, sw_desc->desc_pool);
763 sw_desc->first = dma;
765 sw_desc->hw_desc[i - 1]->ddadr = dma;
766 sw_desc->nb_desc++;
769 return sw_desc;
771 pxad_free_desc(&sw_desc->vd);
921 struct pxad_desc_sw *sw_desc;
937 sw_desc = pxad_alloc_desc(chan, nb_desc + 1);
938 if (!sw_desc)
940 sw_desc->len = len;
944 sw_desc->misaligned = true;
948 hw_desc = sw_desc->hw_desc[i++];
957 set_updater_desc(sw_desc, flags);
959 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags);
968 struct pxad_desc_sw *sw_desc;
984 sw_desc = pxad_alloc_desc(chan, nb_desc + 1);
985 if (!sw_desc)
991 sw_desc->len += avail;
996 sw_desc->misaligned = true;
998 sw_desc->hw_desc[j]->dcmd =
1000 sw_desc->hw_desc[j]->dsadr = dsadr ? dsadr : dma;
1001 sw_desc->hw_desc[j++]->dtadr = dtadr ? dtadr : dma;
1007 set_updater_desc(sw_desc, flags);
1009 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags);
1018 struct pxad_desc_sw *sw_desc;
1044 sw_desc = pxad_alloc_desc(chan, nb_desc + 1);
1045 if (!sw_desc)
1047 sw_desc->cyclic = true;
1048 sw_desc->len = len;
1050 phw_desc = sw_desc->hw_desc;
1060 set_updater_desc(sw_desc, flags);
1062 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags);
1117 struct pxad_desc_sw *sw_desc = NULL;
1137 sw_desc = to_pxad_sw_desc(vd);
1138 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR)
1153 for (i = 0; i < sw_desc->nb_desc - 1; i++) {
1154 hw_desc = sw_desc->hw_desc[i];
1155 if (sw_desc->hw_desc[0]->dcmd & PXA_DCMD_INCSRCADDR)
1179 residue = sw_desc->len;
1184 "%s(): txd %p[%x] sw_desc=%p: %d\n",
1185 __func__, vd, cookie, sw_desc, residue);