Skip to content

Commit

Permalink
[x86 setup] Present the canonical video mode number to the kernel
Browse files Browse the repository at this point in the history
Canonicalize the video mode number as presented to the kernel.  The
video mode number may be user-entered (e.g. ASK_VGA), an alias
(e.g. NORMAL_VGA), or a size specification, and that confuses the
suspend wakeup code.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
  • Loading branch information
H. Peter Anvin committed Sep 20, 2007
1 parent 81cfe79 commit 3f662b3
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions arch/i386/boot/video.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ int mode_defined(u16 mode)
}

/* Set mode (without recalc) */
static int raw_set_mode(u16 mode)
static int raw_set_mode(u16 mode, u16 *real_mode)
{
int nmode, i;
struct card_info *card;
Expand All @@ -165,8 +165,10 @@ static int raw_set_mode(u16 mode)

if ((mode == nmode && visible) ||
mode == mi->mode ||
mode == (mi->y << 8)+mi->x)
mode == (mi->y << 8)+mi->x) {
*real_mode = mi->mode;
return card->set_mode(mi);
}

if (visible)
nmode++;
Expand All @@ -178,7 +180,7 @@ static int raw_set_mode(u16 mode)
if (mode >= card->xmode_first &&
mode < card->xmode_first+card->xmode_n) {
struct mode_info mix;
mix.mode = mode;
*real_mode = mix.mode = mode;
mix.x = mix.y = 0;
return card->set_mode(&mix);
}
Expand Down Expand Up @@ -223,6 +225,7 @@ static void vga_recalc_vertical(void)
static int set_mode(u16 mode)
{
int rv;
u16 real_mode;

/* Very special mode numbers... */
if (mode == VIDEO_CURRENT_MODE)
Expand All @@ -232,13 +235,16 @@ static int set_mode(u16 mode)
else if (mode == EXTENDED_VGA)
mode = VIDEO_8POINT;

rv = raw_set_mode(mode);
rv = raw_set_mode(mode, &real_mode);
if (rv)
return rv;

if (mode & VIDEO_RECALC)
vga_recalc_vertical();

/* Save the canonical mode number for the kernel, not
an alias, size specification or menu position */
boot_params.hdr.vid_mode = real_mode;
return 0;
}

Expand Down

0 comments on commit 3f662b3

Please sign in to comment.