Lines Matching defs:edesc

218 	struct edma_desc		*edesc;
722 struct edma_desc *edesc;
726 if (!echan->edesc) {
732 echan->edesc = to_edma_desc(&vdesc->tx);
735 edesc = echan->edesc;
738 left = edesc->pset_nr - edesc->processed;
740 edesc->sg_len = 0;
744 j = i + edesc->processed;
745 edma_write_slot(ecc, echan->slot[i], &edesc->pset[j].param);
746 edesc->sg_len += edesc->pset[j].len;
760 edesc->pset[j].param.opt,
761 edesc->pset[j].param.src,
762 edesc->pset[j].param.dst,
763 edesc->pset[j].param.a_b_cnt,
764 edesc->pset[j].param.ccnt,
765 edesc->pset[j].param.src_dst_bidx,
766 edesc->pset[j].param.src_dst_cidx,
767 edesc->pset[j].param.link_bcntrld);
773 edesc->processed += nslots;
780 if (edesc->processed == edesc->pset_nr) {
781 if (edesc->cyclic)
800 } else if (edesc->processed <= MAX_NR_SG) {
806 echan->ch_num, edesc->processed);
822 * echan->edesc is NULL and exit.)
824 if (echan->edesc) {
827 if (!echan->tc && echan->edesc->cyclic)
830 vchan_terminate_vdesc(&echan->edesc->vdesc);
831 echan->edesc = NULL;
870 if (!echan->edesc)
1016 struct edma_desc *edesc;
1044 edesc = kzalloc(struct_size(edesc, pset, sg_len), GFP_ATOMIC);
1045 if (!edesc)
1048 edesc->pset_nr = sg_len;
1049 edesc->residue = 0;
1050 edesc->direction = direction;
1051 edesc->echan = echan;
1061 kfree(edesc);
1077 ret = edma_config_pset(chan, &edesc->pset[i], src_addr,
1081 kfree(edesc);
1085 edesc->absync = ret;
1086 edesc->residue += sg_dma_len(sg);
1090 edesc->pset[i].param.opt |= TCINTEN;
1098 edesc->pset[i].param.opt |= (TCINTEN | TCCMODE);
1100 edesc->residue_stat = edesc->residue;
1102 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1110 struct edma_desc *edesc;
1161 edesc = kzalloc(struct_size(edesc, pset, nslots), GFP_ATOMIC);
1162 if (!edesc)
1165 edesc->pset_nr = nslots;
1166 edesc->residue = edesc->residue_stat = len;
1167 edesc->direction = DMA_MEM_TO_MEM;
1168 edesc->echan = echan;
1170 ret = edma_config_pset(chan, &edesc->pset[0], src, dest, 1,
1173 kfree(edesc);
1177 edesc->absync = ret;
1179 edesc->pset[0].param.opt |= ITCCHEN;
1183 edesc->pset[0].param.opt |= TCINTEN;
1186 edesc->pset[0].param.opt |= TCCHEN;
1192 kfree(edesc);
1202 ret = edma_config_pset(chan, &edesc->pset[1], src, dest, 1,
1205 kfree(edesc);
1209 edesc->pset[1].param.opt |= ITCCHEN;
1212 edesc->pset[1].param.opt |= TCINTEN;
1216 edesc->polled = true;
1218 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1229 struct edma_desc *edesc;
1268 edesc = kzalloc(struct_size(edesc, pset, 1), GFP_ATOMIC);
1269 if (!edesc)
1272 edesc->direction = DMA_MEM_TO_MEM;
1273 edesc->echan = echan;
1274 edesc->pset_nr = 1;
1276 param = &edesc->pset[0].param;
1291 edesc->polled = true;
1293 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1303 struct edma_desc *edesc;
1364 edesc = kzalloc(struct_size(edesc, pset, nslots), GFP_ATOMIC);
1365 if (!edesc)
1368 edesc->cyclic = 1;
1369 edesc->pset_nr = nslots;
1370 edesc->residue = edesc->residue_stat = buf_len;
1371 edesc->direction = direction;
1372 edesc->echan = echan;
1383 kfree(edesc);
1391 memcpy(&edesc->pset[i], &edesc->pset[0],
1392 sizeof(edesc->pset[0]));
1396 ret = edma_config_pset(chan, &edesc->pset[i], src_addr,
1400 kfree(edesc);
1423 edesc->pset[i].param.opt,
1424 edesc->pset[i].param.src,
1425 edesc->pset[i].param.dst,
1426 edesc->pset[i].param.a_b_cnt,
1427 edesc->pset[i].param.ccnt,
1428 edesc->pset[i].param.src_dst_bidx,
1429 edesc->pset[i].param.src_dst_cidx,
1430 edesc->pset[i].param.link_bcntrld);
1432 edesc->absync = ret;
1438 edesc->pset[i].param.opt |= TCINTEN;
1442 edesc->pset[i].param.opt |= ITCINTEN;
1450 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1456 struct edma_desc *edesc;
1459 edesc = echan->edesc;
1460 if (edesc) {
1461 if (edesc->cyclic) {
1462 vchan_cyclic_callback(&edesc->vdesc);
1465 } else if (edesc->processed == edesc->pset_nr) {
1466 edesc->residue = 0;
1468 vchan_cookie_complete(&edesc->vdesc);
1469 echan->edesc = NULL;
1480 edesc->residue -= edesc->sg_len;
1481 edesc->residue_stat = edesc->residue;
1482 edesc->processed_stat = edesc->processed;
1543 if (!echan->edesc)
1751 if (vchan_issue_pending(&echan->vchan) && !echan->edesc)
1765 static u32 edma_residue(struct edma_desc *edesc)
1767 bool dst = edesc->direction == DMA_DEV_TO_MEM;
1769 struct edma_chan *echan = edesc->echan;
1770 struct edma_pset *pset = edesc->pset;
1792 if (is_slave_direction(edesc->direction))
1816 * We never update edesc->residue in the cyclic case, so we
1820 if (edesc->cyclic) {
1822 edesc->residue_stat = edesc->residue - done;
1823 return edesc->residue_stat;
1836 pset += edesc->processed_stat;
1838 for (i = edesc->processed_stat; i < edesc->processed; i++, pset++) {
1845 return edesc->residue_stat - (pos - pset->addr);
1848 edesc->processed_stat++;
1849 edesc->residue_stat -= pset->len;
1851 return edesc->residue_stat;
1874 if (echan->edesc && echan->edesc->vdesc.tx.cookie == cookie) {
1875 txstate->residue = edma_residue(echan->edesc);
1891 echan->edesc && echan->edesc->polled &&
1892 echan->edesc->vdesc.tx.cookie == cookie) {
1894 vchan_cookie_complete(&echan->edesc->vdesc);
1895 echan->edesc = NULL;