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 = dma_pool_create("fl_pool", dev, in dpaa2_qdma_alloc_chan_resources()
44 if (!dpaa2_chan->fl_pool) in dpaa2_qdma_alloc_chan_resources()
47 dpaa2_chan->sdd_pool = in dpaa2_qdma_alloc_chan_resources()
51 if (!dpaa2_chan->sdd_pool) in dpaa2_qdma_alloc_chan_resources()
56 dma_pool_destroy(dpaa2_chan->fl_pool); in dpaa2_qdma_alloc_chan_resources()
58 dma_pool_destroy(dpaa2_chan->fd_pool); in dpaa2_qdma_alloc_chan_resources()
65 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_free_chan_resources() local
66 struct dpaa2_qdma_engine *dpaa2_qdma = dpaa2_chan->qdma; in dpaa2_qdma_free_chan_resources()
71 spin_lock_irqsave(&dpaa2_chan->vchan.lock, flags); in dpaa2_qdma_free_chan_resources()
72 vchan_get_all_descriptors(&dpaa2_chan->vchan, &head); in dpaa2_qdma_free_chan_resources()
73 spin_unlock_irqrestore(&dpaa2_chan->vchan.lock, flags); in dpaa2_qdma_free_chan_resources()
75 vchan_dma_desc_free_list(&dpaa2_chan->vchan, &head); in dpaa2_qdma_free_chan_resources()
77 dpaa2_dpdmai_free_comp(dpaa2_chan, &dpaa2_chan->comp_used); in dpaa2_qdma_free_chan_resources()
78 dpaa2_dpdmai_free_comp(dpaa2_chan, &dpaa2_chan->comp_free); in dpaa2_qdma_free_chan_resources()
80 dma_pool_destroy(dpaa2_chan->fd_pool); in dpaa2_qdma_free_chan_resources()
81 dma_pool_destroy(dpaa2_chan->fl_pool); in dpaa2_qdma_free_chan_resources()
82 dma_pool_destroy(dpaa2_chan->sdd_pool); in dpaa2_qdma_free_chan_resources()
90 dpaa2_qdma_request_desc(struct dpaa2_qdma_chan *dpaa2_chan) in dpaa2_qdma_request_desc() argument
92 struct dpaa2_qdma_priv *qdma_priv = dpaa2_chan->qdma->priv; in dpaa2_qdma_request_desc()
97 spin_lock_irqsave(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
98 if (list_empty(&dpaa2_chan->comp_free)) { in dpaa2_qdma_request_desc()
99 spin_unlock_irqrestore(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
104 dma_pool_alloc(dpaa2_chan->fd_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
110 dma_pool_alloc(dpaa2_chan->fl_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
116 dma_pool_alloc(dpaa2_chan->sdd_pool, GFP_NOWAIT, in dpaa2_qdma_request_desc()
121 comp_temp->qchan = dpaa2_chan; in dpaa2_qdma_request_desc()
125 comp_temp = list_first_entry(&dpaa2_chan->comp_free, in dpaa2_qdma_request_desc()
128 spin_unlock_irqrestore(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_request_desc()
130 comp_temp->qchan = dpaa2_chan; in dpaa2_qdma_request_desc()
135 dma_pool_free(dpaa2_chan->fl_pool, in dpaa2_qdma_request_desc()
139 dma_pool_free(dpaa2_chan->fd_pool, in dpaa2_qdma_request_desc()
242 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_prep_memcpy() local
248 dpaa2_qdma = dpaa2_chan->qdma; in dpaa2_qdma_prep_memcpy()
249 dpaa2_comp = dpaa2_qdma_request_desc(dpaa2_chan); in dpaa2_qdma_prep_memcpy()
267 return vchan_tx_prep(&dpaa2_chan->vchan, &dpaa2_comp->vdesc, flags); in dpaa2_qdma_prep_memcpy()
272 struct dpaa2_qdma_chan *dpaa2_chan = to_dpaa2_qdma_chan(chan); in dpaa2_qdma_issue_pending() local
279 spin_lock_irqsave(&dpaa2_chan->queue_lock, flags); in dpaa2_qdma_issue_pending()
280 spin_lock(&dpaa2_chan->vchan.lock); in dpaa2_qdma_issue_pending()
281 if (vchan_issue_pending(&dpaa2_chan->vchan)) { in dpaa2_qdma_issue_pending()
282 vdesc = vchan_next_desc(&dpaa2_chan->vchan); in dpaa2_qdma_issue_pending()
290 list_add_tail(&dpaa2_comp->list, &dpaa2_chan->comp_used); in dpaa2_qdma_issue_pending()
292 err = dpaa2_io_service_enqueue_fq(NULL, dpaa2_chan->fqid, fd); in dpaa2_qdma_issue_pending()
296 &dpaa2_chan->comp_free); in dpaa2_qdma_issue_pending()
300 spin_unlock(&dpaa2_chan->vchan.lock); in dpaa2_qdma_issue_pending()
301 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()