patch-2.4.22 linux-2.4.22/drivers/video/matrox/matroxfb_base.h
Next file: linux-2.4.22/drivers/video/matrox/matroxfb_crtc2.c
Previous file: linux-2.4.22/drivers/video/matrox/matroxfb_base.c
Back to the patch index
Back to the overall index
- Lines: 140
- Date:
2003-08-25 04:44:42.000000000 -0700
- Orig file:
linux-2.4.21/drivers/video/matrox/matroxfb_base.h
- Orig date:
2003-06-13 07:51:37.000000000 -0700
diff -urN linux-2.4.21/drivers/video/matrox/matroxfb_base.h linux-2.4.22/drivers/video/matrox/matroxfb_base.h
@@ -111,6 +111,9 @@
#if defined(__alpha__) || defined(__mc68000__)
#define READx_WORKS
#define MEMCPYTOIO_WORKS
+#elif defined(__powerpc64__)
+#define RAW_READx_WORKS
+#define MEMCPYTOIO_WORKS
#else
#define READx_FAILS
/* recheck __ppc__, maybe that __ppc__ needs MEMCPYTOIO_WRITEL */
@@ -196,6 +199,30 @@
static inline void mga_writel(vaddr_t va, unsigned int offs, u_int32_t value) {
writel(value, va.vaddr + offs);
}
+#elif defined(RAW_READx_WORKS)
+static inline unsigned int mga_readb(vaddr_t va, unsigned int offs) {
+ return __raw_readb(va.vaddr + offs);
+}
+
+static inline unsigned int mga_readw(vaddr_t va, unsigned int offs) {
+ return __raw_readw(va.vaddr + offs);
+}
+
+static inline u_int32_t mga_readl(vaddr_t va, unsigned int offs) {
+ return __raw_readl(va.vaddr + offs);
+}
+
+static inline void mga_writeb(vaddr_t va, unsigned int offs, u_int8_t value) {
+ __raw_writeb(value, va.vaddr + offs);
+}
+
+static inline void mga_writew(vaddr_t va, unsigned int offs, u_int16_t value) {
+ __raw_writew(value, va.vaddr + offs);
+}
+
+static inline void mga_writel(vaddr_t va, unsigned int offs, u_int32_t value) {
+ __raw_writel(value, va.vaddr + offs);
+}
#else
static inline unsigned int mga_readb(vaddr_t va, unsigned int offs) {
return *(volatile u_int8_t*)(va.vaddr + offs);
@@ -441,6 +468,11 @@
struct matroxfb_driver;
struct matroxfb_dh_fb_info;
+struct matrox_vsync {
+ wait_queue_head_t wait;
+ unsigned int cnt;
+};
+
struct matrox_fb_info {
struct fb_info fbcon;
@@ -449,6 +481,9 @@
int dead;
unsigned int usecount;
+ unsigned int userusecount;
+ unsigned long irq_flags;
+
struct matroxfb_par curr;
struct matrox_hw_state hw;
@@ -576,10 +611,13 @@
} cursor;
struct matrox_bios bios;
struct {
+ struct matrox_vsync vsync;
+ int panpos;
unsigned int pixclock;
int mnp;
} crtc1;
struct {
+ struct matrox_vsync vsync;
unsigned int pixclock;
int mnp;
struct matroxfb_dh_fb_info* info;
@@ -636,6 +674,8 @@
#endif
};
+#define info2minfo(info) list_entry(info, struct matrox_fb_info, fbcon)
+
#ifdef CONFIG_FB_MATROX_MULTIHEAD
#define ACCESS_FBINFO2(info, x) (info->x)
#define ACCESS_FBINFO(x) ACCESS_FBINFO2(minfo,x)
@@ -650,12 +690,11 @@
#define PMINFO PMINFO2 ,
static inline struct matrox_fb_info* mxinfo(const struct display* p) {
- return list_entry(p->fb_info, struct matrox_fb_info, fbcon);
+ return info2minfo(p->fb_info);
}
#define PMXINFO(p) mxinfo(p),
#define MINFO_FROM(x) struct matrox_fb_info* minfo = x
-#define MINFO_FROM_DISP(x) MINFO_FROM(mxinfo(x))
#else
@@ -673,18 +712,14 @@
#define PMINFO2
#define PMINFO
-#if 0
-static inline struct matrox_fb_info* mxinfo(const struct display* p) {
- return &matroxfb_global_mxinfo;
-}
-#endif
-
#define PMXINFO(p)
#define MINFO_FROM(x)
-#define MINFO_FROM_DISP(x)
#endif
+#define MINFO_FROM_DISP(x) MINFO_FROM(mxinfo(x))
+#define MINFO_FROM_INFO(x) MINFO_FROM(info2minfo(x))
+
struct matrox_switch {
int (*preinit)(WPMINFO2);
void (*reset)(WPMINFO2);
@@ -766,7 +801,7 @@
#define M_FIFOSTATUS 0x1E10
#define M_STATUS 0x1E14
-
+#define M_ICLEAR 0x1E18
#define M_IEN 0x1E1C
#define M_VCOUNT 0x1E20
@@ -889,6 +924,8 @@
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 *);
+extern int matroxfb_wait_for_sync(WPMINFO u_int32_t crtc);
+extern int matroxfb_enable_irq(WPMINFO int reenable);
#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)