This refinement is against current SVN head.  It introduces the VBE
mode info field constant values into vbe.h and these are used instead
of the magic numbers in vbeinfo.c.

Regards,
Colin
2008-08-31  Colin D Bennett <[EMAIL PROTECTED]>

        * commands/i386/pc/vbeinfo.c (grub_cmd_vbeinfo): Show VBE version and
        total video memory in 'vbeinfo' output; show color format details for
        each video mode.  Added constant values for VBE mode info values, and
        replaced magic numbers with references to constants.

        * include/grub/i386/pc/vbe.h: Created VBE mode info field value
        constant macros.
=== modified file 'commands/i386/pc/vbeinfo.c'
--- commands/i386/pc/vbeinfo.c	2008-08-31 08:28:36 +0000
+++ commands/i386/pc/vbeinfo.c	2008-09-01 05:36:39 +0000
@@ -57,6 +57,7 @@
                controller_info.version & 0xFF,
                controller_info.oem_software_rev >> 8,
                controller_info.oem_software_rev & 0xFF);
+  /* The total_memory field is in 64 KiB units.  */
   grub_printf ("            total memory: %d KiB\n",
                (controller_info.total_memory << 16) / 1024);
 
@@ -90,32 +91,32 @@
 	  continue;
 	}
 
-      if ((mode_info_tmp.mode_attributes & 0x001) == 0)
+      if ((mode_info_tmp.mode_attributes & GRUB_VBE_MODEATTR_SUPPORTED) == 0)
 	/* If not available, skip it.  */
 	continue;
 
-      if ((mode_info_tmp.mode_attributes & 0x002) == 0)
+      if ((mode_info_tmp.mode_attributes & GRUB_VBE_MODEATTR_RESERVED_1) == 0)
 	/* Not enough information.  */
 	continue;
 
-      if ((mode_info_tmp.mode_attributes & 0x008) == 0)
+      if ((mode_info_tmp.mode_attributes & GRUB_VBE_MODEATTR_COLOR) == 0)
 	/* Monochrome is unusable.  */
 	continue;
 
-      if ((mode_info_tmp.mode_attributes & 0x080) == 0)
+      if ((mode_info_tmp.mode_attributes & GRUB_VBE_MODEATTR_LFB_AVAIL) == 0)
 	/* We support only linear frame buffer modes.  */
 	continue;
 
-      if ((mode_info_tmp.mode_attributes & 0x010) == 0)
+      if ((mode_info_tmp.mode_attributes & GRUB_VBE_MODEATTR_GRAPHICS) == 0)
 	/* We allow only graphical modes.  */
 	continue;
 
       switch (mode_info_tmp.memory_model)
 	{
-	case 0x04:
+	case GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL:
 	  memory_model = "Packed";
 	  break;
-	case 0x06:
+	case GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR:
 	  memory_model = "Direct";
 	  break;
 
@@ -134,7 +135,7 @@
                    memory_model);
 
       /* Show mask and position details for direct color modes.  */
-      if (mode_info_tmp.memory_model == 0x06)
+      if (mode_info_tmp.memory_model == GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR)
         grub_printf (", mask: %d/%d/%d/%d  pos: %d/%d/%d/%d",
                      mode_info_tmp.red_mask_size,
                      mode_info_tmp.green_mask_size,

=== modified file 'include/grub/i386/pc/vbe.h'
--- include/grub/i386/pc/vbe.h	2008-01-01 12:02:07 +0000
+++ include/grub/i386/pc/vbe.h	2008-09-01 05:34:40 +0000
@@ -30,9 +30,30 @@
 /* VBE status codes.  */
 #define GRUB_VBE_STATUS_OK		0x004f
 
-/* VBE memory model types.  */
-#define GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL	0x04
-#define GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR	0x06
+/* Bits from the GRUB_VBE "mode_attributes" field in the mode info struct.  */
+#define GRUB_VBE_MODEATTR_SUPPORTED                 (1 << 0)
+#define GRUB_VBE_MODEATTR_RESERVED_1                (1 << 1)
+#define GRUB_VBE_MODEATTR_BIOS_TTY_OUTPUT_SUPPORT   (1 << 2)
+#define GRUB_VBE_MODEATTR_COLOR                     (1 << 3)
+#define GRUB_VBE_MODEATTR_GRAPHICS                  (1 << 4)
+#define GRUB_VBE_MODEATTR_VGA_COMPATIBLE            (1 << 5)
+#define GRUB_VBE_MODEATTR_VGA_WINDOWED_AVAIL        (1 << 6)
+#define GRUB_VBE_MODEATTR_LFB_AVAIL                 (1 << 7)
+#define GRUB_VBE_MODEATTR_DOUBLE_SCAN_AVAIL         (1 << 8)
+#define GRUB_VBE_MODEATTR_INTERLACED_AVAIL          (1 << 9)
+#define GRUB_VBE_MODEATTR_TRIPLE_BUF_AVAIL          (1 << 10)
+#define GRUB_VBE_MODEATTR_STEREO_AVAIL              (1 << 11)
+#define GRUB_VBE_MODEATTR_DUAL_DISPLAY_START        (1 << 12)
+
+/* Values for the GRUB_VBE memory_model field in the mode info struct.  */
+#define GRUB_VBE_MEMORY_MODEL_TEXT           0x00
+#define GRUB_VBE_MEMORY_MODEL_CGA            0x01
+#define GRUB_VBE_MEMORY_MODEL_HERCULES       0x02
+#define GRUB_VBE_MEMORY_MODEL_PLANAR         0x03
+#define GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL   0x04
+#define GRUB_VBE_MEMORY_MODEL_NONCHAIN4_256  0x05
+#define GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR   0x06
+#define GRUB_VBE_MEMORY_MODEL_YUV            0x07
 
 /* Note:
 

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to