OMAP: DSS2: OMAPFB: Check var even if there isn't memory
authorVille Syrjälä <ville.syrjala@nokia.com>
Wed, 17 Mar 2010 18:05:38 +0000 (20:05 +0200)
committerTomi Valkeinen <tomi.valkeinen@nokia.com>
Tue, 3 Aug 2010 12:18:46 +0000 (15:18 +0300)
If video memory hasn't been allocate have check_fb_var() still check
most of the settings, just skip the ones involving the size of the
memory region. Also skip the memory address calculations in
omapfb_setup_overlay() if there's no memory.

Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
drivers/video/omap2/omapfb/omapfb-main.c

index 2ac20d2..ccccf3d 100644 (file)
@@ -668,9 +668,6 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var)
 
        DBG("check_fb_var %d\n", ofbi->id);
 
-       if (ofbi->region.size == 0)
-               return 0;
-
        r = fb_mode_to_dss_mode(var, &mode);
        if (r) {
                DBG("cannot convert var to omap dss mode\n");
@@ -690,7 +687,8 @@ int check_fb_var(struct fb_info *fbi, struct fb_var_screeninfo *var)
        if (check_fb_res_bounds(var))
                return -EINVAL;
 
-       if (check_fb_size(ofbi, var))
+       /* When no memory is allocated ignore the size check */
+       if (ofbi->region.size != 0 && check_fb_size(ofbi, var))
                return -EINVAL;
 
        if (var->xres + var->xoffset > var->xres_virtual)
@@ -894,8 +892,9 @@ static int omapfb_setup_overlay(struct fb_info *fbi, struct omap_overlay *ovl,
                yres = var->yres;
        }
 
-       omapfb_calc_addr(ofbi, var, fix, rotation,
-                        &data_start_p, &data_start_v);
+       if (ofbi->region.size)
+               omapfb_calc_addr(ofbi, var, fix, rotation,
+                                &data_start_p, &data_start_v);
 
        r = fb_mode_to_dss_mode(var, &mode);
        if (r) {