Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/video/uvesafb.h
26282 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef _UVESAFB_H
3
#define _UVESAFB_H
4
5
#include <uapi/video/uvesafb.h>
6
7
8
/* VBE CRTC Info Block */
9
struct vbe_crtc_ib {
10
u16 horiz_total;
11
u16 horiz_start;
12
u16 horiz_end;
13
u16 vert_total;
14
u16 vert_start;
15
u16 vert_end;
16
u8 flags;
17
u32 pixel_clock;
18
u16 refresh_rate;
19
u8 reserved[40];
20
} __attribute__ ((packed));
21
22
#define VBE_MODE_VGACOMPAT 0x20
23
#define VBE_MODE_COLOR 0x08
24
#define VBE_MODE_SUPPORTEDHW 0x01
25
#define VBE_MODE_GRAPHICS 0x10
26
#define VBE_MODE_LFB 0x80
27
28
#define VBE_MODE_MASK (VBE_MODE_COLOR | VBE_MODE_SUPPORTEDHW | \
29
VBE_MODE_GRAPHICS | VBE_MODE_LFB)
30
31
/* VBE Mode Info Block */
32
struct vbe_mode_ib {
33
/* for all VBE revisions */
34
u16 mode_attr;
35
u8 winA_attr;
36
u8 winB_attr;
37
u16 win_granularity;
38
u16 win_size;
39
u16 winA_seg;
40
u16 winB_seg;
41
u32 win_func_ptr;
42
u16 bytes_per_scan_line;
43
44
/* for VBE 1.2+ */
45
u16 x_res;
46
u16 y_res;
47
u8 x_char_size;
48
u8 y_char_size;
49
u8 planes;
50
u8 bits_per_pixel;
51
u8 banks;
52
u8 memory_model;
53
u8 bank_size;
54
u8 image_pages;
55
u8 reserved1;
56
57
/* Direct color fields for direct/6 and YUV/7 memory models. */
58
/* Offsets are bit positions of lsb in the mask. */
59
u8 red_len;
60
u8 red_off;
61
u8 green_len;
62
u8 green_off;
63
u8 blue_len;
64
u8 blue_off;
65
u8 rsvd_len;
66
u8 rsvd_off;
67
u8 direct_color_info; /* direct color mode attributes */
68
69
/* for VBE 2.0+ */
70
u32 phys_base_ptr;
71
u8 reserved2[6];
72
73
/* for VBE 3.0+ */
74
u16 lin_bytes_per_scan_line;
75
u8 bnk_image_pages;
76
u8 lin_image_pages;
77
u8 lin_red_len;
78
u8 lin_red_off;
79
u8 lin_green_len;
80
u8 lin_green_off;
81
u8 lin_blue_len;
82
u8 lin_blue_off;
83
u8 lin_rsvd_len;
84
u8 lin_rsvd_off;
85
u32 max_pixel_clock;
86
u16 mode_id;
87
u8 depth;
88
} __attribute__ ((packed));
89
90
#define UVESAFB_DEFAULT_MODE "640x480-16"
91
92
/* How long to wait for a reply from userspace [ms] */
93
#define UVESAFB_TIMEOUT 5000
94
95
/* Max number of concurrent tasks */
96
#define UVESAFB_TASKS_MAX 16
97
98
#define dac_reg (0x3c8)
99
#define dac_val (0x3c9)
100
101
struct uvesafb_pal_entry {
102
u_char blue, green, red, pad;
103
} __attribute__ ((packed));
104
105
struct uvesafb_ktask {
106
struct uvesafb_task t;
107
void *buf;
108
struct completion *done;
109
u32 ack;
110
};
111
112
#define UVESAFB_EXACT_RES 1
113
#define UVESAFB_EXACT_DEPTH 2
114
115
struct uvesafb_par {
116
struct vbe_ib vbe_ib; /* VBE Info Block */
117
struct vbe_mode_ib *vbe_modes; /* list of supported VBE modes */
118
int vbe_modes_cnt;
119
120
u8 nocrtc;
121
u8 ypan; /* 0 - nothing, 1 - ypan, 2 - ywrap */
122
u8 pmi_setpal; /* PMI for palette changes */
123
u16 *pmi_base; /* protected mode interface location */
124
void *pmi_start;
125
void *pmi_pal;
126
u8 *vbe_state_orig; /*
127
* original hardware state, before the
128
* driver was loaded
129
*/
130
u8 *vbe_state_saved; /* state saved by fb_save_state */
131
int vbe_state_size;
132
atomic_t ref_count;
133
134
int mode_idx;
135
struct vbe_crtc_ib crtc;
136
int mtrr_handle;
137
};
138
139
#endif /* _UVESAFB_H */
140
141