Lines Matching refs:txd
152 static void sa11x0_dma_start_desc(struct sa11x0_dma_phy *p, struct sa11x0_dma_desc *txd) in sa11x0_dma_start_desc() argument
154 list_del(&txd->vd.node); in sa11x0_dma_start_desc()
155 p->txd_load = txd; in sa11x0_dma_start_desc()
159 p->num, &txd->vd, txd->vd.tx.cookie, txd->ddar); in sa11x0_dma_start_desc()
165 struct sa11x0_dma_desc *txd = p->txd_load; in sa11x0_dma_start_sg() local
171 if (!txd) in sa11x0_dma_start_sg()
180 if (p->sg_load == txd->sglen) { in sa11x0_dma_start_sg()
181 if (!txd->cyclic) { in sa11x0_dma_start_sg()
189 if (txn && txn->ddar == txd->ddar) { in sa11x0_dma_start_sg()
190 txd = txn; in sa11x0_dma_start_sg()
202 sg = &txd->sg[p->sg_load++]; in sa11x0_dma_start_sg()
229 struct sa11x0_dma_desc *txd = p->txd_done; in sa11x0_dma_complete() local
231 if (++p->sg_done == txd->sglen) { in sa11x0_dma_complete()
232 if (!txd->cyclic) { in sa11x0_dma_complete()
233 vchan_cookie_complete(&txd->vd); in sa11x0_dma_complete()
241 if ((p->sg_done % txd->period) == 0) in sa11x0_dma_complete()
242 vchan_cyclic_callback(&txd->vd); in sa11x0_dma_complete()
305 struct sa11x0_dma_desc *txd = sa11x0_dma_next_desc(c); in sa11x0_dma_start_txd() local
308 if (txd) { in sa11x0_dma_start_txd()
311 sa11x0_dma_start_desc(p, txd); in sa11x0_dma_start_txd()
312 p->txd_done = txd; in sa11x0_dma_start_txd()
322 writel_relaxed(txd->ddar, p->base + DMA_DDAR); in sa11x0_dma_start_txd()
451 struct sa11x0_dma_desc *txd; in sa11x0_dma_tx_status() local
455 txd = p->txd_done; in sa11x0_dma_tx_status()
457 txd = p->txd_load; in sa11x0_dma_tx_status()
459 txd = NULL; in sa11x0_dma_tx_status()
462 if (txd) { in sa11x0_dma_tx_status()
468 for (i = 0; i < txd->sglen; i++) { in sa11x0_dma_tx_status()
470 i, txd->sg[i].addr, txd->sg[i].len); in sa11x0_dma_tx_status()
471 if (addr >= txd->sg[i].addr && in sa11x0_dma_tx_status()
472 addr < txd->sg[i].addr + txd->sg[i].len) { in sa11x0_dma_tx_status()
475 len = txd->sg[i].len - in sa11x0_dma_tx_status()
476 (addr - txd->sg[i].addr); in sa11x0_dma_tx_status()
484 for (; i < txd->sglen; i++) { in sa11x0_dma_tx_status()
486 i, txd->sg[i].addr, txd->sg[i].len); in sa11x0_dma_tx_status()
487 bytes += txd->sg[i].len; in sa11x0_dma_tx_status()
531 struct sa11x0_dma_desc *txd; in sa11x0_dma_prep_slave_sg() local
560 txd = kzalloc(sizeof(*txd) + j * sizeof(txd->sg[0]), GFP_ATOMIC); in sa11x0_dma_prep_slave_sg()
561 if (!txd) { in sa11x0_dma_prep_slave_sg()
589 txd->sg[j].addr = addr; in sa11x0_dma_prep_slave_sg()
590 txd->sg[j].len = tlen; in sa11x0_dma_prep_slave_sg()
598 txd->ddar = c->ddar; in sa11x0_dma_prep_slave_sg()
599 txd->size = size; in sa11x0_dma_prep_slave_sg()
600 txd->sglen = j; in sa11x0_dma_prep_slave_sg()
603 &c->vc, &txd->vd, txd->size, txd->sglen); in sa11x0_dma_prep_slave_sg()
605 return vchan_tx_prep(&c->vc, &txd->vd, flags); in sa11x0_dma_prep_slave_sg()
613 struct sa11x0_dma_desc *txd; in sa11x0_dma_prep_dma_cyclic() local
630 txd = kzalloc(sizeof(*txd) + sglen * sizeof(txd->sg[0]), GFP_ATOMIC); in sa11x0_dma_prep_dma_cyclic()
631 if (!txd) { in sa11x0_dma_prep_dma_cyclic()
647 txd->sg[k].addr = addr; in sa11x0_dma_prep_dma_cyclic()
648 txd->sg[k].len = tlen; in sa11x0_dma_prep_dma_cyclic()
658 txd->ddar = c->ddar; in sa11x0_dma_prep_dma_cyclic()
659 txd->size = size; in sa11x0_dma_prep_dma_cyclic()
660 txd->sglen = sglen; in sa11x0_dma_prep_dma_cyclic()
661 txd->cyclic = 1; in sa11x0_dma_prep_dma_cyclic()
662 txd->period = sgperiod; in sa11x0_dma_prep_dma_cyclic()
664 return vchan_tx_prep(&c->vc, &txd->vd, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); in sa11x0_dma_prep_dma_cyclic()
1036 struct sa11x0_dma_desc *txd = NULL; in sa11x0_dma_resume() local
1042 txd = p->txd_done; in sa11x0_dma_resume()
1044 txd = p->txd_load; in sa11x0_dma_resume()
1046 if (!txd) in sa11x0_dma_resume()
1049 writel_relaxed(txd->ddar, p->base + DMA_DDAR); in sa11x0_dma_resume()