Loading...
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 | #ifndef _LINUX_FB_H
#define _LINUX_FB_H
/* Definitions of frame buffers */
/* ioctls
0x46 is 'F' */
#define FBIOGET_VSCREENINFO 0x4600
#define FBIOPUT_VSCREENINFO 0x4601
#define FBIOGET_FSCREENINFO 0x4602
#define FBIOGETCMAP 0x4604
#define FBIOPUTCMAP 0x4605
#define FBIOPAN_DISPLAY 0x4606
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
#define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */
#define FB_VISUAL_MONO01 0 /* Monochr. 1=Black 0=White */
#define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */
#define FB_VISUAL_TRUECOLOR 2 /* True color */
#define FB_VISUAL_PSEUDOCOLOR 3 /* Pseudo color (like atari) */
#define FB_VISUAL_DIRECTCOLOR 4 /* Direct color */
#define FB_VISUAL_STATIC_PSEUDOCOLOR 5 /* Pseudo color readonly */
#define FB_VISUAL_STATIC_DIRECTCOLOR 6 /* Direct color readonly */
struct fb_fix_screeninfo {
char id[16]; /* identification string eg "TT Builtin" */
unsigned long smem_start; /* Start of frame buffer mem */
unsigned long smem_len; /* Length of frame buffer mem */
int type; /* see FB_TYPE_* */
int type_aux; /* Interleave for interleaved Planes */
int visual; /* see FB_VISUAL_* */
u_short xpanstep; /* zero if no hardware panning */
u_short ypanstep; /* zero if no hardware panning */
u_short ywrapstep; /* zero if no hardware ywrap */
u_long line_length; /* length of a line in bytes */
short reserved[9]; /* Reserved for future compatibility */
};
struct fb_bitfield {
int offset; /* beginning of bitfield */
int length; /* length of bitfield */
int msb_right; /* != 0 : Most significant bit is */
/* right */
};
#define FB_NONSTD_HAM 1 /* Hold-And-Modify (HAM) */
#define FB_ACTIVATE_NOW 0 /* set values immediately (or vbl)*/
#define FB_ACTIVATE_NXTOPEN 1 /* activate on next open */
#define FB_ACTIVATE_TEST 2 /* don't set, round up impossible */
#define FB_ACTIVATE_MASK 15
/* values */
#define FB_ACTIVATE_VBL 16 /* activate values on next vbl */
#define FB_CHANGE_CMAP_VBL 32 /* change colormap on vbl */
#define FB_ACCEL_NONE 0 /* no hardware accelerator */
#define FB_ACCEL_ATARIBLITT 1 /* Atari Blitter */
#define FB_ACCEL_AMIGABLITT 2 /* Amiga Blitter */
#define FB_ACCEL_CYBERVISION 3 /* Cybervision64 (S3 Trio64) */
#define FB_ACCEL_RETINAZ3 4 /* RetinaZ3 (NCR77C32BLT) */
#define FB_SYNC_HOR_HIGH_ACT 1 /* horizontal sync high active */
#define FB_SYNC_VERT_HIGH_ACT 2 /* vertical sync high active */
#define FB_SYNC_EXT 4 /* external sync */
#define FB_SYNC_COMP_HIGH_ACT 8 /* composite sync high active */
#define FB_SYNC_BROADCAST 16 /* broadcast video timings */
/* vtotal = 144d/288n/576i => PAL */
/* vtotal = 121d/242n/484i => NTSC */
#define FB_VMODE_NONINTERLACED 0 /* non interlaced */
#define FB_VMODE_INTERLACED 1 /* interlaced */
#define FB_VMODE_DOUBLE 2 /* double scan */
#define FB_VMODE_MASK 255
#define FB_VMODE_YWRAP 256 /* ywrap instead of panning */
#define FB_VMODE_SMOOTH_XPAN 512 /* smooth xpan possible (internally used) */
#define FB_VMODE_CONUPDATE 512 /* don't update x/yoffset */
struct fb_var_screeninfo {
int xres; /* visible resolution */
int yres;
int xres_virtual; /* virtual resolution */
int yres_virtual;
int xoffset; /* offset from virtual to visible */
int yoffset; /* resolution */
int bits_per_pixel; /* guess what */
int grayscale; /* != 0 Graylevels instead of colors */
struct fb_bitfield red; /* bitfield in fb mem if true color, */
struct fb_bitfield green; /* else only length is significant */
struct fb_bitfield blue;
struct fb_bitfield transp; /* transparency */
int nonstd; /* != 0 Non standard pixel format */
int activate; /* see FB_ACTIVATE_* */
int height; /* height of picture in mm */
int width; /* width of picture in mm */
int accel; /* see FB_ACCEL_* */
/* Timing: All values in pixclocks, except pixclock (of course) */
unsigned long pixclock; /* pixel clock in ps (pico seconds) */
unsigned long left_margin; /* time from sync to picture */
unsigned long right_margin; /* time from picture to sync */
unsigned long upper_margin; /* time from sync to picture */
unsigned long lower_margin;
unsigned long hsync_len; /* length of horizontal sync */
unsigned long vsync_len; /* length of vertical sync */
int sync; /* see FB_SYNC_* */
int vmode; /* see FB_VMODE_* */
int reserved[6]; /* Reserved for future compatibility */
};
struct fb_cmap {
int start; /* First entry */
int len; /* Number of entries */
unsigned short *red; /* Red values */
unsigned short *green;
unsigned short *blue;
unsigned short *transp; /* transparency, can be NULL */
};
#ifdef __KERNEL__
#include <linux/fs.h>
struct fb_ops {
/* get non settable parameters */
int (*fb_get_fix) (struct fb_fix_screeninfo *, int);
/* get settable parameters */
int (*fb_get_var) (struct fb_var_screeninfo *, int);
/* set settable parameters */
int (*fb_set_var) (struct fb_var_screeninfo *, int);
/* get colormap */
int (*fb_get_cmap) (struct fb_cmap *, int, int);
/* set colormap */
int (*fb_set_cmap) (struct fb_cmap *, int, int);
/* pan display */
int (*fb_pan_display) (struct fb_var_screeninfo *, int);
/* perform fb specific ioctl */
int (*fb_ioctl)(struct inode *, struct file *, unsigned int,
unsigned long, int);
};
int register_framebuffer(char *, int *, struct fb_ops *, int,
struct fb_var_screeninfo *);
int unregister_framebuffer(int);
/*
* This is the interface between the low-level console driver and the
* low-level frame buffer device
*/
struct display {
/* Filled in by the frame buffer device */
struct fb_var_screeninfo var; /* variable infos. yoffset and vmode */
/* are updated by fbcon.c */
struct fb_cmap cmap; /* colormap */
u_char *screen_base; /* pointer to top of virtual screen */
int visual;
int type; /* see FB_TYPE_* */
int type_aux; /* Interleave for interleaved Planes */
u_short ypanstep; /* zero if no hardware ypan */
u_short ywrapstep; /* zero if no hardware ywrap */
u_long line_length; /* length of a line in bytes */
u_short can_soft_blank; /* zero if no hardware blanking */
u_short inverse; /* != 0 text black on white as default */
#if 0
struct fb_fix_cursorinfo fcrsr;
struct fb_var_cursorinfo *vcrsr;
struct fb_cursorstate crsrstate;
#endif
/* Filled in by the low-level console driver */
struct vc_data *conp; /* pointer to console data */
int vrows; /* number of virtual rows */
int cursor_x; /* current cursor position */
int cursor_y;
int fgcol; /* text colors */
int bgcol;
u_long next_line; /* offset to one line below */
u_long next_plane; /* offset to next plane */
u_char *fontdata; /* Font associated to this display */
int fontheight;
int fontwidth;
int userfont; /* != 0 if fontdata kmalloc()ed */
struct display_switch *dispsw; /* low level operations */
u_short scrollmode; /* Scroll Method */
short yscroll; /* Hardware scrolling */
};
struct fb_info {
char modename[40]; /* at boottime detected video mode */
struct display *disp; /* pointer to display variables */
char fontname[40]; /* default font name */
int (*changevar)(int); /* tell console var has changed */
int (*switch_con)(int); /* tell fb to switch consoles */
int (*updatevar)(int); /* tell fb to update the vars */
void (*blank)(int); /* tell fb to (un)blank the screen */
int (*setcmap)(struct fb_cmap *, int); /* tell fb to set the colormap */
};
#endif /* __KERNEL__ */
#if 1
#define FBCMD_GET_CURRENTPAR 0xDEAD0005
#define FBCMD_SET_CURRENTPAR 0xDEAD8005
#endif
#if 1 /* Preliminary */
/*
* Hardware Cursor
*/
#define FBIOGET_FCURSORINFO 0x4607
#define FBIOGET_VCURSORINFO 0x4608
#define FBIOPUT_VCURSORINFO 0x4609
#define FBIOGET_CURSORSTATE 0x460A
#define FBIOPUT_CURSORSTATE 0x460B
struct fb_fix_cursorinfo {
u_short crsr_width; /* width and height of the cursor in */
u_short crsr_height; /* pixels (zero if no cursor) */
u_short crsr_xsize; /* cursor size in display pixels */
u_short crsr_ysize;
u_short crsr_color1; /* colormap entry for cursor color1 */
u_short crsr_color2; /* colormap entry for cursor color2 */
};
struct fb_var_cursorinfo {
u_short width;
u_short height;
u_short xspot;
u_short yspot;
u_char data[1]; /* field with [height][width] */
};
struct fb_cursorstate {
short xoffset;
short yoffset;
u_short mode;
};
#define FB_CURSOR_OFF 0
#define FB_CURSOR_ON 1
#define FB_CURSOR_FLASH 2
#define FBCMD_DRAWLINE 0x4621
#define FBCMD_MOVE 0x4622
#define FB_LINE_XOR 1
#define FB_LINE_BOX 2
#define FB_LINE_FILLED 4
struct fb_line {
int start_x;
int start_y;
int end_x;
int end_y;
int color;
int option;
};
struct fb_move {
int src_x;
int src_y;
int dest_x;
int dest_y;
int height;
int width;
};
#endif /* Preliminary */
#endif /* _LINUX_FB_H */
|