summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch
new file mode 100644
index 0000000000..cc6663fa21
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0048-OMAP2-3-DMA-implement-trans-copy-and-const-fill.patch
@@ -0,0 +1,123 @@
1From e34564db95627ad20e918b240c45e2bd5555f7e8 Mon Sep 17 00:00:00 2001
2From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
3Date: Wed, 22 Apr 2009 10:06:08 +0300
4Subject: [PATCH] OMAP2/3: DMA: implement trans copy and const fill
5
6Implement transparent copy and constant fill features for OMAP2/3.
7
8Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
9---
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(-)
13
14diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
15index 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);
19
20 void omap_set_dma_color_mode(int lch, enum omap_dma_color_mode mode, u32 color)
21 {
22- u16 w;
23-
24 BUG_ON(omap_dma_in_1510_mode());
25
26- if (cpu_class_is_omap2()) {
27- REVISIT_24XX();
28- return;
29- }
30+ if (cpu_class_is_omap1()) {
31+ u16 w;
32
33- w = dma_read(CCR2(lch));
34- w &= ~0x03;
35+ w = dma_read(CCR2(lch));
36+ w &= ~0x03;
37
38- switch (mode) {
39- case OMAP_DMA_CONSTANT_FILL:
40- w |= 0x01;
41- break;
42- case OMAP_DMA_TRANSPARENT_COPY:
43- w |= 0x02;
44- break;
45- case OMAP_DMA_COLOR_DIS:
46- break;
47- default:
48- BUG();
49+ switch (mode) {
50+ case OMAP_DMA_CONSTANT_FILL:
51+ w |= 0x01;
52+ break;
53+ case OMAP_DMA_TRANSPARENT_COPY:
54+ w |= 0x02;
55+ break;
56+ case OMAP_DMA_COLOR_DIS:
57+ break;
58+ default:
59+ BUG();
60+ }
61+ dma_write(w, CCR2(lch));
62+
63+ w = dma_read(LCH_CTRL(lch));
64+ w &= ~0x0f;
65+ /* Default is channel type 2D */
66+ if (mode) {
67+ dma_write((u16)color, COLOR_L(lch));
68+ dma_write((u16)(color >> 16), COLOR_U(lch));
69+ w |= 1; /* Channel type G */
70+ }
71+ dma_write(w, LCH_CTRL(lch));
72 }
73- dma_write(w, CCR2(lch));
74
75- w = dma_read(LCH_CTRL(lch));
76- w &= ~0x0f;
77- /* Default is channel type 2D */
78- if (mode) {
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()) {
83+ u32 val;
84+
85+ val = dma_read(CCR(lch));
86+ val &= ~((1 << 17) | (1 << 16));
87+
88+ switch (mode) {
89+ case OMAP_DMA_CONSTANT_FILL:
90+ val |= 1 << 16;
91+ break;
92+ case OMAP_DMA_TRANSPARENT_COPY:
93+ val |= 1 << 17;
94+ break;
95+ case OMAP_DMA_COLOR_DIS:
96+ break;
97+ default:
98+ BUG();
99+ }
100+ dma_write(val, CCR(lch));
101+
102+ color &= 0xffffff;
103+ dma_write(color, COLOR(lch));
104 }
105- dma_write(w, LCH_CTRL(lch));
106 }
107 EXPORT_SYMBOL(omap_set_dma_color_mode);
108
109diff --git a/arch/arm/plat-omap/include/mach/dma.h b/arch/arm/plat-omap/include/mach/dma.h
110index 224b077..4e34f47 100644
111--- a/arch/arm/plat-omap/include/mach/dma.h
112+++ b/arch/arm/plat-omap/include/mach/dma.h
113@@ -144,6 +144,7 @@
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
118
119 /*----------------------------------------------------------------------------*/
120
121--
1221.5.6.5
123