Transform legacy mode numbers into resolution specification
This commit is contained in:
parent
44224d3948
commit
e31bb61911
5 changed files with 179 additions and 183 deletions
|
@ -563,6 +563,8 @@ program = {
|
||||||
mansection = 1;
|
mansection = 1;
|
||||||
common = util/grub-menulst2cfg.c;
|
common = util/grub-menulst2cfg.c;
|
||||||
common = grub-core/lib/legacy_parse.c;
|
common = grub-core/lib/legacy_parse.c;
|
||||||
|
common = grub-core/lib/i386/pc/vesa_modes_table.c;
|
||||||
|
|
||||||
ldadd = libgrub.a;
|
ldadd = libgrub.a;
|
||||||
ldflags = '$(LIBDEVMAPPER)';
|
ldflags = '$(LIBDEVMAPPER)';
|
||||||
};
|
};
|
||||||
|
|
|
@ -1111,6 +1111,7 @@ module = {
|
||||||
module = {
|
module = {
|
||||||
name = linux;
|
name = linux;
|
||||||
x86 = loader/i386/linux.c;
|
x86 = loader/i386/linux.c;
|
||||||
|
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
||||||
mips = loader/mips/linux.c;
|
mips = loader/mips/linux.c;
|
||||||
powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
|
powerpc_ieee1275 = loader/powerpc/ieee1275/linux.c;
|
||||||
sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
|
sparc64_ieee1275 = loader/sparc64/ieee1275/linux.c;
|
||||||
|
|
127
grub-core/lib/i386/pc/vesa_modes_table.c
Normal file
127
grub-core/lib/i386/pc/vesa_modes_table.c
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
|
||||||
|
#include <grub/i386/pc/vesa_modes_table.h>
|
||||||
|
|
||||||
|
/* This is the reverse of the table in [linux]/Documentation/fb/vesafb.txt
|
||||||
|
plus a few more modes based on the table in
|
||||||
|
http://en.wikipedia.org/wiki/VESA_BIOS_Extensions */
|
||||||
|
struct grub_vesa_mode_table_entry
|
||||||
|
grub_vesa_mode_table[GRUB_VESA_MODE_TABLE_END
|
||||||
|
- GRUB_VESA_MODE_TABLE_START + 1] =
|
||||||
|
{
|
||||||
|
{ 640, 400, 8 }, /* 0x300 */
|
||||||
|
{ 640, 480, 8 }, /* 0x301 */
|
||||||
|
{ 800, 600, 4 }, /* 0x302 */
|
||||||
|
{ 800, 600, 8 }, /* 0x303 */
|
||||||
|
{ 1024, 768, 4 }, /* 0x304 */
|
||||||
|
{ 1024, 768, 8 }, /* 0x305 */
|
||||||
|
{ 1280, 1024, 4 }, /* 0x306 */
|
||||||
|
{ 1280, 1024, 8 }, /* 0x307 */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 320, 200, 15 }, /* 0x30d */
|
||||||
|
{ 320, 200, 16 }, /* 0x30e */
|
||||||
|
{ 320, 200, 24 }, /* 0x30f */
|
||||||
|
{ 640, 480, 15 }, /* 0x310 */
|
||||||
|
{ 640, 480, 16 }, /* 0x311 */
|
||||||
|
{ 640, 480, 24 }, /* 0x312 */
|
||||||
|
{ 800, 600, 15 }, /* 0x313 */
|
||||||
|
{ 800, 600, 16 }, /* 0x314 */
|
||||||
|
{ 800, 600, 24 }, /* 0x315 */
|
||||||
|
{ 1024, 768, 15 }, /* 0x316 */
|
||||||
|
{ 1024, 768, 16 }, /* 0x317 */
|
||||||
|
{ 1024, 768, 24 }, /* 0x318 */
|
||||||
|
{ 1280, 1024, 15 }, /* 0x319 */
|
||||||
|
{ 1280, 1024, 16 }, /* 0x31a */
|
||||||
|
{ 1280, 1024, 24 }, /* 0x31b */
|
||||||
|
{ 1600, 1200, 8 }, /* 0x31c */
|
||||||
|
{ 1600, 1200, 15 }, /* 0x31d */
|
||||||
|
{ 1600, 1200, 16 }, /* 0x31e */
|
||||||
|
{ 1600, 1200, 24 }, /* 0x31f */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 640, 400, 15 }, /* 0x321 */
|
||||||
|
{ 640, 400, 16 }, /* 0x322 */
|
||||||
|
{ 640, 400, 24 }, /* 0x323 */
|
||||||
|
{ 640, 400, 32 }, /* 0x324 */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 640, 480, 32 }, /* 0x329 */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 896, 672, 8 }, /* 0x32f */
|
||||||
|
{ 896, 672, 15 }, /* 0x330 */
|
||||||
|
{ 896, 672, 16 }, /* 0x331 */
|
||||||
|
{ 896, 672, 24 }, /* 0x332 */
|
||||||
|
{ 896, 672, 32 }, /* 0x333 */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 1600, 1200, 32 }, /* 0x342 */
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 0, 0, 0 },
|
||||||
|
{ 1440, 900, 8 }, /* 0x360 */
|
||||||
|
{ 1440, 900, 15 }, /* 0x361 */
|
||||||
|
{ 1440, 900, 16 }, /* 0x362 */
|
||||||
|
{ 1440, 900, 24 }, /* 0x363 */
|
||||||
|
{ 1440, 900, 32 }, /* 0x364 */
|
||||||
|
{ 1152, 720, 8 }, /* 0x365 */
|
||||||
|
{ 1152, 720, 15 }, /* 0x366 */
|
||||||
|
{ 1152, 720, 16 }, /* 0x367 */
|
||||||
|
{ 1152, 720, 24 }, /* 0x368 */
|
||||||
|
{ 1152, 720, 32 }, /* 0x369 */
|
||||||
|
{ 1024, 640, 8 }, /* 0x36a */
|
||||||
|
{ 1024, 640, 15 }, /* 0x36b */
|
||||||
|
{ 1024, 640, 16 }, /* 0x36c */
|
||||||
|
{ 1024, 640, 24 }, /* 0x36d */
|
||||||
|
{ 1024, 640, 32 }, /* 0x36e */
|
||||||
|
{ 800, 500, 8 }, /* 0x36f */
|
||||||
|
{ 800, 500, 15 }, /* 0x370 */
|
||||||
|
{ 800, 500, 16 }, /* 0x371 */
|
||||||
|
{ 800, 500, 24 }, /* 0x372 */
|
||||||
|
{ 800, 500, 32 }, /* 0x373 */
|
||||||
|
};
|
|
@ -21,6 +21,7 @@
|
||||||
#include <grub/mm.h>
|
#include <grub/mm.h>
|
||||||
#include <grub/err.h>
|
#include <grub/err.h>
|
||||||
#include <grub/legacy_parse.h>
|
#include <grub/legacy_parse.h>
|
||||||
|
#include <grub/i386/pc/vesa_modes_table.h>
|
||||||
|
|
||||||
struct legacy_command
|
struct legacy_command
|
||||||
{
|
{
|
||||||
|
@ -40,7 +41,8 @@ struct legacy_command
|
||||||
TYPE_PARTITION,
|
TYPE_PARTITION,
|
||||||
TYPE_BOOL,
|
TYPE_BOOL,
|
||||||
TYPE_INT,
|
TYPE_INT,
|
||||||
TYPE_REST_VERBATIM
|
TYPE_REST_VERBATIM,
|
||||||
|
TYPE_VBE_MODE
|
||||||
} argt[4];
|
} argt[4];
|
||||||
enum {
|
enum {
|
||||||
FLAG_IGNORE_REST = 1,
|
FLAG_IGNORE_REST = 1,
|
||||||
|
@ -264,7 +266,8 @@ struct legacy_command legacy_commands[] =
|
||||||
" compares them, to test the filesystem code. "
|
" compares them, to test the filesystem code. "
|
||||||
" If this test succeeds, then a good next"
|
" If this test succeeds, then a good next"
|
||||||
" step is to try loading a kernel."},
|
" step is to try loading a kernel."},
|
||||||
/* FIXME: testvbe unsupported. */
|
{"testvbe", "insmod vbe; videotest '%s'\n", NULL, 0, 1, {TYPE_VBE_MODE}, 0,
|
||||||
|
"MODE", "Test the VBE mode MODE. Hit any key to return."},
|
||||||
/* FIXME: tftpserver unsupported. */
|
/* FIXME: tftpserver unsupported. */
|
||||||
{"timeout", "set timeout=%s\n", NULL, 0, 1, {TYPE_INT}, 0, "SEC",
|
{"timeout", "set timeout=%s\n", NULL, 0, 1, {TYPE_INT}, 0, "SEC",
|
||||||
"Set a timeout, in SEC seconds, before automatically booting the"
|
"Set a timeout, in SEC seconds, before automatically booting the"
|
||||||
|
@ -278,7 +281,7 @@ struct legacy_command legacy_commands[] =
|
||||||
{"uuid", "search --set=root --fs-uuid '%s'\n", NULL, 0, 1, {TYPE_VERBATIM},
|
{"uuid", "search --set=root --fs-uuid '%s'\n", NULL, 0, 1, {TYPE_VERBATIM},
|
||||||
0, "UUID", "Find root by UUID"},
|
0, "UUID", "Find root by UUID"},
|
||||||
/* FIXME: support MODE. */
|
/* FIXME: support MODE. */
|
||||||
{"vbeprobe", "vbeinfo\n", NULL, 0, 0, {}, 0, "[MODE]",
|
{"vbeprobe", "insmod vbe; videoinfo\n", NULL, 0, 0, {}, 0, "[MODE]",
|
||||||
"Probe VBE information. If the mode number MODE is specified, show only"
|
"Probe VBE information. If the mode number MODE is specified, show only"
|
||||||
" the information about only the mode."}
|
" the information about only the mode."}
|
||||||
};
|
};
|
||||||
|
@ -566,6 +569,34 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||||
args[i] = grub_strndup (curarg, brk - curarg);
|
args[i] = grub_strndup (curarg, brk - curarg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TYPE_VBE_MODE:
|
||||||
|
{
|
||||||
|
unsigned mod;
|
||||||
|
struct grub_vesa_mode_table_entry *modedesc;
|
||||||
|
|
||||||
|
mod = grub_strtoul (curarg, 0, 0);
|
||||||
|
if (grub_errno)
|
||||||
|
{
|
||||||
|
mod = 0;
|
||||||
|
grub_errno = GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
if (mod < GRUB_VESA_MODE_TABLE_START
|
||||||
|
|| mod > GRUB_VESA_MODE_TABLE_END)
|
||||||
|
{
|
||||||
|
args[i] = grub_strdup ("auto");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
modedesc = &grub_vesa_mode_table[mod - GRUB_VESA_MODE_TABLE_START];
|
||||||
|
if (!modedesc->width)
|
||||||
|
{
|
||||||
|
args[i] = grub_strdup ("auto");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
args[i] = grub_xasprintf ("%ux%ux%u",
|
||||||
|
modedesc->width, modedesc->height,
|
||||||
|
modedesc->depth);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case TYPE_BOOL:
|
case TYPE_BOOL:
|
||||||
if (curarglen == 2 && curarg[0] == 'o' && curarg[1] == 'n')
|
if (curarglen == 2 && curarg[0] == 'o' && curarg[1] == 'n')
|
||||||
args[i] = grub_strdup ("1");
|
args[i] = grub_strdup ("1");
|
||||||
|
@ -599,7 +630,10 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||||
case TYPE_BOOL:
|
case TYPE_BOOL:
|
||||||
case TYPE_INT:
|
case TYPE_INT:
|
||||||
args[i] = grub_strdup ("0");
|
args[i] = grub_strdup ("0");
|
||||||
break;
|
break;
|
||||||
|
case TYPE_VBE_MODE:
|
||||||
|
args[i] = grub_strdup ("auto");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (legacy_commands[cmdnum].flags & FLAG_COLOR_INVERT)
|
if (legacy_commands[cmdnum].flags & FLAG_COLOR_INVERT)
|
||||||
|
|
|
@ -35,6 +35,10 @@
|
||||||
#include <grub/i386/relocator.h>
|
#include <grub/i386/relocator.h>
|
||||||
#include <grub/i18n.h>
|
#include <grub/i18n.h>
|
||||||
|
|
||||||
|
#ifdef GRUB_MACHINE_PCBIOS
|
||||||
|
#include <grub/i386/pc/vesa_modes_table.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GRUB_MACHINE_EFI
|
#ifdef GRUB_MACHINE_EFI
|
||||||
#include <grub/efi/efi.h>
|
#include <grub/efi/efi.h>
|
||||||
#define HAS_VGA_TEXT 0
|
#define HAS_VGA_TEXT 0
|
||||||
|
@ -89,175 +93,6 @@ static struct idt_descriptor idt_desc =
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GRUB_MACHINE_PCBIOS
|
|
||||||
struct linux_vesafb_res
|
|
||||||
{
|
|
||||||
grub_uint16_t width;
|
|
||||||
grub_uint16_t height;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct linux_vesafb_mode
|
|
||||||
{
|
|
||||||
grub_uint8_t res_index;
|
|
||||||
grub_uint8_t depth;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum vga_modes
|
|
||||||
{
|
|
||||||
VGA_320_200,
|
|
||||||
VGA_640_400,
|
|
||||||
VGA_640_480,
|
|
||||||
VGA_800_500,
|
|
||||||
VGA_800_600,
|
|
||||||
VGA_896_672,
|
|
||||||
VGA_1024_640,
|
|
||||||
VGA_1024_768,
|
|
||||||
VGA_1152_720,
|
|
||||||
VGA_1280_1024,
|
|
||||||
VGA_1440_900,
|
|
||||||
VGA_1600_1200,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct linux_vesafb_res linux_vesafb_res[] =
|
|
||||||
{
|
|
||||||
{ 320, 200 },
|
|
||||||
{ 640, 400 },
|
|
||||||
{ 640, 480 },
|
|
||||||
{ 800, 500 },
|
|
||||||
{ 800, 600 },
|
|
||||||
{ 896, 672 },
|
|
||||||
{ 1024, 640 },
|
|
||||||
{ 1024, 768 },
|
|
||||||
{ 1152, 720 },
|
|
||||||
{ 1280, 1024 },
|
|
||||||
{ 1440, 900 },
|
|
||||||
{ 1600, 1200 },
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This is the reverse of the table in [linux]/Documentation/fb/vesafb.txt
|
|
||||||
plus a few more modes based on the table in
|
|
||||||
http://en.wikipedia.org/wiki/VESA_BIOS_Extensions */
|
|
||||||
struct linux_vesafb_mode linux_vesafb_modes[] =
|
|
||||||
{
|
|
||||||
{ VGA_640_400, 8 }, /* 0x300 */
|
|
||||||
{ VGA_640_480, 8 }, /* 0x301 */
|
|
||||||
{ VGA_800_600, 4 }, /* 0x302 */
|
|
||||||
{ VGA_800_600, 8 }, /* 0x303 */
|
|
||||||
{ VGA_1024_768, 4 }, /* 0x304 */
|
|
||||||
{ VGA_1024_768, 8 }, /* 0x305 */
|
|
||||||
{ VGA_1280_1024, 4 }, /* 0x306 */
|
|
||||||
{ VGA_1280_1024, 8 }, /* 0x307 */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_320_200, 15 }, /* 0x30d */
|
|
||||||
{ VGA_320_200, 16 }, /* 0x30e */
|
|
||||||
{ VGA_320_200, 24 }, /* 0x30f */
|
|
||||||
{ VGA_640_480, 15 }, /* 0x310 */
|
|
||||||
{ VGA_640_480, 16 }, /* 0x311 */
|
|
||||||
{ VGA_640_480, 24 }, /* 0x312 */
|
|
||||||
{ VGA_800_600, 15 }, /* 0x313 */
|
|
||||||
{ VGA_800_600, 16 }, /* 0x314 */
|
|
||||||
{ VGA_800_600, 24 }, /* 0x315 */
|
|
||||||
{ VGA_1024_768, 15 }, /* 0x316 */
|
|
||||||
{ VGA_1024_768, 16 }, /* 0x317 */
|
|
||||||
{ VGA_1024_768, 24 }, /* 0x318 */
|
|
||||||
{ VGA_1280_1024, 15 }, /* 0x319 */
|
|
||||||
{ VGA_1280_1024, 16 }, /* 0x31a */
|
|
||||||
{ VGA_1280_1024, 24 }, /* 0x31b */
|
|
||||||
{ VGA_1600_1200, 8 }, /* 0x31c */
|
|
||||||
{ VGA_1600_1200, 15 }, /* 0x31d */
|
|
||||||
{ VGA_1600_1200, 16 }, /* 0x31e */
|
|
||||||
{ VGA_1600_1200, 24 }, /* 0x31f */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_640_400, 15 }, /* 0x321 */
|
|
||||||
{ VGA_640_400, 16 }, /* 0x322 */
|
|
||||||
{ VGA_640_400, 24 }, /* 0x323 */
|
|
||||||
{ VGA_640_400, 32 }, /* 0x324 */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_640_480, 32 }, /* 0x329 */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_896_672, 8 }, /* 0x32f */
|
|
||||||
{ VGA_896_672, 15 }, /* 0x330 */
|
|
||||||
{ VGA_896_672, 16 }, /* 0x331 */
|
|
||||||
{ VGA_896_672, 24 }, /* 0x332 */
|
|
||||||
{ VGA_896_672, 32 }, /* 0x333 */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_1600_1200, 32 }, /* 0x342 */
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ 0, 0 },
|
|
||||||
{ VGA_1440_900, 8 }, /* 0x360 */
|
|
||||||
{ VGA_1440_900, 15 }, /* 0x361 */
|
|
||||||
{ VGA_1440_900, 16 }, /* 0x362 */
|
|
||||||
{ VGA_1440_900, 24 }, /* 0x363 */
|
|
||||||
{ VGA_1440_900, 32 }, /* 0x364 */
|
|
||||||
{ VGA_1152_720, 8 }, /* 0x365 */
|
|
||||||
{ VGA_1152_720, 15 }, /* 0x366 */
|
|
||||||
{ VGA_1152_720, 16 }, /* 0x367 */
|
|
||||||
{ VGA_1152_720, 24 }, /* 0x368 */
|
|
||||||
{ VGA_1152_720, 32 }, /* 0x369 */
|
|
||||||
{ VGA_1024_640, 8 }, /* 0x36a */
|
|
||||||
{ VGA_1024_640, 15 }, /* 0x36b */
|
|
||||||
{ VGA_1024_640, 16 }, /* 0x36c */
|
|
||||||
{ VGA_1024_640, 24 }, /* 0x36d */
|
|
||||||
{ VGA_1024_640, 32 }, /* 0x36e */
|
|
||||||
{ VGA_800_500, 8 }, /* 0x36f */
|
|
||||||
{ VGA_800_500, 15 }, /* 0x370 */
|
|
||||||
{ VGA_800_500, 16 }, /* 0x371 */
|
|
||||||
{ VGA_800_500, 24 }, /* 0x372 */
|
|
||||||
{ VGA_800_500, 32 }, /* 0x373 */
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline grub_size_t
|
static inline grub_size_t
|
||||||
page_align (grub_size_t size)
|
page_align (grub_size_t size)
|
||||||
{
|
{
|
||||||
|
@ -882,7 +717,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||||
/* Video mode selection support. */
|
/* Video mode selection support. */
|
||||||
char *val = argv[i] + 4;
|
char *val = argv[i] + 4;
|
||||||
unsigned vid_mode = GRUB_LINUX_VID_MODE_NORMAL;
|
unsigned vid_mode = GRUB_LINUX_VID_MODE_NORMAL;
|
||||||
struct linux_vesafb_mode *linux_mode;
|
struct grub_vesa_mode_table_entry *linux_mode;
|
||||||
grub_err_t err;
|
grub_err_t err;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
|
@ -925,9 +760,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* Ignore invalid values. */
|
/* Ignore invalid values. */
|
||||||
if (vid_mode < GRUB_LINUX_VID_MODE_VESA_START ||
|
if (vid_mode < GRUB_VESA_MODE_TABLE_START ||
|
||||||
vid_mode >= GRUB_LINUX_VID_MODE_VESA_START +
|
vid_mode > GRUB_VESA_MODE_TABLE_END)
|
||||||
ARRAY_SIZE (linux_vesafb_modes))
|
|
||||||
{
|
{
|
||||||
grub_env_set ("gfxpayload", "text");
|
grub_env_set ("gfxpayload", "text");
|
||||||
grub_printf ("%s is deprecated. Mode %d isn't recognized. "
|
grub_printf ("%s is deprecated. Mode %d isn't recognized. "
|
||||||
|
@ -941,15 +775,13 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||||
is built-in because `vga=' parameter was used. */
|
is built-in because `vga=' parameter was used. */
|
||||||
params->have_vga = GRUB_VIDEO_LINUX_TYPE_VESA;
|
params->have_vga = GRUB_VIDEO_LINUX_TYPE_VESA;
|
||||||
|
|
||||||
linux_mode
|
linux_mode = &grub_vesa_mode_table[vid_mode
|
||||||
= &linux_vesafb_modes[vid_mode - GRUB_LINUX_VID_MODE_VESA_START];
|
- GRUB_VESA_MODE_TABLE_START];
|
||||||
|
|
||||||
buf = grub_xasprintf ("%ux%ux%u,%ux%u",
|
buf = grub_xasprintf ("%ux%ux%u,%ux%u",
|
||||||
linux_vesafb_res[linux_mode->res_index].width,
|
linux_mode->width, linux_mode->height,
|
||||||
linux_vesafb_res[linux_mode->res_index].height,
|
|
||||||
linux_mode->depth,
|
linux_mode->depth,
|
||||||
linux_vesafb_res[linux_mode->res_index].width,
|
linux_mode->width, linux_mode->height);
|
||||||
linux_vesafb_res[linux_mode->res_index].height);
|
|
||||||
if (! buf)
|
if (! buf)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue