From: Geert Uytterhoeven Date: Mon, 12 Feb 2007 08:55:21 +0000 (-0800) Subject: [PATCH] fb_videomode_to_var: reset virtual screen parameters X-Git-Tag: v2.6.21-rc1~274^2~22 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcfe2666ffd6316b764801db82092bc62db56e6f;p=linux-2.6 [PATCH] fb_videomode_to_var: reset virtual screen parameters fb_videomode_to_var(): reset the virtual screen parameters when converting from an fb_videomode to an fb_var_screeninfo. Without this the old virtual screen parameters are kept. Hence you cannot switch to a video mode with a lower resolution on frame buffer devices that don't support virtual screens and panning, as values are not supposed to be rounded down when they don't fit. I also reordered the assignments to match the order of the individual members. Signed-off-by: Geert Uytterhoeven Cc: James Simmons Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c index 61fc6cd25f..5162eab955 100644 --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c @@ -716,13 +716,17 @@ void fb_videomode_to_var(struct fb_var_screeninfo *var, { var->xres = mode->xres; var->yres = mode->yres; + var->xres_virtual = mode->xres; + var->yres_virtual = mode->yres; + var->xoffset = 0; + var->yoffset = 0; var->pixclock = mode->pixclock; var->left_margin = mode->left_margin; - var->hsync_len = mode->hsync_len; - var->vsync_len = mode->vsync_len; var->right_margin = mode->right_margin; var->upper_margin = mode->upper_margin; var->lower_margin = mode->lower_margin; + var->hsync_len = mode->hsync_len; + var->vsync_len = mode->vsync_len; var->sync = mode->sync; var->vmode = mode->vmode & FB_VMODE_MASK; }