Skip to content

Commit

Permalink
[PATCH] powerpc: Fix platinumfb for some modes
Browse files Browse the repository at this point in the history
The platinumfb driver used only on some powermacs has an issue with some
video modes & limited VRAM. This patch fixes it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Benjamin Herrenschmidt authored and Paul Mackerras committed Jan 9, 2006
1 parent f75225d commit 9cf84d7
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
12 changes: 8 additions & 4 deletions drivers/video/platinumfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,15 @@ static int platinumfb_set_par (struct fb_info *info)

init = platinum_reg_init[pinfo->vmode-1];

if (pinfo->vmode == 13 && pinfo->cmode > 0)
offset = 0x10;
if ((pinfo->vmode == VMODE_832_624_75) && (pinfo->cmode > CMODE_8))
offset = 0x10;

info->screen_base = pinfo->frame_buffer + init->fb_offset + offset;
info->fix.smem_start = (pinfo->frame_buffer_phys) + init->fb_offset + offset;
info->fix.visual = (pinfo->cmode == CMODE_8) ?
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);
return 0;
}
Expand Down Expand Up @@ -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)
{
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) { \
Expand Down
4 changes: 3 additions & 1 deletion drivers/video/platinumfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@ static struct platinum_regvals platinum_reg_init_14 = {
/* 832x624, 75Hz (13) */
static struct platinum_regvals platinum_reg_init_13 = {
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,
0, 0x21e, 0x120, 0x10, 0x23f, 0x1f, 0x25, 0x37,
0x8a, 0x22a, 0x23e, 0x536, 0x534, 4, 9, 0x52,
Expand Down

0 comments on commit 9cf84d7

Please sign in to comment.