* Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> [090112 18:01]: > On Mon, Jan 12, 2009 at 05:35:28PM +0200, Tony Lindgren wrote: > > Well at least you could remove some parens. > > How about (dma_trigger / 32) << 19 instead? > > Oh, and further to my previous reply there is also the general principle > of writing what you mean. So, if you mean to clear the least significant > 5 bits, write it as a mask with ~0x1f, not as a divide. > > And no, you don't need ~(0x1f) - the parens there are pure noise. ~0x1f > does just as well and isn't in any way confusing to the compiler. > To put it another way, parens around a single value are completely > meaningless. Here's this one with the extra parens removed. Tony
>From cccdfb22248a88a68c0947cb6ff6b7faae852739 Mon Sep 17 00:00:00 2001 From: Anand Gadiyar <gadiyar@xxxxxx> Date: Mon, 12 Jan 2009 16:01:03 +0200 Subject: [PATCH] ARM: OMAP: Fix DMA CCR programming for request line > 63, v2 Bug in existing code causes synchro control to be set +32 if request line greater than 63 is used. Reported by Wenbiao Wang Signed-off-by: Anand Gadiyar <gadiyar@xxxxxx> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 692d2b4..660a4eb 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -279,10 +279,7 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count, val = dma_read(CCR(lch)); val &= ~(3 << 19); - if (dma_trigger > 63) - val |= 1 << 20; - if (dma_trigger > 31) - val |= 1 << 19; + val |= ((dma_trigger & ~0x1f) << 14); val &= ~(0x1f); val |= (dma_trigger & 0x1f);