Re: [PATCH 3/4] dmaengine: move APIs in interface to use peripheral term

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vinod,

On 15/10/2020 10.31, Vinod Koul wrote:
> dmaengine history has a non inclusive terminology of dmaengine slave, I
> feel it is time to replace that.
> 
> This moves APIs in dmaengine interface with replacement of slave
> to peripheral which is an appropriate term for dmaengine peripheral
> devices
> 
> Since the change of name can break users, the new names have been added
> with old APIs kept as macro define for new names. Once the users have
> been migrated, these macros will be dropped.
> 
> Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx>
> ---
>  include/linux/dmaengine.h | 46 +++++++++++++++++++++++++++------------
>  1 file changed, 32 insertions(+), 14 deletions(-)
> 
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index 04b993a5373c..d8dce3cdfdd4 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -923,6 +923,10 @@ struct dma_device {
>  	struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)(
>  		struct dma_chan *chan, unsigned long flags);
>  
> +	struct dma_async_tx_descriptor *(*device_prep_peripheral_sg)(
> +		struct dma_chan *chan, struct scatterlist *sgl,
> +		unsigned int sg_len, enum dma_transfer_direction direction,
> +		unsigned long flags, void *context);
>  	struct dma_async_tx_descriptor *(*device_prep_slave_sg)(
>  		struct dma_chan *chan, struct scatterlist *sgl,
>  		unsigned int sg_len, enum dma_transfer_direction direction,
> @@ -959,8 +963,8 @@ struct dma_device {
>  #endif
>  };
>  
> -static inline int dmaengine_slave_config(struct dma_chan *chan,
> -					  struct dma_slave_config *config)
> +static inline int dmaengine_peripheral_config(struct dma_chan *chan,
> +					  struct dma_peripheral_config *config)
>  {
>  	if (chan->device->device_config)
>  		return chan->device->device_config(chan, config);
> @@ -968,12 +972,16 @@ static inline int dmaengine_slave_config(struct dma_chan *chan,
>  	return -ENOSYS;
>  }
>  
> -static inline bool is_slave_direction(enum dma_transfer_direction direction)
> +#define dmaengine_slave_config dmaengine_peripheral_config
> +
> +static inline bool is_peripheral_direction(enum dma_transfer_direction direction)
>  {
>  	return (direction == DMA_MEM_TO_DEV) || (direction == DMA_DEV_TO_MEM);
>  }
>  
> -static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single(
> +#define is_slave_direction is_peripheral_direction
> +
> +static inline struct dma_async_tx_descriptor *dmaengine_prep_peripheral_single(
>  	struct dma_chan *chan, dma_addr_t buf, size_t len,
>  	enum dma_transfer_direction dir, unsigned long flags)
>  {
> @@ -989,7 +997,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single(
>  						  dir, flags, NULL);
>  }
>  
> -static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_sg(
> +#define dmaengine_prep_slave_single dmaengine_prep_peripheral_single
> +
> +static inline struct dma_async_tx_descriptor *dmaengine_prep_peripheral_sg(
>  	struct dma_chan *chan, struct scatterlist *sgl,	unsigned int sg_len,
>  	enum dma_transfer_direction dir, unsigned long flags)
>  {
> @@ -1000,6 +1010,8 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_sg(
>  						  dir, flags, NULL);
>  }
>  
> +#define dmaengine_prep_slave_sg dmaengine_prep_peripheral_sg
> +

If you do similar changes to _single() then DMA drivers can migrate to
the new device_prep_peripheral_sg in their own pace:

static inline struct dma_async_tx_descriptor *dmaengine_prep_peripheral_sg(
	struct dma_chan *chan, struct scatterlist *sgl,	unsigned int sg_len,
	enum dma_transfer_direction dir, unsigned long flags)
{
	if (!chan || !chan->device)
		return NULL;

	if (chan->device->device_prep_peripheral_sg)
		return chan->device->device_prep_peripheral_sg(chan, sgl, sg_len,
							       dir, flags, NULL);

	if (chan->device->device_prep_slave_sg)
		return chan->device->device_prep_slave_sg(chan, sgl, sg_len,
							  dir, flags, NULL);
	return NULL;
}



>  #ifdef CONFIG_RAPIDIO_DMA_ENGINE
>  struct rio_dma_ext;
>  static inline struct dma_async_tx_descriptor *dmaengine_prep_rio_sg(
> @@ -1498,7 +1510,7 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name);
>  struct dma_chan *dma_request_chan_by_mask(const dma_cap_mask_t *mask);
>  
>  void dma_release_channel(struct dma_chan *chan);
> -int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps);
> +int dma_get_peripheral_caps(struct dma_chan *chan, struct dma_peripheral_caps *caps);
>  #else
>  static inline struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type)
>  {
> @@ -1535,19 +1547,21 @@ static inline struct dma_chan *dma_request_chan_by_mask(
>  static inline void dma_release_channel(struct dma_chan *chan)
>  {
>  }
> -static inline int dma_get_slave_caps(struct dma_chan *chan,
> -				     struct dma_slave_caps *caps)
> +static inline int dma_get_peripheral_caps(struct dma_chan *chan,
> +				     struct dma_peripheral_caps *caps)
>  {
>  	return -ENXIO;
>  }
>  #endif
>  
> +#define dma_get_slave_caps dma_get_peripheral_caps
> +
>  static inline int dmaengine_desc_set_reuse(struct dma_async_tx_descriptor *tx)
>  {
> -	struct dma_slave_caps caps;
> +	struct dma_peripheral_caps caps;
>  	int ret;
>  
> -	ret = dma_get_slave_caps(tx->chan, &caps);
> +	ret = dma_get_peripheral_caps(tx->chan, &caps);
>  	if (ret)
>  		return ret;
>  
> @@ -1592,17 +1606,19 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
>  
>  /* Deprecated, please use dma_request_chan() directly */
>  static inline struct dma_chan * __deprecated
> -dma_request_slave_channel(struct device *dev, const char *name)
> +dma_request_peripheral_channel(struct device *dev, const char *name)
>  {
>  	struct dma_chan *ch = dma_request_chan(dev, name);
>  
>  	return IS_ERR(ch) ? NULL : ch;
>  }
>  
> +#define dma_request_slave_channel dma_request_peripheral_channel
> +
>  static inline struct dma_chan
> -*dma_request_slave_channel_compat(const dma_cap_mask_t mask,
> -				  dma_filter_fn fn, void *fn_param,
> -				  struct device *dev, const char *name)
> +*dma_request_peripheral_channel_compat(const dma_cap_mask_t mask,
> +				       dma_filter_fn fn, void *fn_param,
> +				       struct device *dev, const char *name)
>  {
>  	struct dma_chan *chan;
>  
> @@ -1616,6 +1632,8 @@ static inline struct dma_chan
>  	return __dma_request_channel(&mask, fn, fn_param, NULL);
>  }
>  
> +#define dma_request_slave_channel_compat dma_request_peripheral_channel_compat
> +
>  static inline char *
>  dmaengine_get_direction_text(enum dma_transfer_direction dir)
>  {
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux