Skip to content

Commit

Permalink
ARM: OMAP: Fix DMA CCR programming for request line > 63, v3
Browse files Browse the repository at this point in the history
Bug in existing code causes synchro control to be set +32 if request
line greater than 63 is used.

Also clean up the function a bit by removing extra parens and
clearing the bits at before write.

Reported by Wenbiao Wang.

Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Anand Gadiyar authored and Tony Lindgren committed Jan 15, 2009
1 parent 3a26e33 commit 4b3cf44
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions arch/arm/plat-omap/dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -278,14 +278,11 @@ void omap_set_dma_transfer_params(int lch, int data_type, int elem_count,
u32 val;

val = dma_read(CCR(lch));
val &= ~(3 << 19);
if (dma_trigger > 63)
val |= 1 << 20;
if (dma_trigger > 31)
val |= 1 << 19;

val &= ~(0x1f);
val |= (dma_trigger & 0x1f);

/* DMA_SYNCHRO_CONTROL_UPPER depends on the channel number */
val &= ~((3 << 19) | 0x1f);
val |= (dma_trigger & ~0x1f) << 14;
val |= dma_trigger & 0x1f;

if (sync_mode & OMAP_DMA_SYNC_FRAME)
val |= 1 << 5;
Expand Down

0 comments on commit 4b3cf44

Please sign in to comment.