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