Blame view

include/vbe.h 2.76 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: BSD-2-Clause */
647f56e74   Simon Glass   Add support for V...
2
3
4
5
6
  /******************************************************************************
   * Copyright (c) 2004, 2008 IBM Corporation
   * Copyright (c) 2009 Pattrick Hueper <phueper@hueper.net>
   * All rights reserved.
   *
647f56e74   Simon Glass   Add support for V...
7
8
9
10
11
12
13
   * Contributors:
   *     IBM Corporation - initial implementation
   *****************************************************************************/
  #ifndef _VBE_H
  #define _VBE_H
  
  /* these structs are for input from and output to OF */
a45200225   Bin Meng   x86: Configure VE...
14
  struct __packed vbe_screen_info {
647f56e74   Simon Glass   Add support for V...
15
16
17
18
19
20
21
22
23
  	u8 display_type;	/* 0=NONE, 1= analog, 2=digital */
  	u16 screen_width;
  	u16 screen_height;
  	/* bytes per line in framebuffer, may be more than screen_width */
  	u16 screen_linebytes;
  	u8 color_depth;	/* color depth in bits per pixel */
  	u32 framebuffer_address;
  	u8 edid_block_zero[128];
  };
a45200225   Bin Meng   x86: Configure VE...
24
  struct __packed vbe_screen_info_input {
647f56e74   Simon Glass   Add support for V...
25
26
27
28
29
30
31
32
33
34
35
  	u8 signature[4];
  	u16 size_reserved;
  	u8 monitor_number;
  	u16 max_screen_width;
  	u8 color_depth;
  };
  
  /* these structs only store the required a subset of the VBE-defined fields */
  struct __packed vbe_info {
  	char signature[4];
  	u16 version;
222f25f85   Simon Glass   bios_emulator: Ad...
36
  	u32 oem_string_ptr;
647f56e74   Simon Glass   Add support for V...
37
  	u32 capabilities;
222f25f85   Simon Glass   bios_emulator: Ad...
38
  	u32 modes_ptr;
647f56e74   Simon Glass   Add support for V...
39
  	u16 total_memory;
222f25f85   Simon Glass   bios_emulator: Ad...
40
41
42
43
  	u16 oem_version;
  	u32 vendor_name_ptr;
  	u32 product_name_ptr;
  	u32 product_rev_ptr;
647f56e74   Simon Glass   Add support for V...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  };
  
  struct __packed vesa_mode_info {
  	u16 mode_attributes;	/* 00 */
  	u8 win_a_attributes;	/* 02 */
  	u8 win_b_attributes;	/* 03 */
  	u16 win_granularity;	/* 04 */
  	u16 win_size;		/* 06 */
  	u16 win_a_segment;	/* 08 */
  	u16 win_b_segment;	/* 0a */
  	u32 win_func_ptr;	/* 0c */
  	u16 bytes_per_scanline;	/* 10 */
  	u16 x_resolution;	/* 12 */
  	u16 y_resolution;	/* 14 */
  	u8 x_charsize;		/* 16 */
  	u8 y_charsize;		/* 17 */
  	u8 number_of_planes;	/* 18 */
  	u8 bits_per_pixel;	/* 19 */
  	u8 number_of_banks;	/* 20 */
  	u8 memory_model;	/* 21 */
  	u8 bank_size;		/* 22 */
  	u8 number_of_image_pages; /* 23 */
  	u8 reserved_page;
  	u8 red_mask_size;
  	u8 red_mask_pos;
  	u8 green_mask_size;
  	u8 green_mask_pos;
  	u8 blue_mask_size;
  	u8 blue_mask_pos;
  	u8 reserved_mask_size;
  	u8 reserved_mask_pos;
  	u8 direct_color_mode_info;
  	u32 phys_base_ptr;
  	u32 offscreen_mem_offset;
  	u16 offscreen_mem_size;
  	u8 reserved[206];
  };
  
  struct vbe_mode_info {
  	u16 video_mode;
  	bool valid;
  	union {
  		struct vesa_mode_info vesa;
  		u8 mode_info_block[256];
  	};
  };
  
  struct vbe_ddc_info {
  	u8 port_number;	/* i.e. monitor number */
  	u8 edid_transfer_time;
  	u8 ddc_level;
  	u8 edid_block_zero[128];
  };
  
  #define VESA_GET_INFO		0x4f00
  #define VESA_GET_MODE_INFO	0x4f01
  #define VESA_SET_MODE		0x4f02
222f25f85   Simon Glass   bios_emulator: Ad...
101
  #define VESA_GET_CUR_MODE	0x4f03
647f56e74   Simon Glass   Add support for V...
102

153e1dda2   Bin Meng   video: coreboot: ...
103
  extern struct vbe_mode_info mode_info;
ee87ee82e   Simon Glass   dm: video: Add dr...
104
  struct video_priv;
5f6ad029f   Bin Meng   vbe: Make vbe_set...
105
106
107
108
  struct video_uc_platdata;
  int vbe_setup_video_priv(struct vesa_mode_info *vesa,
  			 struct video_priv *uc_priv,
  			 struct video_uc_platdata *plat);
ee87ee82e   Simon Glass   dm: video: Add dr...
109
  int vbe_setup_video(struct udevice *dev, int (*int15_handler)(void));
647f56e74   Simon Glass   Add support for V...
110
111
  
  #endif