[PATCH] DMA: Fix Marvell Orion and mv_xor after MEMSET removal

Jason Cooper jason at lakedaemon.net
Mon Jul 1 11:04:07 EDT 2013


On Mon, Jul 01, 2013 at 04:56:29PM +0200, Sebastian Hesselbarth wrote:
> Commit 834cbfe966bece50afded79da8e975d255bf0772
>  ("drivers/dma: remove unused support for MEMSET operations")
> removes MEMSET from dmaengine but does not completely removes it from
> Marvell Orion (arch/arm/plat-orion) and XOR (drivers/dma/mv_xor).
> This also fixes some compiler warnings about now obsolete functions by
> removing those.
> 
> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth at gmail.com>
> ---
> Cc: Jason Cooper <jason at lakedaemon.net>
> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie at samsung.com>
> Cc: Kyungmin Park <kyungmin.park at samsung.com>
> Cc: Andrew Morton <akpm at linux-foundation.org>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-kernel at vger.kernel.org
> ---
>  arch/arm/plat-orion/common.c |    6 ------
>  drivers/dma/mv_xor.c         |   25 +------------------------
>  2 files changed, 1 insertions(+), 30 deletions(-)

Please take a look at the email from lkml I just forwarded to you.  I
believe this solves your problem, but I don't have time to look closely
atm.

thx,

Jason.

> 
> diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
> index 797f284..dd2cbd3 100644
> --- a/arch/arm/plat-orion/common.c
> +++ b/arch/arm/plat-orion/common.c
> @@ -727,14 +727,8 @@ void __init orion_xor1_init(unsigned long mapbase_low,
>  	orion_xor1_shared_resources[3].start = irq_1;
>  	orion_xor1_shared_resources[3].end = irq_1;
>  
> -	/*
> -	 * two engines can't do memset simultaneously, this limitation
> -	 * satisfied by removing memset support from one of the engines.
> -	 */
>  	dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask);
>  	dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask);
> -
> -	dma_cap_set(DMA_MEMSET, orion_xor1_channels_data[1].cap_mask);
>  	dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask);
>  	dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask);
>  
> diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
> index c434fe6..200f1a3 100644
> --- a/drivers/dma/mv_xor.c
> +++ b/drivers/dma/mv_xor.c
> @@ -89,11 +89,6 @@ static void mv_desc_clear_next_desc(struct mv_xor_desc_slot *desc)
>  	hw_desc->phy_next_desc = 0;
>  }
>  
> -static void mv_desc_set_block_fill_val(struct mv_xor_desc_slot *desc, u32 val)
> -{
> -	desc->value = val;
> -}
> -
>  static void mv_desc_set_dest_addr(struct mv_xor_desc_slot *desc,
>  				  dma_addr_t addr)
>  {
> @@ -128,22 +123,6 @@ static void mv_chan_set_next_descriptor(struct mv_xor_chan *chan,
>  	__raw_writel(next_desc_addr, XOR_NEXT_DESC(chan));
>  }
>  
> -static void mv_chan_set_dest_pointer(struct mv_xor_chan *chan, u32 desc_addr)
> -{
> -	__raw_writel(desc_addr, XOR_DEST_POINTER(chan));
> -}
> -
> -static void mv_chan_set_block_size(struct mv_xor_chan *chan, u32 block_size)
> -{
> -	__raw_writel(block_size, XOR_BLOCK_SIZE(chan));
> -}
> -
> -static void mv_chan_set_value(struct mv_xor_chan *chan, u32 value)
> -{
> -	__raw_writel(value, XOR_INIT_VALUE_LOW(chan));
> -	__raw_writel(value, XOR_INIT_VALUE_HIGH(chan));
> -}
> -
>  static void mv_chan_unmask_interrupts(struct mv_xor_chan *chan)
>  {
>  	u32 val = __raw_readl(XOR_INTR_MASK(chan));
> @@ -1134,7 +1113,7 @@ mv_xor_channel_add(struct mv_xor_device *xordev,
>  			goto err_free_irq;
>  	}
>  
> -	dev_info(&pdev->dev, "Marvell XOR: ( %s%s%s%s)\n",
> +	dev_info(&pdev->dev, "Marvell XOR: ( %s%s%s)\n",
>  		 dma_has_cap(DMA_XOR, dma_dev->cap_mask) ? "xor " : "",
>  		 dma_has_cap(DMA_MEMCPY, dma_dev->cap_mask) ? "cpy " : "",
>  		 dma_has_cap(DMA_INTERRUPT, dma_dev->cap_mask) ? "intr " : "");
> @@ -1244,8 +1223,6 @@ static int mv_xor_probe(struct platform_device *pdev)
>  				dma_cap_set(DMA_MEMCPY, cap_mask);
>  			if (of_property_read_bool(np, "dmacap,xor"))
>  				dma_cap_set(DMA_XOR, cap_mask);
> -			if (of_property_read_bool(np, "dmacap,memset"))
> -				dma_cap_set(DMA_MEMSET, cap_mask);
>  			if (of_property_read_bool(np, "dmacap,interrupt"))
>  				dma_cap_set(DMA_INTERRUPT, cap_mask);
>  
> -- 
> 1.7.2.5
> 



More information about the linux-arm-kernel mailing list