Re: [PATCH v4.4] net: davinci_cpdma: use dma_addr_t for DMA address

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

 



On Sat, 2019-12-21 at 11:49 +0100, Daniel Wagner wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
> 
> [ Upstream commit 84092996673211f16ef3b942a191d7952e9dfea9 ]
[...]
> Pavel reported this fix is needed for the CIP kernel.
> 
> Since this patch was added to v4.5, we only need to backport
> to v4.4.

It looks like it's also applicable to 3.16, so I've queued it up for
that.

Ben.

> Thanks,
> Daniel
> 
>  drivers/net/ethernet/ti/davinci_cpdma.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c
> index 657b65bf5cac..18bf3a8fdc50 100644
> --- a/drivers/net/ethernet/ti/davinci_cpdma.c
> +++ b/drivers/net/ethernet/ti/davinci_cpdma.c
> @@ -82,7 +82,7 @@ struct cpdma_desc {
>  
>  struct cpdma_desc_pool {
>  	phys_addr_t		phys;
> -	u32			hw_addr;
> +	dma_addr_t		hw_addr;
>  	void __iomem		*iomap;		/* ioremap map */
>  	void			*cpumap;	/* dma_alloc map */
>  	int			desc_size, mem_size;
> @@ -152,7 +152,7 @@ struct cpdma_chan {
>   * abstract out these details
>   */
>  static struct cpdma_desc_pool *
> -cpdma_desc_pool_create(struct device *dev, u32 phys, u32 hw_addr,
> +cpdma_desc_pool_create(struct device *dev, u32 phys, dma_addr_t hw_addr,
>  				int size, int align)
>  {
>  	int bitmap_size;
> @@ -176,13 +176,13 @@ cpdma_desc_pool_create(struct device *dev, u32 phys, u32 hw_addr,
>  
>  	if (phys) {
>  		pool->phys  = phys;
> -		pool->iomap = ioremap(phys, size);
> +		pool->iomap = ioremap(phys, size); /* should be memremap? */
>  		pool->hw_addr = hw_addr;
>  	} else {
> -		pool->cpumap = dma_alloc_coherent(dev, size, &pool->phys,
> +		pool->cpumap = dma_alloc_coherent(dev, size, &pool->hw_addr,
>  						  GFP_KERNEL);
> -		pool->iomap = pool->cpumap;
> -		pool->hw_addr = pool->phys;
> +		pool->iomap = (void __iomem __force *)pool->cpumap;
> +		pool->phys = pool->hw_addr; /* assumes no IOMMU, don't use this value */
>  	}
>  
>  	if (pool->iomap)
-- 
Ben Hutchings
The program is absolutely right; therefore, the computer must be wrong.


Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux