summaryrefslogtreecommitdiff
path: root/include/linux/fb.h
blob: 3571ee7c12d7817428c368f56fe06bf9803375c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
#ifndef _LINUX_FB_H
#define _LINUX_FB_H

#include <stdint.h>
#include <sys/ioctl.h>

struct dentry;

#define FB_MAX 32

#define FBIOGET_VSCREENINFO	0x4600
#define FBIOPUT_VSCREENINFO	0x4601
#define FBIOGET_FSCREENINFO	0x4602
#define FBIOGETCMAP		0x4604
#define FBIOPUTCMAP		0x4605
#define FBIOPAN_DISPLAY		0x4606
#define FBIO_CURSOR            _IOWR('F', 0x08, struct fb_cursor)
#define FBIOGET_CON2FBMAP	0x460F
#define FBIOPUT_CON2FBMAP	0x4610
#define FBIOBLANK		0x4611
#define FBIOGET_VBLANK		_IOR('F', 0x12, struct fb_vblank)
#define FBIO_ALLOC              0x4613
#define FBIO_FREE               0x4614
#define FBIOGET_GLYPH           0x4615
#define FBIOGET_HWCINFO         0x4616
#define FBIOPUT_MODEINFO        0x4617
#define FBIOGET_DISPINFO        0x4618

#define FB_TYPE_PACKED_PIXELS		0
#define FB_TYPE_PLANES			1
#define FB_TYPE_INTERLEAVED_PLANES	2
#define FB_TYPE_TEXT			3
#define FB_TYPE_VGA_PLANES		4

#define FB_AUX_TEXT_MDA		0
#define FB_AUX_TEXT_CGA		1
#define FB_AUX_TEXT_S3_MMIO	2
#define FB_AUX_TEXT_MGA_STEP16	3
#define FB_AUX_TEXT_MGA_STEP8	4
#define FB_AUX_TEXT_SVGA_GROUP	8
#define FB_AUX_TEXT_SVGA_MASK	7
#define FB_AUX_TEXT_SVGA_STEP2	8
#define FB_AUX_TEXT_SVGA_STEP4	9
#define FB_AUX_TEXT_SVGA_STEP8	10
#define FB_AUX_TEXT_SVGA_STEP16	11
#define FB_AUX_TEXT_SVGA_LAST	15

#define FB_AUX_VGA_PLANES_VGA4		0
#define FB_AUX_VGA_PLANES_CFB4		1
#define FB_AUX_VGA_PLANES_CFB8		2

#define FB_VISUAL_MONO01		0
#define FB_VISUAL_MONO10		1
#define FB_VISUAL_TRUECOLOR		2
#define FB_VISUAL_PSEUDOCOLOR		3
#define FB_VISUAL_DIRECTCOLOR		4
#define FB_VISUAL_STATIC_PSEUDOCOLOR	5

#define FB_ACCEL_NONE		0
#define FB_ACCEL_ATARIBLITT	1
#define FB_ACCEL_AMIGABLITT	2
#define FB_ACCEL_S3_TRIO64	3
#define FB_ACCEL_NCR_77C32BLT	4
#define FB_ACCEL_S3_VIRGE	5
#define FB_ACCEL_ATI_MACH64GX	6
#define FB_ACCEL_DEC_TGA	7
#define FB_ACCEL_ATI_MACH64CT	8
#define FB_ACCEL_ATI_MACH64VT	9
#define FB_ACCEL_ATI_MACH64GT	10
#define FB_ACCEL_SUN_CREATOR	11
#define FB_ACCEL_SUN_CGSIX	12
#define FB_ACCEL_SUN_LEO	13
#define FB_ACCEL_IMS_TWINTURBO	14
#define FB_ACCEL_3DLABS_PERMEDIA2 15
#define FB_ACCEL_MATROX_MGA2064W 16
#define FB_ACCEL_MATROX_MGA1064SG 17
#define FB_ACCEL_MATROX_MGA2164W 18
#define FB_ACCEL_MATROX_MGA2164W_AGP 19
#define FB_ACCEL_MATROX_MGAG100	20
#define FB_ACCEL_MATROX_MGAG200	21
#define FB_ACCEL_SUN_CG14	22
#define FB_ACCEL_SUN_BWTWO	23
#define FB_ACCEL_SUN_CGTHREE	24
#define FB_ACCEL_SUN_TCX	25
#define FB_ACCEL_MATROX_MGAG400	26
#define FB_ACCEL_NV3		27
#define FB_ACCEL_NV4		28
#define FB_ACCEL_NV5		29
#define FB_ACCEL_CT_6555x	30
#define FB_ACCEL_3DFX_BANSHEE	31
#define FB_ACCEL_ATI_RAGE128	32
#define FB_ACCEL_IGS_CYBER2000	33
#define FB_ACCEL_IGS_CYBER2010	34
#define FB_ACCEL_IGS_CYBER5000	35
#define FB_ACCEL_SIS_GLAMOUR    36
#define FB_ACCEL_3DLABS_PERMEDIA3 37
#define FB_ACCEL_ATI_RADEON	38
#define FB_ACCEL_I810           39
#define FB_ACCEL_SIS_GLAMOUR_2  40
#define FB_ACCEL_SIS_XABRE      41
#define FB_ACCEL_I830           42
#define FB_ACCEL_NV_10          43
#define FB_ACCEL_NV_20          44
#define FB_ACCEL_NV_30          45
#define FB_ACCEL_NV_40          46
#define FB_ACCEL_XGI_VOLARI_V	47
#define FB_ACCEL_XGI_VOLARI_Z	48
#define FB_ACCEL_OMAP1610	49
#define FB_ACCEL_TRIDENT_TGUI	50
#define FB_ACCEL_TRIDENT_3DIMAGE 51
#define FB_ACCEL_TRIDENT_BLADE3D 52
#define FB_ACCEL_TRIDENT_BLADEXP 53
#define FB_ACCEL_CIRRUS_ALPINE   53
#define FB_ACCEL_NEOMAGIC_NM2070 90
#define FB_ACCEL_NEOMAGIC_NM2090 91
#define FB_ACCEL_NEOMAGIC_NM2093 92
#define FB_ACCEL_NEOMAGIC_NM2097 93
#define FB_ACCEL_NEOMAGIC_NM2160 94
#define FB_ACCEL_NEOMAGIC_NM2200 95
#define FB_ACCEL_NEOMAGIC_NM2230 96
#define FB_ACCEL_NEOMAGIC_NM2360 97
#define FB_ACCEL_NEOMAGIC_NM2380 98

#define FB_ACCEL_SAVAGE4        0x80
#define FB_ACCEL_SAVAGE3D       0x81
#define FB_ACCEL_SAVAGE3D_MV    0x82
#define FB_ACCEL_SAVAGE2000     0x83
#define FB_ACCEL_SAVAGE_MX_MV   0x84
#define FB_ACCEL_SAVAGE_MX      0x85
#define FB_ACCEL_SAVAGE_IX_MV   0x86
#define FB_ACCEL_SAVAGE_IX      0x87
#define FB_ACCEL_PROSAVAGE_PM   0x88
#define FB_ACCEL_PROSAVAGE_KM   0x89
#define FB_ACCEL_S3TWISTER_P    0x8a
#define FB_ACCEL_S3TWISTER_K    0x8b
#define FB_ACCEL_SUPERSAVAGE    0x8c
#define FB_ACCEL_PROSAVAGE_DDR  0x8d
#define FB_ACCEL_PROSAVAGE_DDRK 0x8e

struct fb_fix_screeninfo {
	char id[16];
	unsigned long smem_start;
	uint32_t smem_len;
	uint32_t type;
	uint32_t type_aux;
	uint32_t visual;
	uint16_t xpanstep;
	uint16_t ypanstep;
	uint16_t ywrapstep;
	uint32_t line_length;
	unsigned long mmio_start;
	uint32_t mmio_len;
	uint32_t accel;
	uint16_t reserved[3];
};

struct fb_bitfield {
	uint32_t offset;
	uint32_t length;
	uint32_t msb_right;
};

#define FB_NONSTD_HAM		1
#define FB_NONSTD_REV_PIX_IN_B	2

#define FB_ACTIVATE_NOW		0
#define FB_ACTIVATE_NXTOPEN	1
#define FB_ACTIVATE_TEST	2
#define FB_ACTIVATE_MASK       15
#define FB_ACTIVATE_VBL	       16
#define FB_CHANGE_CMAP_VBL     32
#define FB_ACTIVATE_ALL	       64
#define FB_ACTIVATE_FORCE     128
#define FB_ACTIVATE_INV_MODE  256

#define FB_ACCELF_TEXT		1

#define FB_SYNC_HOR_HIGH_ACT	1
#define FB_SYNC_VERT_HIGH_ACT	2
#define FB_SYNC_EXT		4
#define FB_SYNC_COMP_HIGH_ACT	8
#define FB_SYNC_BROADCAST	16
#define FB_SYNC_ON_GREEN	32

#define FB_VMODE_NONINTERLACED  0
#define FB_VMODE_INTERLACED	1
#define FB_VMODE_DOUBLE		2
#define FB_VMODE_ODD_FLD_FIRST	4
#define FB_VMODE_MASK		255

#define FB_VMODE_YWRAP		256
#define FB_VMODE_SMOOTH_XPAN	512
#define FB_VMODE_CONUPDATE	512

#define FB_ROTATE_UR      0
#define FB_ROTATE_CW      1
#define FB_ROTATE_UD      2
#define FB_ROTATE_CCW     3

#define PICOS2KHZ(a) (1000000000UL/(a))
#define KHZ2PICOS(a) (1000000000UL/(a))

struct fb_var_screeninfo {
	uint32_t xres;
	uint32_t yres;
	uint32_t xres_virtual;
	uint32_t yres_virtual;
	uint32_t xoffset;
	uint32_t yoffset;

	uint32_t bits_per_pixel;
	uint32_t grayscale;

	struct fb_bitfield red;
	struct fb_bitfield green;
	struct fb_bitfield blue;
	struct fb_bitfield transp;

	uint32_t nonstd;

	uint32_t activate;

	uint32_t height;
	uint32_t width;

	uint32_t accel_flags;

	uint32_t pixclock;
	uint32_t left_margin;
	uint32_t right_margin;
	uint32_t upper_margin;
	uint32_t lower_margin;
	uint32_t hsync_len;
	uint32_t vsync_len;
	uint32_t sync;
	uint32_t vmode;
	uint32_t rotate;
	uint32_t reserved[5];
};

struct fb_cmap {
	uint32_t start;
	uint32_t len;
	uint16_t *red;
	uint16_t *green;
	uint16_t *blue;
	uint16_t *transp;
};

struct fb_con2fbmap {
	uint32_t console;
	uint32_t framebuffer;
};

#define VESA_NO_BLANKING        0
#define VESA_VSYNC_SUSPEND      1
#define VESA_HSYNC_SUSPEND      2
#define VESA_POWERDOWN          3

#define FB_BLANK_UNBLANK VESA_NO_BLANKING
#define FB_BLANK_NORMAL (VESA_NO_BLANKING + 1)
#define FB_BLANK_VSYNC_SUSPEND (VESA_VSYNC_SUSPEND + 1)
#define FB_BLANK_HSYNC_SUSPEND (VESA_HSYNC_SUSPEND + 1)
#define FB_BLANK_POWERDOWN (VESA_POWERDOWN + 1)

#define FB_VBLANK_VBLANKING	0x001
#define FB_VBLANK_HBLANKING	0x002
#define FB_VBLANK_HAVE_VBLANK	0x004
#define FB_VBLANK_HAVE_HBLANK	0x008
#define FB_VBLANK_HAVE_COUNT	0x010
#define FB_VBLANK_HAVE_VCOUNT	0x020
#define FB_VBLANK_HAVE_HCOUNT	0x040
#define FB_VBLANK_VSYNCING	0x080
#define FB_VBLANK_HAVE_VSYNC	0x100

struct fb_vblank {
	uint32_t flags;
	uint32_t count;
	uint32_t vcount;
	uint32_t hcount;
	uint32_t reserved[4];
};

#define ROP_COPY 0
#define ROP_XOR  1

struct fb_copyarea {
	uint32_t dx;
	uint32_t dy;
	uint32_t width;
	uint32_t height;
	uint32_t sx;
	uint32_t sy;
};

struct fb_fillrect {
	uint32_t dx;
	uint32_t dy;
	uint32_t width;
	uint32_t height;
	uint32_t color;
	uint32_t rop;
};

struct fb_image {
	uint32_t dx;
	uint32_t dy;
	uint32_t width;
	uint32_t height;
	uint32_t fg_color;
	uint32_t bg_color;
	uint8_t  depth;
	const char *data;
	struct fb_cmap cmap;
};

#define FB_CUR_SETIMAGE 0x01
#define FB_CUR_SETPOS   0x02
#define FB_CUR_SETHOT   0x04
#define FB_CUR_SETCMAP  0x08
#define FB_CUR_SETSHAPE 0x10
#define FB_CUR_SETSIZE	0x20
#define FB_CUR_SETALL   0xFF

struct fbcurpos {
	uint16_t x, y;
};

struct fb_cursor {
	uint16_t set;
	uint16_t enable;
	uint16_t rop;
	const char *mask;
	struct fbcurpos hot;
	struct fb_image	image;
};

#define FB_BACKLIGHT_LEVELS	128
#define FB_BACKLIGHT_MAX	0xFF

#endif