Commit 9cf84d7c authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Paul Mackerras

[PATCH] powerpc: Fix platinumfb for some modes

The platinumfb driver used only on some powermacs has an issue with some
video modes & limited VRAM. This patch fixes it.
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent f75225d0
...@@ -138,13 +138,15 @@ static int platinumfb_set_par (struct fb_info *info) ...@@ -138,13 +138,15 @@ static int platinumfb_set_par (struct fb_info *info)
init = platinum_reg_init[pinfo->vmode-1]; init = platinum_reg_init[pinfo->vmode-1];
if (pinfo->vmode == 13 && pinfo->cmode > 0) if ((pinfo->vmode == VMODE_832_624_75) && (pinfo->cmode > CMODE_8))
offset = 0x10; offset = 0x10;
info->screen_base = pinfo->frame_buffer + init->fb_offset + offset; info->screen_base = pinfo->frame_buffer + init->fb_offset + offset;
info->fix.smem_start = (pinfo->frame_buffer_phys) + init->fb_offset + offset; info->fix.smem_start = (pinfo->frame_buffer_phys) + init->fb_offset + offset;
info->fix.visual = (pinfo->cmode == CMODE_8) ? info->fix.visual = (pinfo->cmode == CMODE_8) ?
FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR;
info->fix.line_length = vmode_attrs[pinfo->vmode-1].hres * (1<<pinfo->cmode) + offset; info->fix.line_length = vmode_attrs[pinfo->vmode-1].hres * (1<<pinfo->cmode)
+ offset;
printk("line_length: %x\n", info->fix.line_length); printk("line_length: %x\n", info->fix.line_length);
return 0; return 0;
} }
...@@ -221,7 +223,9 @@ static int platinumfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, ...@@ -221,7 +223,9 @@ static int platinumfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
static inline int platinum_vram_reqd(int video_mode, int color_mode) static inline int platinum_vram_reqd(int video_mode, int color_mode)
{ {
return vmode_attrs[video_mode-1].vres * return vmode_attrs[video_mode-1].vres *
(vmode_attrs[video_mode-1].hres * (1<<color_mode) + 0x20) +0x1000; (vmode_attrs[video_mode-1].hres * (1<<color_mode) +
((video_mode == VMODE_832_624_75) &&
(color_mode > CMODE_8)) ? 0x10 : 0x20) + 0x1000;
} }
#define STORE_D2(a, d) { \ #define STORE_D2(a, d) { \
......
...@@ -158,7 +158,9 @@ static struct platinum_regvals platinum_reg_init_14 = { ...@@ -158,7 +158,9 @@ static struct platinum_regvals platinum_reg_init_14 = {
/* 832x624, 75Hz (13) */ /* 832x624, 75Hz (13) */
static struct platinum_regvals platinum_reg_init_13 = { static struct platinum_regvals platinum_reg_init_13 = {
0x70, 0x70,
{ 864, 1680, 3360 }, /* MacOS does 1680 instead of 1696 to fit 16bpp in 1MB */ { 864, 1680, 3344 }, /* MacOS does 1680 instead of 1696 to fit 16bpp in 1MB,
* and we use 3344 instead of 3360 to fit in 2Mb
*/
{ 0xff0, 4, 0, 0, 0, 0, 0x299, 0, { 0xff0, 4, 0, 0, 0, 0, 0x299, 0,
0, 0x21e, 0x120, 0x10, 0x23f, 0x1f, 0x25, 0x37, 0, 0x21e, 0x120, 0x10, 0x23f, 0x1f, 0x25, 0x37,
0x8a, 0x22a, 0x23e, 0x536, 0x534, 4, 9, 0x52, 0x8a, 0x22a, 0x23e, 0x536, 0x534, 4, 9, 0x52,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment