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()
314 dev_dbg(chan->ccp->dev, "%s - added tx descriptor %d to pending list\n", in ccp_tx_submit()
324 cmd = kmem_cache_alloc(chan->ccp->dma_cmd_cache, GFP_NOWAIT); in ccp_alloc_dma_cmd()
336 desc = kmem_cache_zalloc(chan->ccp->dma_desc_cache, GFP_NOWAIT); in ccp_alloc_dma_desc()
343 desc->ccp = chan->ccp; in ccp_alloc_dma_desc()
361 struct ccp_device *ccp = chan->ccp; in ccp_create_desc() local
426 ccp_cmd->ccp = chan->ccp; in ccp_create_desc()
442 dev_dbg(ccp->dev, in ccp_create_desc()
461 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc); in ccp_create_desc()
472 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_create_desc()
473 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_create_desc()
487 dev_dbg(chan->ccp->dev, in ccp_prep_dma_memcpy()
527 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_issue_pending()
572 dev_dbg(chan->ccp->dev, "%s - %u\n", __func__, ret); in ccp_tx_status()
619 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_terminate_all()
626 ccp_free_desc_resources(chan->ccp, &chan->active); in ccp_terminate_all()
627 ccp_free_desc_resources(chan->ccp, &chan->pending); in ccp_terminate_all()
628 ccp_free_desc_resources(chan->ccp, &chan->created); in ccp_terminate_all()
635 static void ccp_dma_release(struct ccp_device *ccp) in ccp_dma_release() argument
641 for (i = 0; i < ccp->cmd_q_count; i++) { in ccp_dma_release()
642 chan = ccp->ccp_dma_chan + i; in ccp_dma_release()
650 static void ccp_dma_release_channels(struct ccp_device *ccp) in ccp_dma_release_channels() argument
656 for (i = 0; i < ccp->cmd_q_count; i++) { in ccp_dma_release_channels()
657 chan = ccp->ccp_dma_chan + i; in ccp_dma_release_channels()
665 int ccp_dmaengine_register(struct ccp_device *ccp) in ccp_dmaengine_register() argument
668 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_register()
678 ccp->ccp_dma_chan = devm_kcalloc(ccp->dev, ccp->cmd_q_count, in ccp_dmaengine_register()
679 sizeof(*(ccp->ccp_dma_chan)), in ccp_dmaengine_register()
681 if (!ccp->ccp_dma_chan) in ccp_dmaengine_register()
684 dma_cmd_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
686 ccp->name); in ccp_dmaengine_register()
690 ccp->dma_cmd_cache = kmem_cache_create(dma_cmd_cache_name, in ccp_dmaengine_register()
694 if (!ccp->dma_cmd_cache) in ccp_dmaengine_register()
697 dma_desc_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
699 ccp->name); in ccp_dmaengine_register()
705 ccp->dma_desc_cache = kmem_cache_create(dma_desc_cache_name, in ccp_dmaengine_register()
709 if (!ccp->dma_desc_cache) { in ccp_dmaengine_register()
714 dma_dev->dev = ccp->dev; in ccp_dmaengine_register()
715 dma_dev->src_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
716 dma_dev->dst_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
728 if (ccp_get_dma_chan_attr(ccp) == DMA_PRIVATE) in ccp_dmaengine_register()
732 for (i = 0; i < ccp->cmd_q_count; i++) { in ccp_dmaengine_register()
733 chan = ccp->ccp_dma_chan + i; in ccp_dmaengine_register()
736 chan->ccp = ccp; in ccp_dmaengine_register()
769 ccp_dma_release(ccp); in ccp_dmaengine_register()
770 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_register()
773 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_register()
778 void ccp_dmaengine_unregister(struct ccp_device *ccp) in ccp_dmaengine_unregister() argument
780 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_unregister()
785 ccp_dma_release_channels(ccp); in ccp_dmaengine_unregister()
787 ccp_dma_release(ccp); in ccp_dmaengine_unregister()
789 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_unregister()
790 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_unregister()