diff options
author | Krzysztof Helt <krzysztof.h1@wp.pl> | 2008-07-24 00:31:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-24 13:47:36 -0400 |
commit | 2c86a0c26fbe8ea218f7a267645679fb78aba8a3 (patch) | |
tree | dad15c3c6cb0ee5daa790fd6b2fbb24fe1d9dd9a | |
parent | 49b1f4b44bcdc47a10d2b354b269305043ef2a32 (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>
-rw-r--r-- | drivers/video/tridentfb.c | 10 |
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, | |||
395 | static void image_copy_rect(struct tridentfb_par *par, | 395 | static 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"); |