]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
cleaned ATI fixes
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 18 Dec 2009 01:11:26 +0000 (02:11 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 18 Dec 2009 01:11:26 +0000 (02:11 +0100)
video/i386/pc/vbe.c

index 714f7397efbbec71adccb5049e8c27bc84be42cc..be1b519c5a72b2451386d903c1dbfaa6e91013e0 100644 (file)
@@ -33,6 +33,9 @@ static int vbe_detected = -1;
 static struct grub_vbe_info_block controller_info;
 static struct grub_vbe_mode_info_block active_vbe_mode_info;
 
+/* Track last mode to support cards which fail on get_mode.  */
+static grub_uint32_t last_set_mode = 3;
+
 static struct
 {
   struct grub_video_mode_info mode_info;
@@ -160,6 +163,7 @@ grub_vbe_set_video_mode (grub_uint32_t vbe_mode,
   status = grub_vbe_bios_set_mode (vbe_mode, 0);
   if (status != GRUB_VBE_STATUS_OK)
     return grub_error (GRUB_ERR_BAD_DEVICE, "cannot set VBE mode %x", vbe_mode);
+  last_set_mode = vbe_mode;
 
   /* Save information for later usage.  */
   framebuffer.active_vbe_mode = vbe_mode;
@@ -203,6 +207,7 @@ grub_vbe_set_video_mode (grub_uint32_t vbe_mode,
        case 8: framebuffer.bytes_per_pixel = 1; break;
        default:
          grub_vbe_bios_set_mode (old_vbe_mode, 0);
+         last_set_mode = old_vbe_mode;
          return grub_error (GRUB_ERR_BAD_DEVICE,
                             "cannot set VBE mode %x",
                             vbe_mode);
@@ -256,10 +261,9 @@ grub_vbe_get_video_mode (grub_uint32_t *mode)
 
   /* Try to query current mode from VESA BIOS.  */
   status = grub_vbe_bios_get_mode (mode);
-  /* XXX: ATI don't support get_mode.  */
+  /* XXX: ATI cards don't support get_mode.  */
   if (status != GRUB_VBE_STATUS_OK)
-    *mode = 3;
-  //    return grub_error (GRUB_ERR_BAD_DEVICE, "cannot get current VBE mode");
+    *mode = last_set_mode;
 
   return GRUB_ERR_NONE;
 }
@@ -393,12 +397,6 @@ grub_video_vbe_setup (unsigned int width, unsigned int height,
         /* If not available, skip it.  */
         continue;
 
-#if 0
-      if ((vbe_mode_info.mode_attributes & 0x002) == 0)
-        /* Not enough information.  */
-        continue;
-#endif
-
       if ((vbe_mode_info.mode_attributes & 0x008) == 0)
         /* Monochrome is unusable.  */
         continue;