Lines Matching refs:mdesc

260 static void mdc_list_desc_free(struct mdc_tx_desc *mdesc)
262 struct mdc_dma *mdma = mdesc->chan->mdma;
266 curr = mdesc->list;
267 curr_phys = mdesc->list_phys;
279 struct mdc_tx_desc *mdesc = to_mdc_desc(&vd->tx);
281 mdc_list_desc_free(mdesc);
282 kfree(mdesc);
291 struct mdc_tx_desc *mdesc;
298 mdesc = kzalloc(sizeof(*mdesc), GFP_NOWAIT);
299 if (!mdesc)
301 mdesc->chan = mchan;
302 mdesc->list_xfer_size = len;
315 mdesc->list_phys = curr_phys;
316 mdesc->list = curr;
326 mdesc->list_len++;
332 return vchan_tx_prep(&mchan->vc, &mdesc->vd, flags);
335 mdc_desc_free(&mdesc->vd);
373 struct mdc_tx_desc *mdesc;
386 mdesc = kzalloc(sizeof(*mdesc), GFP_NOWAIT);
387 if (!mdesc)
389 mdesc->chan = mchan;
390 mdesc->cyclic = true;
391 mdesc->list_xfer_size = buf_len;
392 mdesc->list_period_len = DIV_ROUND_UP(period_len,
407 mdesc->list_phys = curr_phys;
408 mdesc->list = curr;
431 mdesc->list_len++;
437 prev->node_addr = mdesc->list_phys;
439 return vchan_tx_prep(&mchan->vc, &mdesc->vd, flags);
442 mdc_desc_free(&mdesc->vd);
454 struct mdc_tx_desc *mdesc;
469 mdesc = kzalloc(sizeof(*mdesc), GFP_NOWAIT);
470 if (!mdesc)
472 mdesc->chan = mchan;
487 mdesc->list_phys = curr_phys;
488 mdesc->list = curr;
509 mdesc->list_len++;
510 mdesc->list_xfer_size += xfer_size;
516 return vchan_tx_prep(&mchan->vc, &mdesc->vd, flags);
519 mdc_desc_free(&mdesc->vd);
528 struct mdc_tx_desc *mdesc;
537 mdesc = to_mdc_desc(&vd->tx);
538 mchan->desc = mdesc;
554 mdc_chan_writel(mchan, mdesc->list_phys, MDC_LIST_NODE_ADDRESS);
575 struct mdc_tx_desc *mdesc;
591 mdesc = to_mdc_desc(&vd->tx);
592 bytes = mdesc->list_xfer_size;
598 mdesc = mchan->desc;
624 if (!mdesc->cmd_loaded)
627 cmds += mdesc->list_cmds_done;
629 bytes = mdesc->list_xfer_size;
630 ldesc = mdesc->list;
759 struct mdc_tx_desc *mdesc;
771 mdesc = mchan->desc;
772 if (!mdesc) {
785 if (!mdesc->cmd_loaded) {
786 mdesc->cmd_loaded = true;
790 mdesc->list_cmds_done++;
791 if (mdesc->cyclic) {
792 mdesc->list_cmds_done %= mdesc->list_len;
793 if (mdesc->list_cmds_done % mdesc->list_period_len == 0)
794 vchan_cyclic_callback(&mdesc->vd);
795 } else if (mdesc->list_cmds_done == mdesc->list_len) {
797 vchan_cookie_complete(&mdesc->vd);