Skip to content

Commit

Permalink
ARM: OMAP2/3: DMA: implement trans copy and const fill
Browse files Browse the repository at this point in the history
Implement transparent copy and constant fill features for OMAP2/3.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Tomi Valkeinen authored and Tony Lindgren committed May 28, 2009
1 parent ebe3b0e commit 0815f8e
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 28 deletions.
77 changes: 49 additions & 28 deletions arch/arm/plat-omap/dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,41 +310,62 @@ EXPORT_SYMBOL(omap_set_dma_transfer_params);

void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color)
{
u16 w;

BUG_ON(omap_dma_in_1510_mode());

if (cpu_class_is_omap2()) {
REVISIT_24XX();
return;
}
if (cpu_class_is_omap1()) {
u16 w;

w = dma_read(CCR2(lch));
w &= ~0x03;
w = dma_read(CCR2(lch));
w &= ~0x03;

switch (mode) {
case OMAP_DMA_CONSTANT_FILL:
w |= 0x01;
break;
case OMAP_DMA_TRANSPARENT_COPY:
w |= 0x02;
break;
case OMAP_DMA_COLOR_DIS:
break;
default:
BUG();
switch (mode) {
case OMAP_DMA_CONSTANT_FILL:
w |= 0x01;
break;
case OMAP_DMA_TRANSPARENT_COPY:
w |= 0x02;
break;
case OMAP_DMA_COLOR_DIS:
break;
default:
BUG();
}
dma_write(w, CCR2(lch));

w = dma_read(LCH_CTRL(lch));
w &= ~0x0f;
/* Default is channel type 2D */
if (mode) {
dma_write((u16)color, COLOR_L(lch));
dma_write((u16)(color >> 16), COLOR_U(lch));
w |= 1; /* Channel type G */
}
dma_write(w, LCH_CTRL(lch));
}
dma_write(w, CCR2(lch));

w = dma_read(LCH_CTRL(lch));
w &= ~0x0f;
/* Default is channel type 2D */
if (mode) {
dma_write((u16)color, COLOR_L(lch));
dma_write((u16)(color >> 16), COLOR_U(lch));
w |= 1; /* Channel type G */
if (cpu_class_is_omap2()) {
u32 val;

val = dma_read(CCR(lch));
val &= ~((1 << 17) | (1 << 16));

switch (mode) {
case OMAP_DMA_CONSTANT_FILL:
val |= 1 << 16;
break;
case OMAP_DMA_TRANSPARENT_COPY:
val |= 1 << 17;
break;
case OMAP_DMA_COLOR_DIS:
break;
default:
BUG();
}
dma_write(val, CCR(lch));

color &= 0xffffff;
dma_write(color, COLOR(lch));
}
dma_write(w, LCH_CTRL(lch));
}
EXPORT_SYMBOL(omap_set_dma_color_mode);

Expand Down
1 change: 1 addition & 0 deletions arch/arm/plat-omap/include/mach/dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
#define OMAP_DMA4_CSSA_U(n) 0
#define OMAP_DMA4_CDSA_L(n) 0
#define OMAP_DMA4_CDSA_U(n) 0
#define OMAP1_DMA_COLOR(n) 0

/*----------------------------------------------------------------------------*/

Expand Down

0 comments on commit 0815f8e

Please sign in to comment.