Documentation: Fix sphinx configuration
[coreboot.git] / src / include / vbe.h
blob9497ec68ae9ac2da4704986ac2a9c7f1439eecc7
1 /******************************************************************************
2 * Copyright (c) 2004, 2008 IBM Corporation
3 * Copyright (c) 2009 Pattrick Hueper <phueper@hueper.net>
4 * All rights reserved.
5 * This program and the accompanying materials
6 * are made available under the terms of the BSD License
7 * which accompanies this distribution, and is available at
8 * http://www.opensource.org/licenses/bsd-license.php
10 * Contributors:
11 * IBM Corporation - initial implementation
12 *****************************************************************************/
13 #ifndef VBE_H
14 #define VBE_H
16 #include <stdint.h>
18 // these structs are for input from and output to OF
19 typedef struct {
20 u8 display_type; // 0 = NONE, 1 = analog, 2 = digital
21 u16 screen_width;
22 u16 screen_height;
23 u16 screen_linebytes; // bytes per line in framebuffer, may be more
24 // than screen_width
25 u8 color_depth; // color depth in bits per pixel
26 u32 framebuffer_address;
27 u8 edid_block_zero[128];
28 } __packed screen_info_t;
30 typedef struct {
31 u8 signature[4];
32 u16 size_reserved;
33 u8 monitor_number;
34 u16 max_screen_width;
35 u8 color_depth;
36 } __packed screen_info_input_t;
38 typedef struct {
39 u16 mode_attributes; // 00
40 u8 win_a_attributes; // 02
41 u8 win_b_attributes; // 03
42 u16 win_granularity; // 04
43 u16 win_size; // 06
44 u16 win_a_segment; // 08
45 u16 win_b_segment; // 0a
46 u32 win_func_ptr; // 0c
47 u16 bytes_per_scanline; // 10
48 u16 x_resolution; // 12
49 u16 y_resolution; // 14
50 u8 x_charsize; // 16
51 u8 y_charsize; // 17
52 u8 number_of_planes; // 18
53 u8 bits_per_pixel; // 19
54 u8 number_of_banks; // 20
55 u8 memory_model; // 21
56 u8 bank_size; // 22
57 u8 number_of_image_pages; // 23
58 u8 reserved_page;
59 u8 red_mask_size;
60 u8 red_mask_pos;
61 u8 green_mask_size;
62 u8 green_mask_pos;
63 u8 blue_mask_size;
64 u8 blue_mask_pos;
65 u8 reserved_mask_size;
66 u8 reserved_mask_pos;
67 u8 direct_color_mode_info;
68 u32 phys_base_ptr;
69 u32 offscreen_mem_offset;
70 u16 offscreen_mem_size;
71 u8 reserved[206];
72 } __packed vesa_mode_info_t;
74 typedef struct {
75 u16 video_mode;
76 union {
77 vesa_mode_info_t vesa;
78 u8 mode_info_block[256];
80 // our crap
81 //u16 attributes;
82 //u16 linebytes;
83 //u16 x_resolution;
84 //u16 y_resolution;
85 //u8 x_charsize;
86 //u8 y_charsize;
87 //u8 bits_per_pixel;
88 //u8 memory_model;
89 //u32 framebuffer_address;
90 } vbe_mode_info_t;
92 typedef struct {
93 u8 port_number; // i.e. monitor number
94 u8 edid_transfer_time;
95 u8 ddc_level;
96 u8 edid_block_zero[128];
97 } vbe_ddc_info_t;
99 #define VESA_GET_INFO 0x4f00
100 #define VESA_GET_MODE_INFO 0x4f01
101 #define VESA_SET_MODE 0x4f02
103 void vbe_set_graphics(void);
104 void vbe_textmode_console(void);
107 * Returns the mode_info struct from the vbe context,
108 * if initialized. NULL on invalid mode_infos.
110 const vbe_mode_info_t *vbe_mode_info(void);
112 #endif // VBE_H