1 From a8a37babe4856170f4cba86c425a8f21975d9e9e Mon Sep 17 00:00:00 2001
2 From: Tim Yamin <plasm@roo.me.uk>
3 Date: Mon, 13 Apr 2009 13:57:42 -0700
4 Subject: [PATCH] DSS2: OMAPFB: Set line_length correctly for YUV with VRFB.
6 Signed-off-by: Tim Yamin <plasm@roo.me.uk>
8 drivers/video/omap2/omapfb/omapfb-main.c | 30 +++++++++++++++++++++++++-----
9 1 files changed, 25 insertions(+), 5 deletions(-)
11 diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
12 index 57f5900..cd63740 100644
13 --- a/drivers/video/omap2/omapfb/omapfb-main.c
14 +++ b/drivers/video/omap2/omapfb/omapfb-main.c
15 @@ -392,10 +392,19 @@ void set_fb_fix(struct fb_info *fbi)
16 fbi->screen_base = (char __iomem *)omapfb_get_region_vaddr(ofbi);
18 /* used by mmap in fbmem.c */
19 - if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
21 - (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 3;
23 + if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
24 + switch (var->nonstd) {
25 + case OMAPFB_COLOR_YUV422:
26 + case OMAPFB_COLOR_YUY422:
28 + (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 2;
32 + (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 3;
37 (var->xres_virtual * var->bits_per_pixel) >> 3;
38 fix->smem_start = omapfb_get_region_paddr(ofbi);
39 @@ -704,7 +713,18 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
43 - screen_width = fix->line_length / (var->bits_per_pixel >> 3);
44 + switch (var->nonstd) {
45 + case OMAPFB_COLOR_YUV422:
46 + case OMAPFB_COLOR_YUY422:
47 + if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
48 + screen_width = fix->line_length
49 + / (var->bits_per_pixel >> 2);
53 + screen_width = fix->line_length / (var->bits_per_pixel >> 3);
57 ovl->get_overlay_info(ovl, &info);