[PATCH] tridentfb: y-panning fixes
From: Krzysztof Helt <hidden>
Date: 2008-05-29 18:58:52
From: Krzysztof Helt <redacted> The Trident cards uses only 14-bit counter of screen start address in quad words. This allows addressing for only 4MB of video memory so check this. Also remove some redundant checks and assignments. Signed-off-by: Krzysztof Helt <redacted> --- diff -urp linux-old/drivers/video/tridentfb.c linux-new/drivers/video/tridentfb.c
--- linux-old/drivers/video/tridentfb.c 2008-05-29 00:11:27.177498740 +0200
+++ linux-new/drivers/video/tridentfb.c 2008-05-29 00:08:02.957495446 +0200@@ -870,8 +870,10 @@ static int tridentfb_check_var(struct fb line_length = var->xres_virtual * bpp / 8; } - if (var->yres > var->yres_virtual) - var->yres_virtual = var->yres; + /* datasheet specifies how to set panning only up to 4 MB */ + if (line_length * (var->yres_virtual - var->yres) > (4 << 20)) + var->yres_virtual = ((4 << 20) / line_length) + var->yres; + if (line_length * var->yres_virtual > info->fix.smem_len) return -EINVAL;
@@ -944,8 +946,6 @@ static int tridentfb_pan_display(struct debug("enter\n"); offset = (var->xoffset + (var->yoffset * var->xres_virtual)) * var->bits_per_pixel / 32; - info->var.xoffset = var->xoffset; - info->var.yoffset = var->yoffset; set_screen_start(par, offset); debug("exit\n"); return 0;
@@ -1225,7 +1225,6 @@ static int tridentfb_setcolreg(unsigned ((blue & 0xFF00) >> 8); } -/* debug("exit\n"); */ return 0; } ----------------------------------------------------------------------
Podbij Dziki Zachod!Gra strategiczna online Sprawdz >>> http://link.interia.pl/f1dff ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/