aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorAdrian McMenamin <adrian@mcmen.demon.co.uk>2007-08-10 16:00:48 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-11 18:47:40 -0400
commit306c869c237a66fe85580f60558f105e3305d465 (patch)
tree1fcce4e26981cb0122b72e3ff46a452a1dfddfc3 /drivers/video
parent9cd1c67434544b1d9a4fb4a4cdec15608167a233 (diff)
pvr2fb: Consolidated cleanup of pvr2fb.c
- better handling of the pvr2 registers based on more up to date information. Testing shows that it seems to work pretty well at 16bpp, 24bpp and 32bpp - including proper rendering of the boot logo at all levels (previously this was a bit broken even at 16bpp) and giving white against black text. Really detailed testing (eg with X11) requires support for the maple bus - which isn't (currently - next project assuming this is okay) available, but I have no reason to think this is broken. Signed-off by: Adrian McMenamin <adrian@mcmen.demon.co.uk> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/pvr2fb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c
index a72921b552dc..7d6c29800d14 100644
--- a/drivers/video/pvr2fb.c
+++ b/drivers/video/pvr2fb.c
@@ -94,6 +94,7 @@
94#define DISP_DIWCONF (DISP_BASE + 0xe8) 94#define DISP_DIWCONF (DISP_BASE + 0xe8)
95#define DISP_DIWHSTRT (DISP_BASE + 0xec) 95#define DISP_DIWHSTRT (DISP_BASE + 0xec)
96#define DISP_DIWVSTRT (DISP_BASE + 0xf0) 96#define DISP_DIWVSTRT (DISP_BASE + 0xf0)
97#define DISP_PIXDEPTH (DISP_BASE + 0x108)
97 98
98/* Pixel clocks, one for TV output, doubled for VGA output */ 99/* Pixel clocks, one for TV output, doubled for VGA output */
99#define TV_CLK 74239 100#define TV_CLK 74239
@@ -600,6 +601,7 @@ static void pvr2_init_display(struct fb_info *info)
600 601
601 /* bits per pixel */ 602 /* bits per pixel */
602 fb_writel(fb_readl(DISP_DIWMODE) | (--bytesperpixel << 2), DISP_DIWMODE); 603 fb_writel(fb_readl(DISP_DIWMODE) | (--bytesperpixel << 2), DISP_DIWMODE);
604 fb_writel(bytesperpixel << 2, DISP_PIXDEPTH);
603 605
604 /* video enable, color sync, interlace, 606 /* video enable, color sync, interlace,
605 * hsync and vsync polarity (currently unused) */ 607 * hsync and vsync polarity (currently unused) */
@@ -808,6 +810,8 @@ static int __devinit pvr2fb_common_init(void)
808 810
809 if (register_framebuffer(fb_info) < 0) 811 if (register_framebuffer(fb_info) < 0)
810 goto out_err; 812 goto out_err;
813 /*Must write PIXDEPTH to register before anything is displayed - so force init */
814 pvr2_init_display(fb_info);
811 815
812 modememused = get_line_length(fb_info->var.xres_virtual, 816 modememused = get_line_length(fb_info->var.xres_virtual,
813 fb_info->var.bits_per_pixel); 817 fb_info->var.bits_per_pixel);