vbeinfo

diff src/vbe.h @ 0:4b33fa83e381

vbeinfo initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 05 Dec 2015 07:28:47 +0200
parents
children 5b0ef094b8fd
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/vbe.h	Sat Dec 05 07:28:47 2015 +0200
     1.3 @@ -0,0 +1,70 @@
     1.4 +#ifndef VBE_H_
     1.5 +#define VBE_H_
     1.6 +
     1.7 +#include "inttypes.h"
     1.8 +
     1.9 +#define VBE_ATTR_LFB	(1 << 7)
    1.10 +#define VBE_MODE_LFB	(1 << 14)
    1.11 +
    1.12 +#pragma pack (push, 0)
    1.13 +struct vbe_info {
    1.14 +	uint8_t sig[4];
    1.15 +	uint16_t version;
    1.16 +	uint32_t oem_str_ptr;
    1.17 +	uint8_t caps[4];			/* capabilities */
    1.18 +	uint32_t vid_mode_ptr;		/* vbefarptr to video mode list */
    1.19 +	uint16_t total_mem;			/* num of 64k mem blocks */
    1.20 +	uint16_t oem_sw_rev;		/* VBE implementation software revision */
    1.21 +	uint32_t oem_vendor_name_ptr;
    1.22 +	uint32_t oem_product_name_ptr;
    1.23 +	uint32_t oem_product_rev_ptr;
    1.24 +	uint8_t reserved[222];
    1.25 +	uint8_t oem_data[256];
    1.26 +};
    1.27 +
    1.28 +struct vbe_mode_info {
    1.29 +	uint16_t mode_attr;
    1.30 +	uint8_t wina_attr, winb_attr;
    1.31 +	uint16_t win_gran, win_size;
    1.32 +	uint16_t wina_seg, winb_seg;
    1.33 +	uint32_t win_func;
    1.34 +	uint16_t scanline_bytes;
    1.35 +
    1.36 +	/* VBE 1.2 and above */
    1.37 +	uint16_t xres, yres;
    1.38 +	uint8_t xcharsz, ycharsz;
    1.39 +	uint8_t num_planes;
    1.40 +	uint8_t bpp;
    1.41 +	uint8_t num_banks;
    1.42 +	uint8_t mem_model;
    1.43 +	uint8_t bank_size;		/* bank size in KB */
    1.44 +	uint8_t num_img_pages;
    1.45 +	uint8_t reserved1;
    1.46 +
    1.47 +	/* direct color fields */
    1.48 +	uint8_t rmask_size, rpos;
    1.49 +	uint8_t gmask_size, gpos;
    1.50 +	uint8_t bmask_size, bpos;
    1.51 +	uint8_t xmask_size, xpos;
    1.52 +	uint8_t cmode_info;		/* direct color mode attributes */
    1.53 +
    1.54 +	/* VBE 2.0 and above */
    1.55 +	uint32_t fb_addr;		/* physical address of the linear framebuffer */
    1.56 +	uint32_t reserved2;
    1.57 +	uint16_t reserved3;
    1.58 +
    1.59 +	uint8_t reserved4[206];
    1.60 +};
    1.61 +#pragma pack (pop)
    1.62 +
    1.63 +struct vbe_info *vbe_get_info(void);
    1.64 +struct vbe_mode_info *vbe_get_mode_info(unsigned int mode);
    1.65 +
    1.66 +int vbe_set_mode(unsigned int mode);
    1.67 +
    1.68 +int vbe_set_palette_bits(int bits);
    1.69 +void vbe_set_palette(int idx, int *col, int count, int bits);
    1.70 +
    1.71 +void print_mode_info(FILE *fp, struct vbe_mode_info *modei);
    1.72 +
    1.73 +#endif	/* VBE_H_ */