105b261ecSmrg/*
2ed6184dfSmrg * copied from from linux kernel 2.2.4
305b261ecSmrg * removed internal stuff (#ifdef __KERNEL__)
405b261ecSmrg */
505b261ecSmrg
605b261ecSmrg#ifdef HAVE_XORG_CONFIG_H
705b261ecSmrg#include <xorg-config.h>
805b261ecSmrg#endif
905b261ecSmrg
1005b261ecSmrg#ifndef _LINUX_FB_H
1105b261ecSmrg#define _LINUX_FB_H
1205b261ecSmrg
1305b261ecSmrg#include <asm/types.h>
1405b261ecSmrg
1505b261ecSmrg/* Definitions of frame buffers						*/
1605b261ecSmrg
1705b261ecSmrg#define FB_MAJOR	29
1805b261ecSmrg
1935c4bbdfSmrg#define FB_MODES_SHIFT		5       /* 32 modes per framebuffer */
2035c4bbdfSmrg#define FB_NUM_MINORS		256     /* 256 Minors               */
2105b261ecSmrg#define FB_MAX			(FB_NUM_MINORS / (1 << FB_MODES_SHIFT))
2205b261ecSmrg#define GET_FB_IDX(node)	(MINOR(node) >> FB_MODES_SHIFT)
2305b261ecSmrg
2405b261ecSmrg/* ioctls
2505b261ecSmrg   0x46 is 'F'								*/
2605b261ecSmrg#define FBIOGET_VSCREENINFO	0x4600
2705b261ecSmrg#define FBIOPUT_VSCREENINFO	0x4601
2805b261ecSmrg#define FBIOGET_FSCREENINFO	0x4602
2905b261ecSmrg#define FBIOGETCMAP		0x4604
3005b261ecSmrg#define FBIOPUTCMAP		0x4605
3105b261ecSmrg#define FBIOPAN_DISPLAY		0x4606
3205b261ecSmrg/* 0x4607-0x460B are defined below */
3305b261ecSmrg/* #define FBIOGET_MONITORSPEC	0x460C */
3405b261ecSmrg/* #define FBIOPUT_MONITORSPEC	0x460D */
3505b261ecSmrg/* #define FBIOSWITCH_MONIBIT	0x460E */
3605b261ecSmrg#define FBIOGET_CON2FBMAP	0x460F
3705b261ecSmrg#define FBIOPUT_CON2FBMAP	0x4610
3805b261ecSmrg#define FBIOBLANK		0x4611
3905b261ecSmrg
4035c4bbdfSmrg#define FB_TYPE_PACKED_PIXELS		0       /* Packed Pixels        */
4135c4bbdfSmrg#define FB_TYPE_PLANES			1       /* Non interleaved planes */
4235c4bbdfSmrg#define FB_TYPE_INTERLEAVED_PLANES	2       /* Interleaved planes   */
4335c4bbdfSmrg#define FB_TYPE_TEXT			3       /* Text/attributes      */
4435c4bbdfSmrg
4535c4bbdfSmrg#define FB_AUX_TEXT_MDA		0       /* Monochrome text */
4635c4bbdfSmrg#define FB_AUX_TEXT_CGA		1       /* CGA/EGA/VGA Color text */
4735c4bbdfSmrg#define FB_AUX_TEXT_S3_MMIO	2       /* S3 MMIO fasttext */
4835c4bbdfSmrg#define FB_AUX_TEXT_MGA_STEP16	3       /* MGA Millenium I: text, attr, 14 reserved bytes */
4935c4bbdfSmrg#define FB_AUX_TEXT_MGA_STEP8	4       /* other MGAs:      text, attr,  6 reserved bytes */
5035c4bbdfSmrg
5135c4bbdfSmrg#define FB_VISUAL_MONO01		0       /* Monochr. 1=Black 0=White */
5235c4bbdfSmrg#define FB_VISUAL_MONO10		1       /* Monochr. 1=White 0=Black */
5335c4bbdfSmrg#define FB_VISUAL_TRUECOLOR		2       /* True color   */
5435c4bbdfSmrg#define FB_VISUAL_PSEUDOCOLOR		3       /* Pseudo color (like atari) */
5535c4bbdfSmrg#define FB_VISUAL_DIRECTCOLOR		4       /* Direct color */
5635c4bbdfSmrg#define FB_VISUAL_STATIC_PSEUDOCOLOR	5       /* Pseudo color readonly */
5735c4bbdfSmrg
5835c4bbdfSmrg#define FB_ACCEL_NONE		0       /* no hardware accelerator      */
5935c4bbdfSmrg#define FB_ACCEL_ATARIBLITT	1       /* Atari Blitter                */
6035c4bbdfSmrg#define FB_ACCEL_AMIGABLITT	2       /* Amiga Blitter                */
6135c4bbdfSmrg#define FB_ACCEL_S3_TRIO64	3       /* Cybervision64 (S3 Trio64)    */
6235c4bbdfSmrg#define FB_ACCEL_NCR_77C32BLT	4       /* RetinaZ3 (NCR 77C32BLT)      */
6335c4bbdfSmrg#define FB_ACCEL_S3_VIRGE	5       /* Cybervision64/3D (S3 ViRGE)  */
6435c4bbdfSmrg#define FB_ACCEL_ATI_MACH64GX	6       /* ATI Mach 64GX family         */
6535c4bbdfSmrg#define FB_ACCEL_DEC_TGA	7       /* DEC 21030 TGA                */
6635c4bbdfSmrg#define FB_ACCEL_ATI_MACH64CT	8       /* ATI Mach 64CT family         */
6735c4bbdfSmrg#define FB_ACCEL_ATI_MACH64VT	9       /* ATI Mach 64CT family VT class */
6835c4bbdfSmrg#define FB_ACCEL_ATI_MACH64GT	10      /* ATI Mach 64CT family GT class */
6935c4bbdfSmrg#define FB_ACCEL_SUN_CREATOR	11      /* Sun Creator/Creator3D        */
7035c4bbdfSmrg#define FB_ACCEL_SUN_CGSIX	12      /* Sun cg6                      */
7135c4bbdfSmrg#define FB_ACCEL_SUN_LEO	13      /* Sun leo/zx                   */
7235c4bbdfSmrg#define FB_ACCEL_IMS_TWINTURBO	14      /* IMS Twin Turbo               */
7335c4bbdfSmrg#define FB_ACCEL_3DLABS_PERMEDIA2 15    /* 3Dlabs Permedia 2            */
7435c4bbdfSmrg#define FB_ACCEL_MATROX_MGA2064W 16     /* Matrox MGA2064W (Millenium)  */
7535c4bbdfSmrg#define FB_ACCEL_MATROX_MGA1064SG 17    /* Matrox MGA1064SG (Mystique)  */
7635c4bbdfSmrg#define FB_ACCEL_MATROX_MGA2164W 18     /* Matrox MGA2164W (Millenium II) */
7735c4bbdfSmrg#define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */
7835c4bbdfSmrg#define FB_ACCEL_MATROX_MGAG100	20      /* Matrox G100 (Productiva G100) */
7935c4bbdfSmrg#define FB_ACCEL_MATROX_MGAG200	21      /* Matrox G200 (Myst, Mill, ...) */
8035c4bbdfSmrg#define FB_ACCEL_SUN_CG14	22      /* Sun cgfourteen                */
8135c4bbdfSmrg#define FB_ACCEL_SUN_BWTWO	23      /* Sun bwtwo                     */
8235c4bbdfSmrg#define FB_ACCEL_SUN_CGTHREE	24      /* Sun cgthree                   */
8335c4bbdfSmrg#define FB_ACCEL_SUN_TCX	25      /* Sun tcx                       */
8435c4bbdfSmrg#define FB_ACCEL_MATROX_MGAG400	26      /* Matrox G400                  */
8535c4bbdfSmrg#define FB_ACCEL_NV3		27      /* nVidia RIVA 128              */
8635c4bbdfSmrg#define FB_ACCEL_NV4		28      /* nVidia RIVA TNT              */
8735c4bbdfSmrg#define FB_ACCEL_NV5		29      /* nVidia RIVA TNT2             */
8835c4bbdfSmrg#define FB_ACCEL_CT_6555x	30      /* C&T 6555x                    */
8935c4bbdfSmrg#define FB_ACCEL_3DFX_BANSHEE	31      /* 3Dfx Banshee                 */
9035c4bbdfSmrg#define FB_ACCEL_ATI_RAGE128	32      /* ATI Rage128 family           */
9105b261ecSmrg
9205b261ecSmrgstruct fb_fix_screeninfo {
9335c4bbdfSmrg    char id[16];                /* identification string eg "TT Builtin" */
9435c4bbdfSmrg    char *smem_start;           /* Start of frame buffer mem */
9535c4bbdfSmrg    /* (physical address) */
9635c4bbdfSmrg    __u32 smem_len;             /* Length of frame buffer mem */
9735c4bbdfSmrg    __u32 type;                 /* see FB_TYPE_*                */
9835c4bbdfSmrg    __u32 type_aux;             /* Interleave for interleaved Planes */
9935c4bbdfSmrg    __u32 visual;               /* see FB_VISUAL_*              */
10035c4bbdfSmrg    __u16 xpanstep;             /* zero if no hardware panning  */
10135c4bbdfSmrg    __u16 ypanstep;             /* zero if no hardware panning  */
10235c4bbdfSmrg    __u16 ywrapstep;            /* zero if no hardware ywrap    */
10335c4bbdfSmrg    __u32 line_length;          /* length of a line in bytes    */
10435c4bbdfSmrg    char *mmio_start;           /* Start of Memory Mapped I/O   */
10535c4bbdfSmrg    /* (physical address) */
10635c4bbdfSmrg    __u32 mmio_len;             /* Length of Memory Mapped I/O  */
10735c4bbdfSmrg    __u32 accel;                /* Type of acceleration available */
10835c4bbdfSmrg    __u16 reserved[3];          /* Reserved for future compatibility */
10905b261ecSmrg};
11005b261ecSmrg
11105b261ecSmrg/* Interpretation of offset for color fields: All offsets are from the right,
11205b261ecSmrg * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you
11305b261ecSmrg * can use the offset as right argument to <<). A pixel afterwards is a bit
11405b261ecSmrg * stream and is written to video memory as that unmodified. This implies
11505b261ecSmrg * big-endian byte order if bits_per_pixel is greater than 8.
11605b261ecSmrg */
11705b261ecSmrgstruct fb_bitfield {
11835c4bbdfSmrg    __u32 offset;               /* beginning of bitfield        */
11935c4bbdfSmrg    __u32 length;               /* length of bitfield           */
12035c4bbdfSmrg    __u32 msb_right;            /* != 0 : Most significant bit is */
12135c4bbdfSmrg    /* right */
12205b261ecSmrg};
12305b261ecSmrg
12435c4bbdfSmrg#define FB_NONSTD_HAM		1       /* Hold-And-Modify (HAM)        */
12505b261ecSmrg
12635c4bbdfSmrg#define FB_ACTIVATE_NOW		0       /* set values immediately (or vbl) */
12735c4bbdfSmrg#define FB_ACTIVATE_NXTOPEN	1       /* activate on next open        */
12835c4bbdfSmrg#define FB_ACTIVATE_TEST	2       /* don't set, round up impossible */
12905b261ecSmrg#define FB_ACTIVATE_MASK       15
13035c4bbdfSmrg                                        /* values                       */
13135c4bbdfSmrg#define FB_ACTIVATE_VBL	       16       /* activate values on next vbl  */
13235c4bbdfSmrg#define FB_CHANGE_CMAP_VBL     32       /* change colormap on vbl       */
13335c4bbdfSmrg#define FB_ACTIVATE_ALL	       64       /* change all VCs on this fb    */
13435c4bbdfSmrg
13535c4bbdfSmrg#define FB_ACCELF_TEXT		1       /* text mode acceleration */
13635c4bbdfSmrg
13735c4bbdfSmrg#define FB_SYNC_HOR_HIGH_ACT	1       /* horizontal sync high active  */
13835c4bbdfSmrg#define FB_SYNC_VERT_HIGH_ACT	2       /* vertical sync high active    */
13935c4bbdfSmrg#define FB_SYNC_EXT		4       /* external sync                */
14035c4bbdfSmrg#define FB_SYNC_COMP_HIGH_ACT	8       /* composite sync high active   */
14135c4bbdfSmrg#define FB_SYNC_BROADCAST	16      /* broadcast video timings      */
14235c4bbdfSmrg                                        /* vtotal = 144d/288n/576i => PAL  */
14335c4bbdfSmrg                                        /* vtotal = 121d/242n/484i => NTSC */
14435c4bbdfSmrg#define FB_SYNC_ON_GREEN	32      /* sync on green */
14535c4bbdfSmrg
14635c4bbdfSmrg#define FB_VMODE_NONINTERLACED  0       /* non interlaced */
14735c4bbdfSmrg#define FB_VMODE_INTERLACED	1       /* interlaced   */
14835c4bbdfSmrg#define FB_VMODE_DOUBLE		2       /* double scan */
14905b261ecSmrg#define FB_VMODE_MASK		255
15005b261ecSmrg
15135c4bbdfSmrg#define FB_VMODE_YWRAP		256     /* ywrap instead of panning     */
15235c4bbdfSmrg#define FB_VMODE_SMOOTH_XPAN	512     /* smooth xpan possible (internally used) */
15335c4bbdfSmrg#define FB_VMODE_CONUPDATE	512     /* don't update x/yoffset       */
15405b261ecSmrg
15505b261ecSmrgstruct fb_var_screeninfo {
15635c4bbdfSmrg    __u32 xres;                 /* visible resolution           */
15735c4bbdfSmrg    __u32 yres;
15835c4bbdfSmrg    __u32 xres_virtual;         /* virtual resolution           */
15935c4bbdfSmrg    __u32 yres_virtual;
16035c4bbdfSmrg    __u32 xoffset;              /* offset from virtual to visible */
16135c4bbdfSmrg    __u32 yoffset;              /* resolution                   */
16235c4bbdfSmrg
16335c4bbdfSmrg    __u32 bits_per_pixel;       /* guess what                   */
16435c4bbdfSmrg    __u32 grayscale;            /* != 0 Graylevels instead of colors */
16535c4bbdfSmrg
16635c4bbdfSmrg    struct fb_bitfield red;     /* bitfield in fb mem if true color, */
16735c4bbdfSmrg    struct fb_bitfield green;   /* else only length is significant */
16835c4bbdfSmrg    struct fb_bitfield blue;
16935c4bbdfSmrg    struct fb_bitfield transp;  /* transparency                 */
17035c4bbdfSmrg
17135c4bbdfSmrg    __u32 nonstd;               /* != 0 Non standard pixel format */
17235c4bbdfSmrg
17335c4bbdfSmrg    __u32 activate;             /* see FB_ACTIVATE_*            */
17435c4bbdfSmrg
17535c4bbdfSmrg    __u32 height;               /* height of picture in mm    */
17635c4bbdfSmrg    __u32 width;                /* width of picture in mm     */
17735c4bbdfSmrg
17835c4bbdfSmrg    __u32 accel_flags;          /* acceleration flags (hints)   */
17935c4bbdfSmrg
18035c4bbdfSmrg    /* Timing: All values in pixclocks, except pixclock (of course) */
18135c4bbdfSmrg    __u32 pixclock;             /* pixel clock in ps (pico seconds) */
18235c4bbdfSmrg    __u32 left_margin;          /* time from sync to picture    */
18335c4bbdfSmrg    __u32 right_margin;         /* time from picture to sync    */
18435c4bbdfSmrg    __u32 upper_margin;         /* time from sync to picture    */
18535c4bbdfSmrg    __u32 lower_margin;
18635c4bbdfSmrg    __u32 hsync_len;            /* length of horizontal sync    */
18735c4bbdfSmrg    __u32 vsync_len;            /* length of vertical sync      */
18835c4bbdfSmrg    __u32 sync;                 /* see FB_SYNC_*                */
18935c4bbdfSmrg    __u32 vmode;                /* see FB_VMODE_*               */
19035c4bbdfSmrg    __u32 reserved[6];          /* Reserved for future compatibility */
19105b261ecSmrg};
19205b261ecSmrg
19305b261ecSmrgstruct fb_cmap {
19435c4bbdfSmrg    __u32 start;                /* First entry  */
19535c4bbdfSmrg    __u32 len;                  /* Number of entries */
19635c4bbdfSmrg    __u16 *red;                 /* Red values   */
19735c4bbdfSmrg    __u16 *green;
19835c4bbdfSmrg    __u16 *blue;
19935c4bbdfSmrg    __u16 *transp;              /* transparency, can be NULL */
20005b261ecSmrg};
20105b261ecSmrg
20205b261ecSmrgstruct fb_con2fbmap {
20335c4bbdfSmrg    __u32 console;
20435c4bbdfSmrg    __u32 framebuffer;
20505b261ecSmrg};
20605b261ecSmrg
20705b261ecSmrgstruct fb_monspecs {
20835c4bbdfSmrg    __u32 hfmin;                /* hfreq lower limit (Hz) */
20935c4bbdfSmrg    __u32 hfmax;                /* hfreq upper limit (Hz) */
21035c4bbdfSmrg    __u16 vfmin;                /* vfreq lower limit (Hz) */
21135c4bbdfSmrg    __u16 vfmax;                /* vfreq upper limit (Hz) */
21235c4bbdfSmrg    unsigned dpms:1;            /* supports DPMS */
21305b261ecSmrg};
21405b261ecSmrg
21505b261ecSmrg#if 1
21605b261ecSmrg
21705b261ecSmrg#define FBCMD_GET_CURRENTPAR	0xDEAD0005
21805b261ecSmrg#define FBCMD_SET_CURRENTPAR	0xDEAD8005
21905b261ecSmrg
22005b261ecSmrg#endif
22105b261ecSmrg
22235c4bbdfSmrg#if 1                           /* Preliminary */
22305b261ecSmrg
22405b261ecSmrg   /*
22505b261ecSmrg    *    Hardware Cursor
22605b261ecSmrg    */
22705b261ecSmrg
22805b261ecSmrg#define FBIOGET_FCURSORINFO     0x4607
22905b261ecSmrg#define FBIOGET_VCURSORINFO     0x4608
23005b261ecSmrg#define FBIOPUT_VCURSORINFO     0x4609
23105b261ecSmrg#define FBIOGET_CURSORSTATE     0x460A
23205b261ecSmrg#define FBIOPUT_CURSORSTATE     0x460B
23305b261ecSmrg
23405b261ecSmrgstruct fb_fix_cursorinfo {
23535c4bbdfSmrg    __u16 crsr_width;           /* width and height of the cursor in */
23635c4bbdfSmrg    __u16 crsr_height;          /* pixels (zero if no cursor)   */
23735c4bbdfSmrg    __u16 crsr_xsize;           /* cursor size in display pixels */
23835c4bbdfSmrg    __u16 crsr_ysize;
23935c4bbdfSmrg    __u16 crsr_color1;          /* colormap entry for cursor color1 */
24035c4bbdfSmrg    __u16 crsr_color2;          /* colormap entry for cursor color2 */
24105b261ecSmrg};
24205b261ecSmrg
24305b261ecSmrgstruct fb_var_cursorinfo {
24435c4bbdfSmrg    __u16 width;
24535c4bbdfSmrg    __u16 height;
24635c4bbdfSmrg    __u16 xspot;
24735c4bbdfSmrg    __u16 yspot;
24835c4bbdfSmrg    __u8 data[1];               /* field with [height][width]        */
24905b261ecSmrg};
25005b261ecSmrg
25105b261ecSmrgstruct fb_cursorstate {
25235c4bbdfSmrg    __s16 xoffset;
25335c4bbdfSmrg    __s16 yoffset;
25435c4bbdfSmrg    __u16 mode;
25505b261ecSmrg};
25605b261ecSmrg
25705b261ecSmrg#define FB_CURSOR_OFF		0
25805b261ecSmrg#define FB_CURSOR_ON		1
25905b261ecSmrg#define FB_CURSOR_FLASH		2
26005b261ecSmrg
26135c4bbdfSmrg#endif                          /* Preliminary */
26205b261ecSmrg
26335c4bbdfSmrg#endif                          /* _LINUX_FB_H */
264