2010-07-07 11:12:45 +00:00
|
|
|
Subject: [PATCH] Add quirk for the graphics adapter in some JSxx
|
|
|
|
From: Tony Breeds <tony@bakeyournoodle.com>
|
|
|
|
References: 461002 - LTC50817
|
|
|
|
Patch-mainline: not yet
|
|
|
|
|
|
|
|
These devices are set to 640x480 by firmware, switch them to
|
|
|
|
800x600@60.
|
|
|
|
|
|
|
|
Signed-off-by: Tony Breeds <tony@bakeyournoodle.com>
|
|
|
|
Signed-off-by: Olaf Hering <olh@suse.de>
|
|
|
|
---
|
|
|
|
drivers/video/aty/radeon_monitor.c | 35 +++++++++++++++++++++++++++++++++++
|
|
|
|
1 file changed, 35 insertions(+)
|
|
|
|
|
|
|
|
--- a/drivers/video/aty/radeon_monitor.c
|
|
|
|
+++ b/drivers/video/aty/radeon_monitor.c
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -730,6 +730,25 @@ static void radeon_videomode_to_var(stru
|
2010-07-07 11:12:45 +00:00
|
|
|
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
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -865,6 +884,22 @@ void __devinit radeon_check_modes(struct
|
2010-07-07 11:12:45 +00:00
|
|
|
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
|
|
|
|
*/
|