diff mbox series

bus: mhi: core: Replace DMA allocation wrappers with original APIs

Message ID 1624392428-9328-1-git-send-email-bbhatt@codeaurora.org
State Accepted
Commit 2e36190de69cb415955bfa8fbd94c44e38e58523
Headers show
Series bus: mhi: core: Replace DMA allocation wrappers with original APIs | expand

Commit Message

Bhaumik Bhatt June 22, 2021, 8:07 p.m. UTC
There is nothing special done within the mhi_alloc_coherent() and
the mhi_free_coherent() wrapper functions. They only directly
call the equivalent DMA allocation functions. Replace them with
the original function calls such that the implementation is clear
and direct.

Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>
---
 drivers/bus/mhi/core/boot.c     | 17 +++++++++--------
 drivers/bus/mhi/core/init.c     | 32 ++++++++++++++++----------------
 drivers/bus/mhi/core/internal.h | 20 --------------------
 drivers/bus/mhi/core/main.c     |  6 +++---
 4 files changed, 28 insertions(+), 47 deletions(-)

Comments

Manivannan Sadhasivam July 16, 2021, 11:52 a.m. UTC | #1
On Tue, Jun 22, 2021 at 01:07:08PM -0700, Bhaumik Bhatt wrote:
> There is nothing special done within the mhi_alloc_coherent() and

> the mhi_free_coherent() wrapper functions. They only directly

> call the equivalent DMA allocation functions. Replace them with

> the original function calls such that the implementation is clear

> and direct.


There you go :) I was tempted to do this for a while...

> 

> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>


Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>


Thanks,
Mani

> ---

>  drivers/bus/mhi/core/boot.c     | 17 +++++++++--------

>  drivers/bus/mhi/core/init.c     | 32 ++++++++++++++++----------------

>  drivers/bus/mhi/core/internal.h | 20 --------------------

>  drivers/bus/mhi/core/main.c     |  6 +++---

>  4 files changed, 28 insertions(+), 47 deletions(-)

> 

> diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c

> index 8100cf5..0a97262 100644

> --- a/drivers/bus/mhi/core/boot.c

> +++ b/drivers/bus/mhi/core/boot.c

> @@ -302,8 +302,8 @@ void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl,

>  	struct mhi_buf *mhi_buf = image_info->mhi_buf;

>  

>  	for (i = 0; i < image_info->entries; i++, mhi_buf++)

> -		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,

> -				  mhi_buf->dma_addr);

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,

> +				  mhi_buf->buf, mhi_buf->dma_addr);

>  

>  	kfree(image_info->mhi_buf);

>  	kfree(image_info);

> @@ -339,8 +339,8 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,

>  			vec_size = sizeof(struct bhi_vec_entry) * i;

>  

>  		mhi_buf->len = vec_size;

> -		mhi_buf->buf = mhi_alloc_coherent(mhi_cntrl, vec_size,

> -						  &mhi_buf->dma_addr,

> +		mhi_buf->buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

> +						  vec_size, &mhi_buf->dma_addr,

>  						  GFP_KERNEL);

>  		if (!mhi_buf->buf)

>  			goto error_alloc_segment;

> @@ -354,8 +354,8 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,

>  

>  error_alloc_segment:

>  	for (--i, --mhi_buf; i >= 0; i--, mhi_buf--)

> -		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,

> -				  mhi_buf->dma_addr);

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,

> +				  mhi_buf->buf, mhi_buf->dma_addr);

>  

>  error_alloc_mhi_buf:

>  	kfree(img_info);

> @@ -442,7 +442,8 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)

>  	if (size > firmware->size)

>  		size = firmware->size;

>  

> -	buf = mhi_alloc_coherent(mhi_cntrl, size, &dma_addr, GFP_KERNEL);

> +	buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,

> +				 GFP_KERNEL);

>  	if (!buf) {

>  		release_firmware(firmware);

>  		goto error_fw_load;

> @@ -451,7 +452,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)

>  	/* Download image using BHI */

>  	memcpy(buf, firmware->data, size);

>  	ret = mhi_fw_load_bhi(mhi_cntrl, dma_addr, size);

> -	mhi_free_coherent(mhi_cntrl, size, buf, dma_addr);

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr);

>  

>  	/* Error or in EDL mode, we're done */

>  	if (ret) {

> diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c

> index 4446760..c7ba715 100644

> --- a/drivers/bus/mhi/core/init.c

> +++ b/drivers/bus/mhi/core/init.c

> @@ -129,7 +129,7 @@ static int mhi_alloc_aligned_ring(struct mhi_controller *mhi_cntrl,

>  				  u64 len)

>  {

>  	ring->alloc_size = len + (len - 1);

> -	ring->pre_aligned = mhi_alloc_coherent(mhi_cntrl, ring->alloc_size,

> +	ring->pre_aligned = dma_alloc_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  					       &ring->dma_handle, GFP_KERNEL);

>  	if (!ring->pre_aligned)

>  		return -ENOMEM;

> @@ -221,13 +221,13 @@ void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	mhi_cmd = mhi_cntrl->mhi_cmd;

>  	for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++) {

>  		ring = &mhi_cmd->ring;

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  		ring->base = NULL;

>  		ring->iommu_base = 0;

>  	}

>  

> -	mhi_free_coherent(mhi_cntrl,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev,

>  			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,

>  			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);

>  

> @@ -237,17 +237,17 @@ void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  			continue;

>  

>  		ring = &mhi_event->ring;

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  		ring->base = NULL;

>  		ring->iommu_base = 0;

>  	}

>  

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *

>  			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,

>  			  mhi_ctxt->er_ctxt_addr);

>  

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *

>  			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,

>  			  mhi_ctxt->chan_ctxt_addr);

>  

> @@ -275,7 +275,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  		return -ENOMEM;

>  

>  	/* Setup channel ctxt */

> -	mhi_ctxt->chan_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->chan_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  						 sizeof(*mhi_ctxt->chan_ctxt) *

>  						 mhi_cntrl->max_chan,

>  						 &mhi_ctxt->chan_ctxt_addr,

> @@ -307,7 +307,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	}

>  

>  	/* Setup event context */

> -	mhi_ctxt->er_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->er_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  					       sizeof(*mhi_ctxt->er_ctxt) *

>  					       mhi_cntrl->total_ev_rings,

>  					       &mhi_ctxt->er_ctxt_addr,

> @@ -354,7 +354,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  

>  	/* Setup cmd context */

>  	ret = -ENOMEM;

> -	mhi_ctxt->cmd_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->cmd_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  						sizeof(*mhi_ctxt->cmd_ctxt) *

>  						NR_OF_CMD_RINGS,

>  						&mhi_ctxt->cmd_ctxt_addr,

> @@ -389,10 +389,10 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	for (--i, --mhi_cmd; i >= 0; i--, mhi_cmd--) {

>  		struct mhi_ring *ring = &mhi_cmd->ring;

>  

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  	}

> -	mhi_free_coherent(mhi_cntrl,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev,

>  			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,

>  			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);

>  	i = mhi_cntrl->total_ev_rings;

> @@ -405,15 +405,15 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  		if (mhi_event->offload_ev)

>  			continue;

>  

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  	}

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *

>  			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,

>  			  mhi_ctxt->er_ctxt_addr);

>  

>  error_alloc_er_ctxt:

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *

>  			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,

>  			  mhi_ctxt->chan_ctxt_addr);

>  

> @@ -567,7 +567,7 @@ void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  	if (!chan_ctxt->rbase) /* Already uninitialized */

>  		return;

>  

> -	mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,

>  			  tre_ring->pre_aligned, tre_ring->dma_handle);

>  	vfree(buf_ring->base);

>  

> @@ -610,7 +610,7 @@ int mhi_init_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  	buf_ring->base = vzalloc(buf_ring->len);

>  

>  	if (!buf_ring->base) {

> -		mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,

>  				  tre_ring->pre_aligned, tre_ring->dma_handle);

>  		return -ENOMEM;

>  	}

> diff --git a/drivers/bus/mhi/core/internal.h b/drivers/bus/mhi/core/internal.h

> index 672052f..b5594fa 100644

> --- a/drivers/bus/mhi/core/internal.h

> +++ b/drivers/bus/mhi/core/internal.h

> @@ -690,26 +690,6 @@ void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  void mhi_reset_chan(struct mhi_controller *mhi_cntrl,

>  		    struct mhi_chan *mhi_chan);

>  

> -/* Memory allocation methods */

> -static inline void *mhi_alloc_coherent(struct mhi_controller *mhi_cntrl,

> -				       size_t size,

> -				       dma_addr_t *dma_handle,

> -				       gfp_t gfp)

> -{

> -	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, dma_handle,

> -				       gfp);

> -

> -	return buf;

> -}

> -

> -static inline void mhi_free_coherent(struct mhi_controller *mhi_cntrl,

> -				     size_t size,

> -				     void *vaddr,

> -				     dma_addr_t dma_handle)

> -{

> -	dma_free_coherent(mhi_cntrl->cntrl_dev, size, vaddr, dma_handle);

> -}

> -

>  /* Event processing methods */

>  void mhi_ctrl_ev_task(unsigned long data);

>  void mhi_ev_task(unsigned long data);

> diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c

> index 02c8c09..409c68bc 100644

> --- a/drivers/bus/mhi/core/main.c

> +++ b/drivers/bus/mhi/core/main.c

> @@ -193,7 +193,7 @@ int mhi_map_single_no_bb(struct mhi_controller *mhi_cntrl,

>  int mhi_map_single_use_bb(struct mhi_controller *mhi_cntrl,

>  			  struct mhi_buf_info *buf_info)

>  {

> -	void *buf = mhi_alloc_coherent(mhi_cntrl, buf_info->len,

> +	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, buf_info->len,

>  				       &buf_info->p_addr, GFP_ATOMIC);

>  

>  	if (!buf)

> @@ -220,8 +220,8 @@ void mhi_unmap_single_use_bb(struct mhi_controller *mhi_cntrl,

>  	if (buf_info->dir == DMA_FROM_DEVICE)

>  		memcpy(buf_info->v_addr, buf_info->bb_addr, buf_info->len);

>  

> -	mhi_free_coherent(mhi_cntrl, buf_info->len, buf_info->bb_addr,

> -			  buf_info->p_addr);

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, buf_info->len,

> +			  buf_info->bb_addr, buf_info->p_addr);

>  }

>  

>  static int get_nr_avail_ring_elements(struct mhi_controller *mhi_cntrl,

> -- 

> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,

> a Linux Foundation Collaborative Project

>
Manivannan Sadhasivam July 16, 2021, 11:54 a.m. UTC | #2
On Tue, Jun 22, 2021 at 01:07:08PM -0700, Bhaumik Bhatt wrote:
> There is nothing special done within the mhi_alloc_coherent() and

> the mhi_free_coherent() wrapper functions. They only directly

> call the equivalent DMA allocation functions. Replace them with

> the original function calls such that the implementation is clear

> and direct.

> 

> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org>


Applied to mhi-next!

Thanks,
Mani

> ---

>  drivers/bus/mhi/core/boot.c     | 17 +++++++++--------

>  drivers/bus/mhi/core/init.c     | 32 ++++++++++++++++----------------

>  drivers/bus/mhi/core/internal.h | 20 --------------------

>  drivers/bus/mhi/core/main.c     |  6 +++---

>  4 files changed, 28 insertions(+), 47 deletions(-)

> 

> diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c

> index 8100cf5..0a97262 100644

> --- a/drivers/bus/mhi/core/boot.c

> +++ b/drivers/bus/mhi/core/boot.c

> @@ -302,8 +302,8 @@ void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl,

>  	struct mhi_buf *mhi_buf = image_info->mhi_buf;

>  

>  	for (i = 0; i < image_info->entries; i++, mhi_buf++)

> -		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,

> -				  mhi_buf->dma_addr);

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,

> +				  mhi_buf->buf, mhi_buf->dma_addr);

>  

>  	kfree(image_info->mhi_buf);

>  	kfree(image_info);

> @@ -339,8 +339,8 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,

>  			vec_size = sizeof(struct bhi_vec_entry) * i;

>  

>  		mhi_buf->len = vec_size;

> -		mhi_buf->buf = mhi_alloc_coherent(mhi_cntrl, vec_size,

> -						  &mhi_buf->dma_addr,

> +		mhi_buf->buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

> +						  vec_size, &mhi_buf->dma_addr,

>  						  GFP_KERNEL);

>  		if (!mhi_buf->buf)

>  			goto error_alloc_segment;

> @@ -354,8 +354,8 @@ int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,

>  

>  error_alloc_segment:

>  	for (--i, --mhi_buf; i >= 0; i--, mhi_buf--)

> -		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,

> -				  mhi_buf->dma_addr);

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,

> +				  mhi_buf->buf, mhi_buf->dma_addr);

>  

>  error_alloc_mhi_buf:

>  	kfree(img_info);

> @@ -442,7 +442,8 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)

>  	if (size > firmware->size)

>  		size = firmware->size;

>  

> -	buf = mhi_alloc_coherent(mhi_cntrl, size, &dma_addr, GFP_KERNEL);

> +	buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,

> +				 GFP_KERNEL);

>  	if (!buf) {

>  		release_firmware(firmware);

>  		goto error_fw_load;

> @@ -451,7 +452,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)

>  	/* Download image using BHI */

>  	memcpy(buf, firmware->data, size);

>  	ret = mhi_fw_load_bhi(mhi_cntrl, dma_addr, size);

> -	mhi_free_coherent(mhi_cntrl, size, buf, dma_addr);

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr);

>  

>  	/* Error or in EDL mode, we're done */

>  	if (ret) {

> diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c

> index 4446760..c7ba715 100644

> --- a/drivers/bus/mhi/core/init.c

> +++ b/drivers/bus/mhi/core/init.c

> @@ -129,7 +129,7 @@ static int mhi_alloc_aligned_ring(struct mhi_controller *mhi_cntrl,

>  				  u64 len)

>  {

>  	ring->alloc_size = len + (len - 1);

> -	ring->pre_aligned = mhi_alloc_coherent(mhi_cntrl, ring->alloc_size,

> +	ring->pre_aligned = dma_alloc_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  					       &ring->dma_handle, GFP_KERNEL);

>  	if (!ring->pre_aligned)

>  		return -ENOMEM;

> @@ -221,13 +221,13 @@ void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	mhi_cmd = mhi_cntrl->mhi_cmd;

>  	for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++) {

>  		ring = &mhi_cmd->ring;

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  		ring->base = NULL;

>  		ring->iommu_base = 0;

>  	}

>  

> -	mhi_free_coherent(mhi_cntrl,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev,

>  			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,

>  			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);

>  

> @@ -237,17 +237,17 @@ void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  			continue;

>  

>  		ring = &mhi_event->ring;

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  		ring->base = NULL;

>  		ring->iommu_base = 0;

>  	}

>  

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *

>  			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,

>  			  mhi_ctxt->er_ctxt_addr);

>  

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *

>  			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,

>  			  mhi_ctxt->chan_ctxt_addr);

>  

> @@ -275,7 +275,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  		return -ENOMEM;

>  

>  	/* Setup channel ctxt */

> -	mhi_ctxt->chan_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->chan_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  						 sizeof(*mhi_ctxt->chan_ctxt) *

>  						 mhi_cntrl->max_chan,

>  						 &mhi_ctxt->chan_ctxt_addr,

> @@ -307,7 +307,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	}

>  

>  	/* Setup event context */

> -	mhi_ctxt->er_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->er_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  					       sizeof(*mhi_ctxt->er_ctxt) *

>  					       mhi_cntrl->total_ev_rings,

>  					       &mhi_ctxt->er_ctxt_addr,

> @@ -354,7 +354,7 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  

>  	/* Setup cmd context */

>  	ret = -ENOMEM;

> -	mhi_ctxt->cmd_ctxt = mhi_alloc_coherent(mhi_cntrl,

> +	mhi_ctxt->cmd_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,

>  						sizeof(*mhi_ctxt->cmd_ctxt) *

>  						NR_OF_CMD_RINGS,

>  						&mhi_ctxt->cmd_ctxt_addr,

> @@ -389,10 +389,10 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  	for (--i, --mhi_cmd; i >= 0; i--, mhi_cmd--) {

>  		struct mhi_ring *ring = &mhi_cmd->ring;

>  

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  	}

> -	mhi_free_coherent(mhi_cntrl,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev,

>  			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,

>  			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);

>  	i = mhi_cntrl->total_ev_rings;

> @@ -405,15 +405,15 @@ int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)

>  		if (mhi_event->offload_ev)

>  			continue;

>  

> -		mhi_free_coherent(mhi_cntrl, ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,

>  				  ring->pre_aligned, ring->dma_handle);

>  	}

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *

>  			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,

>  			  mhi_ctxt->er_ctxt_addr);

>  

>  error_alloc_er_ctxt:

> -	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *

>  			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,

>  			  mhi_ctxt->chan_ctxt_addr);

>  

> @@ -567,7 +567,7 @@ void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  	if (!chan_ctxt->rbase) /* Already uninitialized */

>  		return;

>  

> -	mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,

>  			  tre_ring->pre_aligned, tre_ring->dma_handle);

>  	vfree(buf_ring->base);

>  

> @@ -610,7 +610,7 @@ int mhi_init_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  	buf_ring->base = vzalloc(buf_ring->len);

>  

>  	if (!buf_ring->base) {

> -		mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,

> +		dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,

>  				  tre_ring->pre_aligned, tre_ring->dma_handle);

>  		return -ENOMEM;

>  	}

> diff --git a/drivers/bus/mhi/core/internal.h b/drivers/bus/mhi/core/internal.h

> index 672052f..b5594fa 100644

> --- a/drivers/bus/mhi/core/internal.h

> +++ b/drivers/bus/mhi/core/internal.h

> @@ -690,26 +690,6 @@ void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,

>  void mhi_reset_chan(struct mhi_controller *mhi_cntrl,

>  		    struct mhi_chan *mhi_chan);

>  

> -/* Memory allocation methods */

> -static inline void *mhi_alloc_coherent(struct mhi_controller *mhi_cntrl,

> -				       size_t size,

> -				       dma_addr_t *dma_handle,

> -				       gfp_t gfp)

> -{

> -	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, dma_handle,

> -				       gfp);

> -

> -	return buf;

> -}

> -

> -static inline void mhi_free_coherent(struct mhi_controller *mhi_cntrl,

> -				     size_t size,

> -				     void *vaddr,

> -				     dma_addr_t dma_handle)

> -{

> -	dma_free_coherent(mhi_cntrl->cntrl_dev, size, vaddr, dma_handle);

> -}

> -

>  /* Event processing methods */

>  void mhi_ctrl_ev_task(unsigned long data);

>  void mhi_ev_task(unsigned long data);

> diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c

> index 02c8c09..409c68bc 100644

> --- a/drivers/bus/mhi/core/main.c

> +++ b/drivers/bus/mhi/core/main.c

> @@ -193,7 +193,7 @@ int mhi_map_single_no_bb(struct mhi_controller *mhi_cntrl,

>  int mhi_map_single_use_bb(struct mhi_controller *mhi_cntrl,

>  			  struct mhi_buf_info *buf_info)

>  {

> -	void *buf = mhi_alloc_coherent(mhi_cntrl, buf_info->len,

> +	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, buf_info->len,

>  				       &buf_info->p_addr, GFP_ATOMIC);

>  

>  	if (!buf)

> @@ -220,8 +220,8 @@ void mhi_unmap_single_use_bb(struct mhi_controller *mhi_cntrl,

>  	if (buf_info->dir == DMA_FROM_DEVICE)

>  		memcpy(buf_info->v_addr, buf_info->bb_addr, buf_info->len);

>  

> -	mhi_free_coherent(mhi_cntrl, buf_info->len, buf_info->bb_addr,

> -			  buf_info->p_addr);

> +	dma_free_coherent(mhi_cntrl->cntrl_dev, buf_info->len,

> +			  buf_info->bb_addr, buf_info->p_addr);

>  }

>  

>  static int get_nr_avail_ring_elements(struct mhi_controller *mhi_cntrl,

> -- 

> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,

> a Linux Foundation Collaborative Project

>
diff mbox series

Patch

diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c
index 8100cf5..0a97262 100644
--- a/drivers/bus/mhi/core/boot.c
+++ b/drivers/bus/mhi/core/boot.c
@@ -302,8 +302,8 @@  void mhi_free_bhie_table(struct mhi_controller *mhi_cntrl,
 	struct mhi_buf *mhi_buf = image_info->mhi_buf;
 
 	for (i = 0; i < image_info->entries; i++, mhi_buf++)
-		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,
-				  mhi_buf->dma_addr);
+		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,
+				  mhi_buf->buf, mhi_buf->dma_addr);
 
 	kfree(image_info->mhi_buf);
 	kfree(image_info);
@@ -339,8 +339,8 @@  int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,
 			vec_size = sizeof(struct bhi_vec_entry) * i;
 
 		mhi_buf->len = vec_size;
-		mhi_buf->buf = mhi_alloc_coherent(mhi_cntrl, vec_size,
-						  &mhi_buf->dma_addr,
+		mhi_buf->buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev,
+						  vec_size, &mhi_buf->dma_addr,
 						  GFP_KERNEL);
 		if (!mhi_buf->buf)
 			goto error_alloc_segment;
@@ -354,8 +354,8 @@  int mhi_alloc_bhie_table(struct mhi_controller *mhi_cntrl,
 
 error_alloc_segment:
 	for (--i, --mhi_buf; i >= 0; i--, mhi_buf--)
-		mhi_free_coherent(mhi_cntrl, mhi_buf->len, mhi_buf->buf,
-				  mhi_buf->dma_addr);
+		dma_free_coherent(mhi_cntrl->cntrl_dev, mhi_buf->len,
+				  mhi_buf->buf, mhi_buf->dma_addr);
 
 error_alloc_mhi_buf:
 	kfree(img_info);
@@ -442,7 +442,8 @@  void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
 	if (size > firmware->size)
 		size = firmware->size;
 
-	buf = mhi_alloc_coherent(mhi_cntrl, size, &dma_addr, GFP_KERNEL);
+	buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
+				 GFP_KERNEL);
 	if (!buf) {
 		release_firmware(firmware);
 		goto error_fw_load;
@@ -451,7 +452,7 @@  void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
 	/* Download image using BHI */
 	memcpy(buf, firmware->data, size);
 	ret = mhi_fw_load_bhi(mhi_cntrl, dma_addr, size);
-	mhi_free_coherent(mhi_cntrl, size, buf, dma_addr);
+	dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr);
 
 	/* Error or in EDL mode, we're done */
 	if (ret) {
diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c
index 4446760..c7ba715 100644
--- a/drivers/bus/mhi/core/init.c
+++ b/drivers/bus/mhi/core/init.c
@@ -129,7 +129,7 @@  static int mhi_alloc_aligned_ring(struct mhi_controller *mhi_cntrl,
 				  u64 len)
 {
 	ring->alloc_size = len + (len - 1);
-	ring->pre_aligned = mhi_alloc_coherent(mhi_cntrl, ring->alloc_size,
+	ring->pre_aligned = dma_alloc_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,
 					       &ring->dma_handle, GFP_KERNEL);
 	if (!ring->pre_aligned)
 		return -ENOMEM;
@@ -221,13 +221,13 @@  void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)
 	mhi_cmd = mhi_cntrl->mhi_cmd;
 	for (i = 0; i < NR_OF_CMD_RINGS; i++, mhi_cmd++) {
 		ring = &mhi_cmd->ring;
-		mhi_free_coherent(mhi_cntrl, ring->alloc_size,
+		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,
 				  ring->pre_aligned, ring->dma_handle);
 		ring->base = NULL;
 		ring->iommu_base = 0;
 	}
 
-	mhi_free_coherent(mhi_cntrl,
+	dma_free_coherent(mhi_cntrl->cntrl_dev,
 			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,
 			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);
 
@@ -237,17 +237,17 @@  void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl)
 			continue;
 
 		ring = &mhi_event->ring;
-		mhi_free_coherent(mhi_cntrl, ring->alloc_size,
+		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,
 				  ring->pre_aligned, ring->dma_handle);
 		ring->base = NULL;
 		ring->iommu_base = 0;
 	}
 
-	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *
+	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *
 			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,
 			  mhi_ctxt->er_ctxt_addr);
 
-	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *
+	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *
 			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,
 			  mhi_ctxt->chan_ctxt_addr);
 
@@ -275,7 +275,7 @@  int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)
 		return -ENOMEM;
 
 	/* Setup channel ctxt */
-	mhi_ctxt->chan_ctxt = mhi_alloc_coherent(mhi_cntrl,
+	mhi_ctxt->chan_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,
 						 sizeof(*mhi_ctxt->chan_ctxt) *
 						 mhi_cntrl->max_chan,
 						 &mhi_ctxt->chan_ctxt_addr,
@@ -307,7 +307,7 @@  int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)
 	}
 
 	/* Setup event context */
-	mhi_ctxt->er_ctxt = mhi_alloc_coherent(mhi_cntrl,
+	mhi_ctxt->er_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,
 					       sizeof(*mhi_ctxt->er_ctxt) *
 					       mhi_cntrl->total_ev_rings,
 					       &mhi_ctxt->er_ctxt_addr,
@@ -354,7 +354,7 @@  int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)
 
 	/* Setup cmd context */
 	ret = -ENOMEM;
-	mhi_ctxt->cmd_ctxt = mhi_alloc_coherent(mhi_cntrl,
+	mhi_ctxt->cmd_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev,
 						sizeof(*mhi_ctxt->cmd_ctxt) *
 						NR_OF_CMD_RINGS,
 						&mhi_ctxt->cmd_ctxt_addr,
@@ -389,10 +389,10 @@  int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)
 	for (--i, --mhi_cmd; i >= 0; i--, mhi_cmd--) {
 		struct mhi_ring *ring = &mhi_cmd->ring;
 
-		mhi_free_coherent(mhi_cntrl, ring->alloc_size,
+		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,
 				  ring->pre_aligned, ring->dma_handle);
 	}
-	mhi_free_coherent(mhi_cntrl,
+	dma_free_coherent(mhi_cntrl->cntrl_dev,
 			  sizeof(*mhi_ctxt->cmd_ctxt) * NR_OF_CMD_RINGS,
 			  mhi_ctxt->cmd_ctxt, mhi_ctxt->cmd_ctxt_addr);
 	i = mhi_cntrl->total_ev_rings;
@@ -405,15 +405,15 @@  int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl)
 		if (mhi_event->offload_ev)
 			continue;
 
-		mhi_free_coherent(mhi_cntrl, ring->alloc_size,
+		dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size,
 				  ring->pre_aligned, ring->dma_handle);
 	}
-	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->er_ctxt) *
+	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) *
 			  mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt,
 			  mhi_ctxt->er_ctxt_addr);
 
 error_alloc_er_ctxt:
-	mhi_free_coherent(mhi_cntrl, sizeof(*mhi_ctxt->chan_ctxt) *
+	dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) *
 			  mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt,
 			  mhi_ctxt->chan_ctxt_addr);
 
@@ -567,7 +567,7 @@  void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,
 	if (!chan_ctxt->rbase) /* Already uninitialized */
 		return;
 
-	mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,
+	dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,
 			  tre_ring->pre_aligned, tre_ring->dma_handle);
 	vfree(buf_ring->base);
 
@@ -610,7 +610,7 @@  int mhi_init_chan_ctxt(struct mhi_controller *mhi_cntrl,
 	buf_ring->base = vzalloc(buf_ring->len);
 
 	if (!buf_ring->base) {
-		mhi_free_coherent(mhi_cntrl, tre_ring->alloc_size,
+		dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size,
 				  tre_ring->pre_aligned, tre_ring->dma_handle);
 		return -ENOMEM;
 	}
diff --git a/drivers/bus/mhi/core/internal.h b/drivers/bus/mhi/core/internal.h
index 672052f..b5594fa 100644
--- a/drivers/bus/mhi/core/internal.h
+++ b/drivers/bus/mhi/core/internal.h
@@ -690,26 +690,6 @@  void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl,
 void mhi_reset_chan(struct mhi_controller *mhi_cntrl,
 		    struct mhi_chan *mhi_chan);
 
-/* Memory allocation methods */
-static inline void *mhi_alloc_coherent(struct mhi_controller *mhi_cntrl,
-				       size_t size,
-				       dma_addr_t *dma_handle,
-				       gfp_t gfp)
-{
-	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, dma_handle,
-				       gfp);
-
-	return buf;
-}
-
-static inline void mhi_free_coherent(struct mhi_controller *mhi_cntrl,
-				     size_t size,
-				     void *vaddr,
-				     dma_addr_t dma_handle)
-{
-	dma_free_coherent(mhi_cntrl->cntrl_dev, size, vaddr, dma_handle);
-}
-
 /* Event processing methods */
 void mhi_ctrl_ev_task(unsigned long data);
 void mhi_ev_task(unsigned long data);
diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c
index 02c8c09..409c68bc 100644
--- a/drivers/bus/mhi/core/main.c
+++ b/drivers/bus/mhi/core/main.c
@@ -193,7 +193,7 @@  int mhi_map_single_no_bb(struct mhi_controller *mhi_cntrl,
 int mhi_map_single_use_bb(struct mhi_controller *mhi_cntrl,
 			  struct mhi_buf_info *buf_info)
 {
-	void *buf = mhi_alloc_coherent(mhi_cntrl, buf_info->len,
+	void *buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, buf_info->len,
 				       &buf_info->p_addr, GFP_ATOMIC);
 
 	if (!buf)
@@ -220,8 +220,8 @@  void mhi_unmap_single_use_bb(struct mhi_controller *mhi_cntrl,
 	if (buf_info->dir == DMA_FROM_DEVICE)
 		memcpy(buf_info->v_addr, buf_info->bb_addr, buf_info->len);
 
-	mhi_free_coherent(mhi_cntrl, buf_info->len, buf_info->bb_addr,
-			  buf_info->p_addr);
+	dma_free_coherent(mhi_cntrl->cntrl_dev, buf_info->len,
+			  buf_info->bb_addr, buf_info->p_addr);
 }
 
 static int get_nr_avail_ring_elements(struct mhi_controller *mhi_cntrl,