OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [fb.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
#ifndef _LINUX_FB_H
2
#define _LINUX_FB_H
3
 
4
#include <asm/types.h>
5
#include <linux/i2c.h>
6
 
7
struct dentry;
8
 
9
/* Definitions of frame buffers                                         */
10
 
11
#define FB_MAJOR                29
12
#define FB_MAX                  32      /* sufficient for now */
13
 
14
/* ioctls
15
   0x46 is 'F'                                                          */
16
#define FBIOGET_VSCREENINFO     0x4600
17
#define FBIOPUT_VSCREENINFO     0x4601
18
#define FBIOGET_FSCREENINFO     0x4602
19
#define FBIOGETCMAP             0x4604
20
#define FBIOPUTCMAP             0x4605
21
#define FBIOPAN_DISPLAY         0x4606
22
#ifdef __KERNEL__
23
#define FBIO_CURSOR            _IOWR('F', 0x08, struct fb_cursor_user)
24
#else
25
#define FBIO_CURSOR            _IOWR('F', 0x08, struct fb_cursor)
26
#endif
27
/* 0x4607-0x460B are defined below */
28
/* #define FBIOGET_MONITORSPEC  0x460C */
29
/* #define FBIOPUT_MONITORSPEC  0x460D */
30
/* #define FBIOSWITCH_MONIBIT   0x460E */
31
#define FBIOGET_CON2FBMAP       0x460F
32
#define FBIOPUT_CON2FBMAP       0x4610
33
#define FBIOBLANK               0x4611          /* arg: 0 or vesa level + 1 */
34
#define FBIOGET_VBLANK          _IOR('F', 0x12, struct fb_vblank)
35
#define FBIO_ALLOC              0x4613
36
#define FBIO_FREE               0x4614
37
#define FBIOGET_GLYPH           0x4615
38
#define FBIOGET_HWCINFO         0x4616
39
#define FBIOPUT_MODEINFO        0x4617
40
#define FBIOGET_DISPINFO        0x4618
41
 
42
 
43
#define FB_TYPE_PACKED_PIXELS           0        /* Packed Pixels        */
44
#define FB_TYPE_PLANES                  1       /* Non interleaved planes */
45
#define FB_TYPE_INTERLEAVED_PLANES      2       /* Interleaved planes   */
46
#define FB_TYPE_TEXT                    3       /* Text/attributes      */
47
#define FB_TYPE_VGA_PLANES              4       /* EGA/VGA planes       */
48
 
49
#define FB_AUX_TEXT_MDA         0        /* Monochrome text */
50
#define FB_AUX_TEXT_CGA         1       /* CGA/EGA/VGA Color text */
51
#define FB_AUX_TEXT_S3_MMIO     2       /* S3 MMIO fasttext */
52
#define FB_AUX_TEXT_MGA_STEP16  3       /* MGA Millenium I: text, attr, 14 reserved bytes */
53
#define FB_AUX_TEXT_MGA_STEP8   4       /* other MGAs:      text, attr,  6 reserved bytes */
54
#define FB_AUX_TEXT_SVGA_GROUP  8       /* 8-15: SVGA tileblit compatible modes */
55
#define FB_AUX_TEXT_SVGA_MASK   7       /* lower three bits says step */
56
#define FB_AUX_TEXT_SVGA_STEP2  8       /* SVGA text mode:  text, attr */
57
#define FB_AUX_TEXT_SVGA_STEP4  9       /* SVGA text mode:  text, attr,  2 reserved bytes */
58
#define FB_AUX_TEXT_SVGA_STEP8  10      /* SVGA text mode:  text, attr,  6 reserved bytes */
59
#define FB_AUX_TEXT_SVGA_STEP16 11      /* SVGA text mode:  text, attr, 14 reserved bytes */
60
#define FB_AUX_TEXT_SVGA_LAST   15      /* reserved up to 15 */
61
 
62
#define FB_AUX_VGA_PLANES_VGA4          0        /* 16 color planes (EGA/VGA) */
63
#define FB_AUX_VGA_PLANES_CFB4          1       /* CFB4 in planes (VGA) */
64
#define FB_AUX_VGA_PLANES_CFB8          2       /* CFB8 in planes (VGA) */
65
 
66
#define FB_VISUAL_MONO01                0        /* Monochr. 1=Black 0=White */
67
#define FB_VISUAL_MONO10                1       /* Monochr. 1=White 0=Black */
68
#define FB_VISUAL_TRUECOLOR             2       /* True color   */
69
#define FB_VISUAL_PSEUDOCOLOR           3       /* Pseudo color (like atari) */
70
#define FB_VISUAL_DIRECTCOLOR           4       /* Direct color */
71
#define FB_VISUAL_STATIC_PSEUDOCOLOR    5       /* Pseudo color readonly */
72
 
73
#define FB_ACCEL_NONE           0        /* no hardware accelerator      */
74
#define FB_ACCEL_ATARIBLITT     1       /* Atari Blitter                */
75
#define FB_ACCEL_AMIGABLITT     2       /* Amiga Blitter                */
76
#define FB_ACCEL_S3_TRIO64      3       /* Cybervision64 (S3 Trio64)    */
77
#define FB_ACCEL_NCR_77C32BLT   4       /* RetinaZ3 (NCR 77C32BLT)      */
78
#define FB_ACCEL_S3_VIRGE       5       /* Cybervision64/3D (S3 ViRGE)  */
79
#define FB_ACCEL_ATI_MACH64GX   6       /* ATI Mach 64GX family         */
80
#define FB_ACCEL_DEC_TGA        7       /* DEC 21030 TGA                */
81
#define FB_ACCEL_ATI_MACH64CT   8       /* ATI Mach 64CT family         */
82
#define FB_ACCEL_ATI_MACH64VT   9       /* ATI Mach 64CT family VT class */
83
#define FB_ACCEL_ATI_MACH64GT   10      /* ATI Mach 64CT family GT class */
84
#define FB_ACCEL_SUN_CREATOR    11      /* Sun Creator/Creator3D        */
85
#define FB_ACCEL_SUN_CGSIX      12      /* Sun cg6                      */
86
#define FB_ACCEL_SUN_LEO        13      /* Sun leo/zx                   */
87
#define FB_ACCEL_IMS_TWINTURBO  14      /* IMS Twin Turbo               */
88
#define FB_ACCEL_3DLABS_PERMEDIA2 15    /* 3Dlabs Permedia 2            */
89
#define FB_ACCEL_MATROX_MGA2064W 16     /* Matrox MGA2064W (Millenium)  */
90
#define FB_ACCEL_MATROX_MGA1064SG 17    /* Matrox MGA1064SG (Mystique)  */
91
#define FB_ACCEL_MATROX_MGA2164W 18     /* Matrox MGA2164W (Millenium II) */
92
#define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */
93
#define FB_ACCEL_MATROX_MGAG100 20      /* Matrox G100 (Productiva G100) */
94
#define FB_ACCEL_MATROX_MGAG200 21      /* Matrox G200 (Myst, Mill, ...) */
95
#define FB_ACCEL_SUN_CG14       22      /* Sun cgfourteen                */
96
#define FB_ACCEL_SUN_BWTWO      23      /* Sun bwtwo                    */
97
#define FB_ACCEL_SUN_CGTHREE    24      /* Sun cgthree                  */
98
#define FB_ACCEL_SUN_TCX        25      /* Sun tcx                      */
99
#define FB_ACCEL_MATROX_MGAG400 26      /* Matrox G400                  */
100
#define FB_ACCEL_NV3            27      /* nVidia RIVA 128              */
101
#define FB_ACCEL_NV4            28      /* nVidia RIVA TNT              */
102
#define FB_ACCEL_NV5            29      /* nVidia RIVA TNT2             */
103
#define FB_ACCEL_CT_6555x       30      /* C&T 6555x                    */
104
#define FB_ACCEL_3DFX_BANSHEE   31      /* 3Dfx Banshee                 */
105
#define FB_ACCEL_ATI_RAGE128    32      /* ATI Rage128 family           */
106
#define FB_ACCEL_IGS_CYBER2000  33      /* CyberPro 2000                */
107
#define FB_ACCEL_IGS_CYBER2010  34      /* CyberPro 2010                */
108
#define FB_ACCEL_IGS_CYBER5000  35      /* CyberPro 5000                */
109
#define FB_ACCEL_SIS_GLAMOUR    36      /* SiS 300/630/540              */
110
#define FB_ACCEL_3DLABS_PERMEDIA3 37    /* 3Dlabs Permedia 3            */
111
#define FB_ACCEL_ATI_RADEON     38      /* ATI Radeon family            */
112
#define FB_ACCEL_I810           39      /* Intel 810/815                */
113
#define FB_ACCEL_SIS_GLAMOUR_2  40      /* SiS 315, 650, 740            */
114
#define FB_ACCEL_SIS_XABRE      41      /* SiS 330 ("Xabre")            */
115
#define FB_ACCEL_I830           42      /* Intel 830M/845G/85x/865G     */
116
#define FB_ACCEL_NV_10          43      /* nVidia Arch 10               */
117
#define FB_ACCEL_NV_20          44      /* nVidia Arch 20               */
118
#define FB_ACCEL_NV_30          45      /* nVidia Arch 30               */
119
#define FB_ACCEL_NV_40          46      /* nVidia Arch 40               */
120
#define FB_ACCEL_XGI_VOLARI_V   47      /* XGI Volari V3XT, V5, V8      */
121
#define FB_ACCEL_XGI_VOLARI_Z   48      /* XGI Volari Z7                */
122
#define FB_ACCEL_OMAP1610       49      /* TI OMAP16xx                  */
123
#define FB_ACCEL_NEOMAGIC_NM2070 90     /* NeoMagic NM2070              */
124
#define FB_ACCEL_NEOMAGIC_NM2090 91     /* NeoMagic NM2090              */
125
#define FB_ACCEL_NEOMAGIC_NM2093 92     /* NeoMagic NM2093              */
126
#define FB_ACCEL_NEOMAGIC_NM2097 93     /* NeoMagic NM2097              */
127
#define FB_ACCEL_NEOMAGIC_NM2160 94     /* NeoMagic NM2160              */
128
#define FB_ACCEL_NEOMAGIC_NM2200 95     /* NeoMagic NM2200              */
129
#define FB_ACCEL_NEOMAGIC_NM2230 96     /* NeoMagic NM2230              */
130
#define FB_ACCEL_NEOMAGIC_NM2360 97     /* NeoMagic NM2360              */
131
#define FB_ACCEL_NEOMAGIC_NM2380 98     /* NeoMagic NM2380              */
132
 
133
#define FB_ACCEL_SAVAGE4        0x80    /* S3 Savage4                   */
134
#define FB_ACCEL_SAVAGE3D       0x81    /* S3 Savage3D                  */
135
#define FB_ACCEL_SAVAGE3D_MV    0x82    /* S3 Savage3D-MV               */
136
#define FB_ACCEL_SAVAGE2000     0x83    /* S3 Savage2000                */
137
#define FB_ACCEL_SAVAGE_MX_MV   0x84    /* S3 Savage/MX-MV              */
138
#define FB_ACCEL_SAVAGE_MX      0x85    /* S3 Savage/MX                 */
139
#define FB_ACCEL_SAVAGE_IX_MV   0x86    /* S3 Savage/IX-MV              */
140
#define FB_ACCEL_SAVAGE_IX      0x87    /* S3 Savage/IX                 */
141
#define FB_ACCEL_PROSAVAGE_PM   0x88    /* S3 ProSavage PM133           */
142
#define FB_ACCEL_PROSAVAGE_KM   0x89    /* S3 ProSavage KM133           */
143
#define FB_ACCEL_S3TWISTER_P    0x8a    /* S3 Twister                   */
144
#define FB_ACCEL_S3TWISTER_K    0x8b    /* S3 TwisterK                  */
145
#define FB_ACCEL_SUPERSAVAGE    0x8c    /* S3 Supersavage               */
146
#define FB_ACCEL_PROSAVAGE_DDR  0x8d    /* S3 ProSavage DDR             */
147
#define FB_ACCEL_PROSAVAGE_DDRK 0x8e    /* S3 ProSavage DDR-K           */
148
 
149
struct fb_fix_screeninfo {
150
        char id[16];                    /* identification string eg "TT Builtin" */
151
        unsigned long smem_start;       /* Start of frame buffer mem */
152
                                        /* (physical address) */
153
        __u32 smem_len;                 /* Length of frame buffer mem */
154
        __u32 type;                     /* see FB_TYPE_*                */
155
        __u32 type_aux;                 /* Interleave for interleaved Planes */
156
        __u32 visual;                   /* see FB_VISUAL_*              */
157
        __u16 xpanstep;                 /* zero if no hardware panning  */
158
        __u16 ypanstep;                 /* zero if no hardware panning  */
159
        __u16 ywrapstep;                /* zero if no hardware ywrap    */
160
        __u32 line_length;              /* length of a line in bytes    */
161
        unsigned long mmio_start;       /* Start of Memory Mapped I/O   */
162
                                        /* (physical address) */
163
        __u32 mmio_len;                 /* Length of Memory Mapped I/O  */
164
        __u32 accel;                    /* Indicate to driver which     */
165
                                        /*  specific chip/card we have  */
166
        __u16 reserved[3];              /* Reserved for future compatibility */
167
};
168
 
169
/* Interpretation of offset for color fields: All offsets are from the right,
170
 * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
171
 * can use the offset as right argument to <<). A pixel afterwards is a bit
172
 * stream and is written to video memory as that unmodified. This implies
173
 * big-endian byte order if bits_per_pixel is greater than 8.
174
 */
175
struct fb_bitfield {
176
        __u32 offset;                   /* beginning of bitfield        */
177
        __u32 length;                   /* length of bitfield           */
178
        __u32 msb_right;                /* != 0 : Most significant bit is */
179
                                        /* right */
180
};
181
 
182
#define FB_NONSTD_HAM           1       /* Hold-And-Modify (HAM)        */
183
#define FB_NONSTD_REV_PIX_IN_B  2       /* order of pixels in each byte is reversed */
184
 
185
#define FB_ACTIVATE_NOW         0        /* set values immediately (or vbl)*/
186
#define FB_ACTIVATE_NXTOPEN     1       /* activate on next open        */
187
#define FB_ACTIVATE_TEST        2       /* don't set, round up impossible */
188
#define FB_ACTIVATE_MASK       15
189
                                        /* values                       */
190
#define FB_ACTIVATE_VBL        16       /* activate values on next vbl  */
191
#define FB_CHANGE_CMAP_VBL     32       /* change colormap on vbl       */
192
#define FB_ACTIVATE_ALL        64       /* change all VCs on this fb    */
193
#define FB_ACTIVATE_FORCE     128       /* force apply even when no change*/
194
#define FB_ACTIVATE_INV_MODE  256       /* invalidate videomode */
195
 
196
#define FB_ACCELF_TEXT          1       /* (OBSOLETE) see fb_info.flags and vc_mode */
197
 
198
#define FB_SYNC_HOR_HIGH_ACT    1       /* horizontal sync high active  */
199
#define FB_SYNC_VERT_HIGH_ACT   2       /* vertical sync high active    */
200
#define FB_SYNC_EXT             4       /* external sync                */
201
#define FB_SYNC_COMP_HIGH_ACT   8       /* composite sync high active   */
202
#define FB_SYNC_BROADCAST       16      /* broadcast video timings      */
203
                                        /* vtotal = 144d/288n/576i => PAL  */
204
                                        /* vtotal = 121d/242n/484i => NTSC */
205
#define FB_SYNC_ON_GREEN        32      /* sync on green */
206
 
207
#define FB_VMODE_NONINTERLACED  0       /* non interlaced */
208
#define FB_VMODE_INTERLACED     1       /* interlaced   */
209
#define FB_VMODE_DOUBLE         2       /* double scan */
210
#define FB_VMODE_ODD_FLD_FIRST  4       /* interlaced: top line first */
211
#define FB_VMODE_MASK           255
212
 
213
#define FB_VMODE_YWRAP          256     /* ywrap instead of panning     */
214
#define FB_VMODE_SMOOTH_XPAN    512     /* smooth xpan possible (internally used) */
215
#define FB_VMODE_CONUPDATE      512     /* don't update x/yoffset       */
216
 
217
/*
218
 * Display rotation support
219
 */
220
#define FB_ROTATE_UR      0
221
#define FB_ROTATE_CW      1
222
#define FB_ROTATE_UD      2
223
#define FB_ROTATE_CCW     3
224
 
225
#define PICOS2KHZ(a) (1000000000UL/(a))
226
#define KHZ2PICOS(a) (1000000000UL/(a))
227
 
228
struct fb_var_screeninfo {
229
        __u32 xres;                     /* visible resolution           */
230
        __u32 yres;
231
        __u32 xres_virtual;             /* virtual resolution           */
232
        __u32 yres_virtual;
233
        __u32 xoffset;                  /* offset from virtual to visible */
234
        __u32 yoffset;                  /* resolution                   */
235
 
236
        __u32 bits_per_pixel;           /* guess what                   */
237
        __u32 grayscale;                /* != 0 Graylevels instead of colors */
238
 
239
        struct fb_bitfield red;         /* bitfield in fb mem if true color, */
240
        struct fb_bitfield green;       /* else only length is significant */
241
        struct fb_bitfield blue;
242
        struct fb_bitfield transp;      /* transparency                 */
243
 
244
        __u32 nonstd;                   /* != 0 Non standard pixel format */
245
 
246
        __u32 activate;                 /* see FB_ACTIVATE_*            */
247
 
248
        __u32 height;                   /* height of picture in mm    */
249
        __u32 width;                    /* width of picture in mm     */
250
 
251
        __u32 accel_flags;              /* (OBSOLETE) see fb_info.flags */
252
 
253
        /* Timing: All values in pixclocks, except pixclock (of course) */
254
        __u32 pixclock;                 /* pixel clock in ps (pico seconds) */
255
        __u32 left_margin;              /* time from sync to picture    */
256
        __u32 right_margin;             /* time from picture to sync    */
257
        __u32 upper_margin;             /* time from sync to picture    */
258
        __u32 lower_margin;
259
        __u32 hsync_len;                /* length of horizontal sync    */
260
        __u32 vsync_len;                /* length of vertical sync      */
261
        __u32 sync;                     /* see FB_SYNC_*                */
262
        __u32 vmode;                    /* see FB_VMODE_*               */
263
        __u32 rotate;                   /* angle we rotate counter clockwise */
264
        __u32 reserved[5];              /* Reserved for future compatibility */
265
};
266
 
267
struct fb_cmap {
268
        __u32 start;                    /* First entry  */
269
        __u32 len;                      /* Number of entries */
270
        __u16 *red;                     /* Red values   */
271
        __u16 *green;
272
        __u16 *blue;
273
        __u16 *transp;                  /* transparency, can be NULL */
274
};
275
 
276
struct fb_con2fbmap {
277
        __u32 console;
278
        __u32 framebuffer;
279
};
280
 
281
/* VESA Blanking Levels */
282
#define VESA_NO_BLANKING        0
283
#define VESA_VSYNC_SUSPEND      1
284
#define VESA_HSYNC_SUSPEND      2
285
#define VESA_POWERDOWN          3
286
 
287
 
288
enum {
289
        /* screen: unblanked, hsync: on,  vsync: on */
290
        FB_BLANK_UNBLANK       = VESA_NO_BLANKING,
291
 
292
        /* screen: blanked,   hsync: on,  vsync: on */
293
        FB_BLANK_NORMAL        = VESA_NO_BLANKING + 1,
294
 
295
        /* screen: blanked,   hsync: on,  vsync: off */
296
        FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1,
297
 
298
        /* screen: blanked,   hsync: off, vsync: on */
299
        FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1,
300
 
301
        /* screen: blanked,   hsync: off, vsync: off */
302
        FB_BLANK_POWERDOWN     = VESA_POWERDOWN + 1
303
};
304
 
305
#define FB_VBLANK_VBLANKING     0x001   /* currently in a vertical blank */
306
#define FB_VBLANK_HBLANKING     0x002   /* currently in a horizontal blank */
307
#define FB_VBLANK_HAVE_VBLANK   0x004   /* vertical blanks can be detected */
308
#define FB_VBLANK_HAVE_HBLANK   0x008   /* horizontal blanks can be detected */
309
#define FB_VBLANK_HAVE_COUNT    0x010   /* global retrace counter is available */
310
#define FB_VBLANK_HAVE_VCOUNT   0x020   /* the vcount field is valid */
311
#define FB_VBLANK_HAVE_HCOUNT   0x040   /* the hcount field is valid */
312
#define FB_VBLANK_VSYNCING      0x080   /* currently in a vsync */
313
#define FB_VBLANK_HAVE_VSYNC    0x100   /* verical syncs can be detected */
314
 
315
struct fb_vblank {
316
        __u32 flags;                    /* FB_VBLANK flags */
317
        __u32 count;                    /* counter of retraces since boot */
318
        __u32 vcount;                   /* current scanline position */
319
        __u32 hcount;                   /* current scandot position */
320
        __u32 reserved[4];              /* reserved for future compatibility */
321
};
322
 
323
/* Internal HW accel */
324
#define ROP_COPY 0
325
#define ROP_XOR  1
326
 
327
struct fb_copyarea {
328
        __u32 dx;
329
        __u32 dy;
330
        __u32 width;
331
        __u32 height;
332
        __u32 sx;
333
        __u32 sy;
334
};
335
 
336
struct fb_fillrect {
337
        __u32 dx;       /* screen-relative */
338
        __u32 dy;
339
        __u32 width;
340
        __u32 height;
341
        __u32 color;
342
        __u32 rop;
343
};
344
 
345
struct fb_image {
346
        __u32 dx;               /* Where to place image */
347
        __u32 dy;
348
        __u32 width;            /* Size of image */
349
        __u32 height;
350
        __u32 fg_color;         /* Only used when a mono bitmap */
351
        __u32 bg_color;
352
        __u8  depth;            /* Depth of the image */
353
        const char *data;       /* Pointer to image data */
354
        struct fb_cmap cmap;    /* color map info */
355
};
356
 
357
/*
358
 * hardware cursor control
359
 */
360
 
361
#define FB_CUR_SETIMAGE 0x01
362
#define FB_CUR_SETPOS   0x02
363
#define FB_CUR_SETHOT   0x04
364
#define FB_CUR_SETCMAP  0x08
365
#define FB_CUR_SETSHAPE 0x10
366
#define FB_CUR_SETSIZE  0x20
367
#define FB_CUR_SETALL   0xFF
368
 
369
struct fbcurpos {
370
        __u16 x, y;
371
};
372
 
373
struct fb_cursor {
374
        __u16 set;              /* what to set */
375
        __u16 enable;           /* cursor on/off */
376
        __u16 rop;              /* bitop operation */
377
        const char *mask;       /* cursor mask bits */
378
        struct fbcurpos hot;    /* cursor hot spot */
379
        struct fb_image image;  /* Cursor image */
380
};
381
 
382
#ifdef CONFIG_FB_BACKLIGHT
383
/* Settings for the generic backlight code */
384
#define FB_BACKLIGHT_LEVELS     128
385
#define FB_BACKLIGHT_MAX        0xFF
386
#endif
387
 
388
#ifdef __KERNEL__
389
 
390
#include <linux/fs.h>
391
#include <linux/init.h>
392
#include <linux/device.h>
393
#include <linux/workqueue.h>
394
#include <linux/notifier.h>
395
#include <linux/list.h>
396
#include <linux/backlight.h>
397
#include <asm/io.h>
398
 
399
struct vm_area_struct;
400
struct fb_info;
401
struct device;
402
struct file;
403
 
404
/* Definitions below are used in the parsed monitor specs */
405
#define FB_DPMS_ACTIVE_OFF      1
406
#define FB_DPMS_SUSPEND         2
407
#define FB_DPMS_STANDBY         4
408
 
409
#define FB_DISP_DDI             1
410
#define FB_DISP_ANA_700_300     2
411
#define FB_DISP_ANA_714_286     4
412
#define FB_DISP_ANA_1000_400    8
413
#define FB_DISP_ANA_700_000     16
414
 
415
#define FB_DISP_MONO            32
416
#define FB_DISP_RGB             64
417
#define FB_DISP_MULTI           128
418
#define FB_DISP_UNKNOWN         256
419
 
420
#define FB_SIGNAL_NONE          0
421
#define FB_SIGNAL_BLANK_BLANK   1
422
#define FB_SIGNAL_SEPARATE      2
423
#define FB_SIGNAL_COMPOSITE     4
424
#define FB_SIGNAL_SYNC_ON_GREEN 8
425
#define FB_SIGNAL_SERRATION_ON  16
426
 
427
#define FB_MISC_PRIM_COLOR      1
428
#define FB_MISC_1ST_DETAIL      2       /* First Detailed Timing is preferred */
429
struct fb_chroma {
430
        __u32 redx;     /* in fraction of 1024 */
431
        __u32 greenx;
432
        __u32 bluex;
433
        __u32 whitex;
434
        __u32 redy;
435
        __u32 greeny;
436
        __u32 bluey;
437
        __u32 whitey;
438
};
439
 
440
struct fb_monspecs {
441
        struct fb_chroma chroma;
442
        struct fb_videomode *modedb;    /* mode database */
443
        __u8  manufacturer[4];          /* Manufacturer */
444
        __u8  monitor[14];              /* Monitor String */
445
        __u8  serial_no[14];            /* Serial Number */
446
        __u8  ascii[14];                /* ? */
447
        __u32 modedb_len;               /* mode database length */
448
        __u32 model;                    /* Monitor Model */
449
        __u32 serial;                   /* Serial Number - Integer */
450
        __u32 year;                     /* Year manufactured */
451
        __u32 week;                     /* Week Manufactured */
452
        __u32 hfmin;                    /* hfreq lower limit (Hz) */
453
        __u32 hfmax;                    /* hfreq upper limit (Hz) */
454
        __u32 dclkmin;                  /* pixelclock lower limit (Hz) */
455
        __u32 dclkmax;                  /* pixelclock upper limit (Hz) */
456
        __u16 input;                    /* display type - see FB_DISP_* */
457
        __u16 dpms;                     /* DPMS support - see FB_DPMS_ */
458
        __u16 signal;                   /* Signal Type - see FB_SIGNAL_* */
459
        __u16 vfmin;                    /* vfreq lower limit (Hz) */
460
        __u16 vfmax;                    /* vfreq upper limit (Hz) */
461
        __u16 gamma;                    /* Gamma - in fractions of 100 */
462
        __u16 gtf       : 1;            /* supports GTF */
463
        __u16 misc;                     /* Misc flags - see FB_MISC_* */
464
        __u8  version;                  /* EDID version... */
465
        __u8  revision;                 /* ...and revision */
466
        __u8  max_x;                    /* Maximum horizontal size (cm) */
467
        __u8  max_y;                    /* Maximum vertical size (cm) */
468
};
469
 
470
struct fb_cmap_user {
471
        __u32 start;                    /* First entry  */
472
        __u32 len;                      /* Number of entries */
473
        __u16 __user *red;              /* Red values   */
474
        __u16 __user *green;
475
        __u16 __user *blue;
476
        __u16 __user *transp;           /* transparency, can be NULL */
477
};
478
 
479
struct fb_image_user {
480
        __u32 dx;                       /* Where to place image */
481
        __u32 dy;
482
        __u32 width;                    /* Size of image */
483
        __u32 height;
484
        __u32 fg_color;                 /* Only used when a mono bitmap */
485
        __u32 bg_color;
486
        __u8  depth;                    /* Depth of the image */
487
        const char __user *data;        /* Pointer to image data */
488
        struct fb_cmap_user cmap;       /* color map info */
489
};
490
 
491
struct fb_cursor_user {
492
        __u16 set;                      /* what to set */
493
        __u16 enable;                   /* cursor on/off */
494
        __u16 rop;                      /* bitop operation */
495
        const char __user *mask;        /* cursor mask bits */
496
        struct fbcurpos hot;            /* cursor hot spot */
497
        struct fb_image_user image;     /* Cursor image */
498
};
499
 
500
/*
501
 * Register/unregister for framebuffer events
502
 */
503
 
504
/*      The resolution of the passed in fb_info about to change */
505
#define FB_EVENT_MODE_CHANGE            0x01
506
/*      The display on this fb_info is beeing suspended, no access to the
507
 *      framebuffer is allowed any more after that call returns
508
 */
509
#define FB_EVENT_SUSPEND                0x02
510
/*      The display on this fb_info was resumed, you can restore the display
511
 *      if you own it
512
 */
513
#define FB_EVENT_RESUME                 0x03
514
/*      An entry from the modelist was removed */
515
#define FB_EVENT_MODE_DELETE            0x04
516
/*      A driver registered itself */
517
#define FB_EVENT_FB_REGISTERED          0x05
518
/*      A driver unregistered itself */
519
#define FB_EVENT_FB_UNREGISTERED        0x06
520
/*      CONSOLE-SPECIFIC: get console to framebuffer mapping */
521
#define FB_EVENT_GET_CONSOLE_MAP        0x07
522
/*      CONSOLE-SPECIFIC: set console to framebuffer mapping */
523
#define FB_EVENT_SET_CONSOLE_MAP        0x08
524
/*      A hardware display blank change occured */
525
#define FB_EVENT_BLANK                  0x09
526
/*      Private modelist is to be replaced */
527
#define FB_EVENT_NEW_MODELIST           0x0A
528
/*      The resolution of the passed in fb_info about to change and
529
        all vc's should be changed         */
530
#define FB_EVENT_MODE_CHANGE_ALL        0x0B
531
/*      A software display blank change occured */
532
#define FB_EVENT_CONBLANK               0x0C
533
/*      Get drawing requirements        */
534
#define FB_EVENT_GET_REQ                0x0D
535
/*      Unbind from the console if possible */
536
#define FB_EVENT_FB_UNBIND              0x0E
537
 
538
struct fb_event {
539
        struct fb_info *info;
540
        void *data;
541
};
542
 
543
struct fb_blit_caps {
544
        u32 x;
545
        u32 y;
546
        u32 len;
547
        u32 flags;
548
};
549
 
550
extern int fb_register_client(struct notifier_block *nb);
551
extern int fb_unregister_client(struct notifier_block *nb);
552
extern int fb_notifier_call_chain(unsigned long val, void *v);
553
/*
554
 * Pixmap structure definition
555
 *
556
 * The purpose of this structure is to translate data
557
 * from the hardware independent format of fbdev to what
558
 * format the hardware needs.
559
 */
560
 
561
#define FB_PIXMAP_DEFAULT 1     /* used internally by fbcon */
562
#define FB_PIXMAP_SYSTEM  2     /* memory is in system RAM  */
563
#define FB_PIXMAP_IO      4     /* memory is iomapped       */
564
#define FB_PIXMAP_SYNC    256   /* set if GPU can DMA       */
565
 
566
struct fb_pixmap {
567
        u8  *addr;              /* pointer to memory                    */
568
        u32 size;               /* size of buffer in bytes              */
569
        u32 offset;             /* current offset to buffer             */
570
        u32 buf_align;          /* byte alignment of each bitmap        */
571
        u32 scan_align;         /* alignment per scanline               */
572
        u32 access_align;       /* alignment per read/write (bits)      */
573
        u32 flags;              /* see FB_PIXMAP_*                      */
574
        u32 blit_x;             /* supported bit block dimensions (1-32)*/
575
        u32 blit_y;             /* Format: blit_x = 1 << (width - 1)    */
576
                                /*         blit_y = 1 << (height - 1)   */
577
                                /* if 0, will be set to 0xffffffff (all)*/
578
        /* access methods */
579
        void (*writeio)(struct fb_info *info, void __iomem *dst, void *src, unsigned int size);
580
        void (*readio) (struct fb_info *info, void *dst, void __iomem *src, unsigned int size);
581
};
582
 
583
#ifdef CONFIG_FB_DEFERRED_IO
584
struct fb_deferred_io {
585
        /* delay between mkwrite and deferred handler */
586
        unsigned long delay;
587
        struct mutex lock; /* mutex that protects the page list */
588
        struct list_head pagelist; /* list of touched pages */
589
        /* callback */
590
        void (*deferred_io)(struct fb_info *info, struct list_head *pagelist);
591
};
592
#endif
593
 
594
/*
595
 * Frame buffer operations
596
 *
597
 * LOCKING NOTE: those functions must _ALL_ be called with the console
598
 * semaphore held, this is the only suitable locking mechanism we have
599
 * in 2.6. Some may be called at interrupt time at this point though.
600
 */
601
 
602
struct fb_ops {
603
        /* open/release and usage marking */
604
        struct module *owner;
605
        int (*fb_open)(struct fb_info *info, int user);
606
        int (*fb_release)(struct fb_info *info, int user);
607
 
608
        /* For framebuffers with strange non linear layouts or that do not
609
         * work with normal memory mapped access
610
         */
611
        ssize_t (*fb_read)(struct fb_info *info, char __user *buf,
612
                           size_t count, loff_t *ppos);
613
        ssize_t (*fb_write)(struct fb_info *info, const char __user *buf,
614
                            size_t count, loff_t *ppos);
615
 
616
        /* checks var and eventually tweaks it to something supported,
617
         * DO NOT MODIFY PAR */
618
        int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);
619
 
620
        /* set the video mode according to info->var */
621
        int (*fb_set_par)(struct fb_info *info);
622
 
623
        /* set color register */
624
        int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green,
625
                            unsigned blue, unsigned transp, struct fb_info *info);
626
 
627
        /* set color registers in batch */
628
        int (*fb_setcmap)(struct fb_cmap *cmap, struct fb_info *info);
629
 
630
        /* blank display */
631
        int (*fb_blank)(int blank, struct fb_info *info);
632
 
633
        /* pan display */
634
        int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);
635
 
636
        /* Draws a rectangle */
637
        void (*fb_fillrect) (struct fb_info *info, const struct fb_fillrect *rect);
638
        /* Copy data from area to another */
639
        void (*fb_copyarea) (struct fb_info *info, const struct fb_copyarea *region);
640
        /* Draws a image to the display */
641
        void (*fb_imageblit) (struct fb_info *info, const struct fb_image *image);
642
 
643
        /* Draws cursor */
644
        int (*fb_cursor) (struct fb_info *info, struct fb_cursor *cursor);
645
 
646
        /* Rotates the display */
647
        void (*fb_rotate)(struct fb_info *info, int angle);
648
 
649
        /* wait for blit idle, optional */
650
        int (*fb_sync)(struct fb_info *info);
651
 
652
        /* perform fb specific ioctl (optional) */
653
        int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,
654
                        unsigned long arg);
655
 
656
        /* Handle 32bit compat ioctl (optional) */
657
        int (*fb_compat_ioctl)(struct fb_info *info, unsigned cmd,
658
                        unsigned long arg);
659
 
660
        /* perform fb specific mmap */
661
        int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
662
 
663
        /* save current hardware state */
664
        void (*fb_save_state)(struct fb_info *info);
665
 
666
        /* restore saved state */
667
        void (*fb_restore_state)(struct fb_info *info);
668
 
669
        /* get capability given var */
670
        void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
671
                            struct fb_var_screeninfo *var);
672
};
673
 
674
#ifdef CONFIG_FB_TILEBLITTING
675
#define FB_TILE_CURSOR_NONE        0
676
#define FB_TILE_CURSOR_UNDERLINE   1
677
#define FB_TILE_CURSOR_LOWER_THIRD 2
678
#define FB_TILE_CURSOR_LOWER_HALF  3
679
#define FB_TILE_CURSOR_TWO_THIRDS  4
680
#define FB_TILE_CURSOR_BLOCK       5
681
 
682
struct fb_tilemap {
683
        __u32 width;                /* width of each tile in pixels */
684
        __u32 height;               /* height of each tile in scanlines */
685
        __u32 depth;                /* color depth of each tile */
686
        __u32 length;               /* number of tiles in the map */
687
        const __u8 *data;           /* actual tile map: a bitmap array, packed
688
                                       to the nearest byte */
689
};
690
 
691
struct fb_tilerect {
692
        __u32 sx;                   /* origin in the x-axis */
693
        __u32 sy;                   /* origin in the y-axis */
694
        __u32 width;                /* number of tiles in the x-axis */
695
        __u32 height;               /* number of tiles in the y-axis */
696
        __u32 index;                /* what tile to use: index to tile map */
697
        __u32 fg;                   /* foreground color */
698
        __u32 bg;                   /* background color */
699
        __u32 rop;                  /* raster operation */
700
};
701
 
702
struct fb_tilearea {
703
        __u32 sx;                   /* source origin in the x-axis */
704
        __u32 sy;                   /* source origin in the y-axis */
705
        __u32 dx;                   /* destination origin in the x-axis */
706
        __u32 dy;                   /* destination origin in the y-axis */
707
        __u32 width;                /* number of tiles in the x-axis */
708
        __u32 height;               /* number of tiles in the y-axis */
709
};
710
 
711
struct fb_tileblit {
712
        __u32 sx;                   /* origin in the x-axis */
713
        __u32 sy;                   /* origin in the y-axis */
714
        __u32 width;                /* number of tiles in the x-axis */
715
        __u32 height;               /* number of tiles in the y-axis */
716
        __u32 fg;                   /* foreground color */
717
        __u32 bg;                   /* background color */
718
        __u32 length;               /* number of tiles to draw */
719
        __u32 *indices;             /* array of indices to tile map */
720
};
721
 
722
struct fb_tilecursor {
723
        __u32 sx;                   /* cursor position in the x-axis */
724
        __u32 sy;                   /* cursor position in the y-axis */
725
        __u32 mode;                 /* 0 = erase, 1 = draw */
726
        __u32 shape;                /* see FB_TILE_CURSOR_* */
727
        __u32 fg;                   /* foreground color */
728
        __u32 bg;                   /* background color */
729
};
730
 
731
struct fb_tile_ops {
732
        /* set tile characteristics */
733
        void (*fb_settile)(struct fb_info *info, struct fb_tilemap *map);
734
 
735
        /* all dimensions from hereon are in terms of tiles */
736
 
737
        /* move a rectangular region of tiles from one area to another*/
738
        void (*fb_tilecopy)(struct fb_info *info, struct fb_tilearea *area);
739
        /* fill a rectangular region with a tile */
740
        void (*fb_tilefill)(struct fb_info *info, struct fb_tilerect *rect);
741
        /* copy an array of tiles */
742
        void (*fb_tileblit)(struct fb_info *info, struct fb_tileblit *blit);
743
        /* cursor */
744
        void (*fb_tilecursor)(struct fb_info *info,
745
                              struct fb_tilecursor *cursor);
746
        /* get maximum length of the tile map */
747
        int (*fb_get_tilemax)(struct fb_info *info);
748
};
749
#endif /* CONFIG_FB_TILEBLITTING */
750
 
751
/* FBINFO_* = fb_info.flags bit flags */
752
#define FBINFO_MODULE           0x0001  /* Low-level driver is a module */
753
#define FBINFO_HWACCEL_DISABLED 0x0002
754
        /* When FBINFO_HWACCEL_DISABLED is set:
755
         *  Hardware acceleration is turned off.  Software implementations
756
         *  of required functions (copyarea(), fillrect(), and imageblit())
757
         *  takes over; acceleration engine should be in a quiescent state */
758
 
759
/* hints */
760
#define FBINFO_PARTIAL_PAN_OK   0x0040 /* otw use pan only for double-buffering */
761
#define FBINFO_READS_FAST       0x0080 /* soft-copy faster than rendering */
762
 
763
/* hardware supported ops */
764
/*  semantics: when a bit is set, it indicates that the operation is
765
 *   accelerated by hardware.
766
 *  required functions will still work even if the bit is not set.
767
 *  optional functions may not even exist if the flag bit is not set.
768
 */
769
#define FBINFO_HWACCEL_NONE             0x0000
770
#define FBINFO_HWACCEL_COPYAREA         0x0100 /* required */
771
#define FBINFO_HWACCEL_FILLRECT         0x0200 /* required */
772
#define FBINFO_HWACCEL_IMAGEBLIT        0x0400 /* required */
773
#define FBINFO_HWACCEL_ROTATE           0x0800 /* optional */
774
#define FBINFO_HWACCEL_XPAN             0x1000 /* optional */
775
#define FBINFO_HWACCEL_YPAN             0x2000 /* optional */
776
#define FBINFO_HWACCEL_YWRAP            0x4000 /* optional */
777
 
778
#define FBINFO_MISC_USEREVENT          0x10000 /* event request
779
                                                  from userspace */
780
#define FBINFO_MISC_TILEBLITTING       0x20000 /* use tile blitting */
781
 
782
/* A driver may set this flag to indicate that it does want a set_par to be
783
 * called every time when fbcon_switch is executed. The advantage is that with
784
 * this flag set you can really be sure that set_par is always called before
785
 * any of the functions dependant on the correct hardware state or altering
786
 * that state, even if you are using some broken X releases. The disadvantage
787
 * is that it introduces unwanted delays to every console switch if set_par
788
 * is slow. It is a good idea to try this flag in the drivers initialization
789
 * code whenever there is a bug report related to switching between X and the
790
 * framebuffer console.
791
 */
792
#define FBINFO_MISC_ALWAYS_SETPAR   0x40000
793
 
794
struct fb_info {
795
        int node;
796
        int flags;
797
        struct fb_var_screeninfo var;   /* Current var */
798
        struct fb_fix_screeninfo fix;   /* Current fix */
799
        struct fb_monspecs monspecs;    /* Current Monitor specs */
800
        struct work_struct queue;       /* Framebuffer event queue */
801
        struct fb_pixmap pixmap;        /* Image hardware mapper */
802
        struct fb_pixmap sprite;        /* Cursor hardware mapper */
803
        struct fb_cmap cmap;            /* Current cmap */
804
        struct list_head modelist;      /* mode list */
805
        struct fb_videomode *mode;      /* current mode */
806
 
807
#ifdef CONFIG_FB_BACKLIGHT
808
        /* assigned backlight device */
809
        /* set before framebuffer registration,
810
           remove after unregister */
811
        struct backlight_device *bl_dev;
812
 
813
        /* Backlight level curve */
814
        struct mutex bl_curve_mutex;
815
        u8 bl_curve[FB_BACKLIGHT_LEVELS];
816
#endif
817
#ifdef CONFIG_FB_DEFERRED_IO
818
        struct delayed_work deferred_work;
819
        struct fb_deferred_io *fbdefio;
820
#endif
821
 
822
        struct fb_ops *fbops;
823
        struct device *device;          /* This is the parent */
824
        struct device *dev;             /* This is this fb device */
825
        int class_flag;                    /* private sysfs flags */
826
#ifdef CONFIG_FB_TILEBLITTING
827
        struct fb_tile_ops *tileops;    /* Tile Blitting */
828
#endif
829
        char __iomem *screen_base;      /* Virtual address */
830
        unsigned long screen_size;      /* Amount of ioremapped VRAM or 0 */
831
        void *pseudo_palette;           /* Fake palette of 16 colors */
832
#define FBINFO_STATE_RUNNING    0
833
#define FBINFO_STATE_SUSPENDED  1
834
        u32 state;                      /* Hardware state i.e suspend */
835
        void *fbcon_par;                /* fbcon use-only private area */
836
        /* From here on everything is device dependent */
837
        void *par;
838
};
839
 
840
#ifdef MODULE
841
#define FBINFO_DEFAULT  FBINFO_MODULE
842
#else
843
#define FBINFO_DEFAULT  0
844
#endif
845
 
846
// This will go away
847
#define FBINFO_FLAG_MODULE      FBINFO_MODULE
848
#define FBINFO_FLAG_DEFAULT     FBINFO_DEFAULT
849
 
850
/* This will go away
851
 * fbset currently hacks in FB_ACCELF_TEXT into var.accel_flags
852
 * when it wants to turn the acceleration engine on.  This is
853
 * really a separate operation, and should be modified via sysfs.
854
 *  But for now, we leave it broken with the following define
855
 */
856
#define STUPID_ACCELF_TEXT_SHIT
857
 
858
// This will go away
859
#if defined(__sparc__)
860
 
861
/* We map all of our framebuffers such that big-endian accesses
862
 * are what we want, so the following is sufficient.
863
 */
864
 
865
// This will go away
866
#define fb_readb sbus_readb
867
#define fb_readw sbus_readw
868
#define fb_readl sbus_readl
869
#define fb_readq sbus_readq
870
#define fb_writeb sbus_writeb
871
#define fb_writew sbus_writew
872
#define fb_writel sbus_writel
873
#define fb_writeq sbus_writeq
874
#define fb_memset sbus_memset_io
875
 
876
#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || (defined(__sh__) && !defined(__SH5__)) || defined(__powerpc__) || defined(__avr32__)
877
 
878
#define fb_readb __raw_readb
879
#define fb_readw __raw_readw
880
#define fb_readl __raw_readl
881
#define fb_readq __raw_readq
882
#define fb_writeb __raw_writeb
883
#define fb_writew __raw_writew
884
#define fb_writel __raw_writel
885
#define fb_writeq __raw_writeq
886
#define fb_memset memset_io
887
 
888
#else
889
 
890
#define fb_readb(addr) (*(volatile u8 *) (addr))
891
#define fb_readw(addr) (*(volatile u16 *) (addr))
892
#define fb_readl(addr) (*(volatile u32 *) (addr))
893
#define fb_readq(addr) (*(volatile u64 *) (addr))
894
#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
895
#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
896
#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
897
#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
898
#define fb_memset memset
899
 
900
#endif
901
 
902
#if defined (__BIG_ENDIAN)
903
#define FB_LEFT_POS(bpp)          (32 - bpp)
904
#define FB_SHIFT_HIGH(val, bits)  ((val) >> (bits))
905
#define FB_SHIFT_LOW(val, bits)   ((val) << (bits))
906
#else
907
#define FB_LEFT_POS(bpp)          (0)
908
#define FB_SHIFT_HIGH(val, bits)  ((val) << (bits))
909
#define FB_SHIFT_LOW(val, bits)   ((val) >> (bits))
910
#endif
911
 
912
    /*
913
     *  `Generic' versions of the frame buffer device operations
914
     */
915
 
916
extern int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var);
917
extern int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var);
918
extern int fb_blank(struct fb_info *info, int blank);
919
extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
920
extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area);
921
extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image);
922
/*
923
 * Drawing operations where framebuffer is in system RAM
924
 */
925
extern void sys_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
926
extern void sys_copyarea(struct fb_info *info, const struct fb_copyarea *area);
927
extern void sys_imageblit(struct fb_info *info, const struct fb_image *image);
928
extern ssize_t fb_sys_read(struct fb_info *info, char __user *buf,
929
                           size_t count, loff_t *ppos);
930
extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
931
                            size_t count, loff_t *ppos);
932
 
933
/* drivers/video/fbmem.c */
934
extern int register_framebuffer(struct fb_info *fb_info);
935
extern int unregister_framebuffer(struct fb_info *fb_info);
936
extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
937
extern int fb_show_logo(struct fb_info *fb_info, int rotate);
938
extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size);
939
extern void fb_pad_unaligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 idx,
940
                                u32 height, u32 shift_high, u32 shift_low, u32 mod);
941
extern void fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 s_pitch, u32 height);
942
extern void fb_set_suspend(struct fb_info *info, int state);
943
extern int fb_get_color_depth(struct fb_var_screeninfo *var,
944
                              struct fb_fix_screeninfo *fix);
945
extern int fb_get_options(char *name, char **option);
946
extern int fb_new_modelist(struct fb_info *info);
947
 
948
extern struct fb_info *registered_fb[FB_MAX];
949
extern int num_registered_fb;
950
extern struct class *fb_class;
951
 
952
static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
953
                                           u8 *src, u32 s_pitch, u32 height)
954
{
955
        int i, j;
956
 
957
        d_pitch -= s_pitch;
958
 
959
        for (i = height; i--; ) {
960
                /* s_pitch is a few bytes at the most, memcpy is suboptimal */
961
                for (j = 0; j < s_pitch; j++)
962
                        *dst++ = *src++;
963
                dst += d_pitch;
964
        }
965
}
966
 
967
/* drivers/video/fb_defio.c */
968
extern void fb_deferred_io_init(struct fb_info *info);
969
extern void fb_deferred_io_cleanup(struct fb_info *info);
970
extern int fb_deferred_io_fsync(struct file *file, struct dentry *dentry,
971
                                int datasync);
972
 
973
/* drivers/video/fbsysfs.c */
974
extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev);
975
extern void framebuffer_release(struct fb_info *info);
976
extern int fb_init_device(struct fb_info *fb_info);
977
extern void fb_cleanup_device(struct fb_info *head);
978
extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max);
979
 
980
/* drivers/video/fbmon.c */
981
#define FB_MAXTIMINGS           0
982
#define FB_VSYNCTIMINGS         1
983
#define FB_HSYNCTIMINGS         2
984
#define FB_DCLKTIMINGS          3
985
#define FB_IGNOREMON            0x100
986
 
987
#define FB_MODE_IS_UNKNOWN      0
988
#define FB_MODE_IS_DETAILED     1
989
#define FB_MODE_IS_STANDARD     2
990
#define FB_MODE_IS_VESA         4
991
#define FB_MODE_IS_CALCULATED   8
992
#define FB_MODE_IS_FIRST        16
993
#define FB_MODE_IS_FROM_VAR     32
994
 
995
extern int fbmon_dpms(const struct fb_info *fb_info);
996
extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var,
997
                       struct fb_info *info);
998
extern int fb_validate_mode(const struct fb_var_screeninfo *var,
999
                            struct fb_info *info);
1000
extern int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var);
1001
extern const unsigned char *fb_firmware_edid(struct device *device);
1002
extern void fb_edid_to_monspecs(unsigned char *edid,
1003
                                struct fb_monspecs *specs);
1004
extern void fb_destroy_modedb(struct fb_videomode *modedb);
1005
extern int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb);
1006
extern unsigned char *fb_ddc_read(struct i2c_adapter *adapter);
1007
 
1008
/* drivers/video/modedb.c */
1009
#define VESA_MODEDB_SIZE 34
1010
extern void fb_var_to_videomode(struct fb_videomode *mode,
1011
                                const struct fb_var_screeninfo *var);
1012
extern void fb_videomode_to_var(struct fb_var_screeninfo *var,
1013
                                const struct fb_videomode *mode);
1014
extern int fb_mode_is_equal(const struct fb_videomode *mode1,
1015
                            const struct fb_videomode *mode2);
1016
extern int fb_add_videomode(const struct fb_videomode *mode,
1017
                            struct list_head *head);
1018
extern void fb_delete_videomode(const struct fb_videomode *mode,
1019
                                struct list_head *head);
1020
extern const struct fb_videomode *fb_match_mode(const struct fb_var_screeninfo *var,
1021
                                                struct list_head *head);
1022
extern const struct fb_videomode *fb_find_best_mode(const struct fb_var_screeninfo *var,
1023
                                                    struct list_head *head);
1024
extern const struct fb_videomode *fb_find_nearest_mode(const struct fb_videomode *mode,
1025
                                                       struct list_head *head);
1026
extern void fb_destroy_modelist(struct list_head *head);
1027
extern void fb_videomode_to_modelist(const struct fb_videomode *modedb, int num,
1028
                                     struct list_head *head);
1029
extern const struct fb_videomode *fb_find_best_display(const struct fb_monspecs *specs,
1030
                                                       struct list_head *head);
1031
 
1032
/* drivers/video/fbcmap.c */
1033
extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
1034
extern void fb_dealloc_cmap(struct fb_cmap *cmap);
1035
extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
1036
extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
1037
extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info);
1038
extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info);
1039
extern const struct fb_cmap *fb_default_cmap(int len);
1040
extern void fb_invert_cmaps(void);
1041
 
1042
struct fb_videomode {
1043
        const char *name;       /* optional */
1044
        u32 refresh;            /* optional */
1045
        u32 xres;
1046
        u32 yres;
1047
        u32 pixclock;
1048
        u32 left_margin;
1049
        u32 right_margin;
1050
        u32 upper_margin;
1051
        u32 lower_margin;
1052
        u32 hsync_len;
1053
        u32 vsync_len;
1054
        u32 sync;
1055
        u32 vmode;
1056
        u32 flag;
1057
};
1058
 
1059
extern const char *fb_mode_option;
1060
extern const struct fb_videomode vesa_modes[];
1061
 
1062
struct fb_modelist {
1063
        struct list_head list;
1064
        struct fb_videomode mode;
1065
};
1066
 
1067
extern int fb_find_mode(struct fb_var_screeninfo *var,
1068
                        struct fb_info *info, const char *mode_option,
1069
                        const struct fb_videomode *db,
1070
                        unsigned int dbsize,
1071
                        const struct fb_videomode *default_mode,
1072
                        unsigned int default_bpp);
1073
 
1074
#endif /* __KERNEL__ */
1075
 
1076
#endif /* _LINUX_FB_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.