Remove obsolete TV output tools.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22860 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2007-03-31 14:21:06 +00:00
parent e40f658344
commit a2171395a4
25 changed files with 0 additions and 1398 deletions

View File

@ -136,13 +136,6 @@ Directory: libmpdemux/genres.h
Copyright: 2001 Jason Carter
License: GNU General Public License
Name: matroxset
Version: 0.3
Homepage: ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/
Directory: TOOLS/TVout/matroxset/
Copyright: 2001 Petr Vandrovec
License: GNU General Public License
Name: unrarlib
Version: 0.4.0 + patches
Homepage: http://www.unrarlib.org/

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb1 -db fbset.db 640x400-60

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb1 -db fbset.db 640x480-60

View File

@ -1,2 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -depth 32 -laced false -bcast true

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 704 -vyres 528 -depth 32 -laced false -bcast true

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 42 -right 0 -upper 29 -lower 20 -hslen 46 -vslen 4 -xres 704 -yres 576 -vxres 704 -vyres 576 -depth 32 -laced false -bcast true

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 18 -right 0 -upper 39 -lower 10 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -depth 32 -laced false -bcast true

View File

@ -1,3 +0,0 @@
fbset/fbset -fb /dev/fb0 -left 38 -right 0 -upper 29 -lower 20 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -depth 32 -laced false -bcast true

View File

@ -1,13 +0,0 @@
# Compile TVout tools
rm -f con2fb/con2fb
cd matroxset
make clean
cd ..
cd fbset
make clean
cd ..

View File

@ -1,14 +0,0 @@
# SETUP TVout
# Same picture on TV & Monitor
# CRTC1 -> TVout & Monitor
matroxset/matroxset -f /dev/fb1 -m 0
matroxset/matroxset -f /dev/fb0 -m 3
# Enable TV
matroxset/matroxset 1
# Keep consoles on CRTC1
con2fb/con2fb /dev/fb0 /dev/tty1
con2fb/con2fb /dev/fb0 /dev/tty2

View File

@ -1,15 +0,0 @@
# Compile TVout tools
cd con2fb
gcc con2fb.c -o con2fb
cd ..
cd matroxset
make
cd ..
cd fbset
make
cd ..

View File

@ -1,79 +0,0 @@
/* this is userspace utility which allows you to redirect console to another fb device
* You can specify devices & consoles by both numbers and devices. Framebuffers numbers
* are zero based (/dev/fb0 ... ), consoles begins with 1 (/dev/tty1 ... )
*/
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
struct fb_con2fbmap c2m;
char* fbPath;
u_int32_t con, fb;
char* e;
char* progname = strrchr(argv[0], '/');
int f;
if (progname)
progname++;
else
progname = argv[0];
if (argc < 3) {
fprintf(stderr, "usage: %s fbdev console\n", progname);
return 1;
}
fb = strtoul(argv[1], &e, 10);
if (*e) {
struct stat sbf;
if (stat(argv[1], &sbf)) {
fprintf(stderr, "%s: are you sure that %s can be used to describe fbdev?\n", progname, argv[1]);
return 1;
}
if (!S_ISCHR(sbf.st_mode)) {
fprintf(stderr, "%s: %s must be character device\n", progname, argv[1]);
return 1;
}
fb = sbf.st_rdev & 0xFF;
if (fb >= 32)
fb >>= 5;
fbPath = argv[1];
} else
fbPath = "/dev/fb0";
con = strtoul(argv[2], &e, 10);
if (*e) {
struct stat sbf;
if (stat(argv[2], &sbf)) {
fprintf(stderr, "%s: are you sure that %s can be used to describe vt?\n", progname, argv[2]);
return 1;
}
if (!S_ISCHR(sbf.st_mode)) {
fprintf(stderr, "%s: %s must be character device\n", progname, argv[2]);
return 1;
}
con = sbf.st_rdev & 0xFF;
}
c2m.console = con;
c2m.framebuffer = fb;
f = open(fbPath, O_RDWR);
if (f < 0) {
fprintf(stderr, "%s: Cannot open %s\n", progname, fbPath);
return 1;
}
if (ioctl(f, FBIOPUT_CON2FBMAP, &c2m)) {
fprintf(stderr, "%s: Cannot set console mapping\n", progname);
close(f);
return 1;
}
close(f);
return 0;
}

View File

@ -1,34 +0,0 @@
# FBset mode database
mode "640x480" # H: 33.78 kHz, V: 67.56 Hz
geometry 640 480 640 480 4
timings 35242 24 64 17 1 112 2
endmode
mode "640x480-60"
# D: 25.176 MHz, H: 31.469 kHz, V: 59.942 Hz
geometry 640 480 640 480 16
timings 39721 48 16 33 10 96 2
hsync high
accel true
# rgba 5/11,6/5,5/0,0/0
endmode
mode "640x400-60"
# D: 25.176 MHz, H: 31.469 kHz, V: 59.942 Hz
geometry 640 400 640 400 16
timings 39721 48 16 33 10 96 2
hsync high
accel true
# rgba 5/11,6/5,5/0,0/0
endmode
mode "vga70"
# H: 31.113 kHz, V: 69.294 Hz
geometry 640 400 640 400 4
timings 35242 64 96 35 12 112 2
# vsync high
# csync high
endmode

View File

@ -1,16 +0,0 @@
# SETUP TVout
# Independent picture on TV and Monitor
# CRTC1 -> TVout
matroxset/matroxset -f /dev/fb0 -m 2
# CRTC2 -> Monitor
matroxset/matroxset -f /dev/fb1 -m 1
# Enable TV
matroxset/matroxset 1
# move tty1-2 to CRTC2
con2fb/con2fb /dev/fb1 /dev/tty1
con2fb/con2fb /dev/fb1 /dev/tty2

View File

@ -1,142 +0,0 @@
#!/bin/sh
# needs very much fixing
#
# 720x576, the upper left corner is right on my TV, but
# it's too tall and wide
#
LEFT=54
RIGHT=-36
UPPER=55
LOWER=-6
XRES=720
YRES=576
while [ 1 ]; do
clear
echo q w left
echo a s right
echo e r upper
echo d f lower
echo t y xres
echo g h yres
echo z reset
echo x save
echo n LEFT
echo m RIGHT
echo o TALLER -BUG-
echo k SHORTER -BUG-
echo p UP
echo l DOWN
echo $LEFT $RIGHT
echo $UPPER $LOWER
echo $XRES $YRES
echo
fbset
read ABC
case "$ABC" in
q)
LEFT=$(($LEFT-2))
;;
w)
LEFT=$(($LEFT+2))
;;
a)
RIGHT=$(($RIGHT-2))
;;
s)
RIGHT=$(($RIGHT+2))
;;
e)
UPPER=$(($UPPER-2))
;;
r)
UPPER=$(($UPPER+2))
;;
d)
LOWER=$(($LOWER-2))
;;
f)
LOWER=$(($LOWER+2))
;;
t)
XRES=$(($XRES-2))
;;
y)
XRES=$(($XRES+2))
;;
g)
YRES=$(($YRES-2))
;;
h)
YRES=$(($YRES+2))
;;
n)
LEFT=$(($LEFT-2))
RIGHT=$(($RIGHT+2))
;;
m)
LEFT=$(($LEFT+2))
RIGHT=$(($RIGHT-2))
;;
o)
UPPER=$(($UPPER-2))
LOWER=$(($LOWER-2))
YRES=$(($YRES+4))
;;
k)
UPPER=$(($UPPER+2))
LOWER=$(($LOWER+2))
YRES=$(($YRES-4))
;;
p)
UPPER=$(($UPPER-2))
LOWER=$(($LOWER+2))
;;
l)
UPPER=$(($UPPER+2))
LOWER=$(($LOWER-2))
;;
z)
LEFT=54
RIGHT=-36
UPPER=55
LOWER=-6
XRES=720
YRES=576
;;
x)
echo "fbset -fb /dev/fb1 -left $LEFT -right $RIGHT -upper $UPPER -lower $LOWER -hslen 46 -vslen 4 -xres $XRES -yres $YRES -vxres 720 -vyres 576 -depth 32 -laced false -bcast true" > save
;;
esac
fbset -fb /dev/fb1 -left $LEFT -right $RIGHT -upper $UPPER -lower $LOWER -hslen 46 -vslen 4 -xres $XRES -yres $YRES -vxres 720 -vyres 576 -depth 32 -laced false -bcast true
done

View File

@ -1,8 +0,0 @@
CFLAGS = -O2 -W -Wall
all: matroxset
clean:
-rm -f matroxset
.PHONY: all clean

View File

@ -1,502 +0,0 @@
#ifndef _LINUX_FB_H
#define _LINUX_FB_H
#include <linux/tty.h>
#include <asm/types.h>
/* Definitions of frame buffers */
#define FB_MAJOR 29
#define FB_MAX 32 /* sufficient for now */
/* 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 FBIOBLANK 0x4611 /* arg: 0 or vesa level + 1 */
#define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank)
/* next 2 lines are temporary solution, support in 2.5 will be different */
#define FBIOGET_VT_VSCREENINFO 0x4680
#define FBIOPUT_VT_VSCREENINFO 0x4681
#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 */
#define FB_ACCEL_NV3 27 /* nVidia RIVA 128 */
#define FB_ACCEL_NV4 28 /* nVidia RIVA TNT */
#define FB_ACCEL_NV5 29 /* nVidia RIVA TNT2 */
#define FB_ACCEL_CT_6555x 30 /* C&T 6555x */
#define FB_ACCEL_3DFX_BANSHEE 31 /* 3Dfx Banshee */
#define FB_ACCEL_ATI_RAGE128 32 /* ATI Rage128 family */
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; /* 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;
};
/* VESA Blanking Levels */
#define VESA_NO_BLANKING 0
#define VESA_VSYNC_SUSPEND 1
#define VESA_HSYNC_SUSPEND 2
#define VESA_POWERDOWN 3
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 */
};
/* next structure is only 2.2 temporary hack, 2.3 solution will be different */
struct fb_vt_info {
__u32 console;
struct fb_var_screeninfo *info;
};
#define FB_VBLANK_VBLANKING 1 /* currently in a vertical blank */
#define FB_VBLANK_HBLANKING 2 /* currently in a horizontal blank */
#define FB_VBLANK_HAVE_VBLANK 4 /* vertical blanks can be detected */
#define FB_VBLANK_HAVE_HBLANK 8 /* horizontal blanks can be detected */
#define FB_VBLANK_HAVE_COUNT 16 /* global retrace counter is available */
#define FB_VBLANK_HAVE_VCOUNT 32 /* the vcount field is valid */
#define FB_VBLANK_HAVE_HCOUNT 64 /* the hcount field is valid */
struct fb_vblank {
__u32 flags; /* FB_VBLANK flags */
__u32 count; /* counter of retraces since boot */
__s32 vcount; /* current scanline position */
__s32 hcount; /* current scandot position */
__u32 reserved[4]; /* reserved for future compatibility */
};
#ifdef __KERNEL__
#if 1 /* to go away in 2.4.0 */
extern int GET_FB_IDX(kdev_t rdev);
#else
#define GET_FB_IDX(node) (MINOR(node))
#endif
#include <linux/fs.h>
#include <linux/init.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);
};
struct fb_info {
char modename[40]; /* default video mode */
kdev_t node;
int flags;
int open; /* Has this been open already ? */
#define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */
struct fb_fix_screeninfo fix; /* Current fix */
struct fb_monspecs monspecs; /* Current Monitor specs */
struct fb_ops *fbops;
char *screen_base; /* Virtual address */
struct display *disp; /* initial display variable */
struct display *currcon;
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) */
void *pseudo_palette; /* Fake palette of 16 colors and
the cursor's color for non
palette mode */
/* From here on everything is device dependent */
void *par;
};
#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);
/* drivers/video/fbmem.c */
extern int register_framebuffer(struct fb_info *fb_info);
extern int unregister_framebuffer(const struct fb_info *fb_info);
extern int num_registered_fb;
extern struct fb_info *registered_fb[FB_MAX];
/* drivers/video/fbmon.c */
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);
/* 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);
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;
};
extern int __init fb_find_mode(struct fb_var_screeninfo *var,
struct fb_info *info, const char *mode_option,
const struct fb_videomode *db,
unsigned int dbsize,
const struct fb_videomode *default_mode,
unsigned int default_bpp);
#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 */

View File

@ -1,32 +0,0 @@
#ifndef __LINUX_MATROXFB_H__
#define __LINUX_MATROXFB_H__
#include <asm/ioctl.h>
#include <asm/types.h>
struct matroxioc_output_mode {
__u32 output; /* which output */
#define MATROXFB_OUTPUT_PRIMARY 0x0000
#define MATROXFB_OUTPUT_SECONDARY 0x0001
__u32 mode; /* which mode */
#define MATROXFB_OUTPUT_MODE_PAL 0x0001
#define MATROXFB_OUTPUT_MODE_NTSC 0x0002
#define MATROXFB_OUTPUT_MODE_MONITOR 0x0080
};
#define MATROXFB_SET_OUTPUT_MODE _IOW('n',0xFA,sizeof(struct matroxioc_output_mode))
#define MATROXFB_GET_OUTPUT_MODE _IOWR('n',0xFA,sizeof(struct matroxioc_output_mode))
/* bitfield */
#define MATROXFB_OUTPUT_CONN_PRIMARY (1 << MATROXFB_OUTPUT_PRIMARY)
#define MATROXFB_OUTPUT_CONN_SECONDARY (1 << MATROXFB_OUTPUT_SECONDARY)
/* connect these outputs to this framebuffer */
#define MATROXFB_SET_OUTPUT_CONNECTION _IOW('n',0xF8,sizeof(__u32))
/* which outputs are connected to this framebuffer */
#define MATROXFB_GET_OUTPUT_CONNECTION _IOR('n',0xF8,sizeof(__u32))
/* which outputs are available for this framebuffer */
#define MATROXFB_GET_AVAILABLE_OUTPUTS _IOR('n',0xF9,sizeof(__u32))
/* which outputs exist on this framebuffer */
#define MATROXFB_GET_ALL_OUTPUTS _IOR('n',0xFB,sizeof(__u32))
#endif

View File

@ -1,162 +0,0 @@
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include "fb.h"
#include "matroxfb.h"
static int help(void) {
fprintf(stderr, "usage: matroxset [-f fbdev] [-o output] [-m] [value]\n"
"\n"
"where -f fbdev is fbdev device (default /dev/fb1)\n"
" -o output is output number to investigate (0=primary, 1=secondary=default)\n"
" -m says that CRTC->output mapping should be changed/retrieved\n"
" -p print information about blanking\n"
" value if present, value is set, if missing, value is retrieved\n"
"\n"
"For output mode, 128 means monitor, 1 = PAL TV, 2 = NTSC TV\n");
return 98;
}
int main(int argc, char* argv[]) {
char* fb = "/dev/fb1";
int fd;
struct matroxioc_output_mode mom;
struct fb_vblank vbl;
int rtn;
int output = MATROXFB_OUTPUT_SECONDARY;
int o_present = 0;
int m_present = 0;
int p_present = 0;
int act;
u_int32_t conns;
while ((rtn = getopt(argc, argv, "o:f:mhp")) != -1) {
switch (rtn) {
case 'o':
output = strtoul(optarg, NULL, 0);
o_present = 1;
break;
case 'm':
m_present = 1;
break;
case 'f':
fb = optarg;
break;
case 'p':
p_present = 1;
break;
case 'h':
return help();
default:
fprintf(stderr, "Bad commandline\n");
return 99;
}
}
act = 0;
if (p_present) {
if (m_present || o_present) {
fprintf(stderr, "You cannot use -p together with -m or -o\n");
return 95;
}
act = 4;
} else if (optind >= argc) {
if (m_present) {
if (o_present) {
fprintf(stderr, "You cannot use -m and -o together\n");
return 96;
}
act = 2;
} else {
mom.output = output;
mom.mode = 0;
}
} else {
if (m_present) {
conns = strtoul(argv[optind], NULL, 0);
act = 3;
} else {
mom.output = output;
mom.mode = strtoul(argv[optind], NULL, 0);
act = 1;
}
}
fd = open(fb, O_RDWR);
if (fd == -1) {
fprintf(stderr, "Cannot open %s: %s\n", fb, strerror(errno));
return 122;
}
switch (act) {
case 0:
rtn = ioctl(fd, MATROXFB_GET_OUTPUT_MODE, &mom);
if (rtn)
break;
printf("Output mode is %u\n", mom.mode);
break;
case 1:
rtn = ioctl(fd, MATROXFB_SET_OUTPUT_MODE, &mom);
break;
case 2:
rtn = ioctl(fd, MATROXFB_GET_OUTPUT_CONNECTION, &conns);
if (rtn)
break;
printf("This framebuffer is connected to outputs %08X\n", conns);
break;
case 3:
rtn = ioctl(fd, MATROXFB_SET_OUTPUT_CONNECTION, &conns);
break;
case 4:
#if 0
{ int i; for (i = 0; i < 1000000; i++) {
rtn = ioctl(fd, FBIOGET_VBLANK, &vbl);
if (rtn)
break;
}}
#else
rtn = ioctl(fd, FBIOGET_VBLANK, &vbl);
if (rtn)
break;
#endif
printf("VBlank flags: %08X\n", vbl.flags);
printf(" Symbolic: ");
{
static const struct { u_int32_t mask; const char* msg; } *ptr, vals[] = {
{ FB_VBLANK_HAVE_VBLANK, "vblank" },
{ FB_VBLANK_HAVE_HBLANK, "hblank" },
{ FB_VBLANK_HAVE_COUNT, "field no." },
{ FB_VBLANK_HAVE_VCOUNT, "line no." },
{ FB_VBLANK_HAVE_HCOUNT, "column no." },
{ FB_VBLANK_VBLANKING, "vblanking" },
{ FB_VBLANK_HBLANKING, "hblanking" },
{ 0, NULL }};
int ap = 0;
for (ptr = vals; ptr->msg; ptr++) {
if (vbl.flags & ptr->mask) {
if (ap) printf(", ");
printf(ptr->msg);
ap = 1;
}
}
if (!ap)
printf("none");
printf("\n");
}
printf("Field count: %12u\n", vbl.count);
printf("Vertical line: %12u\n", vbl.vcount);
printf("Horizontal column: %12u\n", vbl.hcount);
break;
default:
rtn = -1; errno = EINVAL;
break;
}
if (rtn) {
fprintf(stderr, "ioctl failed: %s\n", strerror(errno));
}
close(fd);
return 0;
}

View File

@ -1,12 +0,0 @@
#! /bin/sh
if [ -c /dev/fb0 ]; then
HEAD0=/dev/fb0
HEAD1=/dev/fb1
else
HEAD0=/dev/fb/0
HEAD1=/dev/fb/1
fi
matroxset -f ${HEAD1} -m 0
matroxset -f ${HEAD0} -m 1
matroxset -f ${HEAD1} -m 2

View File

@ -1,5 +0,0 @@
#! /bin/sh
~/mga/con2fb /dev/fb0 /dev/tty4
rmmod matroxfb_maven
modprobe matroxfb_maven
~/mga/con2fb /dev/fb1 /dev/tty4

View File

@ -1,12 +0,0 @@
#! /bin/sh
if [ -c /dev/fb0 ]; then
HEAD0=/dev/fb0
HEAD1=/dev/fb1
else
HEAD0=/dev/fb/0
HEAD1=/dev/fb/1
fi
matroxset -f ${HEAD1} -m 0
matroxset -f ${HEAD0} -m 2
matroxset -f ${HEAD1} -m 1

View File

@ -1,314 +0,0 @@
#!/bin/sh
#
# Gabucino - no warranty, this script can BOOM your TV and/or monitor, or else.
# v3.0
# This script has been tested and configured on a Matrox G400DH, a PAL TV,
# a 14" analog and a 15" digital monitor.
#
# INSTALLATION:
# 1. READ MPLAYER'S TVOUT DOCUMENTATION!
# 2. Choose proper mode at 'defaultmode', 'TVdefaultmode',
# and 'SetTVstandard' functions to fit your needs.
# You normally shouldn't touch anything else.
# 3. Remove 'exit 1' safety check.
#
function defaultmode {
# You can choose the mode to use in monitor-only mode
# 640x480 60Hz 32bpp (14" monitors)
fbset -a -xres 640 -yres 480 -vxres 640 -vyres 480 -depth 32 -pixclock 39721 -left 48 -right 16 -upper 33 -lower 10 -hslen 96 -vslen 2 -hsync high -accel true -laced false
# 768x576 60Hz 32bpp (14" monitors)
# fbset -a -xres 768 -yres 576 -vxres 768 -vyres 5460 -depth 32 -pixclock 26101 -left 144 -right 16 -upper 28 -lower 6 -hslen 112 -vslen 4 -accel true -laced false
# 800x600 76Hz 32bpp (15" monitors)
# fbset -a -xres 800 -yres 600 -vxres 800 -vyres 1440 -depth 32 -pixclock 20000 -left 128 -right 16 -upper 24 -lower 2 -hslen 96 -vslen 6 -laced false
# 1024x768 70Hz 32bpp (15" monitors)
# fbset -a -xres 1024 -yres 768 -vxres 1024 -vyres 1440 -depth 32 -pixclock 12500 -left 144 -right 32 -upper 30 -lower 2 -hslen 192 -vslen 6 -laced false
}
function TVdefaultmode {
##
## PAL modes
##
# 640x512 80Hz 32bpp
fbset -fb $1 -a -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true -laced false
# 640x528 83Hz 32bpp
# fbset -fb $1 -a -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true
# 720x576 78Hz 32bpp
# fbset -fb $1 -a -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
##
## NTSC modes
##
# 640x240 non-interlaced 32bpp
# fbset -fb $1 -a -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 -laced false
# 640x480 interlaced 32bpp
# fbset -fb $1 -a -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true
}
function SetTVstandard {
matroxset 1 # PAL
# matroxset 2 # NTSC
}
function SetMonitorMode {
matroxset 128
}
function mappingreset {
matroxset -f /dev/fb0 -m 0
matroxset -f /dev/fb1 -m 0
matroxset -f /dev/fb0 -m 1
con2fb /dev/fb0 /dev/tty1
con2fb /dev/fb0 /dev/tty2
SetMonitorMode
defaultmode
}
function warn {
clear
echo "tty2 will be automatically transferred to fb1 using the con2fb utility."
echo
echo
echo "A big \"1\" letter will be displayed on tty1 after the change."
echo "A big \"2\" letter will be displayed on tty2 after the change."
echo
echo
echo "If you read this, PRESS ANY KEY TO CONTINUE"
read
}
function warn2 {
id1 > /dev/tty1 &
id2 > /dev/tty2 &
}
function id1 {
sleep 1
clear
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo " ****"
echo " *****"
echo " ******"
echo " *******"
echo " ***"
echo " ***"
echo " ***"
echo " ***"
echo " ***"
echo " *****"
echo
echo
echo " FAST console"
echo
echo
echo " Press ALT-F1 to change here"
}
function id2 {
sleep 1
clear
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo " *****"
echo " ** **"
echo " * **"
echo " **"
echo " **"
echo " **"
echo " **"
echo " **"
echo " ** **"
echo " *******"
echo
echo
echo " SLOW console"
echo
echo
echo " Press ALT-F2 to change here"
}
echo
echo "Please read MPlayer's TV-out documentation, and install 'matroxset' and 'fbset'."
echo "Then edit this script to suit your monitor+TV set."
echo
exit 1
while [ 1 ]; do
clear
echo " [ 0 ] Clear & blank screen"
echo " [ 1 ] Monitor only"
echo
echo " [ 2 ] Cloning - CRTC1 -> Monitor"
echo " CRTC2 -> TV"
echo
echo " [ 3 ] Cloning - CRTC1 -> Monitor1"
echo " CRTC2 -> Monitor2"
echo
echo " [ 4 ] DualHead - CRTC1 -> Monitor1"
echo " CRTC2 -> Monitor2"
echo
echo " [ 5 ] DualHead - CRTC1 -> Monitor2 (SWAP!)"
echo " CRTC2 -> Monitor1"
echo
echo " [ 6 ] DualHead - CRTC1 -> Monitor1"
echo " CRTC2 -> TV"
echo
echo " [ 7 ] DualHead - CRTC1 -> TV (SWAP!)"
echo " CRTC2 -> Monitor1"
echo
echo "-- TV MODES on /dev/fb0 -- TV MODES on /dev/fb1"
echo
echo " [ a ] 640x512 PAL [ A ] 640x512 PAL"
echo " [ s ] 640x528 PAL [ S ] 640x528 PAL"
echo " [ d ] 720x576 PAL [ D ] 720x576 PAL"
echo " [ f ] 640x240 NTSC [ F ] 640x240 NTSC"
echo " [ g ] 640x480 NTSC, interlaced [ G ] 640x480 NTSCl"
echo
echo " (Warning, fb0 and fb1 tend to change RANDOMLY with these mode changers..)"
read ABC
case "$ABC" in
0)
clear
setterm -cursor off
setterm -blank 0
read
setterm -cursor on
;;
1)
mappingreset
echo
;;
2)
mappingreset
matroxset -f /dev/fb0 -m 3
SetTVstandard
TVdefaultmode /dev/fb0
;;
3)
mappingreset
matroxset -f /dev/fb0 -m 3
;;
4)
warn
mappingreset
matroxset -f /dev/fb0 -m 1
matroxset -f /dev/fb1 -m 2
warn2
;;
5)
warn
mappingreset
matroxset -f /dev/fb0 -m 2
matroxset -f /dev/fb1 -m 1
warn2
;;
6)
warn
mappingreset
con2fb /dev/fb1 /dev/tty2
matroxset -f /dev/fb0 -m 1
matroxset -f /dev/fb1 -m 2
SetTVstandard
TVdefaultmode /dev/fb1
warn2
;;
7)
warn
mappingreset
con2fb /dev/fb1 /dev/tty2
matroxset -f /dev/fb0 -m 2
matroxset -f /dev/fb1 -m 1
SetTVstandard
TVdefaultmode /dev/fb0
warn2
;;
a)
# 640x512 80Hz 32bpp
fbset -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true -laced false
;;
A)
# 640x512 80Hz 32bpp
fbset -fb /dev/fb1 -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true -laced false
;;
s)
# 640x528 83Hz 32bpp
fbset -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true
;;
S)
# 640x528 83Hz 32bpp
fbset -fb /dev/fb1 -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true
;;
d)
# 720x576 78Hz 32bpp
# fbset -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
fbset -depth 32 -right -36 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
;;
D)
# 720x576 78Hz 32bpp
# fbset -fb /dev/fb1 -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
fbset -fb /dev/fb1 -depth 32 -right -36 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
;;
f)
# 640x240 non-interlaced 32bpp
fbset -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 -laced false
;;
F)
# 640x240 non-interlaced 32bpp
fbset -fb /dev/fb1 -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 -laced false
;;
g)
# 640x480 interlaced 32bpp
fbset -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true
;;
G)
# 640x480 interlaced 32bpp
fbset -fb /dev/fb1 -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true
;;
esac
done

View File

@ -1,8 +0,0 @@
# Load kernel modules...
# (you must have 2.3/2.4 kernel with matroxfb enabled!)
modprobe matroxfb_Ti3026
modprobe matroxfb_maven
modprobe i2c-matroxfb
modprobe matroxfb_crtc2