Lines Matching refs:ccp
41 static unsigned int ccp_get_dma_chan_attr(struct ccp_device *ccp) in ccp_get_dma_chan_attr() argument
45 return ccp->vdata->dma_chan_attr; in ccp_get_dma_chan_attr()
54 dev_info_once(ccp->dev, "Invalid value for dma_chan_attr: %d\n", in ccp_get_dma_chan_attr()
56 return ccp->vdata->dma_chan_attr; in ccp_get_dma_chan_attr()
60 static void ccp_free_cmd_resources(struct ccp_device *ccp, in ccp_free_cmd_resources() argument
67 kmem_cache_free(ccp->dma_cmd_cache, cmd); in ccp_free_cmd_resources()
71 static void ccp_free_desc_resources(struct ccp_device *ccp, in ccp_free_desc_resources() argument
77 ccp_free_cmd_resources(ccp, &desc->active); in ccp_free_desc_resources()
78 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_free_desc_resources()
81 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_free_desc_resources()
91 dev_dbg(chan->ccp->dev, "%s - chan=%p\n", __func__, chan); in ccp_free_chan_resources()
95 ccp_free_desc_resources(chan->ccp, &chan->complete); in ccp_free_chan_resources()
96 ccp_free_desc_resources(chan->ccp, &chan->active); in ccp_free_chan_resources()
97 ccp_free_desc_resources(chan->ccp, &chan->pending); in ccp_free_chan_resources()
98 ccp_free_desc_resources(chan->ccp, &chan->created); in ccp_free_chan_resources()
103 static void ccp_cleanup_desc_resources(struct ccp_device *ccp, in ccp_cleanup_desc_resources() argument
112 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc); in ccp_cleanup_desc_resources()
114 ccp_free_cmd_resources(ccp, &desc->active); in ccp_cleanup_desc_resources()
115 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_cleanup_desc_resources()
118 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_cleanup_desc_resources()
127 dev_dbg(chan->ccp->dev, "%s - chan=%s\n", __func__, in ccp_do_cleanup()
132 ccp_cleanup_desc_resources(chan->ccp, &chan->complete); in ccp_do_cleanup()
145 dev_dbg(desc->ccp->dev, "%s - tx %d, cmd=%p\n", __func__, in ccp_issue_next_cmd()
152 dev_dbg(desc->ccp->dev, "%s - error: ret=%d, tx %d, cmd=%p\n", __func__, in ccp_issue_next_cmd()
167 dev_dbg(desc->ccp->dev, "%s - freeing tx %d cmd=%p\n", in ccp_free_active_cmd()
171 kmem_cache_free(desc->ccp->dma_cmd_cache, cmd); in ccp_free_active_cmd()
206 ccp_free_cmd_resources(desc->ccp, in ccp_handle_active_desc()
221 dev_dbg(desc->ccp->dev, in ccp_handle_active_desc()
271 dev_dbg(chan->ccp->dev, "%s - tx %d callback, err=%d\n", in ccp_cmd_callback()
313 dev_dbg(chan->ccp->dev, "%s - added tx descriptor %d to pending list\n", in ccp_tx_submit()
323 cmd = kmem_cache_alloc(chan->ccp->dma_cmd_cache, GFP_NOWAIT); in ccp_alloc_dma_cmd()
335 desc = kmem_cache_zalloc(chan->ccp->dma_desc_cache, GFP_NOWAIT); in ccp_alloc_dma_desc()
342 desc->ccp = chan->ccp; in ccp_alloc_dma_desc()
359 struct ccp_device *ccp = chan->ccp; in ccp_create_desc() local
424 ccp_cmd->ccp = chan->ccp; in ccp_create_desc()
440 dev_dbg(ccp->dev, in ccp_create_desc()
459 dev_dbg(ccp->dev, "%s - desc=%p\n", __func__, desc); in ccp_create_desc()
470 ccp_free_cmd_resources(ccp, &desc->pending); in ccp_create_desc()
471 kmem_cache_free(ccp->dma_desc_cache, desc); in ccp_create_desc()
485 dev_dbg(chan->ccp->dev, in ccp_prep_dma_memcpy()
525 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_issue_pending()
570 dev_dbg(chan->ccp->dev, "%s - %u\n", __func__, ret); in ccp_tx_status()
617 dev_dbg(chan->ccp->dev, "%s\n", __func__); in ccp_terminate_all()
624 ccp_free_desc_resources(chan->ccp, &chan->active); in ccp_terminate_all()
625 ccp_free_desc_resources(chan->ccp, &chan->pending); in ccp_terminate_all()
626 ccp_free_desc_resources(chan->ccp, &chan->created); in ccp_terminate_all()
633 int ccp_dmaengine_register(struct ccp_device *ccp) in ccp_dmaengine_register() argument
636 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_register()
643 ccp->ccp_dma_chan = devm_kcalloc(ccp->dev, ccp->cmd_q_count, in ccp_dmaengine_register()
644 sizeof(*(ccp->ccp_dma_chan)), in ccp_dmaengine_register()
646 if (!ccp->ccp_dma_chan) in ccp_dmaengine_register()
649 dma_cmd_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
651 ccp->name); in ccp_dmaengine_register()
655 ccp->dma_cmd_cache = kmem_cache_create(dma_cmd_cache_name, in ccp_dmaengine_register()
659 if (!ccp->dma_cmd_cache) in ccp_dmaengine_register()
662 dma_desc_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL, in ccp_dmaengine_register()
664 ccp->name); in ccp_dmaengine_register()
670 ccp->dma_desc_cache = kmem_cache_create(dma_desc_cache_name, in ccp_dmaengine_register()
674 if (!ccp->dma_desc_cache) { in ccp_dmaengine_register()
679 dma_dev->dev = ccp->dev; in ccp_dmaengine_register()
680 dma_dev->src_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
681 dma_dev->dst_addr_widths = CCP_DMA_WIDTH(dma_get_mask(ccp->dev)); in ccp_dmaengine_register()
693 if (ccp_get_dma_chan_attr(ccp) == DMA_PRIVATE) in ccp_dmaengine_register()
697 for (i = 0; i < ccp->cmd_q_count; i++) { in ccp_dmaengine_register()
698 chan = ccp->ccp_dma_chan + i; in ccp_dmaengine_register()
701 chan->ccp = ccp; in ccp_dmaengine_register()
734 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_register()
737 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_register()
742 void ccp_dmaengine_unregister(struct ccp_device *ccp) in ccp_dmaengine_unregister() argument
744 struct dma_device *dma_dev = &ccp->dma_dev; in ccp_dmaengine_unregister()
748 kmem_cache_destroy(ccp->dma_desc_cache); in ccp_dmaengine_unregister()
749 kmem_cache_destroy(ccp->dma_cmd_cache); in ccp_dmaengine_unregister()