67 lines
2.5 KiB
Zig
67 lines
2.5 KiB
Zig
// SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
|
// Ported from Linux kernel include/uapi/linux/screen_info.h
|
|
|
|
const std = @import("std");
|
|
|
|
pub const ScreenInfo = extern struct{
|
|
orig_x: u8 align(1), // 0x00
|
|
orig_y: u8 align(1), // 0x01
|
|
ext_mem_k: u16 align(1), // 0x02
|
|
orig_video_page: u16 align(1), // 0x04
|
|
orig_video_mode: u8 align(1), // 0x06
|
|
orig_video_cols: u8 align(1), // 0x07
|
|
flags: u8 align(1), // 0x08
|
|
unused2: u8 align(1), // 0x09
|
|
orig_video_ega_bx: u16 align(1), // 0x0a
|
|
unused3: u16 align(1), // 0x0c
|
|
orig_video_lines: u8 align(1), // 0x0e
|
|
orig_video_isVGA: u8 align(1), // 0x0f
|
|
orig_video_points: u16 align(1), // 0x10
|
|
|
|
// VESA graphic mode -- linear frame buffer
|
|
lfb_width: u16 align(1), // 0x12
|
|
lfb_height: u16 align(1), // 0x14
|
|
lfb_depth: u16 align(1), // 0x16
|
|
lfb_base: u32 align(1), // 0x18
|
|
lfb_size: u32 align(1), // 0x1c
|
|
cl_magic: u16 align(1), // 0x20
|
|
cl_offset: u16 align(1), // 0x22
|
|
lfb_linelength: u16 align(1), // 0x24
|
|
red_size: u8 align(1), // 0x26
|
|
red_pos: u8 align(1), // 0x27
|
|
green_size: u8 align(1), // 0x28
|
|
green_pos: u8 align(1), // 0x29
|
|
blue_size: u8 align(1), // 0x2a
|
|
blue_pos: u8 align(1), // 0x2b
|
|
rsvd_size: u8 align(1), // 0x2c
|
|
rsvd_pos: u8 align(1), // 0x2d
|
|
vesapm_seg: u16 align(1), // 0x2e
|
|
vesapm_off: u16 align(1), // 0x30
|
|
pages: u16 align(1), // 0x32
|
|
vesa_attributes: u16 align(1), // 0x34
|
|
capabilities: u32 align(1), // 0x36
|
|
ext_lfb_base: u32 align(1), // 0x3a
|
|
_reserved: [2]u8 align(1), // 0x3e
|
|
};
|
|
|
|
// Common video types
|
|
pub const VideoType = enum(u8) {
|
|
MDA = 0x10, // Monochrome Text Display
|
|
CGA = 0x11, // CGA Display
|
|
EGAM = 0x20, // EGA/VGA in Monochrome Mode
|
|
EGAC = 0x21, // EGA in Color Mode
|
|
VGAC = 0x22, // VGA+ in Color Mode
|
|
VLFB = 0x23, // VESA VGA in graphic mode
|
|
EFI = 0x70, // EFI graphic mode
|
|
};
|
|
|
|
// Video flags
|
|
pub const VIDEO_FLAGS_NOCURSOR: u8 = 1 << 0; // The video mode has no cursor set
|
|
|
|
// Video capabilities
|
|
pub const VIDEO_CAPABILITY_SKIP_QUIRKS: u32 = 1 << 0;
|
|
pub const VIDEO_CAPABILITY_64BIT_BASE: u32 = 1 << 1; // Frame buffer base is 64-bit
|
|
|
|
comptime {
|
|
std.debug.assert(@sizeOf(ScreenInfo) == 0x40);
|
|
} |