[PATCH] savagefb: X-panning fixes
authorAntonino A. Daplas <adaplas@gmail.com>
Wed, 9 Nov 2005 05:39:05 +0000 (21:39 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 9 Nov 2005 15:56:34 +0000 (07:56 -0800)
The driver unconditionally sets xpanstep to 2.  However, a value of 4
empirically works better at bpp = 8, and 2 for 16 and 32.  This buglet was
exposed by the rotation code.

Second fix is the unconditional call to update_start() without verifying if
the offsets are correct.  Remove this call, it's not necessary and secondly,
it causes a crash with invalid values.

Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/video/savage/savagefb_driver.c

index f0dfb35e3191b4637e76d085927f3e41dd76e5d0..09e2f28419015559b0cd57a8b163acd65d45c36f 100644 (file)
@@ -1315,10 +1315,14 @@ static void savagefb_set_fix(struct fb_info *info)
        info->fix.line_length = info->var.xres_virtual *
                info->var.bits_per_pixel / 8;
 
-       if (info->var.bits_per_pixel == 8)
+       if (info->var.bits_per_pixel == 8) {
                info->fix.visual      = FB_VISUAL_PSEUDOCOLOR;
-       else
+               info->fix.xpanstep    = 4;
+       } else {
                info->fix.visual      = FB_VISUAL_TRUECOLOR;
+               info->fix.xpanstep    = 2;
+       }
+
 }
 
 #if defined(CONFIG_FB_SAVAGE_ACCEL)
@@ -1363,7 +1367,6 @@ static int savagefb_set_par (struct fb_info *info)
        par->minClock = 10000;
 
        savagefb_set_par_int (par);
-       savagefb_update_start (par, var);
        fb_set_cmap (&info->cmap, info);
        savagefb_set_fix(info);
        savagefb_set_clip(info);
@@ -1873,7 +1876,6 @@ static int __devinit savage_init_fb_info (struct fb_info *info,
 
        info->fix.type     = FB_TYPE_PACKED_PIXELS;
        info->fix.type_aux         = 0;
-       info->fix.xpanstep         = 2;
        info->fix.ypanstep         = 1;
        info->fix.ywrapstep   = 0;
        info->fix.accel       = id->driver_data;