]> code.ossystems Code Review - openembedded-core.git/blob
cc6663fa212c11ebeaedf07b187df78d9d4c2f3d
[openembedded-core.git] /
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