Archived
14
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
linux-2.6/drivers/staging/xgifb/vgatypes.h
apatard@mandriva.com d7636e0b07 staging: Add framebuffer driver for XGI chipsets
This driver handles XG20, XG21, XG40, XG42 chipsets from XGI. They're
also known as Z7,Z9,Z11 chipsets. It's based on the SiS fb driver but
has been heavily modified by XGI to support their newer chipsets.


Signed-off-by: Arnaud Patard <apatard@mandriva.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-06-04 13:38:51 -07:00

326 lines
7.1 KiB
C

#ifndef _VGATYPES_
#define _VGATYPES_
#include "osdef.h"
#ifdef LINUX_XF86
#include "xf86Version.h"
#include "xf86Pci.h"
#endif
#ifdef LINUX_KERNEL /* We don't want the X driver to depend on kernel source */
#include <linux/ioctl.h>
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef CHAR
typedef char CHAR;
#endif
#ifndef SHORT
typedef short SHORT;
#endif
#ifndef LONG
typedef long LONG;
#endif
#ifndef UCHAR
typedef unsigned char UCHAR;
#endif
#ifndef USHORT
typedef unsigned short USHORT;
#endif
#ifndef ULONG
typedef unsigned long ULONG;
#endif
#ifndef PUCHAR
typedef UCHAR *PUCHAR;
#endif
#ifndef PUSHORT
typedef USHORT *PUSHORT;
#endif
#ifndef PLONGU
typedef ULONG *PULONG;
#endif
#ifndef VOID
typedef void VOID;
#endif
#ifndef PVOID
typedef void *PVOID;
#endif
#ifndef BOOLEAN
typedef UCHAR BOOLEAN;
#endif
/*
#ifndef bool
typedef UCHAR bool;
#endif
*/
#ifdef LINUX_KERNEL
typedef unsigned long XGIIOADDRESS;
#endif
#ifdef LINUX_XF86
#if XF86_VERSION_CURRENT < XF86_VERSION_NUMERIC(4,2,0,0,0)
typedef unsigned char IOADDRESS;
typedef unsigned char XGIIOADDRESS;
#else
typedef IOADDRESS XGIIOADDRESS;
#endif
#endif
#ifndef VBIOS_VER_MAX_LENGTH
#define VBIOS_VER_MAX_LENGTH 4
#endif
#ifndef WIN2000
#ifndef LINUX_KERNEL /* For the linux kernel, this is defined in xgifb.h */
#ifndef XGI_CHIP_TYPE
typedef enum _XGI_CHIP_TYPE {
XGI_VGALegacy = 0,
#ifdef LINUX_XF86
XGI_530,
XGI_OLD,
#endif
XGI_300,
XGI_630,
XGI_640,
XGI_315H,
XGI_315,
XGI_315PRO,
XGI_550,
XGI_650,
XGI_650M,
XGI_740,
XGI_330,
XGI_661,
XGI_660,
XGI_760,
XG40 = 32,
XG41,
XG42,
XG45,
XG20 = 48,
XG21,
XG27,
MAX_XGI_CHIP
} XGI_CHIP_TYPE;
#endif
#endif
#ifndef XGI_VB_CHIP_TYPE
typedef enum _XGI_VB_CHIP_TYPE {
VB_CHIP_Legacy = 0,
VB_CHIP_301,
VB_CHIP_301B,
VB_CHIP_301LV,
VB_CHIP_302,
VB_CHIP_302B,
VB_CHIP_302LV,
VB_CHIP_301C,
VB_CHIP_302ELV,
VB_CHIP_UNKNOWN, /* other video bridge or no video bridge */
MAX_VB_CHIP
} XGI_VB_CHIP_TYPE;
#endif
#ifndef XGI_LCD_TYPE
typedef enum _XGI_LCD_TYPE {
LCD_INVALID = 0,
LCD_320x480, /* FSTN, DSTN */
LCD_640x480,
LCD_640x480_2, /* FSTN, DSTN */
LCD_640x480_3, /* FSTN, DSTN */
LCD_800x600,
LCD_848x480,
LCD_1024x600,
LCD_1024x768,
LCD_1152x768,
LCD_1152x864,
LCD_1280x720,
LCD_1280x768,
LCD_1280x800,
LCD_1280x960,
LCD_1280x1024,
LCD_1400x1050,
LCD_1600x1200,
LCD_1680x1050,
LCD_1920x1440,
LCD_2048x1536,
LCD_CUSTOM,
LCD_UNKNOWN
} XGI_LCD_TYPE;
#endif
#endif /* not WIN2000 */
#ifndef PXGI_DSReg
typedef struct _XGI_DSReg
{
UCHAR jIdx;
UCHAR jVal;
} XGI_DSReg, *PXGI_DSReg;
#endif
#ifndef XGI_HW_DEVICE_INFO
typedef struct _XGI_HW_DEVICE_INFO XGI_HW_DEVICE_INFO, *PXGI_HW_DEVICE_INFO;
typedef BOOLEAN (*PXGI_QUERYSPACE) (PXGI_HW_DEVICE_INFO, ULONG, ULONG, ULONG *);
struct _XGI_HW_DEVICE_INFO
{
ULONG ulExternalChip; /* NO VB or other video bridge*/
/* if ujVBChipID = VB_CHIP_UNKNOWN, */
#ifdef LINUX_XF86
PCITAG PciTag; /* PCI Tag */
#endif
PUCHAR pjVirtualRomBase; /* ROM image */
BOOLEAN UseROM; /* Use the ROM image if provided */
PVOID pDevice;
PUCHAR pjVideoMemoryAddress;/* base virtual memory address */
/* of Linear VGA memory */
ULONG ulVideoMemorySize; /* size, in bytes, of the memory on the board */
PUCHAR pjIOAddress; /* base I/O address of VGA ports (0x3B0) */
PUCHAR pjCustomizedROMImage;
PUCHAR pj2ndVideoMemoryAddress;
ULONG ul2ndVideoMemorySize;
PUCHAR pj2ndIOAddress;
/*#ifndef WIN2000
XGIIOADDRESS pjIOAddress; // base I/O address of VGA ports (0x3B0)
#endif */
UCHAR jChipType; /* Used to Identify Graphics Chip */
/* defined in the data structure type */
/* "XGI_CHIP_TYPE" */
UCHAR jChipRevision; /* Used to Identify Graphics Chip Revision */
UCHAR ujVBChipID; /* the ID of video bridge */
/* defined in the data structure type */
/* "XGI_VB_CHIP_TYPE" */
BOOLEAN bNewScratch;
ULONG ulCRT2LCDType; /* defined in the data structure type */
ULONG usExternalChip; /* NO VB or other video bridge (other than */
/* video bridge) */
BOOLEAN bIntegratedMMEnabled;/* supporting integration MM enable */
BOOLEAN bSkipDramSizing; /* True: Skip video memory sizing. */
BOOLEAN bSkipSense;
BOOLEAN bIsPowerSaving; /* True: XGIInit() is invoked by power management,
otherwise by 2nd adapter's initialzation */
PXGI_DSReg pSR; /* restore SR registers in initial function. */
/* end data :(idx, val) = (FF, FF). */
/* Note : restore SR registers if */
/* bSkipDramSizing = TRUE */
PXGI_DSReg pCR; /* restore CR registers in initial function. */
/* end data :(idx, val) = (FF, FF) */
/* Note : restore cR registers if */
/* bSkipDramSizing = TRUE */
/*
#endif
*/
PXGI_QUERYSPACE pQueryVGAConfigSpace;
PXGI_QUERYSPACE pQueryNorthBridgeSpace;
UCHAR szVBIOSVer[VBIOS_VER_MAX_LENGTH];
};
#endif
/* Addtional IOCTL for communication xgifb <> X driver */
/* If changing this, xgifb.h must also be changed (for xgifb) */
#ifdef LINUX_XF86 /* We don't want the X driver to depend on the kernel source */
/* ioctl for identifying and giving some info (esp. memory heap start) */
#define XGIFB_GET_INFO 0x80046ef8 /* Wow, what a terrible hack... */
/* Structure argument for XGIFB_GET_INFO ioctl */
typedef struct _XGIFB_INFO xgifb_info, *pxgifb_info;
struct _XGIFB_INFO {
CARD32 xgifb_id; /* for identifying xgifb */
#ifndef XGIFB_ID
#define XGIFB_ID 0x53495346 /* Identify myself with 'XGIF' */
#endif
CARD32 chip_id; /* PCI ID of detected chip */
CARD32 memory; /* video memory in KB which xgifb manages */
CARD32 heapstart; /* heap start (= xgifb "mem" argument) in KB */
CARD8 fbvidmode; /* current xgifb mode */
CARD8 xgifb_version;
CARD8 xgifb_revision;
CARD8 xgifb_patchlevel;
CARD8 xgifb_caps; /* xgifb's capabilities */
CARD32 xgifb_tqlen; /* turbo queue length (in KB) */
CARD32 xgifb_pcibus; /* The card's PCI ID */
CARD32 xgifb_pcislot;
CARD32 xgifb_pcifunc;
CARD8 xgifb_lcdpdc;
CARD8 xgifb_lcda;
CARD32 xgifb_vbflags;
CARD32 xgifb_currentvbflags;
CARD32 xgifb_scalelcd;
CARD32 xgifb_specialtiming;
CARD8 xgifb_haveemi;
CARD8 xgifb_emi30,xgifb_emi31,xgifb_emi32,xgifb_emi33;
CARD8 xgifb_haveemilcd;
CARD8 xgifb_lcdpdca;
CARD8 reserved[212]; /* for future use */
};
#endif
#endif