1 From e34564db95627ad20e918b240c45e2bd5555f7e8 Mon Sep 17 00:00:00 2001
2 From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3 Date: Wed, 22 Apr 2009 10:06:08 +0300
4 Subject: [PATCH] OMAP2/3: DMA: implement trans copy and const fill
6 Implement transparent copy and constant fill features for OMAP2/3.
8 Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
10 arch/arm/plat-omap/dma.c | 81 +++++++++++++++++++++------------
11 arch/arm/plat-omap/include/mach/dma.h | 1 +
12 2 files changed, 52 insertions(+), 30 deletions(-)
14 diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
15 index 3fd0e77..060ac71 100755
16 --- a/arch/arm/plat-omap/dma.c
17 +++ b/arch/arm/plat-omap/dma.c
18 @@ -310,41 +310,62 @@ EXPORT_SYMBOL(omap_set_dma_transfer_params);
20 void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color)
24 BUG_ON(omap_dma_in_1510_mode());
26 - if (cpu_class_is_omap2()) {
30 + if (cpu_class_is_omap1()) {
33 - w = dma_read(CCR2(lch));
35 + w = dma_read(CCR2(lch));
39 - case OMAP_DMA_CONSTANT_FILL:
42 - case OMAP_DMA_TRANSPARENT_COPY:
45 - case OMAP_DMA_COLOR_DIS:
50 + case OMAP_DMA_CONSTANT_FILL:
53 + case OMAP_DMA_TRANSPARENT_COPY:
56 + case OMAP_DMA_COLOR_DIS:
61 + dma_write(w, CCR2(lch));
63 + w = dma_read(LCH_CTRL(lch));
65 + /* Default is channel type 2D */
67 + dma_write((u16)color, COLOR_L(lch));
68 + dma_write((u16)(color >> 16), COLOR_U(lch));
69 + w |= 1; /* Channel type G */
71 + dma_write(w, LCH_CTRL(lch));
73 - dma_write(w, CCR2(lch));
75 - w = dma_read(LCH_CTRL(lch));
77 - /* Default is channel type 2D */
79 - dma_write((u16)color, COLOR_L(lch));
80 - dma_write((u16)(color >> 16), COLOR_U(lch));
81 - w |= 1; /* Channel type G */
82 + if (cpu_class_is_omap2()) {
85 + val = dma_read(CCR(lch));
86 + val &= ~((1 << 17) | (1 << 16));
89 + case OMAP_DMA_CONSTANT_FILL:
92 + case OMAP_DMA_TRANSPARENT_COPY:
95 + case OMAP_DMA_COLOR_DIS:
100 + dma_write(val, CCR(lch));
103 + dma_write(color, COLOR(lch));
105 - dma_write(w, LCH_CTRL(lch));
107 EXPORT_SYMBOL(omap_set_dma_color_mode);
109 diff --git a/arch/arm/plat-omap/include/mach/dma.h b/arch/arm/plat-omap/include/mach/dma.h
110 index 224b077..4e34f47 100644
111 --- a/arch/arm/plat-omap/include/mach/dma.h
112 +++ b/arch/arm/plat-omap/include/mach/dma.h
114 #define OMAP_DMA4_CSSA_U(n) 0
115 #define OMAP_DMA4_CDSA_L(n) 0
116 #define OMAP_DMA4_CDSA_U(n) 0
117 +#define OMAP1_DMA_COLOR(n) 0
119 /*----------------------------------------------------------------------------*/