#define PARAM_LFB_COLORS 0x1c
#define PARAM_VESAPM_SEG 0x24
#define PARAM_VESAPM_OFF 0x26
+#define PARAM_VESA_ATTRIB 0x28
#define _param(param) bootsym(boot_vid_info)+(param)
video: xorw %ax, %ax
movl %eax, _param(PARAM_LFB_COLORS)
movl 35(%di), %eax
movl %eax, _param(PARAM_LFB_COLORS+4)
+ movw 0(%di), %ax
+ movw %ax, _param(PARAM_VESA_ATTRIB)
# get video mem size
leaw vesa_glob_info, %di
u8 rsvd_pos; /* 0x23 */
u16 vesapm_seg; /* 0x24 */
u16 vesapm_off; /* 0x26 */
+ u16 vesa_attrib; /* 0x28 */
};
static void __init parse_video_info(void)
vga_console_info.u.vesa_lfb.blue_size = bvi->blue_size;
vga_console_info.u.vesa_lfb.rsvd_pos = bvi->rsvd_pos;
vga_console_info.u.vesa_lfb.rsvd_size = bvi->rsvd_size;
+ vga_console_info.u.vesa_lfb.gbl_caps = bvi->capabilities;
+ vga_console_info.u.vesa_lfb.mode_attrs = bvi->vesa_attrib;
}
}
{
unsigned int vram_vmode;
- /* XXX vga_compat = !(boot_video_info.capabilities & 2); */
+ vga_compat = !(vesa_lfb_info.capabilities & 2);
if ( (vlfb_info.bits_per_pixel < 8) || (vlfb_info.bits_per_pixel > 32) )
return;
#ifndef __XEN_PUBLIC_XEN_COMPAT_H__
#define __XEN_PUBLIC_XEN_COMPAT_H__
-#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030205
+#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030206
#if defined(__XEN__) || defined(__XEN_TOOLS__)
/* Xen is built with matching headers and implements the latest interface. */
uint8_t green_pos, green_size;
uint8_t blue_pos, blue_size;
uint8_t rsvd_pos, rsvd_size;
+#if __XEN_INTERFACE_VERSION__ >= 0x00030206
+ /* VESA capabilities (offset 0xa, VESA command 0x4f00). */
+ uint32_t gbl_caps;
+ /* Mode attributes (offset 0x0, VESA command 0x4f01). */
+ uint16_t mode_attrs;
+#endif
} vesa_lfb;
} u;
} dom0_vga_console_info_t;