/*
* Frame buffer driver for Trident Blade and Image series
*
* Copyright 2001, 2002 - Jani Monoses <jani@iv.ro>
*
*
* CREDITS:(in order of appearance)
* skeletonfb.c by Geert Uytterhoeven and other fb code in drivers/video
* Special thanks ;) to Mattia Crivellini <tia@mclink.it>
* much inspired by the XFree86 4.x Trident driver sources
* by Alan Hourihane the FreeVGA project
* Francesco Salvestrini <salvestrini@users.sf.net> XP support,
* code, suggestions
* TODO:
* timing value tweaking so it looks good on every monitor in every mode
* TGUI acceleration
*/
#include <linux/module.h>
#include <linux/fb.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <video/trident.h>
#define VERSION "0.7.8-NEWAPI"
struct tridentfb_par {
int vclk; /* in MHz */
void __iomem *io_virt; /* iospace virtual memory address */
};
static unsigned char eng_oper; /* engine operation... */
static struct fb_ops tridentfb_ops;
static struct tridentfb_par default_par;
/* FIXME:kmalloc these 3 instead */
static struct fb_info fb_info;
static u32 pseudo_pal[16];
static struct fb_var_screeninfo default_var;
static struct fb_fix_screeninfo tridentfb_fix = {
.id = "Trident",
.type = FB_TYPE_PACKED_PIXELS,
.ypanstep = 1,
.visual = FB_VISUAL_PSEUDOCOLOR,
.accel = FB_ACCEL_NONE,
};
static int chip_id;
static int defaultaccel;
static int displaytype;
/* defaults which are normally overriden by user values */
/* video mode */
static char *mode = "640x480";
static int bpp = 8;
static int noaccel;
static int center;
static int stretch;
static int fp;
static int crt;
static int memsize;
static int memdiff