]> code.ossystems Code Review - openembedded-core.git/blob
072978670b830a643b7c24d229b60183a6de4803
[openembedded-core.git] /
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.
5
6 Signed-off-by: Tim Yamin <plasm@roo.me.uk>
7 ---
8  drivers/video/omap2/omapfb/omapfb-main.c |   30 +++++++++++++++++++++++++-----
9  1 files changed, 25 insertions(+), 5 deletions(-)
10
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);
17  
18         /* used by mmap in fbmem.c */
19 -       if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB)
20 -               fix->line_length =
21 -                       (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 3;
22 -       else
23 +       if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
24 +               switch (var->nonstd) {
25 +               case OMAPFB_COLOR_YUV422:
26 +               case OMAPFB_COLOR_YUY422:
27 +                       fix->line_length =
28 +                               (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 2;
29 +                       break;
30 +               default:
31 +                       fix->line_length =
32 +                               (OMAP_VRFB_LINE_LEN * var->bits_per_pixel) >> 3;
33 +                       break;
34 +               }
35 +       } else
36                 fix->line_length =
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,
40                 goto err;
41         }
42  
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);
50 +                       break;
51 +               }
52 +       default:
53 +               screen_width = fix->line_length / (var->bits_per_pixel >> 3);
54 +               break;
55 +       }
56  
57         ovl->get_overlay_info(ovl, &info);
58  
59 -- 
60 1.5.6.5
61