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];
723 struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd);
725 for (i = sw_desc->nb_desc - 1; i >= 0; i--) {
727 dma = sw_desc->hw_desc[i - 1]->ddadr;
729 dma = sw_desc->first;
730 dma_pool_free(sw_desc->desc_pool,
731 sw_desc->hw_desc[i], dma);
733 sw_desc->nb_desc = 0;
734 kfree(sw_desc);
740 struct pxad_desc_sw *sw_desc;
745 sw_desc = kzalloc(struct_size(sw_desc, hw_desc, nb_hw_desc),
747 if (!sw_desc)
749 sw_desc->desc_pool = chan->desc_pool;
752 desc = dma_pool_alloc(sw_desc->desc_pool, GFP_NOWAIT, &dma);
756 __func__, i, sw_desc->desc_pool);
760 sw_desc->nb_desc++;
761 sw_desc->hw_desc[i] = desc;
764 sw_desc->first = dma;
766 sw_desc->hw_desc[i - 1]->ddadr = dma;
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);