|
version 1.1.2.3, 1997/07/16 03:57:54
|
version 1.1.2.14, 1997/07/21 05:32:29
|
|
|
|
| /* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86str.h,v 1.1.2.2 1997/07/15 13:59:35 dawes Exp $ */ |
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86str.h,v 1.1.2.13 1997/07/20 13:29:30 dawes Exp $ */ |
| | |
| /* | /* |
| * Copyright (c) 1997 by The XFree86 Project, Inc. | * Copyright (c) 1997 by The XFree86 Project, Inc. |
|
|
|
| #include "misc.h" | #include "misc.h" |
| #include "input.h" | #include "input.h" |
| #include "scrnintstr.h" | #include "scrnintstr.h" |
| |
#include "xf86Option.h" |
| #include "xf86_Option.h" |
#include "xf86Module.h" |
| |
|
| #ifdef XINPUT |
|
| #include "xf86Xinput.h" |
|
| #endif |
|
| | |
| | |
| /* Video mode flags */ | /* Video mode flags */ |
|
|
|
| V_CLKDIV2 = 0x4000 | V_CLKDIV2 = 0x4000 |
| } ModeFlags; | } ModeFlags; |
| | |
| |
/* These are possible return values for xf86CheckMode() and ValidMode() */ |
| |
typedef enum { |
| |
MODE_OK = 0, /* Mode OK */ |
| |
MODE_HSYNC, /* hsync out of range */ |
| |
MODE_VSYNC, /* vsync out of range */ |
| |
MODE_BAD_WIDTH, /* requires an unsupported linepitch */ |
| |
MODE_NOMODE, /* no mode with a maching name */ |
| |
MODE_NO_INTERLACE, /* interlaced mode not supported */ |
| |
MODE_NO_DBLESCAN, /* doublescan mode not supported */ |
| |
MODE_MEM, /* insufficient video memory */ |
| |
MODE_VIRTUAL, /* mode too large for specified virtual size */ |
| |
MODE_NOCLOCK, /* no fixed clock available */ |
| |
MODE_CLOCK_HIGH, /* clock required is too high */ |
| |
MODE_CLOCK_LOW, /* clock required is too low */ |
| |
MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */ |
| |
MODE_BAD_HVALUE, /* horizontal timing was out of range */ |
| |
MODE_BAD_VVALUE, /* vertical timing was out of range */ |
| |
MODE_BAD, /* unspecified reason */ |
| |
MODE_ERROR = -1 /* error condition */ |
| |
} ModeStatus; |
| |
|
| /* Video mode */ | /* Video mode */ |
| | |
| typedef struct _DisplayModeRec { | typedef struct _DisplayModeRec { |
| struct _DisplayModeRec * prev; | struct _DisplayModeRec * prev; |
| struct _DisplayModeRec * next; | struct _DisplayModeRec * next; |
| char * name; /* identifier for the mode */ | char * name; /* identifier for the mode */ |
| |
ModeStatus status; |
| | |
| /* These are the values that the user sees/provides */ | /* These are the values that the user sees/provides */ |
| int Clock; /* pixel clock freq */ | int Clock; /* pixel clock freq */ |
|
|
|
| int VSyncStart; | int VSyncStart; |
| int VSyncEnd; | int VSyncEnd; |
| int VTotal; | int VTotal; |
| ModeFlags Flags; |
int Flags; |
| | |
| /* These are the values the hardware uses */ | /* These are the values the hardware uses */ |
| int ClockIndex; | int ClockIndex; |
|
|
|
| struct x_ClockRange *next; | struct x_ClockRange *next; |
| int minClock; | int minClock; |
| int maxClock; | int maxClock; |
| |
int clockIndex; /* -1 for programmable clocks */ |
| Bool interlaceAllowed; | Bool interlaceAllowed; |
| Bool doubleScanAllowed; | Bool doubleScanAllowed; |
| } ClockRange, *ClockRangePtr; | } ClockRange, *ClockRangePtr; |
|
|
|
| #define MAXCLOCKS 128 | #define MAXCLOCKS 128 |
| #define MAXDACSPEEDS 4 /* for <= 8, 16, 24, 32bpp */ | #define MAXDACSPEEDS 4 /* for <= 8, 16, 24, 32bpp */ |
| | |
| |
typedef struct { |
| |
char *identifier; |
| |
char *vendor; |
| |
char *board; |
| |
char *chipset; |
| |
char *ramdac; |
| |
int dacSpeeds[MAXDACSPEEDS]; |
| |
int clocks; |
| |
int clock[MAXCLOCKS]; |
| |
OFlagSet options; |
| |
OFlagSet clockOptions; |
| |
OFlagSet xconfigFlag; |
| |
int videoRam; |
| |
unsigned long speedup; |
| |
char *clockprog; |
| |
int textClockValue; |
| |
int BIOSbase; /* Base address of video BIOS */ |
| |
unsigned long MemBase; /* Frame buffer base address */ |
| |
unsigned int IObase; |
| |
unsigned int DACbase; |
| |
unsigned long COPbase; |
| |
unsigned int POSbase; |
| |
int instance; |
| |
int s3Madjust; |
| |
int s3Nadjust; |
| |
int s3MClk; |
| |
int chipID; |
| |
int chipRev; |
| |
unsigned long VGAbase; /* VGA ot XGA 64K aperature base address */ |
| |
int s3RefClk; |
| |
int s3BlankDelay; |
| |
char *DCConfig; |
| |
char *DCOptions; |
| |
int MemClk; /* General flag used for memory clocking */ |
| |
} GDevRec, *GDevPtr; |
| |
|
| |
typedef struct { |
| |
int vendor; |
| |
int chipType; |
| |
int chipRev; |
| |
int bus; |
| |
int device; |
| |
int func; |
| |
unsigned long memBase[6]; |
| |
unsigned long ioBase[6]; |
| |
unsigned long biosBase; |
| |
pointer thisCard; |
| |
} pciVideoRec, *pciVideoPtr; |
| |
|
| /* These values should be adjusted when new fields are added to ScrnInfoRec */ | /* These values should be adjusted when new fields are added to ScrnInfoRec */ |
| #define NUM_RESERVED_INTS 16 | #define NUM_RESERVED_INTS 16 |
| #define NUM_RESERVED_POINTERS 16 | #define NUM_RESERVED_POINTERS 16 |
|
|
|
| int tmpIndex; /* initial number assigned to | int tmpIndex; /* initial number assigned to |
| * this screen before | * this screen before |
| * finalising the number of | * finalising the number of |
| * availalbe screens */ |
* available screens */ |
| int bitsPerPixel; /* bpp for default visual */ | int bitsPerPixel; /* bpp for default visual */ |
| int depth; /* depth of default visual */ | int depth; /* depth of default visual */ |
| xrgb weight; /* r/g/b weights */ | xrgb weight; /* r/g/b weights */ |
| |
xrgb mask; /* rgb masks */ |
| |
int rgbBits; /* Number of bits in r/g/b */ |
| float redGamma; /* Gamma values */ | float redGamma; /* Gamma values */ |
| float blueGamma; /* Gamma values */ | float blueGamma; /* Gamma values */ |
| float greenGamma; /* Gamma values */ | float greenGamma; /* Gamma values */ |
| int defaultVisual; /* default visual class */ | int defaultVisual; /* default visual class */ |
| |
int maxHValue; /* max horizontal timing */ |
| |
int maxVValue; /* max vertical timing value */ |
| int virtualX; /* Virtual width */ | int virtualX; /* Virtual width */ |
| int virtualY; /* Virtual height */ | int virtualY; /* Virtual height */ |
| int displayWidth; /* memory pitch */ | int displayWidth; /* memory pitch */ |
|
|
|
| int frameY0; | int frameY0; |
| int frameX1; | int frameX1; |
| int frameY1; | int frameY1; |
| DisplayModePtr modes; /* list of modes */ |
int zoomLocked; /* Disallow mode changes */ |
| |
DisplayModePtr modePool; /* list of compatible modes */ |
| |
DisplayModePtr modes; /* list of actual modes */ |
| DisplayModePtr currentMode; /* current mode | DisplayModePtr currentMode; /* current mode |
| /* This was previously |
* This was previously |
| * overloaded with the modes | * overloaded with the modes |
| * field, which is a pointer | * field, which is a pointer |
| * into a circular list */ | * into a circular list */ |
| MonPtr monitor; /* Monitor information */ | MonPtr monitor; /* Monitor information */ |
| GDevPtr device; /* device information */ | GDevPtr device; /* device information */ |
| int width /* physical display dimensions |
int width; /* physical display dimensions |
| * in mm */ | * in mm */ |
| int height; | int height; |
| char * name; /* Name to prefix messages */ | char * name; /* Name to prefix messages */ |
| pointer driverPrivate; /* Driver private area */ | pointer driverPrivate; /* Driver private area */ |
| int numPrivates; /* Number of privates */ | int numPrivates; /* Number of privates */ |
| DevUnion * privates; /* Other privates can hook in | DevUnion * privates; /* Other privates can hook in |
| /* here */ |
* here */ |
| | |
| char ** requiredModules; /* List of modules needed */ | char ** requiredModules; /* List of modules needed */ |
| int numRequiredModules; | int numRequiredModules; |
|
|
|
| /* Some of these may be moved out of here into the driver private area */ | /* Some of these may be moved out of here into the driver private area */ |
| | |
| OFlagSet options; /* Option flags */ | OFlagSet options; /* Option flags */ |
| OFlagSet clockOptions; /* Clock option flags */ |
|
| OFlagSet xconfigFlag; /* Flags indicating which |
|
| * parameter values were |
|
| * set from the config file */ |
|
| char * chipset; /* chipset name */ | char * chipset; /* chipset name */ |
| char * ramdac; /* ramdac name */ | char * ramdac; /* ramdac name */ |
| |
char * clockchip; /* clock name */ |
| |
Bool progClock; /* clock is programmable */ |
| int dacSpeeds[MAXDACSPEEDS];/* list of clock limits */ | int dacSpeeds[MAXDACSPEEDS];/* list of clock limits */ |
| int numClocks; /* number of clocks */ | int numClocks; /* number of clocks */ |
| int clock[MAXCLOCKS]; /* list of clock frequencies */ | int clock[MAXCLOCKS]; /* list of clock frequencies */ |
|
|
|
| #if 0 /* This should go */ | #if 0 /* This should go */ |
| unsigned long speedup; /* Use SpeedUp code */ | unsigned long speedup; /* Use SpeedUp code */ |
| #endif | #endif |
| char * clockprog; /* name of external clock |
|
| * setting program */ |
|
| int textclock; /* parameter to pass to the |
|
| * external clock setting |
|
| * program when restoring |
|
| * text mode */ |
|
| int memClk; /* memory clock */ | int memClk; /* memory clock */ |
| |
int textClockFreq; /* clock of text mode */ |
| | |
| #if 0 /* only used by the mono VGA driver */ |
|
| Bool bankedMono; | Bool bankedMono; |
| xrgb blackColour; | xrgb blackColour; |
| xrgb whiteColour; | xrgb whiteColour; |
| #endif |
|
| | |
| #if 0 /* Out of date (obsoleted with the new parser code) */ | #if 0 /* Out of date (obsoleted with the new parser code) */ |
| int * validTokens; | int * validTokens; |
|
|
|
| | |
| int chipID; | int chipID; |
| int chipRev; | int chipRev; |
| int textClockFreq; |
|
| |
/* This is here to allow for DGA to be enabled on a single screen. */ |
| |
Bool vtSema; |
| |
|
| |
/* Keep track of the DGA state */ |
| |
Bool DGAActive; |
| |
int DGAFlags; |
| | |
| #if 0 | #if 0 |
| /* These definitely belong in the driver private area */ | /* These definitely belong in the driver private area */ |
|
|
|
| int reservedInt[NUM_RESERVED_INTS]; | int reservedInt[NUM_RESERVED_INTS]; |
| pointer reservedPtr[NUM_RESERVED_POINTERS]; | pointer reservedPtr[NUM_RESERVED_POINTERS]; |
| | |
| /* Driver entry points */ |
/* |
| |
* Driver entry points. |
| |
* |
| |
* All of the mandatory entry points are here, even though some don't |
| |
* need to be accessed through this structure (for example if they |
| |
* are registered directly through pScreen). |
| |
* |
| |
* The mandatory ones are: Probe, PreInit, ScreenInit, EnterVT, |
| |
* LeaveVT, CloseScreen, SaveScreen. |
| |
*/ |
| | |
| Bool (*ParseConfig)(/* undecided */); | Bool (*ParseConfig)(/* undecided */); |
| Bool (*Probe)(int flags); | Bool (*Probe)(int flags); |
|
|
|
| void (*FreeScreen)(int scrnIndex, int flags); | void (*FreeScreen)(int scrnIndex, int flags); |
| int (*ValidMode)(int scrnIndex, DisplayModePtr mode, | int (*ValidMode)(int scrnIndex, DisplayModePtr mode, |
| Bool verbose, int flags); | Bool verbose, int flags); |
| |
Bool (*SaveScreen)(ScreenPtr pScreen, Bool unblank); |
| | |
| /* For DPMS */ | /* For DPMS */ |
| void (*DPMSSet)(int scrnIndex, int level, int flags); | void (*DPMSSet)(int scrnIndex, int level, int flags); |
|
|
|
| unsigned long *physBase, | unsigned long *physBase, |
| int *physSize, int *memSize); | int *physSize, int *memSize); |
| Bool (*DGASetDirectMode)(int scrnIndex, Bool on); | Bool (*DGASetDirectMode)(int scrnIndex, Bool on); |
| Bool (*DGAGetDirectMode)(int scrnIndex); |
void (*DGASetBank)(int scrnIndex, int bank, int flags); |
| void (*SetBank)(int scrnIndex, int bank, int flags); |
|
| | |
| funcPointer reservedFuncs[NUM_RESERVED_FUNCS]; | funcPointer reservedFuncs[NUM_RESERVED_FUNCS]; |
| | |
|
|
|
| int driverVersion; | int driverVersion; |
| char * driverName; | char * driverName; |
| void (*Register)(int flags); | void (*Register)(int flags); |
| Bool (*ParseConfig)(ParseInfoPtr raw); |
Bool (*ParseConfig)(/*ParseInfoPtr raw*/); |
| Bool (*Probe)(int flags); | Bool (*Probe)(int flags); |
| pointer parseInfo; /* Driver-specific parsed info */ | pointer parseInfo; /* Driver-specific parsed info */ |
| } DriverRec, *DriverPtr; | } DriverRec, *DriverPtr; |
|
|
|
| char * name; /* pointer to the LOWERCASED name */ | char * name; /* pointer to the LOWERCASED name */ |
| } SymTabRec, *SymTabPtr; | } SymTabRec, *SymTabPtr; |
| | |
| /* These are possible return values for xf86CheckMode() and ValidMode() */ |
|
| typedef enum { |
|
| MODE_OK = 0, /* Mode OK */ |
|
| MODE_HSYNC, /* hsync out of range */ |
|
| MODE_VSYNC, /* vsync out of range */ |
|
| MODE_BAD = 255 /* unspecified reason */ |
|
| } ModeStatus; |
|
| |
|
| /* These are the possible flags for ValidMode */ | /* These are the possible flags for ValidMode */ |
| typedef enum { | typedef enum { |
| MODE_USED, /* this mode is really being used in the */ | MODE_USED, /* this mode is really being used in the */ |
|
|
|
| MODE_VID /* this is called from the VidMode extension */ | MODE_VID /* this is called from the VidMode extension */ |
| } ValidModeFlags; | } ValidModeFlags; |
| | |
| |
/* flags for xf86SaveRestoreImage */ |
| |
typedef enum { |
| |
SaveImage, |
| |
RestoreImage, |
| |
FreeImage |
| |
} SaveRestoreFlags; |
| |
|
| /* flags for xf86LookupMode */ | /* flags for xf86LookupMode */ |
| typedef enum { | typedef enum { |
| LOOKUP_DEFAULT = 0, /* Use default mode lookup method */ | LOOKUP_DEFAULT = 0, /* Use default mode lookup method */ |
| LOOKUP_BEST_REFRESH = 1, /* Pick modes with best refresh */ |
LOOKUP_BEST_REFRESH, /* Pick modes with best refresh */ |
| LOOKUP_NO_INTERLACED = 2, /* Ignore interlaced modes */ |
LOOKUP_CLOSEST_CLOCK, /* Pick modes with the closest clock */ |
| LOOKUP_FORCE_DEFAULT = 4 /* Force default lookup method */ |
LOOKUP_LIST_ORDER, /* Pick first useful mode in list */ |
| } LookupModeFlags; | } LookupModeFlags; |
| | |
| #define INTERLACE_REFRESH_WEIGHT 1.5 |
/* Flags for driver messages */ |
| |
|
| /* Indicates the level of DPMS support */ |
|
| typedef enum { | typedef enum { |
| DPMSSupportUnknown, |
X_PROBED, /* Value was probed */ |
| DPMSNotSupported, |
X_CONFIG, /* Value was given in the config file */ |
| DPMSFullSupport |
X_DEFAULT, /* Value is a default */ |
| } DPMSSupportStatus; |
X_CMDLINE /* Value was given on the command line */ |
| |
} MessageType; |
| | |
| /* These are the magic numbers that ModuleInit functions can return */ |
#define INTERLACE_REFRESH_WEIGHT 1.5 |
| typedef enum { |
|
| MAGIC_DONE = 0, /* no more init stuff */ |
|
| MAGIC_LOAD = 1, /* load that module */ |
|
| MAGIC_ADD_VIDEO_CHIP_REC = 2, /* add this as vgaVideoChipPtr*/ |
|
| MAGIC_CCD_DO_BITBLT = 3, /* cur.col.depth specific blit*/ |
|
| MAGIC_CCD_SCREEN_PRIV_IDX = 4, /* cur.col.depth specific idx*/ |
|
| MAGIC_CCD_XAA_SCREEN_INIT = 5, /* cur.col.depth specific init*/ |
|
| /* don't use these, use MAGIC_LOAD_EXTENSION instead */ |
|
| MAGIC_PEX_INIT = 6, /* PEX init function */ |
|
| MAGIC_XIE_INIT = 7, /* XIE init function */ |
|
| |
|
| MAGIC_LOAD_EXTENSION = 8, |
|
| MAGIC_VERSION = 9, /* retrieve version info */ |
|
| /* must be returned as */ |
|
| /* first item from ModuleInit */ |
|
| MAGIC_DONT_CHECK_UNRESOLVED = 10, /* delay checking */ |
|
| MAGIC_GLX_VISUALS_INIT = 11, /* GLX visuals init function */ |
|
| MAGIC_ADD_XINPUT_DEVICE = 12 /* register xinput device */ |
|
| } MagicCallbackCodes; |
|
| | |
| #define LD_RESOLV_IFDONE 0 /* only check if no more | #define LD_RESOLV_IFDONE 0 /* only check if no more |
| delays pending */ | delays pending */ |
| #define LD_RESOLV_NOW 1 /* finish one delay step */ | #define LD_RESOLV_NOW 1 /* finish one delay step */ |
| #define LD_RESOLV_FORCE 2 /* force checking... */ | #define LD_RESOLV_FORCE 2 /* force checking... */ |
| |
|
| #define MODINFOSTRING1 0xef23fdc5 |
|
| #define MODINFOSTRING2 0x10dc023a |
|
| |
|
| #ifndef MODULEVENDORSTRING |
|
| #define MODULEVENDORSTRING "The XFree86 Project" |
|
| #endif |
|
| |
|
| /* this structure is expected to be returned by initfunc by MAGIC_VERSION */ |
|
| typedef struct { |
|
| char * modname; /* name of module, e.g. "foo_drv.o" */ |
|
| char * vendor; /* vendor specific string */ |
|
| CARD32 _modinfo1_; /* constanta MODINFOSTRING1/2 to find */ |
|
| CARD32 _modinfo2_; /* infoarea with a binary editor or sign tool */ |
|
| CARD32 xf86version; /* contains XF86_VERSION_CURRENT */ |
|
| CARD32 modversion; /* contains a module specific version id */ |
|
| CARD32 checksum[4]; /* contains a digital signature of the */ |
|
| /* version info structure */ |
|
| } XF86ModuleVersionInfo; |
|
| |
|
| | |
| #endif /* _XF86STR_H */ | #endif /* _XF86STR_H */ |