Lines Matching refs:dpaa2_chan

31 	struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan);  in dpaa2_qdma_alloc_chan_resources()  local
32 struct dpaa2_qdma_engine *dpaa2_qdma = dpaa2_chan->qdma; in dpaa2_qdma_alloc_chan_resources()
35 dpaa2_chan->fd_pool = dma_pool_create("fd_pool", dev, in dpaa2_qdma_alloc_chan_resources()
38 if (!dpaa2_chan->fd_pool) in dpaa2_qdma_alloc_chan_resources()
41 dpaa2_chan->fl_pool = in dpaa2_qdma_alloc_chan_resources()
46 if (!dpaa2_chan->fl_pool) in dpaa2_qdma_alloc_chan_resources()
49 dpaa2_chan->sdd_pool = in dpaa2_qdma_alloc_chan_resources()
53 if (!dpaa2_chan->sdd_pool) in dpaa2_qdma_alloc_chan_resources()
58 dma_pool_destroy(dpaa2_chan->fl_pool); in dpaa2_qdma_alloc_chan_resources()
60 dma_pool_destroy(dpaa2_chan->fd_pool); in dpaa2_qdma_alloc_chan_resources()
67 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_free_chan_resources() local
68 struct dpaa2_qdma_engine *dpaa2_qdma = dpaa2_chan->qdma; in dpaa2_qdma_free_chan_resources()
73 spin_lock_irqsave(&dpaa2_chan->vchan.lock, flags); in dpaa2_qdma_free_chan_resources()
74 vchan_get_all_descriptors(&dpaa2_chan->vchan, &head); in dpaa2_qdma_free_chan_resources()
75 spin_unlock_irqrestore(&dpaa2_chan->vchan.lock, flags); in dpaa2_qdma_free_chan_resources()
77 vchan_dma_desc_free_list(&dpaa2_chan->vchan, &head); in dpaa2_qdma_free_chan_resources()
79 dpaa2_dpdmai_free_comp(dpaa2_chan, &dpaa2_chan->comp_used); in dpaa2_qdma_free_chan_resources()
80 dpaa2_dpdmai_free_comp(dpaa2_chan, &dpaa2_chan->comp_free); in dpaa2_qdma_free_chan_resources()
82 dma_pool_destroy(dpaa2_chan->fd_pool); in dpaa2_qdma_free_chan_resources()
83 dma_pool_destroy(dpaa2_chan->fl_pool); in dpaa2_qdma_free_chan_resources()
84 dma_pool_destroy(dpaa2_chan->sdd_pool); in dpaa2_qdma_free_chan_resources()
92 dpaa2_qdma_request_desc(struct dpaa2_qdma_chan *dpaa2_chan) in dpaa2_qdma_request_desc() argument
94 struct dpaa2_qdma_priv *qdma_priv = dpaa2_chan->qdma->priv; in dpaa2_qdma_request_desc()
99 spin_lock_irqsave(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
100 if (list_empty(&dpaa2_chan->comp_free)) { in dpaa2_qdma_request_desc()
101 spin_unlock_irqrestore(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
106 dma_pool_alloc(dpaa2_chan->fd_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
112 dma_pool_alloc(dpaa2_chan->fl_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
118 dma_pool_alloc(dpaa2_chan->sdd_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
123 comp_temp->qchan = dpaa2_chan; in dpaa2_qdma_request_desc()
127 comp_temp = list_first_entry(&dpaa2_chan->comp_free, in dpaa2_qdma_request_desc()
130 spin_unlock_irqrestore(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
132 comp_temp->qchan = dpaa2_chan; in dpaa2_qdma_request_desc()
137 dma_pool_free(dpaa2_chan->fl_pool, in dpaa2_qdma_request_desc()
141 dma_pool_free(dpaa2_chan->fd_pool, in dpaa2_qdma_request_desc()
244 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_prep_memcpy() local
250 dpaa2_qdma = dpaa2_chan->qdma; in dpaa2_qdma_prep_memcpy()
251 dpaa2_comp = dpaa2_qdma_request_desc(dpaa2_chan); in dpaa2_qdma_prep_memcpy()
269 return vchan_tx_prep(&dpaa2_chan->vchan, &dpaa2_comp->vdesc, flags); in dpaa2_qdma_prep_memcpy()
274 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_issue_pending() local
281 spin_lock_irqsave(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_issue_pending()
282 spin_lock(&dpaa2_chan->vchan.lock); in dpaa2_qdma_issue_pending()
283 if (vchan_issue_pending(&dpaa2_chan->vchan)) { in dpaa2_qdma_issue_pending()
284 vdesc = vchan_next_desc(&dpaa2_chan->vchan); in dpaa2_qdma_issue_pending()
292 list_add_tail(&dpaa2_comp->list, &dpaa2_chan->comp_used); in dpaa2_qdma_issue_pending()
294 err = dpaa2_io_service_enqueue_fq(NULL, dpaa2_chan->fqid, fd); in dpaa2_qdma_issue_pending()
297 &dpaa2_chan->comp_free); in dpaa2_qdma_issue_pending()
301 spin_unlock(&dpaa2_chan->vchan.lock); in dpaa2_qdma_issue_pending()
302 spin_unlock_irqrestore(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_issue_pending()
637 struct dpaa2_qdma_chan *dpaa2_chan; in dpaa2_dpdmai_init_channels() local
643 dpaa2_chan = &dpaa2_qdma->chans[i]; in dpaa2_dpdmai_init_channels()
644 dpaa2_chan->qdma = dpaa2_qdma; in dpaa2_dpdmai_init_channels()
645 dpaa2_chan->fqid = priv->tx_fqid[i % num]; in dpaa2_dpdmai_init_channels()
646 dpaa2_chan->vchan.desc_free = dpaa2_qdma_free_desc; in dpaa2_dpdmai_init_channels()
647 vchan_init(&dpaa2_chan->vchan, &dpaa2_qdma->dma_dev); in dpaa2_dpdmai_init_channels()
648 spin_lock_init(&dpaa2_chan->queue_lock); in dpaa2_dpdmai_init_channels()
649 INIT_LIST_HEAD(&dpaa2_chan->comp_used); in dpaa2_dpdmai_init_channels()
650 INIT_LIST_HEAD(&dpaa2_chan->comp_free); in dpaa2_dpdmai_init_channels()