changeset 12941:876bcf984097

This fbset version is outdated and it is generally available in distros.
author diego
date Tue, 03 Aug 2004 11:25:18 +0000
parents b205f8ca892a
children abe577c2b12e
files TOOLS/TVout/fbset/INSTALL TOOLS/TVout/fbset/Makefile TOOLS/TVout/fbset/fb.h TOOLS/TVout/fbset/fb.modes.5 TOOLS/TVout/fbset/fbset.8 TOOLS/TVout/fbset/fbset.c TOOLS/TVout/fbset/fbset.h TOOLS/TVout/fbset/modeline2fb TOOLS/TVout/fbset/modes.l TOOLS/TVout/fbset/modes.y
diffstat 10 files changed, 0 insertions(+), 2625 deletions(-) [+]
line wrap: on
line diff
--- a/TOOLS/TVout/fbset/INSTALL	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-
-
-			FBSET INSTALLATION GUIDE
-
-
-Change the current directory to the directory containing the fbset sources and
-type
-
-    make install
-
-This will create the fbset binary and install it, together with the manual
-pages. It also creates the standard frame buffer special device nodes.
-
-
-The etc subdirectory contains sample frame buffer mode definitions files. Copy
-one of them to /etc/fb.modes and edit it to your needs.
-
-
-Enjoy!
-
--- a/TOOLS/TVout/fbset/Makefile	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#
-# Linux Frame Buffer Device Configuration
-#
-
-CFLAGS =	-Wall -O2 -I.
-BISON =		bison -d
-FLEX =		flex
-INSTALL =	install
-RM =		rm -f
-
-All:		fbset
-
-
-fbset:		fbset.o modes.tab.o lex.yy.o
-
-fbset.o:	fbset.c fbset.h fb.h
-modes.tab.o:	modes.tab.c fbset.h fb.h
-lex.yy.o:	lex.yy.c fbset.h modes.tab.h
-
-lex.yy.c:	modes.l
-		$(FLEX) modes.l
-
-modes.tab.c:	modes.y
-		$(BISON) modes.y
-
-install:	fbset
-		if [ -f /sbin/fbset ]; then rm /sbin/fbset; fi
-		$(INSTALL) fbset /usr/sbin
-		$(INSTALL) fbset.8 /usr/man/man8
-		$(INSTALL) fb.modes.5 /usr/man/man5
-		if [ ! -c /dev/fb0 ]; then mknod /dev/fb0 c 29 0; fi
-		if [ ! -c /dev/fb1 ]; then mknod /dev/fb1 c 29 32; fi
-		if [ ! -c /dev/fb2 ]; then mknod /dev/fb2 c 29 64; fi
-		if [ ! -c /dev/fb3 ]; then mknod /dev/fb3 c 29 96; fi
-		if [ ! -c /dev/fb4 ]; then mknod /dev/fb4 c 29 128; fi
-		if [ ! -c /dev/fb5 ]; then mknod /dev/fb5 c 29 160; fi
-		if [ ! -c /dev/fb6 ]; then mknod /dev/fb6 c 29 192; fi
-		if [ ! -c /dev/fb7 ]; then mknod /dev/fb7 c 29 224; fi
-
-clean:
-		$(RM) *.o fbset lex.yy.c modes.tab.c modes.tab.h
--- a/TOOLS/TVout/fbset/fb.h	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +0,0 @@
-#ifndef _LINUX_FB_H
-#define _LINUX_FB_H
-
-#include <asm/types.h>
-
-/* Definitions of frame buffers						*/
-
-#define FB_MAJOR	29
-
-#define FB_MODES_SHIFT		5	/* 32 modes per framebuffer */
-#define FB_NUM_MINORS		256	/* 256 Minors               */
-#define FB_MAX			(FB_NUM_MINORS / (1 << FB_MODES_SHIFT))
-#define GET_FB_IDX(node)	(MINOR(node) >> FB_MODES_SHIFT)
-
-/* 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
-/* 0x4607-0x460B are defined below */
-/* #define FBIOGET_MONITORSPEC	0x460C */
-/* #define FBIOPUT_MONITORSPEC	0x460D */
-/* #define FBIOSWITCH_MONIBIT	0x460E */
-#define FBIOGET_CON2FBMAP	0x460F
-#define FBIOPUT_CON2FBMAP	0x4610
-
-#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_TYPE_TEXT			3	/* Text/attributes	*/
-#define FB_TYPE_VGA_PLANES		4	/* EGA/VGA planes	*/
-
-#define FB_AUX_TEXT_MDA		0	/* Monochrome text */
-#define FB_AUX_TEXT_CGA		1	/* CGA/EGA/VGA Color text */
-#define FB_AUX_TEXT_S3_MMIO	2	/* S3 MMIO fasttext */
-#define FB_AUX_TEXT_MGA_STEP16	3	/* MGA Millenium I: text, attr, 14 reserved bytes */
-#define FB_AUX_TEXT_MGA_STEP8	4	/* other MGAs:      text, attr,  6 reserved bytes */
-
-#define FB_AUX_VGA_PLANES_VGA4		0	/* 16 color planes (EGA/VGA) */
-#define FB_AUX_VGA_PLANES_CFB4		1	/* CFB4 in planes (VGA) */
-#define FB_AUX_VGA_PLANES_CFB8		2	/* CFB8 in planes (VGA) */
-
-#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	*/
-#define FB_ACCEL_ATARIBLITT	1	/* Atari Blitter		*/
-#define FB_ACCEL_AMIGABLITT	2	/* Amiga Blitter                */
-#define FB_ACCEL_S3_TRIO64	3	/* Cybervision64 (S3 Trio64)    */
-#define FB_ACCEL_NCR_77C32BLT	4	/* RetinaZ3 (NCR 77C32BLT)      */
-#define FB_ACCEL_S3_VIRGE	5	/* Cybervision64/3D (S3 ViRGE)	*/
-#define FB_ACCEL_ATI_MACH64GX	6	/* ATI Mach 64GX family		*/
-#define FB_ACCEL_DEC_TGA	7	/* DEC 21030 TGA		*/
-#define FB_ACCEL_ATI_MACH64CT	8	/* ATI Mach 64CT family		*/
-#define FB_ACCEL_ATI_MACH64VT	9	/* ATI Mach 64CT family VT class */
-#define FB_ACCEL_ATI_MACH64GT	10	/* ATI Mach 64CT family GT class */
-#define FB_ACCEL_SUN_CREATOR	11	/* Sun Creator/Creator3D	*/
-#define FB_ACCEL_SUN_CGSIX	12	/* Sun cg6			*/
-#define FB_ACCEL_SUN_LEO	13	/* Sun leo/zx			*/
-#define FB_ACCEL_IMS_TWINTURBO	14	/* IMS Twin Turbo		*/
-#define FB_ACCEL_3DLABS_PERMEDIA2 15	/* 3Dlabs Permedia 2		*/
-#define FB_ACCEL_MATROX_MGA2064W 16	/* Matrox MGA2064W (Millenium)	*/
-#define FB_ACCEL_MATROX_MGA1064SG 17	/* Matrox MGA1064SG (Mystique)	*/
-#define FB_ACCEL_MATROX_MGA2164W 18	/* Matrox MGA2164W (Millenium II) */
-#define FB_ACCEL_MATROX_MGA2164W_AGP 19	/* Matrox MGA2164W (Millenium II) */
-#define FB_ACCEL_MATROX_MGAG100	20	/* Matrox G100 (Productiva G100) */
-#define FB_ACCEL_MATROX_MGAG200	21	/* Matrox G200 (Myst, Mill, ...) */
-#define FB_ACCEL_SUN_CG14	22	/* Sun cgfourteen		 */
-#define FB_ACCEL_SUN_BWTWO	23	/* Sun bwtwo			 */
-#define FB_ACCEL_SUN_CGTHREE	24	/* Sun cgthree			 */
-#define FB_ACCEL_SUN_TCX	25	/* Sun tcx			 */
-#define FB_ACCEL_MATROX_MGAG400	26	/* Matrox G400			 */
-
-struct fb_fix_screeninfo {
-	char id[16];			/* identification string eg "TT Builtin" */
-	char *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    */
-	char *mmio_start;		/* Start of Memory Mapped I/O   */
-					/* (physical address) */
-	__u32 mmio_len;			/* Length of Memory Mapped I/O  */
-	__u32 accel;			/* Type of acceleration available */
-	__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. This implies
- * big-endian byte order if bits_per_pixel is greater than 8.
- */
-struct fb_bitfield {
-	__u32 offset;			/* beginning of bitfield	*/
-	__u32 length;			/* length of bitfield		*/
-	__u32 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_ACTIVATE_ALL	       64	/* change all VCs on this fb	*/
-
-#define FB_ACCELF_TEXT		1	/* text mode acceleration */
-
-#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_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 {
-	__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;		/* acceleration flags (hints)	*/
-
-	/* 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 reserved[6];		/* 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;
-};
-
-struct fb_monspecs {
-	__u32 hfmin;			/* hfreq lower limit (Hz) */
-	__u32 hfmax; 			/* hfreq upper limit (Hz) */
-	__u16 vfmin;			/* vfreq lower limit (Hz) */
-	__u16 vfmax;			/* vfreq upper limit (Hz) */
-	unsigned dpms : 1;		/* supports DPMS */
-};
-
-#ifdef __KERNEL__
-
-#include <linux/fs.h>
-
-
-struct fb_info;
-struct fb_info_gen;
-struct vm_area_struct;
-struct file;
-
-    /*
-     *  Frame buffer operations
-     */
-
-struct fb_ops {
-    /* open/release and usage marking */
-    int (*fb_open)(struct fb_info *info, int user);
-    int (*fb_release)(struct fb_info *info, int user);
-    /* get non settable parameters */
-    int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con,
-		      struct fb_info *info); 
-    /* get settable parameters */
-    int (*fb_get_var)(struct fb_var_screeninfo *var, int con,
-		      struct fb_info *info);		
-    /* set settable parameters */
-    int (*fb_set_var)(struct fb_var_screeninfo *var, int con,
-		      struct fb_info *info);		
-    /* get colormap */
-    int (*fb_get_cmap)(struct fb_cmap *cmap, int kspc, int con,
-		       struct fb_info *info);
-    /* set colormap */
-    int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con,
-		       struct fb_info *info);
-    /* pan display */
-    int (*fb_pan_display)(struct fb_var_screeninfo *var, int con,
-			  struct fb_info *info);
-    /* perform fb specific ioctl */
-    int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd,
-		    unsigned long arg, int con, struct fb_info *info);
-    /* perform fb specific mmap */
-    int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
-    /* switch to/from raster image mode */
-    int (*fb_rasterimg)(struct fb_info *info, int start);
-};
-
-
-   /*
-    *    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 */
-    char *screen_base;              /* pointer to top of virtual screen */    
-				    /* (virtual address) */
-    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 */
-    struct display_switch *dispsw;  /* low level operations */
-    void *dispsw_data;		    /* optional dispsw helper data */
-
-#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 */
-    struct fb_info *fb_info;        /* frame buffer for this console */
-    int vrows;                      /* number of virtual rows */
-    unsigned short cursor_x;	    /* current cursor position */
-    unsigned short 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 */
-    unsigned short _fontheightlog;
-    unsigned short _fontwidthlog;
-    unsigned short _fontheight;
-    unsigned short _fontwidth;
-    int userfont;                   /* != 0 if fontdata kmalloc()ed */
-    u_short scrollmode;             /* Scroll Method */
-    short yscroll;                  /* Hardware scrolling */
-    unsigned char fgshift, bgshift;
-    unsigned short charmask;	    /* 0xff or 0x1ff */
-};
-
-
-struct fb_info {
-   char modename[40];			/* default video mode */
-   kdev_t node;
-   int flags;
-#define FBINFO_FLAG_MODULE	1	/* Low-level driver is a module */
-   struct fb_ops *fbops;
-   struct fb_monspecs monspecs;
-   struct display *disp;		/* initial display variable */
-   struct vc_data *display_fg;		/* Console visible on this display */
-   char fontname[40];			/* default font name */
-   int (*changevar)(int);		/* tell console var has changed */
-   int (*switch_con)(int, struct fb_info*);
-					/* tell fb to switch consoles */
-   int (*updatevar)(int, struct fb_info*);
-					/* tell fb to update the vars */
-   void (*blank)(int, struct fb_info*);	/* tell fb to (un)blank the screen */
-					/* arg = 0: unblank */
-					/* arg > 0: VESA level (arg-1) */
-
-   /* From here on everything is device dependent */
-};
-
-#ifdef MODULE
-#define FBINFO_FLAG_DEFAULT	FBINFO_FLAG_MODULE
-#else
-#define FBINFO_FLAG_DEFAULT	0
-#endif
-
-    /*
-     *  This structure abstracts from the underlying hardware. It is not
-     *  mandatory but used by the `generic' frame buffer operations.
-     *  Read drivers/video/skeletonfb.c for more information.
-     */
-
-struct fbgen_hwswitch {
-    void (*detect)(void);
-    int (*encode_fix)(struct fb_fix_screeninfo *fix, const void *par,
-		      struct fb_info_gen *info);
-    int (*decode_var)(const struct fb_var_screeninfo *var, void *par,
-		      struct fb_info_gen *info);
-    int (*encode_var)(struct fb_var_screeninfo *var, const void *par,
-		      struct fb_info_gen *info);
-    void (*get_par)(void *par, struct fb_info_gen *info);
-    void (*set_par)(const void *par, struct fb_info_gen *info);
-    int (*getcolreg)(unsigned regno, unsigned *red, unsigned *green,
-		     unsigned *blue, unsigned *transp, struct fb_info *info);
-    int (*setcolreg)(unsigned regno, unsigned red, unsigned green,
-		     unsigned blue, unsigned transp, struct fb_info *info);
-    int (*pan_display)(const struct fb_var_screeninfo *var,
-		       struct fb_info_gen *info);
-    int (*blank)(int blank_mode, struct fb_info_gen *info);
-    void (*set_disp)(const void *par, struct display *disp,
-		     struct fb_info_gen *info);
-};
-
-struct fb_info_gen {
-    struct fb_info info;
-
-    /* Entries for a generic frame buffer device */
-    /* Yes, this starts looking like C++ */
-    u_int parsize;
-    struct fbgen_hwswitch *fbhw;
-
-   /* From here on everything is device dependent */
-};
-
-    /*
-     *  `Generic' versions of the frame buffer device operations
-     */
-
-extern int fbgen_get_fix(struct fb_fix_screeninfo *fix, int con,
-			 struct fb_info *info);
-extern int fbgen_get_var(struct fb_var_screeninfo *var, int con,
-			 struct fb_info *info);
-extern int fbgen_set_var(struct fb_var_screeninfo *var, int con,
-			 struct fb_info *info);
-extern int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con,
-			  struct fb_info *info);
-extern int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con,
-			  struct fb_info *info);
-extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con,
-			     struct fb_info *info);
-extern int fbgen_ioctl(struct inode *inode, struct file *file,
-		       unsigned int cmd, unsigned long arg, int con,
-		       struct fb_info *info);
-
-    /*
-     *  Helper functions
-     */
-
-extern int fbgen_do_set_var(struct fb_var_screeninfo *var, int isactive,
-			    struct fb_info_gen *info);
-extern void fbgen_set_disp(int con, struct fb_info_gen *info);
-extern void fbgen_install_cmap(int con, struct fb_info_gen *info);
-extern int fbgen_update_var(int con, struct fb_info *info);
-extern int fbgen_switch(int con, struct fb_info *info);
-extern void fbgen_blank(int blank, struct fb_info *info);
-
-
-struct fb_videomode {
-    const char *name;
-    struct fb_var_screeninfo var;
-};
-
-
-/* drivers/char/fbmem.c */
-extern int register_framebuffer(struct fb_info *fb_info);
-extern int unregister_framebuffer(const struct fb_info *fb_info);
-extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal,
-			       const struct fb_info *fb_info);
-extern int fbmon_dpms(const struct fb_info *fb_info);
-
-
-extern int num_registered_fb;
-extern struct fb_info *registered_fb[FB_MAX];
-extern char con2fb_map[MAX_NR_CONSOLES];
-
-/* drivers/video/fbcon.c */
-extern struct display fb_display[MAX_NR_CONSOLES];
-
-/* drivers/video/fbcmap.c */
-extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
-extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to,
-			 int fsfromto);
-extern int fb_get_cmap(struct fb_cmap *cmap, int kspc,
-		       int (*getcolreg)(u_int, u_int *, u_int *, u_int *,
-					u_int *, struct fb_info *),
-		       struct fb_info *fb_info);
-extern int fb_set_cmap(struct fb_cmap *cmap, int kspc,
-		       int (*setcolreg)(u_int, u_int, u_int, u_int, u_int,
-					struct fb_info *),
-		       struct fb_info *fb_info);
-extern struct fb_cmap *fb_default_cmap(int len);
-extern void fb_invert_cmaps(void);
-
-/* VESA Blanking Levels */
-#define VESA_NO_BLANKING	0
-#define VESA_VSYNC_SUSPEND	1
-#define VESA_HSYNC_SUSPEND	2
-#define VESA_POWERDOWN		3
-
-#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 {
-	__u16 crsr_width;		/* width and height of the cursor in */
-	__u16 crsr_height;		/* pixels (zero if no cursor)	*/
-	__u16 crsr_xsize;		/* cursor size in display pixels */
-	__u16 crsr_ysize;
-	__u16 crsr_color1;		/* colormap entry for cursor color1 */
-	__u16 crsr_color2;		/* colormap entry for cursor color2 */
-};
-
-struct fb_var_cursorinfo {
-	__u16 width;
-	__u16 height;
-	__u16 xspot;
-	__u16 yspot;
-	__u8 data[1];			/* field with [height][width]        */
-};
-
-struct fb_cursorstate {
-	__s16 xoffset;
-	__s16 yoffset;
-	__u16 mode;
-};
-
-#define FB_CURSOR_OFF		0
-#define FB_CURSOR_ON		1
-#define FB_CURSOR_FLASH		2
-
-#endif /* Preliminary */
-
-#endif /* _LINUX_FB_H */
--- a/TOOLS/TVout/fbset/fb.modes.5	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-.TH fb.modes 8 "Aug 1996" local "Linux frame buffer utils"
-.SH NAME
-fb.modes \- frame buffer modes file
-.SH DESCRIPTION
-.I /etc/fb.modes
-contains an unlimited number of video mode descriptions. The general format
-of a video mode is:
-.sp
-mode
-.RI \" name \"
-.RS
-geometry
-.RI < xres >
-.RI < yres >
-.RI < vxres >
-.RI < vyres >
-.RI < depth >
-.br
-timings
-.RI < pixclock >
-.RI < left >
-.RI < right >
-.RI < upper >
-.RI < lower >
-.RI < hslen >
-.RI < vslen >
-.br
-.B options
-.RI < value >
-.RE
-endmode
-.SH OPTIONS
-geometry options:
-.RS
-.TP
-.I xres
-visible horizontal resolution (in pixels)
-.TP
-.I yres
-visible vertical resolution (in pixels)
-.TP
-.I vxres
-virtual horizontal resolution (in pixels)
-.TP
-.I vyres
-virtual vertical resolution (in pixels)
-.TP
-.I depth
-display depth (in bits per pixel)
-.RE
-.PP
-timing options:
-.RS
-.TP
-.I pixclock
-length of one pixel (in picoseconds)
-.TP
-.I left
-left margin (in pixels)
-.TP
-.I right
-right margin (in pixels)
-.TP
-.I upper
-upper margin (in pixel lines)
-.TP
-.I lower
-lower margin (in pixel lines)
-.TP
-.I hslen
-horizontal sync length (in pixels)
-.TP
-.I vslen
-vertical sync length (in pixel lines)
-.RE
-.PP
-other options:
-.RS
-the first value of this options is the default
-.TP
-.IR \fBhsync "\ {" low | high }
-the horizontal sync polarity
-.TP
-.IR \fBvsync "\ {" low | high }
-the vertical sync polarity
-.TP
-.IR \fBcsync "\ {" low | high }
-the composite sync polarity
-.TP
-.IR \fBextsync "\ {" false | true }
-enable or disable external resync. If enabled the sync timings are not
-generated by the frame buffer device and must be provided externally
-instead. Note that this option may not be supported by every frame buffer
-device
-.TP
-.IR \fBlaced "\ {" false | true }
-enable or disable interlace. If enabled the display will be split in two
-frames, each frame contains only even and odd lines respectively. These two
-frames will be displayed alternating, this way twice the lines can be
-displayed and the vertical frequency for monitor stays the same, but the
-visible vertical frequency gets halved
-.TP
-.IR \fBdouble "\ {" false | true }
-enable or disable doublescan. If enabled every line will be displayed twice
-and this way the horizontal frequency can easily be doubled, so that the
-same resolution can be displayed on different monitors, even if the
-horizontal frequency specification differs. Note that this option may not be
-supported by every frame buffer device
-.RE
-.SH INTERNALS
-Generally a frame buffer display is organized as follows:
-.sp
-.ad c
-+\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-+\-\-\-+
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " ^ "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " | "\ " \fI5 "\ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " v "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-+\-\-\-#################\-\-\-+\-\-\-+
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " ^ "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " | "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " | "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RI "| " 1 " #       " \fB| "   " 2 "   # " 3 " | " 4 " |"
-.br
-.RB "|" "<\->" "#" "<\-\-\-\-\-\-+\-\-\-\-\-\->" "#" "<\->" "|" "<\->" "|"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " | "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " | "\ " \fI6 "\ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " | "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ #\ \ \ \ \ \ \ " v "\ \ \ \ \ \ \ #\ \ \ |\ \ \ |"
-.br
-+\-\-\-#################\-\-\-+\-\-\-+
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " ^ "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " | "\ " \fI7 "\ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " v "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-+\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-+\-\-\-+
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " ^ "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " | "\ " \fI8 "\ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-.RB "|\ \ \ |\ \ \ \ \ \ \ " v "\ \ \ \ \ \ \ |\ \ \ |\ \ \ |"
-.br
-+\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-+\-\-\-+
-.sp
-.ad n
-.RS
-.I 1
-\t left margin
-.br
-.I 2
-\t xres
-.br
-.I 3
-\t right margin
-.br
-.I 4
-\t horizontal sync len
-.br
-.I 5
-\t upper margin
-.br
-.I 6
-\t yres
-.br
-.I 7
-\t lower margin
-.br
-.I 8
-\t vertical sync len
-.RE
-.sp
-The area bordered with `#' is the visible display area. Horizontal and
-vertical frequencies can now easily be calculated, for this the sum of
-horizontal or vertical values are important
-.RS
-.sp
-htotal\ =\ left\ +\ xres\ +\ right\ +\ hslen
-.br
-vtotal\ =\ upper\ +\ yres\ +\ lower\ +\ vslen
-.sp
-.RE
-The length of one line can now be calculated with pixclock
-.RS
-.sp
-line\ =\ pixclock\ *\ htotal
-.sp
-.RE
-and we have the horizontal frequency
-.RS
-.sp
-hfreq\ =\ 1E12\ /\ line\ =\ 1E12\ /\ (pixclock\ *\ htotal)
-.sp
-.RE
-To get the vertical frequency vtotal must eventually adjusted. If the
-display is laced, vtotal must be halved or if the display is a doublescan
-one, vtotal must be doubled. Now we can calculate the length of one frame
-.RS
-.sp
-if\ (lace)\ \ \ vtotal\ /=\ 2
-.br
-if\ (double)\ vtotal\ *=\ 2
-.sp
-frame\ =\ vtotal\ *\ line
-.sp
-.RE
-and we get also the vertical frequency
-.RS
-.sp
-vfreq\ =\ 1E12\ /\ frame\ =\ hfreq\ /\ vtotal
-.sp
-.RE
-.SH SEE ALSO
-.BR fbset "(8), " fbdev (4)
--- a/TOOLS/TVout/fbset/fbset.8	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-.TH fbset 8 "July 1998" local "Linux frame buffer utils"
-.SH NAME
-fbset \- show and modify frame buffer device settings
-.SH SYNOPSIS
-.B fbset
-.RI [ options ]
-.RI [ mode ]
-.SH DESCRIPTION
-.B This documentation is out of date!!
-.PP
-.B fbset
-is a system utility to show or change the settings of the frame buffer
-device. The frame buffer device provides a simple and unique interface to
-access different kinds of graphic displays.
-.PP
-Frame buffer devices are accessed via special device nodes located in the
-/dev directory. The naming scheme for these nodes is always
-.IR \fBfb < n >,
-where
-.I n
-is the number of the used frame buffer device.
-.PP
-.B fbset
-uses an own video mode database located in /etc/fb.modes. An unlimited
-number of video modes can be defined in this database. For further
-information see
-.BR fb.modes (5).
-.SH OPTIONS
-If no option is given,
-.B fbset
-will display the current frame buffer settings.
-.sp
-General options:
-.RS
-.TP
-.BR \-\-help ",\ " \-h
-display an usage information
-.TP
-.BR \-\-now ",\ " \-n
-change the video mode immediately. If no frame buffer device is given via
-.B \-fb
-, then this option is activated by default
-.TP
-.BR \-\-show ",\ " \-s
-display the video mode settings. This is default if no further option or
-only a frame buffer device via
-.B \-fb
-is given
-.TP
-.BR \-\-info ",\ " \-i
-display all available frame buffer information
-.TP
-.BR \-\-verbose ",\ " \-v
-display information what
-.B fbset
-is currently doing
-.TP
-.BR \-\-version ",\ " \-V
-display the version information about
-.B fbset
-.TP
-.BR \-\-xfree86 ",\ "  \-x
-display the timing information as it's needed by XFree86
-.RE
-.PP
-Frame buffer device nodes:
-.RS
-.TP
-.BR \-fb "\ <" \fIdevice >
-.I device
-gives the frame buffer device node. If no device via
-.B \-fb
-is given, 
-.I /dev/fb0
-is used
-.TP
-.RE
-.PP
-Video mode database:
-.RS
-.TP
-.BR \-db "\ <" \fIfile >
-set an alternative video mode database file (default is 
-.IR /etc/fb.modes ),
-see also
-.BR fb.modes (5)
-.RE
-.PP
-Display geometry:
-.RS
-.TP
-.BR \-xres "\ <" \fIvalue >
-set visible horizontal resolution (in pixels)
-.TP
-.BR \-yres "\ <" \fIvalue >
-set visible vertical resolution (in pixels)
-.TP
-.BR \-vxres "\ <" \fIvalue >
-set virtual horizontal resolution (in pixels)
-.TP
-.BR \-vyres "\ <" \fIvalue >
-set virtual vertical resolution (in pixels)
-.TP
-.BR \-depth "\ <" \fIvalue >
-set display depth (in bits per pixel)
-.TP
-.BR \-\-geometry ",\ " \-g "\ ..."
-set all geometry parameters at once in the order
-.RI < xres >
-.RI < yres >
-.RI < vxres >
-.RI < vyres >
-.RI < depth >,
-e.g.
-.B \-g
-.I 640 400 640 400 4
-.TP
-.BR \-match "\ \ \ \ \ \ "
-make the physical resolution match the virtual resolution
-.RE
-.PP
-Display timings:
-.RS
-.TP
-.BR \-pixclock "\ <" \fIvalue >
-set the length of one pixel (in picoseconds). Note that the frame buffer
-device may only support some pixel lengths
-.TP
-.BR \-left "\ <" \fIvalue >
-set left margin (in pixels)
-.TP
-.BR \-right "\ <" \fIvalue >
-set right margin (in pixels)
-.TP
-.BR \-upper "\ <" \fIvalue >
-set upper margin (in pixel lines)
-.TP
-.BR \-lower "\ <" \fIvalue >
-set lower margin (in pixel lines)
-.TP
-.BR \-hslen "\ <" \fIvalue >
-set horizontal sync length (in pixels)
-.TP
-.BR \-vslen "\ <" \fIvalue >
-set vertical sync length (in pixel lines)
-.TP
-.BR \-\-timings ",\ " \-t "\ ..."
-set all timing parameters at once in the order
-.RI < pixclock >
-.RI < left >
-.RI < right >
-.RI < upper >
-.RI < lower >
-.RI < hslen >
-.RI < vslen >,
-e.g.
-.B \-g
-.I 35242 64 96 35 12 112 2
-.RE
-.PP
-Display flags:
-.RS
-.TP
-.IR \fB\-hsync "\ {" low | high }
-set the horizontal sync polarity
-.TP
-.IR \fB\-vsync "\ {" low | high }
-set the vertical sync polarity
-.TP
-.IR \fB\-csync "\ {" low | high }
-set the composite sync polarity
-.TP
-.IR \fB\-extsync "\ {" false | true }
-enable or disable external resync. If enabled the sync timings are not
-generated by the frame buffer device and must be provided externally
-instead. Note that this option may not be supported by every frame buffer
-device
-.TP
-.IR \fB\-bcast "\ {" false | true }
-enable or disable broadcast modes. If enabled the frame buffer generates the
-exact timings for several broadcast modes (e.g. PAL or NTSC). Note that
-this option may not be supported by every frame buffer device
-.TP
-.IR \fB\-laced "\ {" false | true }
-enable or disable interlace. If enabled the display will be split in two
-frames, each frame contains only even and odd lines respectively. These two
-frames will be displayed alternating, this way twice the lines can be
-displayed and the vertical frequency for the monitor stays the same, but the
-visible vertical frequency gets halved
-.TP
-.IR \fB\-double "\ {" false | true }
-enable or disable doublescan. If enabled every line will be displayed twice
-and this way the horizontal frequency can easily be doubled, so that the
-same resolution can be displayed on different monitors, even if the
-horizontal frequency specification differs. Note that this option may not be
-supported by every frame buffer device
-.RE
-.PP
-Display positioning:
-.RS
-.TP
-.IR \fB\-move "\ {" left | right | up | down }
-move the visible part of the display in the specified direction
-.TP
-.BR \-step "\ <" \fIvalue >
-set step size for display positioning (in pixels or pixel lines), if
-.B \-step
-is not given display will be moved 8 pixels horizontally or 2 pixel lines
-vertically
-.RE
-.SH EXAMPLE
-To set the used video mode for
-.B X
-insert the following in rc.local:
-.RS
-.sp
-.B fbset
--fb
-.I /dev/fb0
-vga
-.sp
-.RE
-and make the used frame buffer device known to
-.BR X :
-.RS
-.sp
-.B export
-.RI FRAMEBUFFER= /dev/fb0
-.RE
-.SH FILES
-.I /dev/fb*
-.br
-.I /etc/fb.modes
-.SH SEE ALSO
-.BR fb.modes "(5), " fbdev (4)
-.SH AUTHORS
-.TP
-Geert Uytterhoeven <Geert.Uytterhoeven@cs.kuleuven.ac.be>
-.TP
-Roman Zippel <zippel@fh-brandenburg.de>
-.br
-man files
--- a/TOOLS/TVout/fbset/fbset.c	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1054 +0,0 @@
-/*
- *  Linux Frame Buffer Device Configuration
- *
- *  © Copyright 1995-1999 by Geert Uytterhoeven
- *		       (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- *
- *  --------------------------------------------------------------------------
- *
- *  This file is subject to the terms and conditions of the GNU General Public
- *  License. See the file COPYING in the main directory of the Linux
- *  distribution for more details.
- *
- *  Petr Vandrovec <vandrove@vc.cvut.cz>:
- *           -grayscale, -rgba, -nonstd, VGA modes reporting
- *
- *  Brad Midgley <brad@exodus.pht.com>:
- *           -match
- *
- */
-
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <ctype.h>
-#include <sys/stat.h>
-
-struct file;
-struct inode;
-
-#include "fb.h"
-
-#include "fbset.h"
-
-
-    /*
-     *  Default Frame Buffer Special Device Node
-     */
-
-#define DEFAULT_FRAMEBUFFER	"/dev/fb0"
-
-
-    /*
-     *  Default Video Mode Database File
-     */
-
-#define DEFAULT_MODEDBFILE	"/etc/fb.modes"
-
-
-    /*
-     *  Command Line Options
-     */
-
-static const char *ProgramName;
-
-static int Opt_test = 0;
-static int Opt_show = 0;
-static int Opt_info = 0;
-static int Opt_version = 0;
-static int Opt_verbose = 0;
-static int Opt_xfree86 = 0;
-static int Opt_change = 0;
-static int Opt_all = 0;
-
-static const char *Opt_fb = NULL;
-const char *Opt_modedb = DEFAULT_MODEDBFILE;
-static const char *Opt_xres = NULL;
-static const char *Opt_yres = NULL;
-static const char *Opt_vxres = NULL;
-static const char *Opt_vyres = NULL;
-static const char *Opt_depth = NULL;
-static const char *Opt_pixclock = NULL;
-static const char *Opt_left = NULL;
-static const char *Opt_right = NULL;
-static const char *Opt_upper = NULL;
-static const char *Opt_lower = NULL;
-static const char *Opt_hslen = NULL;
-static const char *Opt_vslen = NULL;
-static const char *Opt_accel = NULL;
-static const char *Opt_hsync = NULL;
-static const char *Opt_vsync = NULL;
-static const char *Opt_csync = NULL;
-static const char *Opt_gsync = NULL;
-static const char *Opt_extsync = NULL;
-static const char *Opt_bcast = NULL;
-static const char *Opt_laced = NULL;
-static const char *Opt_double = NULL;
-static const char *Opt_move = NULL;
-static const char *Opt_step = NULL;
-static const char *Opt_modename = NULL;
-static const char *Opt_rgba = NULL;
-static const char *Opt_nonstd = NULL;
-static const char *Opt_grayscale = NULL;
-static const char *Opt_matchyres = NULL;
-
-static struct {
-    const char *name;
-    const char **value;
-    const int change;
-} Options[] = {
-    { "-fb", &Opt_fb, 0 },
-    { "-db", &Opt_modedb, 0 },
-    { "-xres", &Opt_xres, 1 },
-    { "-yres", &Opt_yres, 1 },
-    { "-vxres", &Opt_vxres, 1 },
-    { "-vyres", &Opt_vyres, 1 },
-    { "-depth", &Opt_depth, 1 },
-    { "-nonstd", &Opt_nonstd, 1},
-    { "-pixclock", &Opt_pixclock, 1 },
-    { "-left", &Opt_left, 1 },
-    { "-right", &Opt_right, 1 },
-    { "-upper", &Opt_upper, 1 },
-    { "-lower", &Opt_lower, 1 },
-    { "-hslen", &Opt_hslen, 1 },
-    { "-vslen", &Opt_vslen, 1 },
-    { "-accel", &Opt_accel, 1 },
-    { "-hsync", &Opt_hsync, 1 },
-    { "-vsync", &Opt_vsync, 1 },
-    { "-csync", &Opt_csync, 1 },
-    { "-gsync", &Opt_gsync, 1 },
-    { "-extsync", &Opt_extsync, 1 },
-    { "-bcast", &Opt_bcast, 1 },
-    { "-laced", &Opt_laced, 1 },
-    { "-double", &Opt_double, 1 },
-    { "-move", &Opt_move, 1 },
-    { "-step", &Opt_step, 1 },
-    { "-rgba", &Opt_rgba, 1 },
-    { "-grayscale", &Opt_grayscale, 1 },
-    { NULL, NULL, 0 }
-};
-
-
-    /*
-     *  Video Mode Database
-     */
-
-struct VideoMode *VideoModes = NULL;
-
-
-    /*
-     *  Hardware Text Modes
-     */
-
-static struct textentry {
-    __u32 id;
-    const char *name;
-} Textmodes[] = {
-    { FB_AUX_TEXT_MDA, "Monochrome text" },
-    { FB_AUX_TEXT_CGA, "CGA/EGA/VGA Color text" },
-    { FB_AUX_TEXT_S3_MMIO, "S3 MMIO fasttext" },
-    { FB_AUX_TEXT_MGA_STEP16, "MGA Millennium I step 16 text" },
-    { FB_AUX_TEXT_MGA_STEP8, "MGA step 8 text" },
-};
-
-static struct textentry VGAModes[] = {
-    { FB_AUX_VGA_PLANES_VGA4, "VGA 16 colors in 4 planes" },
-    { FB_AUX_VGA_PLANES_CFB4, "VGA 16 colors in 1 plane" },
-    { FB_AUX_VGA_PLANES_CFB8, "VGA 256 colors in 4 planes" },
-    /* last entry has name == NULL */
-    { 0,                      NULL}
-};
-
-    /*
-     *  Hardware Accelerators
-     */
-
-static struct accelentry {
-    __u32 id;
-    const char *name;
-} Accelerators[] = {
-    { FB_ACCEL_NONE, "No" },
-    { FB_ACCEL_ATARIBLITT, "Atari Blitter" },
-    { FB_ACCEL_AMIGABLITT, "Amiga Blitter" },
-    { FB_ACCEL_S3_TRIO64, "S3 Trio64" },
-    { FB_ACCEL_NCR_77C32BLT, "NCR 77C32BLT" },
-    { FB_ACCEL_S3_VIRGE, "S3 ViRGE" },
-    { FB_ACCEL_ATI_MACH64GX, "ATI Mach64GX" },
-    { FB_ACCEL_DEC_TGA, "DEC 21030 TGA" },
-    { FB_ACCEL_ATI_MACH64CT, "ATI Mach64CT" },
-    { FB_ACCEL_ATI_MACH64VT, "ATI Mach64VT" },
-    { FB_ACCEL_ATI_MACH64GT, "ATI Mach64GT" },
-    { FB_ACCEL_SUN_CREATOR, "Sun Creator/Creator3D" },
-    { FB_ACCEL_SUN_CGSIX, "Sun cg6" },
-    { FB_ACCEL_SUN_LEO, "Sun leo/zx" },
-    { FB_ACCEL_IMS_TWINTURBO, "IMS Twin Turbo" },
-    { FB_ACCEL_3DLABS_PERMEDIA2, "3Dlabs Permedia 2" },
-    { FB_ACCEL_MATROX_MGA2064W, "Matrox MGA2064W (Millennium)" },
-    { FB_ACCEL_MATROX_MGA1064SG, "Matrox MGA1064SG (Mystique)" },
-    { FB_ACCEL_MATROX_MGA2164W, "Matrox MGA2164W (Millennium II)" },
-    { FB_ACCEL_MATROX_MGA2164W_AGP, "Matrox MGA2164W (Millennium II AGP)" },
-    { FB_ACCEL_MATROX_MGAG100, "Matrox G100 (Productiva G100)" },
-    { FB_ACCEL_MATROX_MGAG200, "Matrox G200 (Millennium, Mystique)" },
-    { FB_ACCEL_SUN_CG14, "Sun cg14" },
-    { FB_ACCEL_SUN_BWTWO, "Sun bw2" },
-    { FB_ACCEL_SUN_CGTHREE, "Sun cg3" },
-    { FB_ACCEL_SUN_TCX, "Sun tcx" },
-    { FB_ACCEL_MATROX_MGAG400, "Matrox G400" },
-};
-
-
-    /*
-     *  Current Video Mode
-     */
-
-struct VideoMode Current;
-
-
-    /*
-     *  Function Prototypes
-     */
-
-int OpenFrameBuffer(const char *name);
-void CloseFrameBuffer(int fh);
-void GetVarScreenInfo(int fh, struct fb_var_screeninfo *var);
-void SetVarScreenInfo(int fh, struct fb_var_screeninfo *var);
-void GetFixScreenInfo(int fh, struct fb_fix_screeninfo *fix);
-static void ConvertFromVideoMode(const struct VideoMode *vmode,
-				 struct fb_var_screeninfo *var);
-static void ConvertToVideoMode(const struct fb_var_screeninfo *var,
-			       struct VideoMode *vmode);
-static int atoboolean(const char *var);
-static void ReadModeDB(void);
-static struct VideoMode *FindVideoMode(const char *name);
-static void ModifyVideoMode(struct VideoMode *vmode);
-static void DisplayVModeInfo(struct VideoMode *vmode);
-static void DisplayFBInfo(struct fb_fix_screeninfo *fix);
-static int FillScanRates(struct VideoMode *vmode);
-static void Usage(void) __attribute__ ((noreturn));
-int main(int argc, char *argv[]);
-
-
-    /*
-     *  Print an Error Message and Exit
-     */
-
-void Die(const char *fmt, ...)
-{
-    va_list ap;
-
-    fflush(stdout);
-    va_start(ap, fmt);
-    vfprintf(stderr, fmt, ap);
-    va_end(ap);
-    exit(1);
-}
-
-
-    /*
-     *  Open the Frame Buffer Device
-     */
-
-int OpenFrameBuffer(const char *name)
-{
-    int fh;
-
-    if (Opt_verbose)
-	printf("Opening frame buffer device `%s'\n", name);
-
-    if ((fh = open(name, O_RDONLY)) == -1)
-	Die("open %s: %s\n", name, strerror(errno));
-    return fh;
-}
-
-
-    /*
-     *  Close the Frame Buffer Device
-     */
-
-void CloseFrameBuffer(int fh)
-{
-    close(fh);
-}
-
-    /*
-     *  Get the Variable Part of the Screen Info
-     */
-
-void GetVarScreenInfo(int fh, struct fb_var_screeninfo *var)
-{
-    if (ioctl(fh, FBIOGET_VSCREENINFO, var))
-	Die("ioctl FBIOGET_VSCREENINFO: %s\n", strerror(errno));
-}
-
-
-    /*
-     *  Set (and Get) the Variable Part of the Screen Info
-     */
-
-void SetVarScreenInfo(int fh, struct fb_var_screeninfo *var)
-{
-    if (ioctl(fh, FBIOPUT_VSCREENINFO, var))
-	Die("ioctl FBIOPUT_VSCREENINFO: %s\n", strerror(errno));
-}
-
-
-    /*
-     *  Get the Fixed Part of the Screen Info
-     */
-
-void GetFixScreenInfo(int fh, struct fb_fix_screeninfo *fix)
-{
-    if (ioctl(fh, FBIOGET_FSCREENINFO, fix))
-	Die("ioctl FBIOGET_FSCREENINFO: %s\n", strerror(errno));
-}
-
-
-    /*
-     *  Conversion Routines
-     */
-
-static void ConvertFromVideoMode(const struct VideoMode *vmode,
-				 struct fb_var_screeninfo *var)
-{
-    memset(var, 0, sizeof(struct fb_var_screeninfo));
-    var->xres = vmode->xres;
-    var->yres = vmode->yres;
-    var->xres_virtual = vmode->vxres;
-    var->yres_virtual = vmode->vyres;
-    var->bits_per_pixel = vmode->depth;
-    var->nonstd = vmode->nonstd;
-    if (Opt_test)
-	var->activate = FB_ACTIVATE_TEST;
-    else
-	var->activate = FB_ACTIVATE_NOW;
-    if (Opt_all)
-	var->activate = FB_ACTIVATE_ALL;
-    var->accel_flags = vmode->accel_flags;
-    var->pixclock = vmode->pixclock;
-    var->left_margin = vmode->left;
-    var->right_margin = vmode->right;
-    var->upper_margin = vmode->upper;
-    var->lower_margin = vmode->lower;
-    var->hsync_len = vmode->hslen;
-    var->vsync_len = vmode->vslen;
-    if (vmode->hsync == HIGH)
-	var->sync |= FB_SYNC_HOR_HIGH_ACT;
-    if (vmode->vsync == HIGH)
-	var->sync |= FB_SYNC_VERT_HIGH_ACT;
-    if (vmode->csync == HIGH)
-	var->sync |= FB_SYNC_COMP_HIGH_ACT;
-    if (vmode->gsync == HIGH)
-	var->sync |= FB_SYNC_ON_GREEN;
-    if (vmode->extsync == TRUE)
-	var->sync |= FB_SYNC_EXT;
-    if (vmode->bcast == TRUE)
-	var->sync |= FB_SYNC_BROADCAST;
-    if (vmode->laced == TRUE)
-	var->vmode = FB_VMODE_INTERLACED;
-    else if (vmode->dblscan == TRUE)
-	var->vmode = FB_VMODE_DOUBLE;
-    else
-	var->vmode = FB_VMODE_NONINTERLACED;
-    var->vmode |= FB_VMODE_CONUPDATE;
-    var->red.length = vmode->red.length;
-    var->red.offset = vmode->red.offset;
-    var->green.length = vmode->green.length;
-    var->green.offset = vmode->green.offset;
-    var->blue.length = vmode->blue.length;
-    var->blue.offset = vmode->blue.offset;
-    var->transp.length = vmode->transp.length;
-    var->transp.offset = vmode->transp.offset;
-    var->grayscale = vmode->grayscale;
-}
-
-
-static void ConvertToVideoMode(const struct fb_var_screeninfo *var,
-			       struct VideoMode *vmode)
-{
-    vmode->name = NULL;
-    vmode->xres = var->xres;
-    vmode->yres = var->yres;
-    vmode->vxres = var->xres_virtual;
-    vmode->vyres = var->yres_virtual;
-    vmode->depth = var->bits_per_pixel;
-    vmode->nonstd = var->nonstd;
-    vmode->accel_flags = var->accel_flags;
-    vmode->pixclock = var->pixclock;
-    vmode->left = var->left_margin;
-    vmode->right = var->right_margin;
-    vmode->upper = var->upper_margin;
-    vmode->lower = var->lower_margin;
-    vmode->hslen = var->hsync_len;
-    vmode->vslen = var->vsync_len;
-    vmode->hsync = var->sync & FB_SYNC_HOR_HIGH_ACT ? HIGH : LOW;
-    vmode->vsync = var->sync & FB_SYNC_VERT_HIGH_ACT ? HIGH : LOW;
-    vmode->csync = var->sync & FB_SYNC_COMP_HIGH_ACT ? HIGH : LOW;
-    vmode->gsync = var->sync & FB_SYNC_ON_GREEN ? TRUE : FALSE;
-    vmode->extsync = var->sync & FB_SYNC_EXT ? TRUE : FALSE;
-    vmode->bcast = var->sync & FB_SYNC_BROADCAST ? TRUE : FALSE;
-    vmode->grayscale = var->grayscale;
-    vmode->laced = FALSE;
-    vmode->dblscan = FALSE;
-    switch (var->vmode & FB_VMODE_MASK) {
-	case FB_VMODE_INTERLACED:
-	    vmode->laced = TRUE;
-	    break;
-	case FB_VMODE_DOUBLE:
-	    vmode->dblscan = TRUE;
-	    break;
-    }
-    vmode->red.length = var->red.length;
-    vmode->red.offset = var->red.offset;
-    vmode->green.length = var->green.length;
-    vmode->green.offset = var->green.offset;
-    vmode->blue.length = var->blue.length;
-    vmode->blue.offset = var->blue.offset;
-    vmode->transp.length = var->transp.length;
-    vmode->transp.offset = var->transp.offset;
-    FillScanRates(vmode);
-}
-
-
-static int atoboolean(const char *var)
-{
-    int value = 0;
-
-    if (!strcasecmp(var, "false") || !strcasecmp(var, "low") ||
-	!strcasecmp(var, "no") || !strcasecmp(var, "off") ||
-	!strcmp(var, "0"))
-	value = 0;
-    else if (!strcasecmp(var, "true") || !strcasecmp(var, "high") ||
-	     !strcasecmp(var, "yes") || !strcasecmp(var, "on") ||
-	     !strcmp(var, "1"))
-	value = 1;
-    else
-	Die("Invalid value `%s'\n", var);
-
-    return value;
-}
-
-
-void AddVideoMode(const struct VideoMode *vmode)
-{
-    struct VideoMode *vmode2;
-
-    if (FindVideoMode(vmode->name))
-	Die("%s:%d: Duplicate mode name `%s'\n", Opt_modedb, line,
-	    vmode->name);
-    vmode2 = malloc(sizeof(struct VideoMode));
-    *vmode2 = *vmode;
-    if (!FillScanRates(vmode2))
-	Die("%s:%d: Bad video mode `%s'\n", Opt_modedb, line, vmode2->name);
-    vmode2->next = VideoModes;
-    VideoModes = vmode2;
-}
-
-
-    /*
-     *  Read the Video Mode Database
-     */
-
-static void ReadModeDB(void)
-{
-    if (Opt_verbose)
-	printf("Reading mode database from file `%s'\n", Opt_modedb);
-
-    if (!(yyin = fopen(Opt_modedb, "r")))
-	Die("fopen %s: %s\n", Opt_modedb, strerror(errno));
-    yyparse();
-    fclose(yyin);
-}
-
-
-static void getColor(struct color *color, const char** opt)
-{
-    char* ptr;
-
-    color->length = 0;
-    color->offset = 0;
-    ptr = (char*)(*opt);
-    if (!ptr)
-	return;
-    color->length = strtoul(ptr, &ptr, 0);
-    if (!ptr)
-	return;
-    if (*ptr == '/')
-	color->offset = strtoul(ptr+1, &ptr, 0);
-    if (ptr) {
-	while (*ptr && isspace(*ptr))
-	    ptr++;
-	if (*ptr == ',') {
-	    ptr++;
-	} else if (*ptr)
-	    Die("Bad RGBA syntax, rL/rO,gL/gO,bL/bO,tL/tO or rL,gL,bL,tL\n");
-    }
-    *opt = ptr;
-    return;
-}
-
-void makeRGBA(struct VideoMode *vmode, const char* opt)
-{
-    getColor(&vmode->red, &opt);
-    getColor(&vmode->green, &opt);
-    getColor(&vmode->blue, &opt);
-    getColor(&vmode->transp, &opt);
-}
-
-    /*
-     *  Find a Video Mode
-     */
-
-static struct VideoMode *FindVideoMode(const char *name)
-{
-    struct VideoMode *vmode;
-
-    for (vmode = VideoModes; vmode; vmode = vmode->next)
-	if (!strcmp(name, vmode->name))
-	    break;
-
-    return vmode;
-}
-
-
-    /*
-     *  Modify a Video Mode
-     */
-
-static void ModifyVideoMode(struct VideoMode *vmode)
-{
-    u_int hstep = 8, vstep = 2;
-
-    if (Opt_xres)
-	vmode->xres = strtoul(Opt_xres, NULL, 0);
-    if (Opt_yres)
-	vmode->yres = strtoul(Opt_yres, NULL, 0);
-    if (Opt_vxres)
-	vmode->vxres = strtoul(Opt_vxres, NULL, 0);
-    if (Opt_vyres)
-	vmode->vyres = strtoul(Opt_vyres, NULL, 0);
-    if (Opt_depth)
-	vmode->depth = strtoul(Opt_depth, NULL, 0);
-    if (Opt_nonstd)
-	vmode->nonstd = strtoul(Opt_nonstd, NULL, 0);
-    if (Opt_accel)
-	vmode->accel_flags = atoboolean(Opt_accel) ? FB_ACCELF_TEXT : 0;
-    if (Opt_pixclock)
-	vmode->pixclock = strtoul(Opt_pixclock, NULL, 0);
-    if (Opt_left)
-	vmode->left = strtoul(Opt_left, NULL, 0);
-    if (Opt_right)
-	vmode->right = strtoul(Opt_right, NULL, 0);
-    if (Opt_upper)
-	vmode->upper = strtoul(Opt_upper, NULL, 0);
-    if (Opt_lower)
-	vmode->lower = strtoul(Opt_lower, NULL, 0);
-    if (Opt_hslen)
-	vmode->hslen = strtoul(Opt_hslen, NULL, 0);
-    if (Opt_vslen)
-	vmode->vslen = strtoul(Opt_vslen, NULL, 0);
-    if (Opt_hsync)
-	vmode->hsync = atoboolean(Opt_hsync);
-    if (Opt_vsync)
-	vmode->vsync = atoboolean(Opt_vsync);
-    if (Opt_csync)
-	vmode->csync = atoboolean(Opt_csync);
-    if (Opt_gsync)
-	vmode->gsync = atoboolean(Opt_gsync);
-    if (Opt_extsync)
-	vmode->extsync = atoboolean(Opt_extsync);
-    if (Opt_bcast)
-	vmode->bcast = atoboolean(Opt_bcast);
-    if (Opt_laced)
-	vmode->laced = atoboolean(Opt_laced);
-    if (Opt_double)
-	vmode->dblscan = atoboolean(Opt_double);
-    if (Opt_grayscale)
-	vmode->grayscale = atoboolean(Opt_grayscale);
-    if (Opt_step)
-	hstep = vstep = strtoul(Opt_step, NULL, 0);
-    if (Opt_matchyres)
-        vmode->vyres = vmode->yres;
-    if (Opt_move) {
-	if (!strcasecmp(Opt_move, "left")) {
-	    if (hstep > vmode->left)
-		Die("The left margin cannot be negative\n");
-	    vmode->left -= hstep;
-	    vmode->right += hstep;
-	} else if (!strcasecmp(Opt_move, "right")) {
-	    if (hstep > vmode->right)
-		Die("The right margin cannot be negative\n");
-	    vmode->left += hstep;
-	    vmode->right -= hstep;
-	} else if (!strcasecmp(Opt_move, "up")) {
-	    if (vstep > vmode->upper)
-		Die("The upper margin cannot be negative\n");
-	    vmode->upper -= vstep;
-	    vmode->lower += vstep;
-	} else if (!strcasecmp(Opt_move, "down")) {
-	    if (vstep > vmode->lower)
-		Die("The lower margin cannot be negative\n");
-	    vmode->upper += vstep;
-	    vmode->lower -= vstep;
-	} else
-	    Die("Invalid direction `%s'\n", Opt_move);
-    }
-    if (Opt_rgba) {
-	makeRGBA(vmode, Opt_rgba);
-    }
-    if (!FillScanRates(vmode))
-	Die("Bad video mode\n");
-}
-
-
-    /*
-     *  Display the Video Mode Information
-     */
-
-static void DisplayVModeInfo(struct VideoMode *vmode)
-{
-    u_int res, sstart, send, total;
-
-    puts("");
-    if (!Opt_xfree86) {
-	printf("mode \"%dx%d", vmode->xres, vmode->yres);
-	if (vmode->pixclock) {
-	    printf("-%d\"\n", (int)(vmode->vrate+0.5));
-	    printf("    # D: %5.3f MHz, H: %5.3f kHz, V: %5.3f Hz\n",
-		   vmode->drate/1E6, vmode->hrate/1E3, vmode->vrate);
-	} else
-	    puts("\"");
-	printf("    geometry %d %d %d %d %d\n", vmode->xres, vmode->yres,
-	       vmode->vxres, vmode->vyres, vmode->depth);
-	printf("    timings %d %d %d %d %d %d %d\n", vmode->pixclock,
-	       vmode->left, vmode->right, vmode->upper, vmode->lower,
-	       vmode->hslen, vmode->vslen);
-	if (vmode->hsync)
-	    puts("    hsync high");
-	if (vmode->vsync)
-	    puts("    vsync high");
-	if (vmode->csync)
-	    puts("    csync high");
-	if (vmode->gsync)
-	    puts("    gsync true");
-	if (vmode->extsync)
-	    puts("    extsync true");
-	if (vmode->bcast)
-	    puts("    bcast true");
-	if (vmode->laced)
-	    puts("    laced true");
-	if (vmode->dblscan)
-	    puts("    double true");
-	if (vmode->nonstd)
-            printf("    nonstd %u\n", vmode->nonstd);
-	if (vmode->accel_flags)
-	    puts("    accel true");
-	if (vmode->grayscale)
-	    puts("    grayscale true");
-	printf("    rgba %u/%u,%u/%u,%u/%u,%u/%u\n",
-	    vmode->red.length, vmode->red.offset, vmode->green.length,
-	    vmode->green.offset, vmode->blue.length, vmode->blue.offset,
-	    vmode->transp.length, vmode->transp.offset);
-	puts("endmode\n");
-    } else {
-	printf("Mode \"%dx%d\"\n", vmode->xres, vmode->yres);
-	if (vmode->pixclock) {
-	    printf("    # D: %5.3f MHz, H: %5.3f kHz, V: %5.3f Hz\n",
-		   vmode->drate/1E6, vmode->hrate/1E3, vmode->vrate);
-	    printf("    DotClock %5.3f\n", vmode->drate/1E6+0.001);
-	} else
-	    puts("    DotClock Unknown");
-	res = vmode->xres;
-	sstart = res+vmode->right;
-	send = sstart+vmode->hslen;
-	total = send+vmode->left;
-	printf("    HTimings %d %d %d %d\n", res, sstart, send, total);
-	res = vmode->yres;
-	sstart = res+vmode->lower;
-	send = sstart+vmode->vslen;
-	total = send+vmode->upper;
-	printf("    VTimings %d %d %d %d\n", res, sstart, send, total);
-	printf("    Flags   ");
-	if (vmode->laced)
-	    printf(" \"Interlace\"");
-	if (vmode->dblscan)
-	    printf(" \"DoubleScan\"");
-	if (vmode->hsync)
-	    printf(" \"+HSync\"");
-	else
-	    printf(" \"-HSync\"");
-	if (vmode->vsync)
-	    printf(" \"+VSync\"");
-	else
-	    printf(" \"-VSync\"");
-	if (vmode->csync)
-	    printf(" \"Composite\"");
-	if (vmode->extsync)
-	    puts("    # Warning: XFree86 doesn't support extsync\n");
-	if (vmode->bcast)
-	    printf(" \"bcast\"");
-	if (vmode->accel_flags)
-	    puts("    # Warning: XFree86 doesn't support accel\n");
-	if (vmode->grayscale)
-	    puts("    # Warning: XFree86 doesn't support grayscale\n");
-	puts("\nEndMode\n");
-    }
-}
-
-
-    /*
-     *  Display the Frame Buffer Device Information
-     */
-
-static void DisplayFBInfo(struct fb_fix_screeninfo *fix)
-{
-    int i;
-
-    puts("Frame buffer device information:");
-    printf("    Name        : %s\n", fix->id);
-    printf("    Address     : %p\n", fix->smem_start);
-    printf("    Size        : %d\n", fix->smem_len);
-    printf("    Type        : ");
-    switch (fix->type) {
-	case FB_TYPE_PACKED_PIXELS:
-	    puts("PACKED PIXELS");
-	    break;
-	case FB_TYPE_PLANES:
-	    puts("PLANES");
-	    break;
-	case FB_TYPE_INTERLEAVED_PLANES:
-	    printf("INTERLEAVED PLANES (%d bytes interleave)\n",
-		   fix->type_aux);
-	    break;
-	case FB_TYPE_TEXT:
-	    for (i = 0; i < sizeof(Textmodes)/sizeof(*Textmodes); i++)
-		if (fix->type_aux == Textmodes[i].id)
-		    break;
-	    if (i < sizeof(Textmodes)/sizeof(*Textmodes))
-		puts(Textmodes[i].name);
-	    else
-		printf("Unknown text (%d)\n", fix->type_aux);
-	    break;
-	case FB_TYPE_VGA_PLANES:
-	    {
-	    	struct textentry *t;
-		
-		for (t = VGAModes; t->name; t++)
-		    if (fix->type_aux == t->id)
-		    	break;
-		if (t->name)
-		    puts(t->name);
-		else
-	            printf("Unknown VGA mode (%d)\n", fix->type_aux);
-	    }
-	    break;
-	default:
-	    printf("%d (UNKNOWN)\n", fix->type);
-	    printf("    Type_aux    : %d\n", fix->type_aux);
-	    break;
-    }
-    printf("    Visual      : ");
-    switch (fix->visual) {
-	case FB_VISUAL_MONO01:
-	    puts("MONO01");
-	    break;
-	case FB_VISUAL_MONO10:
-	    puts("MONO10");
-	    break;
-	case FB_VISUAL_TRUECOLOR:
-	    puts("TRUECOLOR");
-	    break;
-	case FB_VISUAL_PSEUDOCOLOR:
-	    puts("PSEUDOCOLOR");
-	    break;
-	case FB_VISUAL_DIRECTCOLOR:
-	    puts("DIRECTCOLOR");
-	    break;
-	case FB_VISUAL_STATIC_PSEUDOCOLOR:
-	    puts("STATIC PSEUDOCOLOR");
-	    break;
-	default:
-	    printf("%d (UNKNOWN)\n", fix->visual);
-	    break;
-    }
-    printf("    XPanStep    : %d\n", fix->xpanstep);
-    printf("    YPanStep    : %d\n", fix->ypanstep);
-    printf("    YWrapStep   : %d\n", fix->ywrapstep);
-    printf("    LineLength  : %d\n", fix->line_length);
-    if (fix->mmio_len) {
-	printf("    MMIO Address: %p\n", fix->mmio_start);
-	printf("    MMIO Size   : %d\n", fix->mmio_len);
-    }
-    printf("    Accelerator : ");
-    for (i = 0; i < sizeof(Accelerators)/sizeof(*Accelerators); i++)
-	if (fix->accel == Accelerators[i].id)
-	    break;
-    if (i < sizeof(Accelerators)/sizeof(*Accelerators))
-	puts(Accelerators[i].name);
-    else
-	printf("Unknown (%d)\n", fix->accel);
-}
-
-
-    /*
-     *  Calculate the Scan Rates for a Video Mode
-     */
-
-static int FillScanRates(struct VideoMode *vmode)
-{
-    u_int htotal = vmode->left+vmode->xres+vmode->right+vmode->hslen;
-    u_int vtotal = vmode->upper+vmode->yres+vmode->lower+vmode->vslen;
-
-    if (vmode->dblscan)
-	vtotal <<= 2;
-    else if (!vmode->laced)
-	vtotal <<= 1;
-
-    if (!htotal || !vtotal)
-	return 0;
-
-    if (vmode->pixclock) {
-	vmode->drate = 1E12/vmode->pixclock;
-	vmode->hrate = vmode->drate/htotal;
-	vmode->vrate = vmode->hrate/vtotal*2;
-    } else {
-	vmode->drate = 0;
-	vmode->hrate = 0;
-	vmode->vrate = 0;
-    }
-
-    return 1;
-}
-
-
-    /*
-     *  Print the Usage Template and Exit
-     */
-
-static void Usage(void)
-{
-    puts(VERSION);
-    Die("\nUsage: %s [options] [mode]\n\n"
-	"Valid options:\n"
-	"  General options:\n"
-	"    -h, --help         : display this usage information\n"
-	"    --test             : don't change, just test whether the mode is "
-				 "valid\n"
-	"    -s, --show         : display video mode settings\n"
-	"    -i, --info         : display all frame buffer information\n"
-	"    -v, --verbose      : verbose mode\n"
-	"    -V, --version      : print version information\n"
-	"    -x, --xfree86      : XFree86 compatibility mode\n"
-	"    -a, --all          : change all virtual consoles on this device\n"
-	"  Frame buffer special device nodes:\n"
-	"    -fb <device>       : processed frame buffer device\n"
-	"                         (default is " DEFAULT_FRAMEBUFFER ")\n"
-	"  Video mode database:\n"
-	"    -db <file>         : video mode database file\n"
-	"                         (default is " DEFAULT_MODEDBFILE ")\n"
-	"  Display geometry:\n"
-	"    -xres <value>      : horizontal resolution (in pixels)\n"
-	"    -yres <value>      : vertical resolution (in pixels)\n"
-	"    -vxres <value>     : virtual horizontal resolution (in pixels)\n"
-	"    -vyres <value>     : virtual vertical resolution (in pixels)\n"
-	"    -depth <value>     : display depth (in bits per pixel)\n"
-	"    -nonstd <value>    : select nonstandard video mode\n"
-	"    -g, --geometry ... : set all geometry parameters at once\n"
-	"    -match             : set virtual vertical resolution by virtual resolution\n"
-	"  Display timings:\n"
-	"    -pixclock <value>  : pixel clock (in picoseconds)\n"
-	"    -left <value>      : left margin (in pixels)\n"
-	"    -right <value>     : right margin (in pixels)\n"
-	"    -upper <value>     : upper margin (in pixel lines)\n"
-	"    -lower <value>     : lower margin (in pixel lines)\n"
-	"    -hslen <value>     : horizontal sync length (in pixels)\n"
-	"    -vslen <value>     : vertical sync length (in pixel lines)\n"
-	"    -t, --timings ...  : set all timing parameters at once\n"
-	"  Display flags:\n"
-	"    -accel <value>     : hardware text acceleration enable (false or "
-				 "true)\n"
-	"    -hsync <value>     : horizontal sync polarity (low or high)\n"
-	"    -vsync <value>     : vertical sync polarity (low or high)\n"
-	"    -csync <value>     : composite sync polarity (low or high)\n"
-	"    -gsync <value>     : synch on green (false or true)\n"
-	"    -extsync <value>   : external sync enable (false or true)\n"
-	"    -bcast <value>     : broadcast enable (false or true)\n"
-	"    -laced <value>     : interlace enable (false or true)\n"
-	"    -double <value>    : doublescan enable (false or true)\n"
-	"    -rgba <r,g,b,a>    : recommended length of color entries\n"
-	"    -grayscale <value> : grayscale enable (false or true)\n"
-	"  Display positioning:\n"
-	"    -move <direction>  : move the visible part (left, right, up or "
-				 "down)\n"
-	"    -step <value>      : step increment (in pixels or pixel lines)\n"
-	"                         (default is 8 horizontal, 2 vertical)\n",
-	ProgramName);
-}
-
-
-    /*
-     *  Main Routine
-     */
-
-int main(int argc, char *argv[])
-{
-    struct VideoMode *vmode;
-    struct fb_var_screeninfo var;
-    struct fb_fix_screeninfo fix;
-    int fh = -1, i;
-
-    ProgramName = argv[0];
-
-    /*
-     *  Parse the Options
-     */
-
-    while (--argc > 0) {
-	argv++;
-	if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help"))
-	    Usage();
-	else if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose"))
-	    Opt_verbose = 1;
-	else if (!strcmp(argv[0], "-V") || !strcmp(argv[0], "--version"))
-	    Opt_version = 1;
-	else if (!strcmp(argv[0], "--test"))
-	    Opt_test = 1;
-	else if (!strcmp(argv[0], "-s") || !strcmp(argv[0], "--show"))
-	    Opt_show = 1;
-	else if (!strcmp(argv[0], "-i") || !strcmp(argv[0], "--info")) {
-	    Opt_show = 1;
-	    Opt_info = 1;
-	} else if (!strcmp(argv[0], "-x") || !strcmp(argv[0], "--xfree86"))
-	    Opt_xfree86 = 1;
-	else if (!strcmp(argv[0], "-a") || !strcmp(argv[0], "--all"))
-	    Opt_all = 1;
-	else if (!strcmp(argv[0], "-g") || !strcmp(argv[0], "--geometry")) {
-	    if (argc > 5) {
-		Opt_xres = argv[1];
-		Opt_yres = argv[2];
-		Opt_vxres = argv[3];
-		Opt_vyres = argv[4];
-		Opt_depth = argv[5];
-		Opt_change = 1;
-		argc -= 5;
-		argv += 5;
-	    } else
-		Usage();
-	} else if (!strcmp(argv[0], "-t") || !strcmp(argv[0], "--timings")) {
-	    if (argc > 7) {
-		Opt_pixclock = argv[1];
-		Opt_left = argv[2];
-		Opt_right = argv[3];
-		Opt_upper = argv[4];
-		Opt_lower = argv[5];
-		Opt_hslen = argv[6];
-		Opt_vslen = argv[7];
-		Opt_change = 1;
-		argc -= 7;
-		argv += 7;
-	    } else
-		Usage();
-	} else if (!strcmp(argv[0], "-match")) {
-	    Opt_matchyres = argv[0];
-	    Opt_change = 1;
-	} else {
-	    for (i = 0; Options[i].name; i++)
-		if (!strcmp(argv[0], Options[i].name))
-		    break;
-	    if (Options[i].name) {
-		if (argc-- > 1) {
-		    *Options[i].value = argv[1];
-		    Opt_change |= Options[i].change;
-		    argv++;
-		} else
-		    Usage();
-	    } else if (!Opt_modename) {
-		Opt_modename = argv[0];
-		Opt_change = 1;
-	    } else
-		Usage();
-	}
-    }
-
-    if (Opt_version || Opt_verbose)
-	puts(VERSION);
-
-    if (!Opt_fb)
-	Opt_fb = DEFAULT_FRAMEBUFFER;
-
-    /*
-     *  Open the Frame Buffer Device
-     */
-
-    fh = OpenFrameBuffer(Opt_fb);
-
-    /*
-     *  Get the Video Mode
-     */
-
-    if (Opt_modename) {
-
-	/*
-	 *  Read the Video Mode Database
-	 */
-
-	ReadModeDB();
-
-	if (!(vmode = FindVideoMode(Opt_modename)))
-	    Die("Unknown video mode `%s'\n", Opt_modename);      
-
-	Current = *vmode;
-	if (Opt_verbose)
-	    printf("Using video mode `%s'\n", Opt_modename);
-    } else {
-	GetVarScreenInfo(fh, &var);
-	ConvertToVideoMode(&var, &Current);
-	if (Opt_verbose)
-	    printf("Using current video mode from `%s'\n", Opt_fb);
-    }
-
-    if (Opt_change) {
-
-	/*
-	 *  Optionally Modify the Video Mode
-	 */
-
-	ModifyVideoMode(&Current);
-
-	/*
-	 *  Set the Video Mode
-	 */
-
-	ConvertFromVideoMode(&Current, &var);
-	if (Opt_verbose)
-	    printf("Setting video mode to `%s'\n", Opt_fb);
-	SetVarScreenInfo(fh, &var);
-	ConvertToVideoMode(&var, &Current);
-    }
-
-    /*
-     *  Display some Video Mode Information
-     */
-
-    if (Opt_show || !Opt_change)
-	DisplayVModeInfo(&Current);
-
-    if (Opt_info) {
-	if (Opt_verbose)
-	    puts("Getting further frame buffer information");
-	GetFixScreenInfo(fh, &fix);
-	DisplayFBInfo(&fix);
-    }
-
-    /*
-     *  Close the Frame Buffer Device
-     */
-
-    CloseFrameBuffer(fh);
-
-    exit(0);
-}
--- a/TOOLS/TVout/fbset/fbset.h	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- *  Linux Frame Buffer Device Configuration
- *
- *  © Copyright 1995-1998 by Geert Uytterhoeven
- *			(Geert.Uytterhoeven@cs.kuleuven.ac.be)
- *
- *  --------------------------------------------------------------------------
- *
- *  This file is subject to the terms and conditions of the GNU General Public
- *  License. See the file COPYING in the main directory of the Linux
- *  distribution for more details.
- */
-
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef __GLIBC__
-#include <asm/types.h>
-#endif
-
-#define VERSION         "Linux Frame Buffer Device Configuration " \
-			"Version 2.1 (23/06/1999)\n"  \
-			"(C) Copyright 1995-1999 by Geert Uytterhoeven\n"
-
-#define LOW		(0)
-#define HIGH		(1)
-
-#define FALSE		(0)
-#define TRUE		(1)
-
-struct color {
-    unsigned int length;
-    unsigned int offset;
-};
-
-struct VideoMode {
-    struct VideoMode *next;
-    const char *name;
-    /* geometry */
-    __u32 xres;
-    __u32 yres;
-    __u32 vxres;
-    __u32 vyres;
-    __u32 depth;
-    __u32 nonstd;
-    /* acceleration */
-    __u32 accel_flags;
-    /* timings */
-    __u32 pixclock;
-    __u32 left;
-    __u32 right;
-    __u32 upper;
-    __u32 lower;
-    __u32 hslen;
-    __u32 vslen;
-    /* flags */
-    unsigned hsync : 1;
-    unsigned vsync : 1;
-    unsigned csync : 1;
-    unsigned gsync : 1;
-    unsigned extsync : 1;
-    unsigned bcast : 1;
-    unsigned laced : 1;
-    unsigned dblscan : 1;
-    unsigned grayscale : 1;
-    /* scanrates */
-    double drate;
-    double hrate;
-    double vrate;
-    /* RGB entries */
-    struct color red, green, blue, transp;
-};
-
-extern FILE *yyin;
-extern int line;
-extern const char *Opt_modedb;
-
-extern int yyparse(void);
-extern void Die(const char *fmt, ...) __attribute__ ((noreturn));
-extern void AddVideoMode(const struct VideoMode *vmode);
-extern void makeRGBA(struct VideoMode *vmode, const char* opt);
--- a/TOOLS/TVout/fbset/modeline2fb	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-#!/usr/bin/perl
-
-# Simple modeline-to-fb.modes translator
-# (c) 1998 by Patrick Reynolds
-# distributed under the GNU General Public License
- 
-# mapping of modeline options to fb.modes options
-%options_map = (
-  "-hsync" => "hsync low",
-  "-vsync" => "vsync low",
-  "+hsync" => "hsync high",
-  "+vsync" => "vsync high",
-  "interlace" => "laced true",
-  "doublescan" => "double true"
-);
-
-@possible_vxres = ( 640, 800, 1024, 1152, 1280, 1600, 1920, 2048 );
-
-# default settings (override with -d and -r)
-$depth = 8;
-$rounding = 128;
-
-# parse options
-while ($ARGV[0] =~ /^-/) {
-  $arg = shift;
-  if ($arg eq "-d" || $arg eq "--depth") {
-    if (!($arg = shift @ARGV)) {
-      usage("-d requires an argument");
-    }
-    $depth = $arg;
-  }
-  elsif ($arg eq "-r" || $arg eq "--rounding") {
-    if (!($arg = shift @ARGV)) {
-      usage("-r requires an argument");
-    }
-    $rounding = $arg;
-  }
-  elsif ($arg eq "-x" || $arg eq "--vxres") {
-    if (!($arg = shift @ARGV)) {
-      usage("-x requires an argument");
-    }
-    push @possible_vxres, (split/,/,$arg);
-    @possible_vxres = sort { $a <=> $b } @possible_vxres;
-    print "new vxres: " . (join ",", @possible_vxres) . "\n";
-  }
-  elsif ($arg eq "-h" || $arg eq "--help") {
-    usage();
-  }
-  else {
-    usage("unknown option: $arg");
-  }
-}
-
-# find out how much video memory is available
-open(FBSET, "fbset -i|") || die "could not detect available video memory";
-while (<FBSET>) {
-  if (/Size\s*:\s*(\d+)/) {
-    $size = $1;
-    last;
-  }
-}
-if (!$size) { die "could not detect available video memory"; }
-
-# huge kludge (hey, that rhymes!) ...
-#   subtract 16384 from the available memory $size
-#   why?  the default 640x480 mode uses all but 16384, and when I set it
-#   to use more than that, it oopses (!).  So... for safety's sake, and
-#   because you probably don't use those 15-25 lines anyway...
-$size -= 16384;
-
-print "# modes.fb - video mode descriptions for fbset
-#
-# See fbset(8) and fb.modes(5) for more information
-
-";
-
-$flag = 0;
-# read all XF86Config files
-while(<>) {
-  chomp;
-  next if !(($name, $clock, $xres, $xsyncstart, $xsyncend, $xfres,
-                  $yres, $ysyncstart, $ysyncend, $yfres, $extra) =
-    /^\s*modeline\s+"([^"]+)"\s+([0-9.]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*(.*)$/i);
-  $flag = 1;
-
-  # timing transformations, as described in the fb HOWTO
-  $pixtime = int(1000000/$clock);
-  $left = $xfres - $xsyncend;
-  $right = $xsyncstart - $xres;
-  $hsynclen = $xsyncend - $xsyncstart;
-  $top = $yfres - $ysyncend;
-  $bottom = $ysyncstart - $yres;
-  $vsynclen = $ysyncend - $ysyncstart;
-
-  # pick a virtual X and Y resolution
-  $vxres = get_vxres($xres);
-  if ($vxres < 0) {
-    print STDERR "Could not guess a good virtual resolution for mode $name.\n";
-    print STDERR "Use the advanced options --rounding and --vxres.\n";
-    next;
-  }
-  $vyres = int($size/$vxres);
-
-  # print out our entry
-  print "mode \"$name\"\n";
-  print "  geometry   $xres $yres   $vxres $vyres   $depth\n";
-  print "  timings    $pixtime   $left $right   $top $bottom   $hsynclen $vsynclen\n";
-
-  # handle extra options at the end of the modeline
-  $extra =~ tr/A-Z/a-z/;
-  @options = split/\s+/,$extra;
-  foreach (@options) {
-    if ($options_map{$_}) {
-      print "  $options_map{$_}\n";
-    }
-    else {
-      print "  # unknown option: $_\n";
-    }
-  }
-  print "endmode\n\n";
-}
-
-if (!$flag) {
-  print STDERR "No modelines found.\n";
-  print STDERR "Make sure the file you specified was an XF86Config file and\n";
-  print STDERR "used the single-line Modeline format.\n\n";
-  print STDERR "Use \"$0 --help\" for help.\n";
-}
-
-sub get_vxres {
-  foreach (@possible_vxres) {
-    return $_ if ($_ >= $_[0] && ($_ % $rounding) == 0);
-  }
-  return -1;
-}
-
-sub usage {
-  print STDERR "$_[0]\n" if ($_[0]);
-  print STDERR "$0 [OPTION] [FILES]\n\n";
-  print STDERR "  -d,--depth depth     use a certain display depth (default is 8)\n";
-  print STDERR "  -h,--help            what you see here\n\n";
-  print STDERR "Advanced options:\n";
-  print STDERR "  -r,--rounding div    vxres divisor (default is 128)\n";
-  print STDERR "  -x,--vxres X,X,X,... extra possible vxres values\n\n";
-  print STDERR "[FILES] refers to one or more XF86Config files.  Note that\n";
-  print STDERR "all modelines must be in single-line format.\n\n";
-  print STDERR "Example:\n";
-  print STDERR "  $0 -d 16 /etc/X11/XF86Config\n";
-  exit 0;
-}
--- a/TOOLS/TVout/fbset/modes.l	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-
-/*
- *  Linux Frame Buffer Device Configuration
- *
- *  © Copyright 1995-1998 by Geert Uytterhoeven
- *		       (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- *
- *  --------------------------------------------------------------------------
- *
- *  This file is subject to the terms and conditions of the GNU General Public
- *  License. See the file COPYING in the main directory of the Linux
- *  distribution for more details.
- */
-
-
-%{
-
-#define YYSTYPE		long
-
-#include <string.h>
-#include <stdlib.h>
-
-#include "fbset.h"
-#include "modes.tab.h"
-
-struct keyword {
-    const char *name;
-    int token;
-    int value;
-};
-
-static struct keyword keywords[] = {
-    { "mode", MODE, 0 },
-    { "geometry", GEOMETRY, 0 },
-    { "timings", TIMINGS, 0 },
-    { "hsync", HSYNC, 0 },
-    { "vsync", VSYNC, 0 },
-    { "csync", CSYNC, 0 },
-    { "gsync", GSYNC, 0 },
-    { "extsync", EXTSYNC, 0 },
-    { "bcast", BCAST, 0 },
-    { "laced", LACED, 0 },
-    { "double", DOUBLE, 0 },
-    { "rgba", RGBA, 0 },
-    { "nonstd", NONSTD, 0 },
-    { "accel", ACCEL, 0 },
-    { "grayscale", GRAYSCALE, 0 },
-    { "endmode", ENDMODE, 0 },
-    { "low", POLARITY, LOW },
-    { "high", POLARITY, HIGH },
-    { "false", BOOLEAN, FALSE },
-    { "true", BOOLEAN, TRUE },
-    { "", -1, 0 }
-};
-
-int line = 1;
-
-
-void yyerror(const char *s)
-{
-    Die("%s:%d: %s\n", Opt_modedb, line, s);
-}
-
-
-int yywrap(void)
-{
-    return 1;
-}
-
-
-static int FindToken(const char *s)
-{
-    int i;
-
-    for (i = 0; keywords[i].token > 0; i++)
-	if (!strcasecmp(s, keywords[i].name)) {
-	    yylval = keywords[i].value;
-	    return keywords[i].token;
-	}
-    Die("%s:%d: Unknown keyword `%s'\n", Opt_modedb, line, s);
-}
-
-
-static const char *CopyString(const char *s)
-{
-    int len;
-    char *s2;
-
-    len = strlen(s)-2;
-    if (!(s2 = malloc(len+1)))
-	Die("No memory\n");
-    strncpy(s2, s+1, len);
-    s2[len] = '\0';
-    return s2;
-}
-
-
-%}
-
-keyword	[a-zA-Z][a-zA-Z0-9]*
-number	[0-9]*
-string	\"[^\"\n]*\"
-comment	\#([^\n]*)
-space	[ \t]+
-junk	.
-
-%%
-
-{keyword}   {
-		return FindToken(yytext);
-	    }
-
-{number}    {
-		yylval = strtoul(yytext, NULL, 0);
-		return NUMBER;
-	    }
-
-{string}    {
-		yylval = (unsigned long)CopyString(yytext);
-		return STRING;
-	    }
-
-{comment}$  break;
-
-{space}	    break;
-
-\n	    {
-		line++;
-		break;
-	    }
-
-{junk}	    {
-		Die("%s:%d: Invalid token `%s'\n", Opt_modedb, line, yytext);
-	    }
-
-%%
--- a/TOOLS/TVout/fbset/modes.y	Tue Aug 03 00:45:55 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/*
- *  Linux Frame Buffer Device Configuration
- *
- *  © Copyright 1995-1998 by Geert Uytterhoeven
- *		       (Geert.Uytterhoeven@cs.kuleuven.ac.be)
- *
- *  --------------------------------------------------------------------------
- *
- *  This file is subject to the terms and conditions of the GNU General Public
- *  License. See the file COPYING in the main directory of the Linux
- *  distribution for more details.
- */
-
-
-%{
-
-#define YYSTYPE		long
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "fb.h"
-#include "fbset.h"
-
-extern int yylex(void);
-extern void yyerror(const char *s);
-extern int line;
-
-
-static struct VideoMode VideoMode;
-
-static void ClearVideoMode(void)
-{
-    memset(&VideoMode, 0, sizeof(VideoMode));
-    VideoMode.accel_flags = FB_ACCELF_TEXT;
-}
-
-%}
-
-%start file
-
-%token MODE GEOMETRY TIMINGS HSYNC VSYNC CSYNC GSYNC EXTSYNC BCAST LACED DOUBLE
-       RGBA NONSTD ACCEL GRAYSCALE
-       ENDMODE POLARITY BOOLEAN STRING NUMBER 
-
-%%
-
-file	  : vmodes
-	  ;
-
-
-vmodes	  : /* empty */
-	  | vmodes vmode
-	  ;
-
-vmode	  : MODE STRING geometry timings options ENDMODE
-	    {
-		VideoMode.name = (const char *)$2;
-		AddVideoMode(&VideoMode);
-		ClearVideoMode();
-	    }
-	  ;
-
-geometry  : GEOMETRY NUMBER NUMBER NUMBER NUMBER NUMBER
-	    {
-		ClearVideoMode();
-		VideoMode.xres = $2;
-		VideoMode.yres = $3;
-		VideoMode.vxres = $4;
-		VideoMode.vyres = $5;
-		VideoMode.depth = $6;
-	    }
-	  ;
-
-timings	  : TIMINGS NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
-	    {
-		VideoMode.pixclock = $2;
-		VideoMode.left = $3;
-		VideoMode.right = $4;
-		VideoMode.upper = $5;
-		VideoMode.lower = $6;
-		VideoMode.hslen = $7;
-		VideoMode.vslen = $8;
-	    }
-	  ;
-
-options	  : /* empty */
-	  | options hsync
-	  | options vsync
-	  | options csync
-	  | options gsync
-	  | options extsync
-	  | options bcast
-	  | options laced
-	  | options double
-	  | options rgba
-	  | options nonstd
-	  | options accel
-	  | options grayscale
-	  ;
-
-hsync	  : HSYNC POLARITY
-	    {
-		VideoMode.hsync = $2;
-	    }
-	  ;
-
-vsync	  : VSYNC POLARITY
-	    {
-		VideoMode.vsync = $2;
-	    }
-	  ;
-
-csync	  : CSYNC POLARITY
-	    {
-		VideoMode.csync = $2;
-	    }
-	  ;
-
-gsync	  : GSYNC POLARITY
-	    {
-		VideoMode.gsync = $2;
-	    }
-	  ;
-
-extsync	  : EXTSYNC BOOLEAN
-	    {
-		VideoMode.extsync = $2;
-	    }
-	  ;
-
-bcast	  : BCAST BOOLEAN
-	    {
-		VideoMode.bcast = $2;
-	    }
-	  ;
-
-laced	  : LACED BOOLEAN
-	    {
-		VideoMode.laced = $2;
-	    }
-	  ;
-
-double	  : DOUBLE BOOLEAN
-	    {
-		VideoMode.dblscan = $2;
-	    }
-	  ;
-
-rgba      : RGBA STRING
-            {
-		makeRGBA(&VideoMode, (const char*)$2);
-	    }
-	  ;
-
-nonstd    : NONSTD NUMBER
-            {
-	    	VideoMode.nonstd = $2;
-	    }
-	  ;
-
-accel	  : ACCEL BOOLEAN
-	    {
-		VideoMode.accel_flags = $2;
-	    }
-	  ;
-
-grayscale : GRAYSCALE BOOLEAN
-	    {
-		VideoMode.grayscale = $2;
-	    }
-	  ;
-	  
-%%