diff options
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.patch | 123 |
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 @@ | |||
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 | ||
5 | |||
6 | Implement transparent copy and constant fill features for OMAP2/3. | ||
7 | |||
8 | Signed-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 | |||
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); | ||
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 | |||
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 | ||
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 | -- | ||
122 | 1.5.6.5 | ||
123 | |||