summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch236
1 files changed, 236 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch
new file mode 100644
index 0000000000..6400da3c24
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0028-DSS2-OMAPFB-Added-support-for-the-YUV-VRFB-rotatio.patch
@@ -0,0 +1,236 @@
1From c09f1a0642fd58a1b081594ea36dfd1bf71aec52 Mon Sep 17 00:00:00 2001
2From: Hardik Shah <hardik.shah@ti.com>
3Date: Thu, 9 Apr 2009 12:13:07 +0530
4Subject: [PATCH] DSS2: OMAPFB: Added support for the YUV VRFB rotation and mirroring.
5
6DSS2 now requires roatation_type to be specified by driver.
7Added support for that.
8DSS2 OMAPFB: Modified to pass the dss mode to omap_vrfb_setup function.
9
10VRFB size register requires the width to be halved when the
11mode is YUV or UYVY. So VRFB is modifed to pass the mode to omap_vrfb_setup
12function.
13
14Few changes done by Tim Yamin
15Signed-off-by: Tim Yamin <plasm@roo.me.uk>
16Signed-off-by: Hardik Shah <hardik.shah@ti.com>
17---
18 arch/arm/plat-omap/vrfb.c | 4 +-
19 drivers/video/omap2/omapfb/omapfb-main.c | 59 ++++++++++++++----------------
20 drivers/video/omap2/omapfb/omapfb.h | 7 +---
21 3 files changed, 30 insertions(+), 40 deletions(-)
22
23diff --git a/arch/arm/plat-omap/vrfb.c b/arch/arm/plat-omap/vrfb.c
24index 2f08f6d..2ae0d68 100644
25--- a/arch/arm/plat-omap/vrfb.c
26+++ b/arch/arm/plat-omap/vrfb.c
27@@ -88,9 +88,9 @@ void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
28 color_mode == OMAP_DSS_COLOR_UYVY)
29 width >>= 1;
30
31- if (bytespp == 4) {
32+ if (bytespp == 4)
33 pixel_size_exp = 2;
34- } else if (bytespp == 2)
35+ else if (bytespp == 2)
36 pixel_size_exp = 1;
37 else
38 BUG();
39diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
40index 67c67c2..57f5900 100644
41--- a/drivers/video/omap2/omapfb/omapfb-main.c
42+++ b/drivers/video/omap2/omapfb/omapfb-main.c
43@@ -176,15 +176,9 @@ static unsigned omapfb_get_vrfb_offset(struct omapfb_info *ofbi, int rot)
44
45 static u32 omapfb_get_region_rot_paddr(struct omapfb_info *ofbi)
46 {
47- if (ofbi->rotation_type == OMAPFB_ROT_VRFB) {
48- unsigned offset;
49- int rot;
50-
51- rot = ofbi->rotation;
52-
53- offset = omapfb_get_vrfb_offset(ofbi, rot);
54-
55- return ofbi->region.vrfb.paddr[rot] + offset;
56+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
57+ return ofbi->region.vrfb.paddr[ofbi->rotation]
58+ + omapfb_get_vrfb_offset(ofbi, ofbi->rotation);
59 } else {
60 return ofbi->region.paddr;
61 }
62@@ -192,7 +186,7 @@ static u32 omapfb_get_region_rot_paddr(struct omapfb_info *ofbi)
63
64 u32 omapfb_get_region_paddr(struct omapfb_info *ofbi)
65 {
66- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
67+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
68 return ofbi->region.vrfb.paddr[0];
69 else
70 return ofbi->region.paddr;
71@@ -200,7 +194,7 @@ u32 omapfb_get_region_paddr(struct omapfb_info *ofbi)
72
73 void __iomem *omapfb_get_region_vaddr(struct omapfb_info *ofbi)
74 {
75- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
76+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
77 return ofbi->region.vrfb.vaddr[0];
78 else
79 return ofbi->region.vaddr;
80@@ -398,7 +392,7 @@ void set_fb_fix(struct fb_info *fbi)
81 fbi->screen_base = (char __iomem *)omapfb_get_region_vaddr(ofbi);
82
83 /* used by mmap in fbmem.c */
84- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
85+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
86 fix->line_length =
87 (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 3;
88 else
89@@ -434,11 +428,14 @@ void set_fb_fix(struct fb_info *fbi)
90 fix->xpanstep = 1;
91 fix->ypanstep = 1;
92
93- if (rg->size) {
94- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
95- omap_vrfb_setup(&rg->vrfb, rg->paddr,
96- var->xres_virtual, var->yres_virtual,
97- var->bits_per_pixel >> 3);
98+ if (rg->size && ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
99+ enum omap_color_mode mode = 0;
100+ mode = fb_mode_to_dss_mode(var);
101+
102+ omap_vrfb_setup(&rg->vrfb, rg->paddr,
103+ var->xres_virtual,
104+ var->yres_virtual,
105+ mode);
106 }
107 }
108
109@@ -527,7 +524,7 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var)
110 if (var->yres > var->yres_virtual)
111 var->yres = var->yres_virtual;
112
113- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
114+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
115 line_size = OMAP_VRFB_LINE_LEN * bytespp;
116 else
117 line_size = var->xres_virtual * bytespp;
118@@ -549,7 +546,7 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var)
119
120 if (line_size * var->yres_virtual > max_frame_size) {
121 DBG("can't fit FB into memory, reducing x\n");
122- if (ofbi->rotation_type == OMAPFB_ROT_VRFB)
123+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
124 return -EINVAL;
125
126 var->xres_virtual = max_frame_size / var->yres_virtual /
127@@ -672,7 +669,7 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
128 struct omap_overlay_info info;
129 int xres, yres;
130 int screen_width;
131- int rot, mirror;
132+ int mirror;
133
134 DBG("setup_overlay %d, posx %d, posy %d, outw %d, outh %d\n", ofbi->id,
135 posx, posy, outw, outh);
136@@ -688,7 +685,7 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
137 offset = ((var->yoffset * var->xres_virtual +
138 var->xoffset) * var->bits_per_pixel) >> 3;
139
140- if (ofbi->rotation_type == OMAPFB_ROT_VRFB) {
141+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
142 data_start_p = omapfb_get_region_rot_paddr(ofbi);
143 data_start_v = NULL;
144 } else {
145@@ -711,13 +708,10 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
146
147 ovl->get_overlay_info(ovl, &info);
148
149- if (ofbi->rotation_type == OMAPFB_ROT_VRFB) {
150- rot = 0;
151+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
152 mirror = 0;
153- } else {
154- rot = ofbi->rotation;
155+ else
156 mirror = ofbi->mirror;
157- }
158
159 info.paddr = data_start_p;
160 info.vaddr = data_start_v;
161@@ -725,7 +719,8 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
162 info.width = xres;
163 info.height = yres;
164 info.color_mode = mode;
165- info.rotation = rot;
166+ info.rotation_type = ofbi->rotation_type;
167+ info.rotation = ofbi->rotation;
168 info.mirror = mirror;
169
170 info.pos_x = posx;
171@@ -1121,7 +1116,7 @@ static void omapfb_free_fbmem(struct fb_info *fbi)
172 if (rg->vaddr)
173 iounmap(rg->vaddr);
174
175- if (ofbi->rotation_type == OMAPFB_ROT_VRFB) {
176+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
177 /* unmap the 0 angle rotation */
178 if (rg->vrfb.vaddr[0]) {
179 iounmap(rg->vrfb.vaddr[0]);
180@@ -1181,7 +1176,7 @@ static int omapfb_alloc_fbmem(struct fb_info *fbi, unsigned long size,
181 return -ENOMEM;
182 }
183
184- if (ofbi->rotation_type != OMAPFB_ROT_VRFB) {
185+ if (ofbi->rotation_type != OMAP_DSS_ROT_VRFB) {
186 vaddr = ioremap_wc(paddr, size);
187
188 if (!vaddr) {
189@@ -1260,7 +1255,7 @@ static int omapfb_alloc_fbmem_display(struct fb_info *fbi, unsigned long size,
190
191 display->get_resolution(display, &w, &h);
192
193- if (ofbi->rotation_type == OMAPFB_ROT_VRFB) {
194+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
195 #ifdef DEBUG
196 int oldw = w, oldh = h;
197 #endif
198@@ -1701,8 +1696,8 @@ static int omapfb_create_framebuffers(struct omapfb2_device *fbdev)
199 ofbi->id = i;
200
201 /* assign these early, so that fb alloc can use them */
202- ofbi->rotation_type = def_vrfb ? OMAPFB_ROT_VRFB :
203- OMAPFB_ROT_DMA;
204+ ofbi->rotation_type = def_vrfb ? OMAP_DSS_ROT_VRFB :
205+ OMAP_DSS_ROT_DMA;
206 ofbi->rotation = def_rotate;
207 ofbi->mirror = def_mirror;
208
209diff --git a/drivers/video/omap2/omapfb/omapfb.h b/drivers/video/omap2/omapfb/omapfb.h
210index 2607def..43f6922 100644
211--- a/drivers/video/omap2/omapfb/omapfb.h
212+++ b/drivers/video/omap2/omapfb/omapfb.h
213@@ -53,11 +53,6 @@ struct omapfb2_mem_region {
214 bool map; /* kernel mapped by the driver */
215 };
216
217-enum omapfb_rotation_type {
218- OMAPFB_ROT_DMA = 0,
219- OMAPFB_ROT_VRFB = 1,
220-};
221-
222 /* appended to fb_info */
223 struct omapfb_info {
224 int id;
225@@ -66,7 +61,7 @@ struct omapfb_info {
226 int num_overlays;
227 struct omap_overlay *overlays[OMAPFB_MAX_OVL_PER_FB];
228 struct omapfb2_device *fbdev;
229- enum omapfb_rotation_type rotation_type;
230+ enum omap_dss_rotation_type rotation_type;
231 u8 rotation;
232 bool mirror;
233 };
234--
2351.5.6.5
236