Lines Matching refs:fdesc

82 	fchan->fdesc = to_st_fdma_desc(vdesc);  in st_fdma_xfer_desc()
83 nbytes = fchan->fdesc->node[0].desc->nbytes; in st_fdma_xfer_desc()
85 ch_cmd = fchan->fdesc->node[0].pdesc | FDMA_CH_CMD_STA_START; in st_fdma_xfer_desc()
141 if (fchan->fdesc) { in st_fdma_irq_handler()
142 if (!fchan->fdesc->iscyclic) { in st_fdma_irq_handler()
143 list_del(&fchan->fdesc->vdesc.node); in st_fdma_irq_handler()
144 vchan_cookie_complete(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
145 fchan->fdesc = NULL; in st_fdma_irq_handler()
148 vchan_cyclic_callback(&fchan->fdesc->vdesc); in st_fdma_irq_handler()
152 if (!fchan->fdesc) in st_fdma_irq_handler()
226 struct st_fdma_desc *fdesc; in st_fdma_free_desc() local
229 fdesc = to_st_fdma_desc(vdesc); in st_fdma_free_desc()
230 for (i = 0; i < fdesc->n_nodes; i++) in st_fdma_free_desc()
231 dma_pool_free(fdesc->fchan->node_pool, fdesc->node[i].desc, in st_fdma_free_desc()
232 fdesc->node[i].pdesc); in st_fdma_free_desc()
233 kfree(fdesc); in st_fdma_free_desc()
239 struct st_fdma_desc *fdesc; in st_fdma_alloc_desc() local
242 fdesc = kzalloc(struct_size(fdesc, node, sg_len), GFP_NOWAIT); in st_fdma_alloc_desc()
243 if (!fdesc) in st_fdma_alloc_desc()
246 fdesc->fchan = fchan; in st_fdma_alloc_desc()
247 fdesc->n_nodes = sg_len; in st_fdma_alloc_desc()
249 fdesc->node[i].desc = dma_pool_alloc(fchan->node_pool, in st_fdma_alloc_desc()
250 GFP_NOWAIT, &fdesc->node[i].pdesc); in st_fdma_alloc_desc()
251 if (!fdesc->node[i].desc) in st_fdma_alloc_desc()
254 return fdesc; in st_fdma_alloc_desc()
258 dma_pool_free(fchan->node_pool, fdesc->node[i].desc, in st_fdma_alloc_desc()
259 fdesc->node[i].pdesc); in st_fdma_alloc_desc()
260 kfree(fdesc); in st_fdma_alloc_desc()
299 fchan->fdesc = NULL; in st_fdma_free_chan_res()
314 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_memcpy() local
323 fdesc = st_fdma_alloc_desc(fchan, 1); in st_fdma_prep_dma_memcpy()
324 if (!fdesc) { in st_fdma_prep_dma_memcpy()
329 hw_node = fdesc->node[0].desc; in st_fdma_prep_dma_memcpy()
342 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_memcpy()
452 struct st_fdma_desc *fdesc; in st_fdma_prep_dma_cyclic() local
474 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_dma_cyclic()
475 if (!fdesc) { in st_fdma_prep_dma_cyclic()
480 fdesc->iscyclic = true; in st_fdma_prep_dma_cyclic()
483 struct st_fdma_hw_node *hw_node = fdesc->node[i].desc; in st_fdma_prep_dma_cyclic()
485 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_dma_cyclic()
502 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_dma_cyclic()
511 struct st_fdma_desc *fdesc; in st_fdma_prep_slave_sg() local
523 fdesc = st_fdma_alloc_desc(fchan, sg_len); in st_fdma_prep_slave_sg()
524 if (!fdesc) { in st_fdma_prep_slave_sg()
529 fdesc->iscyclic = false; in st_fdma_prep_slave_sg()
532 hw_node = fdesc->node[i].desc; in st_fdma_prep_slave_sg()
534 hw_node->next = fdesc->node[(i + 1) % sg_len].pdesc; in st_fdma_prep_slave_sg()
551 return vchan_tx_prep(&fchan->vchan, &fdesc->vdesc, flags); in st_fdma_prep_slave_sg()
558 struct st_fdma_desc *fdesc = fchan->fdesc; in st_fdma_desc_residue() local
568 for (i = fchan->fdesc->n_nodes - 1 ; i >= 0; i--) { in st_fdma_desc_residue()
569 if (cur_addr == fdesc->node[i].pdesc) { in st_fdma_desc_residue()
573 residue += fdesc->node[i].desc->nbytes; in st_fdma_desc_residue()
594 if (fchan->fdesc && cookie == fchan->fdesc->vdesc.tx.cookie) in st_fdma_tx_status()
613 if (vchan_issue_pending(&fchan->vchan) && !fchan->fdesc) in st_fdma_issue_pending()
629 if (fchan->fdesc) in st_fdma_pause()
646 if (fchan->fdesc) { in st_fdma_resume()
668 fchan->fdesc = NULL; in st_fdma_terminate_all()