]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.suse/radeon-monitor-jsxx-quirk.patch
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / radeon-monitor-jsxx-quirk.patch
diff --git a/src/patches/suse-2.6.27.31/patches.suse/radeon-monitor-jsxx-quirk.patch b/src/patches/suse-2.6.27.31/patches.suse/radeon-monitor-jsxx-quirk.patch
new file mode 100644 (file)
index 0000000..c6f7e96
--- /dev/null
@@ -0,0 +1,64 @@
+Subject: [PATCH] Add quirk for the graphics adapter in some JSxx
+From: Tony Breeds <tony@bakeyournoodle.com>
+References: 461002 - LTC50817
+
+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
+@@ -727,6 +727,25 @@ static void radeon_videomode_to_var(stru
+       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
+@@ -862,6 +881,22 @@ void __devinit radeon_check_modes(struct
+                       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
+        */