Lines Matching refs:fdesc
83 fchan->fdesc = to_st_fdma_desc(vdesc); in st_fdma_xfer_desc()
84 nbytes = fchan->fdesc->node[0].desc->nbytes; in st_fdma_xfer_desc()
86 ch_cmd = fchan->fdesc->node[0].pdesc | FDMA_CH_CMD_STA_START; in st_fdma_xfer_desc()
142 if (fchan->fdesc) { in st_fdma_irq_handler()
143 if (!fchan->fdesc->iscyclic) { in st_fdma_irq_handler()
144 list_del(&fchan->fdesc->vdesc.node); in st_fdma_irq_handler()
145 vchan_cookie_complete(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
146 fchan->fdesc = NULL; in st_fdma_irq_handler()
149 vchan_cyclic_callback(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
153 if (!fchan->fdesc) in st_fdma_irq_handler()
227 struct st_fdma_desc *fdesc; in st_fdma_free_desc() local
230 fdesc = to_st_fdma_desc(vdesc); in st_fdma_free_desc()
231 for (i = 0; i < fdesc->n_nodes; i++) in st_fdma_free_desc()
232 dma_pool_free(fdesc->fchan->node_pool, fdesc->node[i].desc, in st_fdma_free_desc()
233 fdesc->node[i].pdesc); in st_fdma_free_desc()
234 kfree(fdesc); in st_fdma_free_desc()
240 struct st_fdma_desc *fdesc; in st_fdma_alloc_desc() local
243 fdesc = kzalloc(struct_size(fdesc, node, sg_len), GFP_NOWAIT); in st_fdma_alloc_desc()
244 if (!fdesc) in st_fdma_alloc_desc()
247 fdesc->fchan = fchan; in st_fdma_alloc_desc()
248 fdesc->n_nodes = sg_len; in st_fdma_alloc_desc()
250 fdesc->node[i].desc = dma_pool_alloc(fchan->node_pool, in st_fdma_alloc_desc()
251 GFP_NOWAIT, &fdesc->node[i].pdesc); in st_fdma_alloc_desc()
252 if (!fdesc->node[i].desc) in st_fdma_alloc_desc()
255 return fdesc; in st_fdma_alloc_desc()
259 dma_pool_free(fchan->node_pool, fdesc->node[i].desc, in st_fdma_alloc_desc()
260 fdesc->node[i].pdesc); in st_fdma_alloc_desc()
261 kfree(fdesc); in st_fdma_alloc_desc()
300 fchan->fdesc = NULL; in st_fdma_free_chan_res()
315 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_memcpy() local
324 fdesc = st_fdma_alloc_desc(fchan, 1); in st_fdma_prep_dma_memcpy()
325 if (!fdesc) { in st_fdma_prep_dma_memcpy()
330 hw_node = fdesc->node[0].desc; in st_fdma_prep_dma_memcpy()
343 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_memcpy()
453 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_cyclic() local
475 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_dma_cyclic()
476 if (!fdesc) { in st_fdma_prep_dma_cyclic()
481 fdesc->iscyclic = true; in st_fdma_prep_dma_cyclic()
484 struct st_fdma_hw_node *hw_node = fdesc->node[i].desc; in st_fdma_prep_dma_cyclic()
486 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_dma_cyclic()
503 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_cyclic()
512 struct st_fdma_desc *fdesc; in st_fdma_prep_slave_sg() local
524 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_slave_sg()
525 if (!fdesc) { in st_fdma_prep_slave_sg()
530 fdesc->iscyclic = false; in st_fdma_prep_slave_sg()
533 hw_node = fdesc->node[i].desc; in st_fdma_prep_slave_sg()
535 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_slave_sg()
552 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_slave_sg()
559 struct st_fdma_desc *fdesc = fchan->fdesc; in st_fdma_desc_residue() local
569 for (i = fchan->fdesc->n_nodes - 1 ; i >= 0; i--) { in st_fdma_desc_residue()
570 if (cur_addr == fdesc->node[i].pdesc) { in st_fdma_desc_residue()
574 residue += fdesc->node[i].desc->nbytes; in st_fdma_desc_residue()
595 if (fchan->fdesc && cookie == fchan->fdesc->vdesc.tx.cookie) in st_fdma_tx_status()
614 if (vchan_issue_pending(&fchan->vchan) && !fchan->fdesc) in st_fdma_issue_pending()
630 if (fchan->fdesc) in st_fdma_pause()
647 if (fchan->fdesc) { in st_fdma_resume()
669 fchan->fdesc = NULL; in st_fdma_terminate_all()