x86, setup: Store the boot cursor state
authorMatthew Garrett <mjg@redhat.com>
Fri, 13 Nov 2009 19:57:00 +0000 (14:57 -0500)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 13 Nov 2009 22:23:11 +0000 (14:23 -0800)
Add a field to store the boot cursor state and implement this for VGA on
x86. This can then be used to set the default policy for the boot console.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
LKML-Reference: <1258142222-16092-1-git-send-email-mjg@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/boot/video.c
include/linux/screen_info.h

index d42da380249940ced8d6cdbb13bf76467ea89792..f767164cd5df91e1aaf2088fca44a3a26213f69c 100644 (file)
@@ -27,6 +27,12 @@ static void store_cursor_position(void)
 
        boot_params.screen_info.orig_x = oreg.dl;
        boot_params.screen_info.orig_y = oreg.dh;
+
+       if (oreg.ch & 0x20)
+               boot_params.screen_info.flags |= VIDEO_FLAGS_NOCURSOR;
+
+       if ((oreg.ch & 0x1f) > (oreg.cl & 0x1f))
+               boot_params.screen_info.flags |= VIDEO_FLAGS_NOCURSOR;
 }
 
 static void store_video_mode(void)
index 1ee2c05142f627ba68cfcf17205a1ae3e38b8893..899fbb487c94e5cb2385ff90ab86f0b8985aa435 100644 (file)
@@ -14,7 +14,8 @@ struct screen_info {
        __u16 orig_video_page;  /* 0x04 */
        __u8  orig_video_mode;  /* 0x06 */
        __u8  orig_video_cols;  /* 0x07 */
-       __u16 unused2;          /* 0x08 */
+       __u8  flags;            /* 0x08 */
+       __u8  unused2;          /* 0x09 */
        __u16 orig_video_ega_bx;/* 0x0a */
        __u16 unused3;          /* 0x0c */
        __u8  orig_video_lines; /* 0x0e */
@@ -65,6 +66,8 @@ struct screen_info {
 
 #define VIDEO_TYPE_EFI         0x70    /* EFI graphic mode             */
 
+#define VIDEO_FLAGS_NOCURSOR   (1 << 0) /* The video mode has no cursor set */
+
 #ifdef __KERNEL__
 extern struct screen_info screen_info;