patch-2.4.19 linux-2.4.19/drivers/video/matrox/matroxfb_base.h
Next file: linux-2.4.19/drivers/video/matrox/matroxfb_crtc2.c
Previous file: linux-2.4.19/drivers/video/matrox/matroxfb_base.c
Back to the patch index
Back to the overall index
- Lines: 199
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/drivers/video/matrox/matroxfb_base.h
- Orig date:
Fri Nov 9 14:07:41 2001
diff -urN linux-2.4.18/drivers/video/matrox/matroxfb_base.h linux-2.4.19/drivers/video/matrox/matroxfb_base.h
@@ -124,10 +124,6 @@
#endif
#endif
-#ifdef __sparc__
-#error "Sorry, I have no idea how to do this on sparc... There is mapioaddr... With bus_type parameter..."
-#endif
-
#if defined(__m68k__)
#define MAP_BUSTOVIRT
#else
@@ -166,7 +162,7 @@
#define CNVT_TOHW(val,width) ((((val)<<(width))+0x7FFF-(val))>>16)
-/* G100, G200 and Mystique have (almost) same DAC */
+/* G-series and Mystique have (almost) same DAC */
#undef NEED_DAC1064
#if defined(CONFIG_FB_MATROX_MYSTIQUE) || defined(CONFIG_FB_MATROX_G100)
#define NEED_DAC1064 1
@@ -309,6 +305,21 @@
unsigned int delay; /* CRTC delay */
};
+enum { M_SYSTEM_PLL, M_PIXEL_PLL_A, M_PIXEL_PLL_B, M_PIXEL_PLL_C, M_VIDEO_PLL };
+
+struct matrox_pll_cache {
+ unsigned int valid;
+ struct {
+ unsigned int mnp_key;
+ unsigned int mnp_value;
+ } data[4];
+};
+
+struct matrox_pll_limits {
+ unsigned int vcomin;
+ unsigned int vcomax;
+};
+
struct matrox_pll_features {
unsigned int vco_freq_min;
unsigned int ref_freq;
@@ -375,6 +386,8 @@
/* CRTC2 only */
/* u_int32_t TBD */
+
+ unsigned int vidclk;
};
struct matrox_accel_data {
@@ -386,8 +399,8 @@
};
struct matrox_altout {
- int (*compute)(void* altout_dev, struct my_timming* input, struct matrox_hw_state* state);
- int (*program)(void* altout_dev, const struct matrox_hw_state* state);
+ int (*compute)(void* altout_dev, struct my_timming* input);
+ int (*program)(void* altout_dev);
int (*start)(void* altout_dev);
void (*incuse)(void* altout_dev);
void (*decuse)(void* altout_dev);
@@ -395,6 +408,20 @@
int (*getmode)(void* altout_dev, u_int32_t* mode);
};
+enum mga_chip { MGA_2064, MGA_2164, MGA_1064, MGA_1164, MGA_G100, MGA_G200, MGA_G400, MGA_G450, MGA_G550 };
+
+struct matrox_bios {
+ unsigned int bios_valid : 1;
+ unsigned int pins_len;
+ unsigned char pins[128];
+ struct {
+ unsigned char vMaj, vMin, vRev;
+ } version;
+ struct {
+ unsigned char state, tvout;
+ } output;
+};
+
struct matrox_switch;
struct matroxfb_driver;
@@ -408,10 +435,7 @@
unsigned int usecount;
struct matroxfb_par curr;
- struct matrox_hw_state hw1;
- struct matrox_hw_state hw2;
- struct matrox_hw_state* newhw;
- struct matrox_hw_state* currenthw;
+ struct matrox_hw_state hw;
struct matrox_accel_data accel;
@@ -468,6 +492,8 @@
spinlock_t accel;
} lock;
+ enum mga_chip chip;
+
int interleave;
int millenium;
int milleniumII;
@@ -518,8 +544,8 @@
/* 0 except for 6MB Millenium */
int memtype;
int g450dac;
- int g550dac;
int dfp_type;
+ unsigned int fbResource;
} devflags;
struct display_switch dispsw;
struct {
@@ -533,6 +559,38 @@
int redraw;
struct timer_list timer;
} cursor;
+ struct matrox_bios bios;
+ struct {
+ struct matrox_pll_limits pixel;
+ struct matrox_pll_limits system;
+ struct matrox_pll_limits video;
+ } limits;
+ struct {
+ struct matrox_pll_cache pixel;
+ struct matrox_pll_cache system;
+ struct matrox_pll_cache video;
+ } cache;
+ struct {
+ struct {
+ unsigned int video;
+ unsigned int system;
+ } pll;
+ struct {
+ u_int32_t opt;
+ u_int32_t opt2;
+ u_int32_t opt3;
+ u_int32_t mctlwtst;
+ u_int32_t mctlwtst_core;
+ u_int32_t memmisc;
+ u_int32_t memrdbk;
+ u_int32_t maccess;
+ } reg;
+ struct {
+ unsigned int ddr:1,
+ emrswen:1,
+ dll:1;
+ } memory;
+ } values;
struct { unsigned red, green, blue, transp; } palette[256];
#if defined(CONFIG_FB_COMPAT_XPMAC)
char matrox_name[32];
@@ -603,10 +661,10 @@
#endif
struct matrox_switch {
- int (*preinit)(WPMINFO struct matrox_hw_state*);
- void (*reset)(WPMINFO struct matrox_hw_state*);
- int (*init)(CPMINFO struct matrox_hw_state*, struct my_timming*, struct display*);
- void (*restore)(WPMINFO struct matrox_hw_state*, struct matrox_hw_state*, struct display*);
+ int (*preinit)(WPMINFO2);
+ void (*reset)(WPMINFO2);
+ int (*init)(WPMINFO struct my_timming*, struct display*);
+ void (*restore)(WPMINFO struct display*);
int (*selhwcursor)(WPMINFO struct display*);
};
@@ -621,8 +679,13 @@
void matroxfb_unregister_driver(struct matroxfb_driver* drv);
#define PCI_OPTION_REG 0x40
+#define PCI_OPTION_ENABLE_ROM 0x40000000
+
#define PCI_MGA_INDEX 0x44
#define PCI_MGA_DATA 0x48
+#define PCI_OPTION2_REG 0x50
+#define PCI_OPTION3_REG 0x54
+#define PCI_MEMMISC_REG 0x58
#define M_DWGCTL 0x1C00
#define M_MACCESS 0x1C04
@@ -741,6 +804,8 @@
#define DAC_XGENIOCTRL 0x2A
#define DAC_XGENIODATA 0x2B
+#define M_C2CTL 0x3E10
+
#ifdef __LITTLE_ENDIAN
#define MX_OPTION_BSWAP 0x00000000
@@ -798,6 +863,7 @@
extern int matroxfb_DAC_in(CPMINFO int reg);
extern struct list_head matroxfb_list;
extern void matroxfb_var2my(struct fb_var_screeninfo* fvsi, struct my_timming* mt);
+extern int matroxfb_switch(int con, struct fb_info *);
#ifdef MATROXFB_USE_SPINLOCKS
#define CRITBEGIN spin_lock_irqsave(&ACCESS_FBINFO(lock.accel), critflags);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)