reorganize Makefile to support "least surprise" config/make semantics
[musl] / include / linux / fb.h
1 #ifndef _LINUX_FB_H
2 #define _LINUX_FB_H
3
4 #include <stdint.h>
5 #include <sys/ioctl.h>
6
7 struct dentry;
8
9 #define FB_MAX 32
10
11 #define FBIOGET_VSCREENINFO     0x4600
12 #define FBIOPUT_VSCREENINFO     0x4601
13 #define FBIOGET_FSCREENINFO     0x4602
14 #define FBIOGETCMAP             0x4604
15 #define FBIOPUTCMAP             0x4605
16 #define FBIOPAN_DISPLAY         0x4606
17 #define FBIO_CURSOR            _IOWR('F', 0x08, struct fb_cursor)
18 #define FBIOGET_CON2FBMAP       0x460F
19 #define FBIOPUT_CON2FBMAP       0x4610
20 #define FBIOBLANK               0x4611
21 #define FBIOGET_VBLANK          _IOR('F', 0x12, struct fb_vblank)
22 #define FBIO_ALLOC              0x4613
23 #define FBIO_FREE               0x4614
24 #define FBIOGET_GLYPH           0x4615
25 #define FBIOGET_HWCINFO         0x4616
26 #define FBIOPUT_MODEINFO        0x4617
27 #define FBIOGET_DISPINFO        0x4618
28
29 #define FB_TYPE_PACKED_PIXELS           0
30 #define FB_TYPE_PLANES                  1
31 #define FB_TYPE_INTERLEAVED_PLANES      2
32 #define FB_TYPE_TEXT                    3
33 #define FB_TYPE_VGA_PLANES              4
34
35 #define FB_AUX_TEXT_MDA         0
36 #define FB_AUX_TEXT_CGA         1
37 #define FB_AUX_TEXT_S3_MMIO     2
38 #define FB_AUX_TEXT_MGA_STEP16  3
39 #define FB_AUX_TEXT_MGA_STEP8   4
40 #define FB_AUX_TEXT_SVGA_GROUP  8
41 #define FB_AUX_TEXT_SVGA_MASK   7
42 #define FB_AUX_TEXT_SVGA_STEP2  8
43 #define FB_AUX_TEXT_SVGA_STEP4  9
44 #define FB_AUX_TEXT_SVGA_STEP8  10
45 #define FB_AUX_TEXT_SVGA_STEP16 11
46 #define FB_AUX_TEXT_SVGA_LAST   15
47
48 #define FB_AUX_VGA_PLANES_VGA4          0
49 #define FB_AUX_VGA_PLANES_CFB4          1
50 #define FB_AUX_VGA_PLANES_CFB8          2
51
52 #define FB_VISUAL_MONO01                0
53 #define FB_VISUAL_MONO10                1
54 #define FB_VISUAL_TRUECOLOR             2
55 #define FB_VISUAL_PSEUDOCOLOR           3
56 #define FB_VISUAL_DIRECTCOLOR           4
57 #define FB_VISUAL_STATIC_PSEUDOCOLOR    5
58
59 #define FB_ACCEL_NONE           0
60 #define FB_ACCEL_ATARIBLITT     1
61 #define FB_ACCEL_AMIGABLITT     2
62 #define FB_ACCEL_S3_TRIO64      3
63 #define FB_ACCEL_NCR_77C32BLT   4
64 #define FB_ACCEL_S3_VIRGE       5
65 #define FB_ACCEL_ATI_MACH64GX   6
66 #define FB_ACCEL_DEC_TGA        7
67 #define FB_ACCEL_ATI_MACH64CT   8
68 #define FB_ACCEL_ATI_MACH64VT   9
69 #define FB_ACCEL_ATI_MACH64GT   10
70 #define FB_ACCEL_SUN_CREATOR    11
71 #define FB_ACCEL_SUN_CGSIX      12
72 #define FB_ACCEL_SUN_LEO        13
73 #define FB_ACCEL_IMS_TWINTURBO  14
74 #define FB_ACCEL_3DLABS_PERMEDIA2 15
75 #define FB_ACCEL_MATROX_MGA2064W 16
76 #define FB_ACCEL_MATROX_MGA1064SG 17
77 #define FB_ACCEL_MATROX_MGA2164W 18
78 #define FB_ACCEL_MATROX_MGA2164W_AGP 19
79 #define FB_ACCEL_MATROX_MGAG100 20
80 #define FB_ACCEL_MATROX_MGAG200 21
81 #define FB_ACCEL_SUN_CG14       22
82 #define FB_ACCEL_SUN_BWTWO      23
83 #define FB_ACCEL_SUN_CGTHREE    24
84 #define FB_ACCEL_SUN_TCX        25
85 #define FB_ACCEL_MATROX_MGAG400 26
86 #define FB_ACCEL_NV3            27
87 #define FB_ACCEL_NV4            28
88 #define FB_ACCEL_NV5            29
89 #define FB_ACCEL_CT_6555x       30
90 #define FB_ACCEL_3DFX_BANSHEE   31
91 #define FB_ACCEL_ATI_RAGE128    32
92 #define FB_ACCEL_IGS_CYBER2000  33
93 #define FB_ACCEL_IGS_CYBER2010  34
94 #define FB_ACCEL_IGS_CYBER5000  35
95 #define FB_ACCEL_SIS_GLAMOUR    36
96 #define FB_ACCEL_3DLABS_PERMEDIA3 37
97 #define FB_ACCEL_ATI_RADEON     38
98 #define FB_ACCEL_I810           39
99 #define FB_ACCEL_SIS_GLAMOUR_2  40
100 #define FB_ACCEL_SIS_XABRE      41
101 #define FB_ACCEL_I830           42
102 #define FB_ACCEL_NV_10          43
103 #define FB_ACCEL_NV_20          44
104 #define FB_ACCEL_NV_30          45
105 #define FB_ACCEL_NV_40          46
106 #define FB_ACCEL_XGI_VOLARI_V   47
107 #define FB_ACCEL_XGI_VOLARI_Z   48
108 #define FB_ACCEL_OMAP1610       49
109 #define FB_ACCEL_TRIDENT_TGUI   50
110 #define FB_ACCEL_TRIDENT_3DIMAGE 51
111 #define FB_ACCEL_TRIDENT_BLADE3D 52
112 #define FB_ACCEL_TRIDENT_BLADEXP 53
113 #define FB_ACCEL_CIRRUS_ALPINE   53
114 #define FB_ACCEL_NEOMAGIC_NM2070 90
115 #define FB_ACCEL_NEOMAGIC_NM2090 91
116 #define FB_ACCEL_NEOMAGIC_NM2093 92
117 #define FB_ACCEL_NEOMAGIC_NM2097 93
118 #define FB_ACCEL_NEOMAGIC_NM2160 94
119 #define FB_ACCEL_NEOMAGIC_NM2200 95
120 #define FB_ACCEL_NEOMAGIC_NM2230 96
121 #define FB_ACCEL_NEOMAGIC_NM2360 97
122 #define FB_ACCEL_NEOMAGIC_NM2380 98
123
124 #define FB_ACCEL_SAVAGE4        0x80
125 #define FB_ACCEL_SAVAGE3D       0x81
126 #define FB_ACCEL_SAVAGE3D_MV    0x82
127 #define FB_ACCEL_SAVAGE2000     0x83
128 #define FB_ACCEL_SAVAGE_MX_MV   0x84
129 #define FB_ACCEL_SAVAGE_MX      0x85
130 #define FB_ACCEL_SAVAGE_IX_MV   0x86
131 #define FB_ACCEL_SAVAGE_IX      0x87
132 #define FB_ACCEL_PROSAVAGE_PM   0x88
133 #define FB_ACCEL_PROSAVAGE_KM   0x89
134 #define FB_ACCEL_S3TWISTER_P    0x8a
135 #define FB_ACCEL_S3TWISTER_K    0x8b
136 #define FB_ACCEL_SUPERSAVAGE    0x8c
137 #define FB_ACCEL_PROSAVAGE_DDR  0x8d
138 #define FB_ACCEL_PROSAVAGE_DDRK 0x8e
139
140 struct fb_fix_screeninfo {
141         char id[16];
142         unsigned long smem_start;
143         uint32_t smem_len;
144         uint32_t type;
145         uint32_t type_aux;
146         uint32_t visual;
147         uint16_t xpanstep;
148         uint16_t ypanstep;
149         uint16_t ywrapstep;
150         uint32_t line_length;
151         unsigned long mmio_start;
152         uint32_t mmio_len;
153         uint32_t accel;
154         uint16_t reserved[3];
155 };
156
157 struct fb_bitfield {
158         uint32_t offset;
159         uint32_t length;
160         uint32_t msb_right;
161 };
162
163 #define FB_NONSTD_HAM           1
164 #define FB_NONSTD_REV_PIX_IN_B  2
165
166 #define FB_ACTIVATE_NOW         0
167 #define FB_ACTIVATE_NXTOPEN     1
168 #define FB_ACTIVATE_TEST        2
169 #define FB_ACTIVATE_MASK       15
170 #define FB_ACTIVATE_VBL        16
171 #define FB_CHANGE_CMAP_VBL     32
172 #define FB_ACTIVATE_ALL        64
173 #define FB_ACTIVATE_FORCE     128
174 #define FB_ACTIVATE_INV_MODE  256
175
176 #define FB_ACCELF_TEXT          1
177
178 #define FB_SYNC_HOR_HIGH_ACT    1
179 #define FB_SYNC_VERT_HIGH_ACT   2
180 #define FB_SYNC_EXT             4
181 #define FB_SYNC_COMP_HIGH_ACT   8
182 #define FB_SYNC_BROADCAST       16
183 #define FB_SYNC_ON_GREEN        32
184
185 #define FB_VMODE_NONINTERLACED  0
186 #define FB_VMODE_INTERLACED     1
187 #define FB_VMODE_DOUBLE         2
188 #define FB_VMODE_ODD_FLD_FIRST  4
189 #define FB_VMODE_MASK           255
190
191 #define FB_VMODE_YWRAP          256
192 #define FB_VMODE_SMOOTH_XPAN    512
193 #define FB_VMODE_CONUPDATE      512
194
195 #define FB_ROTATE_UR      0
196 #define FB_ROTATE_CW      1
197 #define FB_ROTATE_UD      2
198 #define FB_ROTATE_CCW     3
199
200 #define PICOS2KHZ(a) (1000000000UL/(a))
201 #define KHZ2PICOS(a) (1000000000UL/(a))
202
203 struct fb_var_screeninfo {
204         uint32_t xres;
205         uint32_t yres;
206         uint32_t xres_virtual;
207         uint32_t yres_virtual;
208         uint32_t xoffset;
209         uint32_t yoffset;
210
211         uint32_t bits_per_pixel;
212         uint32_t grayscale;
213
214         struct fb_bitfield red;
215         struct fb_bitfield green;
216         struct fb_bitfield blue;
217         struct fb_bitfield transp;
218
219         uint32_t nonstd;
220
221         uint32_t activate;
222
223         uint32_t height;
224         uint32_t width;
225
226         uint32_t accel_flags;
227
228         uint32_t pixclock;
229         uint32_t left_margin;
230         uint32_t right_margin;
231         uint32_t upper_margin;
232         uint32_t lower_margin;
233         uint32_t hsync_len;
234         uint32_t vsync_len;
235         uint32_t sync;
236         uint32_t vmode;
237         uint32_t rotate;
238         uint32_t reserved[5];
239 };
240
241 struct fb_cmap {
242         uint32_t start;
243         uint32_t len;
244         uint16_t *red;
245         uint16_t *green;
246         uint16_t *blue;
247         uint16_t *transp;
248 };
249
250 struct fb_con2fbmap {
251         uint32_t console;
252         uint32_t framebuffer;
253 };
254
255 #define VESA_NO_BLANKING        0
256 #define VESA_VSYNC_SUSPEND      1
257 #define VESA_HSYNC_SUSPEND      2
258 #define VESA_POWERDOWN          3
259
260 #define FB_BLANK_UNBLANK VESA_NO_BLANKING
261 #define FB_BLANK_NORMAL (VESA_NO_BLANKING + 1)
262 #define FB_BLANK_VSYNC_SUSPEND (VESA_VSYNC_SUSPEND + 1)
263 #define FB_BLANK_HSYNC_SUSPEND (VESA_HSYNC_SUSPEND + 1)
264 #define FB_BLANK_POWERDOWN (VESA_POWERDOWN + 1)
265
266 #define FB_VBLANK_VBLANKING     0x001
267 #define FB_VBLANK_HBLANKING     0x002
268 #define FB_VBLANK_HAVE_VBLANK   0x004
269 #define FB_VBLANK_HAVE_HBLANK   0x008
270 #define FB_VBLANK_HAVE_COUNT    0x010
271 #define FB_VBLANK_HAVE_VCOUNT   0x020
272 #define FB_VBLANK_HAVE_HCOUNT   0x040
273 #define FB_VBLANK_VSYNCING      0x080
274 #define FB_VBLANK_HAVE_VSYNC    0x100
275
276 struct fb_vblank {
277         uint32_t flags;
278         uint32_t count;
279         uint32_t vcount;
280         uint32_t hcount;
281         uint32_t reserved[4];
282 };
283
284 #define ROP_COPY 0
285 #define ROP_XOR  1
286
287 struct fb_copyarea {
288         uint32_t dx;
289         uint32_t dy;
290         uint32_t width;
291         uint32_t height;
292         uint32_t sx;
293         uint32_t sy;
294 };
295
296 struct fb_fillrect {
297         uint32_t dx;
298         uint32_t dy;
299         uint32_t width;
300         uint32_t height;
301         uint32_t color;
302         uint32_t rop;
303 };
304
305 struct fb_image {
306         uint32_t dx;
307         uint32_t dy;
308         uint32_t width;
309         uint32_t height;
310         uint32_t fg_color;
311         uint32_t bg_color;
312         uint8_t  depth;
313         const char *data;
314         struct fb_cmap cmap;
315 };
316
317 #define FB_CUR_SETIMAGE 0x01
318 #define FB_CUR_SETPOS   0x02
319 #define FB_CUR_SETHOT   0x04
320 #define FB_CUR_SETCMAP  0x08
321 #define FB_CUR_SETSHAPE 0x10
322 #define FB_CUR_SETSIZE  0x20
323 #define FB_CUR_SETALL   0xFF
324
325 struct fbcurpos {
326         uint16_t x, y;
327 };
328
329 struct fb_cursor {
330         uint16_t set;
331         uint16_t enable;
332         uint16_t rop;
333         const char *mask;
334         struct fbcurpos hot;
335         struct fb_image image;
336 };
337
338 #define FB_BACKLIGHT_LEVELS     128
339 #define FB_BACKLIGHT_MAX        0xFF
340
341 #endif