diff options
Diffstat (limited to 'include/linux/fb.h')
| -rw-r--r-- | include/linux/fb.h | 616 | 
1 files changed, 616 insertions, 0 deletions
| diff --git a/include/linux/fb.h b/include/linux/fb.h new file mode 100644 index 000000000..f4ac4bf90 --- /dev/null +++ b/include/linux/fb.h @@ -0,0 +1,616 @@ +#ifndef _LINUX_FB_H +#define _LINUX_FB_H + +#include <linux/types.h> + +/* Definitions of frame buffers						*/ + +#define FB_MAX			32	/* sufficient for now */ + +#define FB_TYPE_PACKED_PIXELS		0	/* Packed Pixels	*/ + +#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_ACCEL_NONE		0	/* no hardware accelerator	*/ + +struct fb_fix_screeninfo { +	char id[16];			/* identification string eg "TT Builtin" */ +	unsigned long smem_start;	/* Start of frame buffer mem */ +					/* (physical address) */ +	__u32 smem_len;			/* Length of frame buffer mem */ +	__u32 type;			/* see FB_TYPE_*		*/ +	__u32 type_aux;			/* Interleave for interleaved Planes */ +	__u32 visual;			/* see FB_VISUAL_*		*/ +	__u16 xpanstep;			/* zero if no hardware panning  */ +	__u16 ypanstep;			/* zero if no hardware panning  */ +	__u16 ywrapstep;		/* zero if no hardware ywrap    */ +	__u32 line_length;		/* length of a line in bytes    */ +	unsigned long mmio_start;	/* Start of Memory Mapped I/O   */ +					/* (physical address) */ +	__u32 mmio_len;			/* Length of Memory Mapped I/O  */ +	__u32 accel;			/* Indicate to driver which	*/ +					/*  specific chip/card we have	*/ +	__u16 reserved[3];		/* Reserved for future compatibility */ +}; + +/* + * Interpretation of offset for color fields: All offsets are from the right, + * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you + * can use the offset as right argument to <<). A pixel afterwards is a bit + * stream and is written to video memory as that unmodified. + * + * For pseudocolor: offset and length should be the same for all color + * components. Offset specifies the position of the least significant bit + * of the pallette index in a pixel value. Length indicates the number + * of available palette entries (i.e. # of entries = 1 << length). + */ +struct fb_bitfield { +	__u32 offset;			/* beginning of bitfield	*/ +	__u32 length;			/* length of bitfield		*/ +	__u32 msb_right; + +}; + +#define FB_NONSTD_HAM		1	/* Hold-And-Modify (HAM)        */ +#define FB_NONSTD_REV_PIX_IN_B	2	/* order of pixels in each byte is reversed */ + +#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_ACTIVATE_ALL	       64	/* change all VCs on this fb	*/ +#define FB_ACTIVATE_FORCE     128	/* force apply even when no change*/ +#define FB_ACTIVATE_INV_MODE  256       /* invalidate videomode */ + +#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_SYNC_ON_GREEN	32	/* sync on green */ + +#define FB_VMODE_NONINTERLACED  0	/* non interlaced */ +#define FB_VMODE_INTERLACED	1	/* interlaced	*/ +#define FB_VMODE_DOUBLE		2	/* double scan */ +#define FB_VMODE_ODD_FLD_FIRST	4	/* interlaced: top line first */ +#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	*/ + +/* + * Display rotation support + */ +#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 { +	__u32 xres;			/* visible resolution		*/ +	__u32 yres; +	__u32 xres_virtual;		/* virtual resolution		*/ +	__u32 yres_virtual; +	__u32 xoffset;			/* offset from virtual to visible */ +	__u32 yoffset;			/* resolution			*/ + +	__u32 bits_per_pixel;		/* guess what			*/ +	__u32 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			*/ + +	__u32 nonstd;			/* != 0 Non standard pixel format */ + +	__u32 activate;			/* see FB_ACTIVATE_*		*/ + +	__u32 height;			/* height of picture in mm    */ +	__u32 width;			/* width of picture in mm     */ + +	__u32 accel_flags;		/* (OBSOLETE) see fb_info.flags */ + +	/* Timing: All values in pixclocks, except pixclock (of course) */ +	__u32 pixclock;			/* pixel clock in ps (pico seconds) */ +	__u32 left_margin;		/* time from sync to picture	*/ +	__u32 right_margin;		/* time from picture to sync	*/ +	__u32 upper_margin;		/* time from sync to picture	*/ +	__u32 lower_margin; +	__u32 hsync_len;		/* length of horizontal sync	*/ +	__u32 vsync_len;		/* length of vertical sync	*/ +	__u32 sync;			/* see FB_SYNC_*		*/ +	__u32 vmode;			/* see FB_VMODE_*		*/ +	__u32 rotate;			/* angle we rotate counter clockwise */ +	__u32 reserved[5];		/* Reserved for future compatibility */ +}; + +struct fb_cmap { +	__u32 start;			/* First entry	*/ +	__u32 len;			/* Number of entries */ +	__u16 *red;			/* Red values	*/ +	__u16 *green; +	__u16 *blue; +	__u16 *transp;			/* transparency, can be NULL */ +}; + +struct fb_con2fbmap { +	__u32 console; +	__u32 framebuffer; +}; + +/* VESA Blanking Levels */ +#define VESA_NO_BLANKING        0 +#define VESA_VSYNC_SUSPEND      1 +#define VESA_HSYNC_SUSPEND      2 +#define VESA_POWERDOWN          3 + + +enum { +	/* screen: unblanked, hsync: on,  vsync: on */ +	FB_BLANK_UNBLANK       = VESA_NO_BLANKING, + +	/* screen: blanked,   hsync: on,  vsync: on */ +	FB_BLANK_NORMAL        = VESA_NO_BLANKING + 1, + +	/* screen: blanked,   hsync: on,  vsync: off */ +	FB_BLANK_VSYNC_SUSPEND = VESA_VSYNC_SUSPEND + 1, + +	/* screen: blanked,   hsync: off, vsync: on */ +	FB_BLANK_HSYNC_SUSPEND = VESA_HSYNC_SUSPEND + 1, + +	/* screen: blanked,   hsync: off, vsync: off */ +	FB_BLANK_POWERDOWN     = VESA_POWERDOWN + 1 +}; + +#define FB_VBLANK_VBLANKING	0x001	/* currently in a vertical blank */ +#define FB_VBLANK_HBLANKING	0x002	/* currently in a horizontal blank */ +#define FB_VBLANK_HAVE_VBLANK	0x004	/* vertical blanks can be detected */ +#define FB_VBLANK_HAVE_HBLANK	0x008	/* horizontal blanks can be detected */ +#define FB_VBLANK_HAVE_COUNT	0x010	/* global retrace counter is available */ +#define FB_VBLANK_HAVE_VCOUNT	0x020	/* the vcount field is valid */ +#define FB_VBLANK_HAVE_HCOUNT	0x040	/* the hcount field is valid */ +#define FB_VBLANK_VSYNCING	0x080	/* currently in a vsync */ +#define FB_VBLANK_HAVE_VSYNC	0x100	/* verical syncs can be detected */ + +struct fb_vblank { +	__u32 flags;			/* FB_VBLANK flags */ +	__u32 count;			/* counter of retraces since boot */ +	__u32 vcount;			/* current scanline position */ +	__u32 hcount;			/* current scandot position */ +	__u32 reserved[4];		/* reserved for future compatibility */ +}; + +/* Internal HW accel */ +#define ROP_COPY 0 +#define ROP_XOR  1 + +struct fb_copyarea { +	__u32 dx; +	__u32 dy; +	__u32 width; +	__u32 height; +	__u32 sx; +	__u32 sy; +}; + +struct fb_fillrect { +	__u32 dx;	/* screen-relative */ +	__u32 dy; +	__u32 width; +	__u32 height; +	__u32 color; +	__u32 rop; +}; + +struct fb_image { +	__u32 dx;		/* Where to place image */ +	__u32 dy; +	__u32 width;		/* Size of image */ +	__u32 height; +	__u32 fg_color;		/* Only used when a mono bitmap */ +	__u32 bg_color; +	__u8  depth;		/* Depth of the image */ +	const char *data;	/* Pointer to image data */ +	struct fb_cmap cmap;	/* color map info */ +}; + +/* + * hardware cursor control + */ + +#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 { +	__u16 x, y; +}; + +struct fb_cursor { +	__u16 set;		/* what to set */ +	__u16 enable;		/* cursor on/off */ +	__u16 rop;		/* bitop operation */ +	const char *mask;	/* cursor mask bits */ +	struct fbcurpos hot;	/* cursor hot spot */ +	struct fb_image	image;	/* Cursor image */ +}; + +#ifdef CONFIG_FB_BACKLIGHT +/* Settings for the generic backlight code */ +#define FB_BACKLIGHT_LEVELS	128 +#define FB_BACKLIGHT_MAX	0xFF +#endif + +#ifdef __KERNEL__ + +struct vm_area_struct; +struct fb_info; +struct device; +struct file; + +/* Definitions below are used in the parsed monitor specs */ +#define FB_DPMS_ACTIVE_OFF	1 +#define FB_DPMS_SUSPEND		2 +#define FB_DPMS_STANDBY		4 + +#define FB_DISP_DDI		1 +#define FB_DISP_ANA_700_300	2 +#define FB_DISP_ANA_714_286	4 +#define FB_DISP_ANA_1000_400	8 +#define FB_DISP_ANA_700_000	16 + +#define FB_DISP_MONO		32 +#define FB_DISP_RGB		64 +#define FB_DISP_MULTI		128 +#define FB_DISP_UNKNOWN		256 + +#define FB_SIGNAL_NONE		0 +#define FB_SIGNAL_BLANK_BLANK	1 +#define FB_SIGNAL_SEPARATE	2 +#define FB_SIGNAL_COMPOSITE	4 +#define FB_SIGNAL_SYNC_ON_GREEN	8 +#define FB_SIGNAL_SERRATION_ON	16 + +#define FB_MISC_PRIM_COLOR	1 +#define FB_MISC_1ST_DETAIL	2	/* First Detailed Timing is preferred */ +struct fb_chroma { +	__u32 redx;	/* in fraction of 1024 */ +	__u32 greenx; +	__u32 bluex; +	__u32 whitex; +	__u32 redy; +	__u32 greeny; +	__u32 bluey; +	__u32 whitey; +}; + +struct fb_monspecs { +	struct fb_chroma chroma; +	struct fb_videomode *modedb;	/* mode database */ +	__u8  manufacturer[4];		/* Manufacturer */ +	__u8  monitor[14];		/* Monitor String */ +	__u8  serial_no[14];		/* Serial Number */ +	__u8  ascii[14];		/* ? */ +	__u32 modedb_len;		/* mode database length */ +	__u32 model;			/* Monitor Model */ +	__u32 serial;			/* Serial Number - Integer */ +	__u32 year;			/* Year manufactured */ +	__u32 week;			/* Week Manufactured */ +	__u32 hfmin;			/* hfreq lower limit (Hz) */ +	__u32 hfmax;			/* hfreq upper limit (Hz) */ +	__u32 dclkmin;			/* pixelclock lower limit (Hz) */ +	__u32 dclkmax;			/* pixelclock upper limit (Hz) */ +	__u16 input;			/* display type - see FB_DISP_* */ +	__u16 dpms;			/* DPMS support - see FB_DPMS_ */ +	__u16 signal;			/* Signal Type - see FB_SIGNAL_* */ +	__u16 vfmin;			/* vfreq lower limit (Hz) */ +	__u16 vfmax;			/* vfreq upper limit (Hz) */ +	__u16 gamma;			/* Gamma - in fractions of 100 */ +	__u16 gtf	: 1;		/* supports GTF */ +	__u16 misc;			/* Misc flags - see FB_MISC_* */ +	__u8  version;			/* EDID version... */ +	__u8  revision;			/* ...and revision */ +	__u8  max_x;			/* Maximum horizontal size (cm) */ +	__u8  max_y;			/* Maximum vertical size (cm) */ +}; + +struct fb_cmap_user { +	__u32 start;			/* First entry	*/ +	__u32 len;			/* Number of entries */ +	__u16 *red;		/* Red values	*/ +	__u16 *green; +	__u16 *blue; +	__u16 *transp;		/* transparency, can be NULL */ +}; + +struct fb_image_user { +	__u32 dx;			/* Where to place image */ +	__u32 dy; +	__u32 width;			/* Size of image */ +	__u32 height; +	__u32 fg_color;			/* Only used when a mono bitmap */ +	__u32 bg_color; +	__u8  depth;			/* Depth of the image */ +	const char *data;	/* Pointer to image data */ +	struct fb_cmap_user cmap;	/* color map info */ +}; + +struct fb_cursor_user { +	__u16 set;			/* what to set */ +	__u16 enable;			/* cursor on/off */ +	__u16 rop;			/* bitop operation */ +	const char *mask;	/* cursor mask bits */ +	struct fbcurpos hot;		/* cursor hot spot */ +	struct fb_image_user image;	/* Cursor image */ +}; + +/* + * Register/unregister for framebuffer events + */ + +/*	The resolution of the passed in fb_info about to change */ +#define FB_EVENT_MODE_CHANGE		0x01 +/*	The display on this fb_info is beeing suspended, no access to the + *	framebuffer is allowed any more after that call returns + */ +#define FB_EVENT_SUSPEND		0x02 +/*	The display on this fb_info was resumed, you can restore the display + *	if you own it + */ +#define FB_EVENT_RESUME			0x03 +/*      An entry from the modelist was removed */ +#define FB_EVENT_MODE_DELETE            0x04 +/*      A driver registered itself */ +#define FB_EVENT_FB_REGISTERED          0x05 +/*      A driver unregistered itself */ +#define FB_EVENT_FB_UNREGISTERED        0x06 +/*      CONSOLE-SPECIFIC: get console to framebuffer mapping */ +#define FB_EVENT_GET_CONSOLE_MAP        0x07 +/*      CONSOLE-SPECIFIC: set console to framebuffer mapping */ +#define FB_EVENT_SET_CONSOLE_MAP        0x08 +/*      A hardware display blank change occured */ +#define FB_EVENT_BLANK                  0x09 +/*      Private modelist is to be replaced */ +#define FB_EVENT_NEW_MODELIST           0x0A +/*	The resolution of the passed in fb_info about to change and +        all vc's should be changed         */ +#define FB_EVENT_MODE_CHANGE_ALL	0x0B +/*	A software display blank change occured */ +#define FB_EVENT_CONBLANK               0x0C +/*      Get drawing requirements        */ +#define FB_EVENT_GET_REQ                0x0D +/*      Unbind from the console if possible */ +#define FB_EVENT_FB_UNBIND              0x0E + +struct fb_event { +	struct fb_info *info; +	void *data; +}; + +struct fb_blit_caps { +	u32 x; +	u32 y; +	u32 len; +	u32 flags; +}; + +/* + * Pixmap structure definition + * + * The purpose of this structure is to translate data + * from the hardware independent format of fbdev to what + * format the hardware needs. + */ + +#define FB_PIXMAP_DEFAULT 1     /* used internally by fbcon */ +#define FB_PIXMAP_SYSTEM  2     /* memory is in system RAM  */ +#define FB_PIXMAP_IO      4     /* memory is iomapped       */ +#define FB_PIXMAP_SYNC    256   /* set if GPU can DMA       */ + +struct fb_pixmap { +	u8  *addr;		/* pointer to memory			*/ +	u32 size;		/* size of buffer in bytes		*/ +	u32 offset;		/* current offset to buffer		*/ +	u32 buf_align;		/* byte alignment of each bitmap	*/ +	u32 scan_align;		/* alignment per scanline		*/ +	u32 access_align;	/* alignment per read/write (bits)	*/ +	u32 flags;		/* see FB_PIXMAP_*			*/ +	u32 blit_x;             /* supported bit block dimensions (1-32)*/ +	u32 blit_y;             /* Format: blit_x = 1 << (width - 1)    */ +	                        /*         blit_y = 1 << (height - 1)   */ +	                        /* if 0, will be set to 0xffffffff (all)*/ +	/* access methods */ +	void (*writeio)(struct fb_info *info, void *dst, void *src, unsigned int size); +	void (*readio) (struct fb_info *info, void *dst, void *src, unsigned int size); +}; + +#ifdef CONFIG_FB_DEFERRED_IO +struct fb_deferred_io { +	/* delay between mkwrite and deferred handler */ +	unsigned long delay; +	struct mutex lock; /* mutex that protects the page list */ +	struct list_head pagelist; /* list of touched pages */ +	/* callback */ +	void (*deferred_io)(struct fb_info *info, struct list_head *pagelist); +}; +#endif + +/* FBINFO_* = fb_info.flags bit flags */ +#define FBINFO_MODULE		0x0001	/* Low-level driver is a module */ +#define FBINFO_HWACCEL_DISABLED	0x0002 +	/* When FBINFO_HWACCEL_DISABLED is set: +	 *  Hardware acceleration is turned off.  Software implementations +	 *  of required functions (copyarea(), fillrect(), and imageblit()) +	 *  takes over; acceleration engine should be in a quiescent state */ + +/* hints */ +#define FBINFO_PARTIAL_PAN_OK	0x0040 /* otw use pan only for double-buffering */ +#define FBINFO_READS_FAST	0x0080 /* soft-copy faster than rendering */ + +/* + * A driver may set this flag to indicate that it does want a set_par to be + * called every time when fbcon_switch is executed. The advantage is that with + * this flag set you can really be sure that set_par is always called before + * any of the functions dependant on the correct hardware state or altering + * that state, even if you are using some broken X releases. The disadvantage + * is that it introduces unwanted delays to every console switch if set_par + * is slow. It is a good idea to try this flag in the drivers initialization + * code whenever there is a bug report related to switching between X and the + * framebuffer console. + */ +#define FBINFO_MISC_ALWAYS_SETPAR   0x40000 + +/* + * Host and GPU endianness differ. + */ +#define FBINFO_FOREIGN_ENDIAN	0x100000 +/* + * Big endian math. This is the same flags as above, but with different + * meaning, it is set by the fb subsystem depending FOREIGN_ENDIAN flag + * and host endianness. Drivers should not use this flag. + */ +#define FBINFO_BE_MATH  0x100000 + +struct fb_info { +	int node; +	int flags; +	struct fb_var_screeninfo var;	/* Current var */ +	struct fb_fix_screeninfo fix;	/* Current fix */ +	struct fb_monspecs monspecs;	/* Current Monitor specs */ +	struct fb_pixmap pixmap;	/* Image hardware mapper */ +	struct fb_pixmap sprite;	/* Cursor hardware mapper */ +	struct fb_cmap cmap;		/* Current cmap */ +	struct list_head modelist;      /* mode list */ +	struct fb_videomode *mode;	/* current mode */ + +	char *screen_base;	/* Virtual address */ +	unsigned long screen_size;	/* Amount of ioremapped VRAM or 0 */ +	void *pseudo_palette;		/* Fake palette of 16 colors */ +#define FBINFO_STATE_RUNNING	0 +#define FBINFO_STATE_SUSPENDED	1 +	u32 state;			/* Hardware state i.e suspend */ +	void *fbcon_par;                /* fbcon use-only private area */ +	/* From here on everything is device dependent */ +	void *par; +}; + +#define FBINFO_DEFAULT	0 + +#define FBINFO_FLAG_MODULE	FBINFO_MODULE +#define FBINFO_FLAG_DEFAULT	FBINFO_DEFAULT + +// This will go away +#if defined(__sparc__) + +/* We map all of our framebuffers such that big-endian accesses + * are what we want, so the following is sufficient. + */ + +// This will go away +#define fb_readb sbus_readb +#define fb_readw sbus_readw +#define fb_readl sbus_readl +#define fb_readq sbus_readq +#define fb_writeb sbus_writeb +#define fb_writew sbus_writew +#define fb_writel sbus_writel +#define fb_writeq sbus_writeq +#define fb_memset sbus_memset_io + +#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__) + +#define fb_readb __raw_readb +#define fb_readw __raw_readw +#define fb_readl __raw_readl +#define fb_readq __raw_readq +#define fb_writeb __raw_writeb +#define fb_writew __raw_writew +#define fb_writel __raw_writel +#define fb_writeq __raw_writeq +#define fb_memset memset_io + +#else + +#define fb_readb(addr) (*(volatile u8 *) (addr)) +#define fb_readw(addr) (*(volatile u16 *) (addr)) +#define fb_readl(addr) (*(volatile u32 *) (addr)) +#define fb_readq(addr) (*(volatile u64 *) (addr)) +#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b)) +#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b)) +#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b)) +#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b)) +#define fb_memset memset + +#endif + +#define FB_LEFT_POS(p, bpp)          (fb_be_math(p) ? (32 - (bpp)) : 0) +#define FB_SHIFT_HIGH(p, val, bits)  (fb_be_math(p) ? (val) >> (bits) : \ +						      (val) << (bits)) +#define FB_SHIFT_LOW(p, val, bits)   (fb_be_math(p) ? (val) << (bits) : \ +						      (val) >> (bits)) +/* drivers/video/fbmon.c */ +#define FB_MAXTIMINGS		0 +#define FB_VSYNCTIMINGS		1 +#define FB_HSYNCTIMINGS		2 +#define FB_DCLKTIMINGS		3 +#define FB_IGNOREMON		0x100 + +#define FB_MODE_IS_UNKNOWN	0 +#define FB_MODE_IS_DETAILED	1 +#define FB_MODE_IS_STANDARD	2 +#define FB_MODE_IS_VESA		4 +#define FB_MODE_IS_CALCULATED	8 +#define FB_MODE_IS_FIRST	16 +#define FB_MODE_IS_FROM_VAR     32 + + +/* drivers/video/fbcmap.c */ + +extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp); +extern void fb_dealloc_cmap(struct fb_cmap *cmap); +extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to); +extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to); +extern int fb_set_cmap(struct fb_cmap *cmap, struct fb_info *fb_info); +extern int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *fb_info); +extern const struct fb_cmap *fb_default_cmap(int len); +extern void fb_invert_cmaps(void); + +struct fb_videomode { +	const char *name;	/* optional */ +	u32 refresh;		/* optional */ +	u32 xres; +	u32 yres; +	u32 pixclock; +	u32 left_margin; +	u32 right_margin; +	u32 upper_margin; +	u32 lower_margin; +	u32 hsync_len; +	u32 vsync_len; +	u32 sync; +	u32 vmode; +	u32 flag; +}; + +#endif /* __KERNEL__ */ + +#endif /* _LINUX_FB_H */ |