Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /* ----------------------------------------------------------------------- *
0003  *
0004  *   Copyright 1999-2007 H. Peter Anvin - All Rights Reserved
0005  *
0006  * ----------------------------------------------------------------------- */
0007 
0008 #ifndef BOOT_VESA_H
0009 #define BOOT_VESA_H
0010 
0011 typedef struct {
0012     u16 off, seg;
0013 } far_ptr;
0014 
0015 /* VESA General Information table */
0016 struct vesa_general_info {
0017     u32 signature;      /* 0 Magic number = "VESA" */
0018     u16 version;        /* 4 */
0019     far_ptr vendor_string;  /* 6 */
0020     u32 capabilities;   /* 10 */
0021     far_ptr video_mode_ptr; /* 14 */
0022     u16 total_memory;   /* 18 */
0023 
0024     u8 reserved[236];   /* 20 */
0025 } __attribute__ ((packed));
0026 
0027 #define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
0028 
0029 struct vesa_mode_info {
0030     u16 mode_attr;      /* 0 */
0031     u8 win_attr[2];     /* 2 */
0032     u16 win_grain;      /* 4 */
0033     u16 win_size;       /* 6 */
0034     u16 win_seg[2];     /* 8 */
0035     far_ptr win_scheme; /* 12 */
0036     u16 logical_scan;   /* 16 */
0037 
0038     u16 h_res;      /* 18 */
0039     u16 v_res;      /* 20 */
0040     u8 char_width;      /* 22 */
0041     u8 char_height;     /* 23 */
0042     u8 memory_planes;   /* 24 */
0043     u8 bpp;         /* 25 */
0044     u8 banks;       /* 26 */
0045     u8 memory_layout;   /* 27 */
0046     u8 bank_size;       /* 28 */
0047     u8 image_planes;    /* 29 */
0048     u8 page_function;   /* 30 */
0049 
0050     u8 rmask;       /* 31 */
0051     u8 rpos;        /* 32 */
0052     u8 gmask;       /* 33 */
0053     u8 gpos;        /* 34 */
0054     u8 bmask;       /* 35 */
0055     u8 bpos;        /* 36 */
0056     u8 resv_mask;       /* 37 */
0057     u8 resv_pos;        /* 38 */
0058     u8 dcm_info;        /* 39 */
0059 
0060     u32 lfb_ptr;        /* 40 Linear frame buffer address */
0061     u32 offscreen_ptr;  /* 44 Offscreen memory address */
0062     u16 offscreen_size; /* 48 */
0063 
0064     u8 reserved[206];   /* 50 */
0065 } __attribute__ ((packed));
0066 
0067 #endif              /* LIB_SYS_VESA_H */