Lines Matching defs:edesc
227 struct edma_desc *edesc;
779 struct edma_desc *edesc;
783 if (!echan->edesc) {
789 echan->edesc = to_edma_desc(&vdesc->tx);
792 edesc = echan->edesc;
795 left = edesc->pset_nr - edesc->processed;
797 edesc->sg_len = 0;
801 j = i + edesc->processed;
802 edma_write_slot(ecc, echan->slot[i], &edesc->pset[j].param);
803 edesc->sg_len += edesc->pset[j].len;
817 edesc->pset[j].param.opt,
818 edesc->pset[j].param.src,
819 edesc->pset[j].param.dst,
820 edesc->pset[j].param.a_b_cnt,
821 edesc->pset[j].param.ccnt,
822 edesc->pset[j].param.src_dst_bidx,
823 edesc->pset[j].param.src_dst_cidx,
824 edesc->pset[j].param.link_bcntrld);
830 edesc->processed += nslots;
837 if (edesc->processed == edesc->pset_nr) {
838 if (edesc->cyclic)
857 } else if (edesc->processed <= MAX_NR_SG) {
863 echan->ch_num, edesc->processed);
879 * echan->edesc is NULL and exit.)
881 if (echan->edesc) {
884 if (!echan->tc && echan->edesc->cyclic)
887 vchan_terminate_vdesc(&echan->edesc->vdesc);
888 echan->edesc = NULL;
927 if (!echan->edesc)
1073 struct edma_desc *edesc;
1101 edesc = kzalloc(struct_size(edesc, pset, sg_len), GFP_ATOMIC);
1102 if (!edesc)
1105 edesc->pset_nr = sg_len;
1106 edesc->residue = 0;
1107 edesc->direction = direction;
1108 edesc->echan = echan;
1118 kfree(edesc);
1134 ret = edma_config_pset(chan, &edesc->pset[i], src_addr,
1138 kfree(edesc);
1142 edesc->absync = ret;
1143 edesc->residue += sg_dma_len(sg);
1147 edesc->pset[i].param.opt |= TCINTEN;
1155 edesc->pset[i].param.opt |= (TCINTEN | TCCMODE);
1157 edesc->residue_stat = edesc->residue;
1159 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1167 struct edma_desc *edesc;
1218 edesc = kzalloc(struct_size(edesc, pset, nslots), GFP_ATOMIC);
1219 if (!edesc)
1222 edesc->pset_nr = nslots;
1223 edesc->residue = edesc->residue_stat = len;
1224 edesc->direction = DMA_MEM_TO_MEM;
1225 edesc->echan = echan;
1227 ret = edma_config_pset(chan, &edesc->pset[0], src, dest, 1,
1230 kfree(edesc);
1234 edesc->absync = ret;
1236 edesc->pset[0].param.opt |= ITCCHEN;
1240 edesc->pset[0].param.opt |= TCINTEN;
1243 edesc->pset[0].param.opt |= TCCHEN;
1249 kfree(edesc);
1259 ret = edma_config_pset(chan, &edesc->pset[1], src, dest, 1,
1262 kfree(edesc);
1266 edesc->pset[1].param.opt |= ITCCHEN;
1269 edesc->pset[1].param.opt |= TCINTEN;
1273 edesc->polled = true;
1275 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1286 struct edma_desc *edesc;
1325 edesc = kzalloc(struct_size(edesc, pset, 1), GFP_ATOMIC);
1326 if (!edesc)
1329 edesc->direction = DMA_MEM_TO_MEM;
1330 edesc->echan = echan;
1331 edesc->pset_nr = 1;
1333 param = &edesc->pset[0].param;
1348 edesc->polled = true;
1350 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1360 struct edma_desc *edesc;
1421 edesc = kzalloc(struct_size(edesc, pset, nslots), GFP_ATOMIC);
1422 if (!edesc)
1425 edesc->cyclic = 1;
1426 edesc->pset_nr = nslots;
1427 edesc->residue = edesc->residue_stat = buf_len;
1428 edesc->direction = direction;
1429 edesc->echan = echan;
1440 kfree(edesc);
1448 memcpy(&edesc->pset[i], &edesc->pset[0],
1449 sizeof(edesc->pset[0]));
1453 ret = edma_config_pset(chan, &edesc->pset[i], src_addr,
1457 kfree(edesc);
1480 edesc->pset[i].param.opt,
1481 edesc->pset[i].param.src,
1482 edesc->pset[i].param.dst,
1483 edesc->pset[i].param.a_b_cnt,
1484 edesc->pset[i].param.ccnt,
1485 edesc->pset[i].param.src_dst_bidx,
1486 edesc->pset[i].param.src_dst_cidx,
1487 edesc->pset[i].param.link_bcntrld);
1489 edesc->absync = ret;
1495 edesc->pset[i].param.opt |= TCINTEN;
1499 edesc->pset[i].param.opt |= ITCINTEN;
1507 return vchan_tx_prep(&echan->vchan, &edesc->vdesc, tx_flags);
1513 struct edma_desc *edesc;
1516 edesc = echan->edesc;
1517 if (edesc) {
1518 if (edesc->cyclic) {
1519 vchan_cyclic_callback(&edesc->vdesc);
1522 } else if (edesc->processed == edesc->pset_nr) {
1523 edesc->residue = 0;
1525 vchan_cookie_complete(&edesc->vdesc);
1526 echan->edesc = NULL;
1537 edesc->residue -= edesc->sg_len;
1538 edesc->residue_stat = edesc->residue;
1539 edesc->processed_stat = edesc->processed;
1600 if (!echan->edesc)
1809 if (vchan_issue_pending(&echan->vchan) && !echan->edesc)
1823 static u32 edma_residue(struct edma_desc *edesc)
1825 bool dst = edesc->direction == DMA_DEV_TO_MEM;
1827 struct edma_chan *echan = edesc->echan;
1828 struct edma_pset *pset = edesc->pset;
1850 if (is_slave_direction(edesc->direction))
1874 * We never update edesc->residue in the cyclic case, so we
1878 if (edesc->cyclic) {
1880 edesc->residue_stat = edesc->residue - done;
1881 return edesc->residue_stat;
1894 pset += edesc->processed_stat;
1896 for (i = edesc->processed_stat; i < edesc->processed; i++, pset++) {
1903 return edesc->residue_stat - (pos - pset->addr);
1906 edesc->processed_stat++;
1907 edesc->residue_stat -= pset->len;
1909 return edesc->residue_stat;
1932 if (echan->edesc && echan->edesc->vdesc.tx.cookie == cookie) {
1933 txstate->residue = edma_residue(echan->edesc);
1949 echan->edesc && echan->edesc->polled &&
1950 echan->edesc->vdesc.tx.cookie == cookie) {
1952 vchan_cookie_complete(&echan->edesc->vdesc);
1953 echan->edesc = NULL;