Lines Matching refs:ccp
43 static unsigned int ccp_get_dma_chan_attr(struct ccp_device *ccp) in ccp_get_dma_chan_attr() argument
47 return ccp->vdata->dma_chan_attr; in ccp_get_dma_chan_attr()
56 dev_info_once(ccp->dev, "Invalid value for dma_chan_attr: %d\n", in ccp_get_dma_chan_attr()
58 return ccp->vdata->dma_chan_attr; in ccp_get_dma_chan_attr()
62 static void ccp_free_cmd_resources(struct ccp_device *ccp, in ccp_free_cmd_resources() argument
69 kmem_cache_free(ccp->dma_cmd_cache, cmd); in ccp_free_cmd_resources()
73 static void ccp_free_desc_resources(struct ccp_device *ccp, in ccp_free_desc_resources() argument
79 ccp_free_cmd_resources(ccp, &desc->active); in ccp_free_desc_resources()
80 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_free_desc_resources()
83 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_free_desc_resources()
93 dev_dbg(chan->ccp->dev, "%s - chan=%p\n", __func__, chan); in ccp_free_chan_resources()
97 ccp_free_desc_resources(chan->ccp, &chan->complete); in ccp_free_chan_resources()
98 ccp_free_desc_resources(chan->ccp, &chan->active); in ccp_free_chan_resources()
99 ccp_free_desc_resources(chan->ccp, &chan->pending); in ccp_free_chan_resources()
100 ccp_free_desc_resources(chan->ccp, &chan->created); in ccp_free_chan_resources()
105 static void ccp_cleanup_desc_resources(struct ccp_device *ccp, in ccp_cleanup_desc_resources() argument
114 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc); in ccp_cleanup_desc_resources()
116 ccp_free_cmd_resources(ccp, &desc->active); in ccp_cleanup_desc_resources()
117 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_cleanup_desc_resources()
120 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_cleanup_desc_resources()
129 dev_dbg(chan->ccp->dev, "%s - chan=%s\n", __func__, in ccp_do_cleanup()
134 ccp_cleanup_desc_resources(chan->ccp, &chan->complete); in ccp_do_cleanup()
147 dev_dbg(desc->ccp->dev, "%s - tx %d, cmd=%p\n", __func__, in ccp_issue_next_cmd()
154 dev_dbg(desc->ccp->dev, "%s - error: ret=%d, tx %d, cmd=%p\n", __func__, in ccp_issue_next_cmd()
169 dev_dbg(desc->ccp->dev, "%s - freeing tx %d cmd=%p\n", in ccp_free_active_cmd()
173 kmem_cache_free(desc->ccp->dma_cmd_cache, cmd); in ccp_free_active_cmd()
208 ccp_free_cmd_resources(desc->ccp, in ccp_handle_active_desc()
223 dev_dbg(desc->ccp->dev, in ccp_handle_active_desc()
273 dev_dbg(chan->ccp->dev, "%s - tx %d callback, err=%d\n", in ccp_cmd_callback()
315 dev_dbg(chan->ccp->dev, "%s - added tx descriptor %d to pending list\n", in ccp_tx_submit()
325 cmd = kmem_cache_alloc(chan->ccp->dma_cmd_cache, GFP_NOWAIT); in ccp_alloc_dma_cmd()
337 desc = kmem_cache_zalloc(chan->ccp->dma_desc_cache, GFP_NOWAIT); in ccp_alloc_dma_desc()
344 desc->ccp = chan->ccp; in ccp_alloc_dma_desc()
362 struct ccp_device *ccp = chan->ccp; in ccp_create_desc() local
427 ccp_cmd->ccp = chan->ccp; in ccp_create_desc()
443 dev_dbg(ccp->dev, in ccp_create_desc()
462 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc); in ccp_create_desc()
473 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_create_desc()
474 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_create_desc()
488 dev_dbg(chan->ccp->dev, in ccp_prep_dma_memcpy()
528 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_issue_pending()
573 dev_dbg(chan->ccp->dev, "%s - %u\n", __func__, ret); in ccp_tx_status()
620 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_terminate_all()
627 ccp_free_desc_resources(chan->ccp, &chan->active); in ccp_terminate_all()
628 ccp_free_desc_resources(chan->ccp, &chan->pending); in ccp_terminate_all()
629 ccp_free_desc_resources(chan->ccp, &chan->created); in ccp_terminate_all()
636 int ccp_dmaengine_register(struct ccp_device *ccp) in ccp_dmaengine_register() argument
639 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_register()
649 ccp->ccp_dma_chan = devm_kcalloc(ccp->dev, ccp->cmd_q_count, in ccp_dmaengine_register()
650 sizeof(*(ccp->ccp_dma_chan)), in ccp_dmaengine_register()
652 if (!ccp->ccp_dma_chan) in ccp_dmaengine_register()
655 dma_cmd_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
657 ccp->name); in ccp_dmaengine_register()
661 ccp->dma_cmd_cache = kmem_cache_create(dma_cmd_cache_name, in ccp_dmaengine_register()
665 if (!ccp->dma_cmd_cache) in ccp_dmaengine_register()
668 dma_desc_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
670 ccp->name); in ccp_dmaengine_register()
676 ccp->dma_desc_cache = kmem_cache_create(dma_desc_cache_name, in ccp_dmaengine_register()
680 if (!ccp->dma_desc_cache) { in ccp_dmaengine_register()
685 dma_dev->dev = ccp->dev; in ccp_dmaengine_register()
686 dma_dev->src_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
687 dma_dev->dst_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
699 if (ccp_get_dma_chan_attr(ccp) == DMA_PRIVATE) in ccp_dmaengine_register()
703 for (i = 0; i < ccp->cmd_q_count; i++) { in ccp_dmaengine_register()
704 chan = ccp->ccp_dma_chan + i; in ccp_dmaengine_register()
707 chan->ccp = ccp; in ccp_dmaengine_register()
740 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_register()
743 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_register()
748 void ccp_dmaengine_unregister(struct ccp_device *ccp) in ccp_dmaengine_unregister() argument
750 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_unregister()
757 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_unregister()
758 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_unregister()