aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorKrzysztof Helt <krzysztof.h1@wp.pl>2008-07-24 00:31:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-24 13:47:36 -0400
commit2c86a0c26fbe8ea218f7a267645679fb78aba8a3 (patch)
treedad15c3c6cb0ee5daa790fd6b2fbb24fe1d9dd9a /drivers
parent49b1f4b44bcdc47a10d2b354b269305043ef2a32 (diff)
tridentfb: acceleration bug fixes
This patch fixes two problems when acceleration is enabled: - bit for bitblt direction is corrected so scrolling down works as expected on 3DImage chips - initialization of acceleration is done later this helps with initial console malfuntion (on Blade3D chips) well documented here: http://marc.info/?l=linux-fbdev-users&m=111386953124478&w=2 Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tridentfb.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/video/tridentfb.c b/drivers/video/tridentfb.c
index 4a1258f9509e..d896dee7b487 100644
--- a/drivers/video/tridentfb.c
+++ b/drivers/video/tridentfb.c
@@ -395,7 +395,7 @@ static void image_fill_rect(struct tridentfb_par *par,
395static void image_copy_rect(struct tridentfb_par *par, 395static void image_copy_rect(struct tridentfb_par *par,
396 u32 x1, u32 y1, u32 x2, u32 y2, u32 w, u32 h) 396 u32 x1, u32 y1, u32 x2, u32 y2, u32 w, u32 h)
397{ 397{
398 int direction = 2; 398 int direction = 0x4;
399 u32 s1 = point(x1, y1); 399 u32 s1 = point(x1, y1);
400 u32 s2 = point(x1 + w - 1, y1 + h - 1); 400 u32 s2 = point(x1 + w - 1, y1 + h - 1);
401 u32 d1 = point(x2, y2); 401 u32 d1 = point(x2, y2);
@@ -1075,10 +1075,6 @@ static int tridentfb_set_par(struct fb_info *info)
1075 /* enable GE for text acceleration */ 1075 /* enable GE for text acceleration */
1076 write3X4(par, GraphEngReg, 0x80); 1076 write3X4(par, GraphEngReg, 0x80);
1077 1077
1078#ifdef CONFIG_FB_TRIDENT_ACCEL
1079 par->init_accel(par, info->var.xres_virtual, bpp);
1080#endif
1081
1082 switch (bpp) { 1078 switch (bpp) {
1083 case 8: 1079 case 8:
1084 tmp = 0x00; 1080 tmp = 0x00;
@@ -1173,6 +1169,10 @@ static int tridentfb_set_par(struct fb_info *info)
1173 set_number_of_lines(par, info->var.yres); 1169 set_number_of_lines(par, info->var.yres);
1174 info->fix.line_length = info->var.xres_virtual * bpp / 8; 1170 info->fix.line_length = info->var.xres_virtual * bpp / 8;
1175 set_lwidth(par, info->fix.line_length / 8); 1171 set_lwidth(par, info->fix.line_length / 8);
1172#ifdef CONFIG_FB_TRIDENT_ACCEL
1173 par->init_accel(par, info->var.xres_virtual, bpp);
1174#endif
1175
1176 info->fix.visual = (bpp == 8) ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR; 1176 info->fix.visual = (bpp == 8) ? FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
1177 info->cmap.len = (bpp == 8) ? 256 : 16; 1177 info->cmap.len = (bpp == 8) ? 256 : 16;
1178 debug("exit\n"); 1178 debug("exit\n");