Lines Matching refs:fdesc
86 fchan->fdesc = to_st_fdma_desc(vdesc); in st_fdma_xfer_desc()
87 nbytes = fchan->fdesc->node[0].desc->nbytes; in st_fdma_xfer_desc()
89 ch_cmd = fchan->fdesc->node[0].pdesc | FDMA_CH_CMD_STA_START; in st_fdma_xfer_desc()
145 if (fchan->fdesc) { in st_fdma_irq_handler()
146 if (!fchan->fdesc->iscyclic) { in st_fdma_irq_handler()
147 list_del(&fchan->fdesc->vdesc.node); in st_fdma_irq_handler()
148 vchan_cookie_complete(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
149 fchan->fdesc = NULL; in st_fdma_irq_handler()
152 vchan_cyclic_callback(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
156 if (!fchan->fdesc) in st_fdma_irq_handler()
230 struct st_fdma_desc *fdesc; in st_fdma_free_desc() local
233 fdesc = to_st_fdma_desc(vdesc); in st_fdma_free_desc()
234 for (i = 0; i < fdesc->n_nodes; i++) in st_fdma_free_desc()
235 dma_pool_free(fdesc->fchan->node_pool, fdesc->node[i].desc, in st_fdma_free_desc()
236 fdesc->node[i].pdesc); in st_fdma_free_desc()
237 kfree(fdesc); in st_fdma_free_desc()
243 struct st_fdma_desc *fdesc; in st_fdma_alloc_desc() local
246 fdesc = kzalloc(sizeof(*fdesc) + in st_fdma_alloc_desc()
248 if (!fdesc) in st_fdma_alloc_desc()
251 fdesc->fchan = fchan; in st_fdma_alloc_desc()
252 fdesc->n_nodes = sg_len; in st_fdma_alloc_desc()
254 fdesc->node[i].desc = dma_pool_alloc(fchan->node_pool, in st_fdma_alloc_desc()
255 GFP_NOWAIT, &fdesc->node[i].pdesc); in st_fdma_alloc_desc()
256 if (!fdesc->node[i].desc) in st_fdma_alloc_desc()
259 return fdesc; in st_fdma_alloc_desc()
263 dma_pool_free(fchan->node_pool, fdesc->node[i].desc, in st_fdma_alloc_desc()
264 fdesc->node[i].pdesc); in st_fdma_alloc_desc()
265 kfree(fdesc); in st_fdma_alloc_desc()
306 fchan->fdesc = NULL; in st_fdma_free_chan_res()
321 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_memcpy() local
330 fdesc = st_fdma_alloc_desc(fchan, 1); in st_fdma_prep_dma_memcpy()
331 if (!fdesc) { in st_fdma_prep_dma_memcpy()
336 hw_node = fdesc->node[0].desc; in st_fdma_prep_dma_memcpy()
349 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_memcpy()
459 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_cyclic() local
481 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_dma_cyclic()
482 if (!fdesc) { in st_fdma_prep_dma_cyclic()
487 fdesc->iscyclic = true; in st_fdma_prep_dma_cyclic()
490 struct st_fdma_hw_node *hw_node = fdesc->node[i].desc; in st_fdma_prep_dma_cyclic()
492 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_dma_cyclic()
509 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_cyclic()
518 struct st_fdma_desc *fdesc; in st_fdma_prep_slave_sg() local
530 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_slave_sg()
531 if (!fdesc) { in st_fdma_prep_slave_sg()
536 fdesc->iscyclic = false; in st_fdma_prep_slave_sg()
539 hw_node = fdesc->node[i].desc; in st_fdma_prep_slave_sg()
541 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_slave_sg()
558 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_slave_sg()
565 struct st_fdma_desc *fdesc = fchan->fdesc; in st_fdma_desc_residue() local
575 for (i = fchan->fdesc->n_nodes - 1 ; i >= 0; i--) { in st_fdma_desc_residue()
576 if (cur_addr == fdesc->node[i].pdesc) { in st_fdma_desc_residue()
580 residue += fdesc->node[i].desc->nbytes; in st_fdma_desc_residue()
601 if (fchan->fdesc && cookie == fchan->fdesc->vdesc.tx.cookie) in st_fdma_tx_status()
620 if (vchan_issue_pending(&fchan->vchan) && !fchan->fdesc) in st_fdma_issue_pending()
637 if (fchan->fdesc) in st_fdma_pause()
654 if (fchan->fdesc) { in st_fdma_resume()
676 fchan->fdesc = NULL; in st_fdma_terminate_all()