Skip to content

Commit

Permalink
radeonfb: Add quirk for the graphics adapter in some JSxx
Browse files Browse the repository at this point in the history
These devices are set to 640x480 by firmware, switch them to 800x600@60
so that the graphical installer can run on remote console.

Reported by IBM during SLES10 SP2 beta testing:

https://bugzilla.novell.com/show_bug.cgi?id=461002
LTC50817

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Tony Breeds authored and Benjamin Herrenschmidt committed Jul 27, 2012
1 parent 0e38498 commit e5ae3cd
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions drivers/video/aty/radeon_monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,25 @@ static void radeon_videomode_to_var(struct fb_var_screeninfo *var,
var->vmode = mode->vmode;
}

#ifdef CONFIG_PPC_PSERIES
static int is_powerblade(const char *model)
{
struct device_node *root;
const char* cp;
int len, l, rc = 0;

root = of_find_node_by_path("/");
if (root && model) {
l = strlen(model);
cp = of_get_property(root, "model", &len);
if (cp)
rc = memcmp(model, cp, min(len, l)) == 0;
of_node_put(root);
}
return rc;
}
#endif

/*
* Build the modedb for head 1 (head 2 will come later), check panel infos
* from either BIOS or EDID, and pick up the default mode
Expand Down Expand Up @@ -865,6 +884,22 @@ void __devinit radeon_check_modes(struct radeonfb_info *rinfo, const char *mode_
has_default_mode = 1;
}

#ifdef CONFIG_PPC_PSERIES
if (!has_default_mode && (
is_powerblade("IBM,8842") || /* JS20 */
is_powerblade("IBM,8844") || /* JS21 */
is_powerblade("IBM,7998") || /* JS12/JS21/JS22 */
is_powerblade("IBM,0792") || /* QS21 */
is_powerblade("IBM,0793") /* QS22 */
)) {
printk("Falling back to 800x600 on JSxx hardware\n");
if (fb_find_mode(&info->var, info, "800x600@60",
info->monspecs.modedb,
info->monspecs.modedb_len, NULL, 8) != 0)
has_default_mode = 1;
}
#endif

/*
* Still no mode, let's pick up a default from the db
*/
Expand Down

0 comments on commit e5ae3cd

Please sign in to comment.