#ifndef _XF86STR_H
#define _XF86STR_H
#include "misc.h"
#include "input.h"
#include "scrnintstr.h"
#include "pixmapstr.h"
#include "colormapst.h"
#include "xf86Module.h"
#include "xf86Opt.h"
#include "xf86Pci.h"
#include <pciaccess.h>
#include <inttypes.h>
#if defined(__powerpc__)
typedef uint64_t memType;
#else
typedef uintptr_t memType;
#endif
typedef enum {
V_PHSYNC = 0x0001,
V_NHSYNC = 0x0002,
V_PVSYNC = 0x0004,
V_NVSYNC = 0x0008,
V_INTERLACE = 0x0010,
V_DBLSCAN = 0x0020,
V_CSYNC = 0x0040,
V_PCSYNC = 0x0080,
V_NCSYNC = 0x0100,
V_HSKEW = 0x0200,
V_BCAST = 0x0400,
V_PIXMUX = 0x1000,
V_DBLCLK = 0x2000,
V_CLKDIV2 = 0x4000
} ModeFlags;
typedef enum {
INTERLACE_HALVE_V = 0x0001
} CrtcAdjustFlags;
typedef enum {
MODECHECK_INITIAL = 0,
MODECHECK_FINAL = 1
} ModeCheckFlags;
typedef enum {
MODE_OK = 0,
MODE_HSYNC,
MODE_VSYNC,
MODE_H_ILLEGAL,
MODE_V_ILLEGAL,
MODE_BAD_WIDTH,
MODE_NOMODE,
MODE_NO_INTERLACE,
MODE_NO_DBLESCAN,
MODE_NO_VSCAN,
MODE_MEM,
MODE_VIRTUAL_X,
MODE_VIRTUAL_Y,
MODE_MEM_VIRT,
MODE_NOCLOCK,
MODE_CLOCK_HIGH,
MODE_CLOCK_LOW,
MODE_CLOCK_RANGE,
MODE_BAD_HVALUE,
MODE_BAD_VVALUE,
MODE_BAD_VSCAN,
MODE_HSYNC_NARROW,
MODE_HSYNC_WIDE,
MODE_HBLANK_NARROW,
MODE_HBLANK_WIDE,
MODE_VSYNC_NARROW,
MODE_VSYNC_WIDE,
MODE_VBLANK_NARROW,
MODE_VBLANK_WIDE,
MODE_PANEL,
MODE_INTERLACE_WIDTH,
MODE_ONE_WIDTH,
MODE_ONE_HEIGHT,
MODE_ONE_SIZE,
MODE_NO_REDUCED,
MODE_BANDWIDTH,
MODE_BAD = -2,
MODE_ERROR = -1
} ModeStatus;
# define M_T_BUILTIN 0x01
# define M_T_CLOCK_C (0x02 | M_T_BUILTIN)
# define M_T_CRTC_C (0x04 | M_T_BUILTIN)
# define M_T_CLOCK_CRTC_C (M_T_CLOCK_C | M_T_CRTC_C)
# define M_T_PREFERRED 0x08
# define M_T_DEFAULT 0x10
# define M_T_USERDEF 0x20
# define M_T_DRIVER 0x40
# define M_T_USERPREF 0x80
typedef struct _DisplayModeRec {
struct _DisplayModeRec * prev;
struct _DisplayModeRec * next;
char * name;
ModeStatus status;
int type;
int Clock;
int HDisplay;
int HSyncStart;
int HSyncEnd;
int HTotal;
int HSkew;
int VDisplay;
int VSyncStart;
int VSyncEnd;
int VTotal;
int VScan;
int Flags;
int ClockIndex;
int SynthClock;
int CrtcHDisplay;
int CrtcHBlankStart;
int CrtcHSyncStart;
int CrtcHSyncEnd;
int CrtcHBlankEnd;
int CrtcHTotal;
int CrtcHSkew;
int CrtcVDisplay;
int CrtcVBlankStart;
int CrtcVSyncStart;
int CrtcVSyncEnd;
int CrtcVBlankEnd;
int CrtcVTotal;
Bool CrtcHAdjusted;
Bool CrtcVAdjusted;
int PrivSize;
INT32 * Private;
int PrivFlags;
float HSync, VRefresh;
} DisplayModeRec, *DisplayModePtr;
#define MAX_HSYNC 8
#define MAX_VREFRESH 8
typedef struct { float hi, lo; } range;
typedef struct { CARD32 red, green, blue; } rgb;
typedef struct { float red, green, blue; } Gamma;
#define GAMMA_MAX 10.0
#define GAMMA_MIN (1.0 / GAMMA_MAX)
#define GAMMA_ZERO (GAMMA_MIN / 100.0)
typedef struct {
char * id;
char * vendor;
char * model;
int nHsync;
range hsync[MAX_HSYNC];
int nVrefresh;
range vrefresh[MAX_VREFRESH];
DisplayModePtr Modes;
DisplayModePtr Last;
Gamma gamma;
int widthmm;
int heightmm;
pointer options;
pointer DDC;
Bool reducedblanking;
int maxPixClock;
} MonRec, *MonPtr;
typedef struct x_ClockRange {
struct x_ClockRange *next;
int minClock;
int maxClock;
int clockIndex;
Bool interlaceAllowed;
Bool doubleScanAllowed;
int ClockMulFactor;
int ClockDivFactor;
int PrivFlags;
} ClockRange, *ClockRangePtr;
typedef struct x_ClockRanges {
struct x_ClockRanges *next;
int minClock;
int maxClock;
int clockIndex;
Bool interlaceAllowed;
Bool doubleScanAllowed;
int ClockMulFactor;
int ClockDivFactor;
int PrivFlags;
int strategy;
} ClockRanges, *ClockRangesPtr;
typedef struct _ScrnInfoRec *ScrnInfoPtr;
typedef enum {
RR_GET_INFO,
RR_SET_CONFIG,
RR_GET_MODE_MM,
GET_REQUIRED_HW_INTERFACES = 10
} xorgDriverFuncOp;
typedef Bool xorgDriverFuncProc (ScrnInfoPtr, xorgDriverFuncOp,
pointer);
typedef struct {
int rotation;
int rate;
int width;
int height;
} xorgRRConfig;
typedef union {
short RRRotations;
xorgRRConfig RRConfig;
} xorgRRRotation, *xorgRRRotationPtr;
typedef struct {
DisplayModePtr mode;
int virtX;
int virtY;
int mmWidth;
int mmHeight;
} xorgRRModeMM, *xorgRRModeMMPtr;
#define HW_IO 1
#define HW_MMIO 2
#define NEED_IO_ENABLED(x) (x & HW_IO)
typedef CARD32 xorgHWFlags;
struct _DriverRec;
typedef struct {
int driverVersion;
char * driverName;
void (*Identify)(int flags);
Bool (*Probe)(struct _DriverRec *drv, int flags);
const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
pointer module;
int refCount;
} DriverRec1;
struct _SymTabRec;
struct _PciChipsets;
typedef struct _DriverRec {
int driverVersion;
char * driverName;
void (*Identify)(int flags);
Bool (*Probe)(struct _DriverRec *drv, int flags);
const OptionInfoRec * (*AvailableOptions)(int chipid, int bustype);
pointer module;
int refCount;
xorgDriverFuncProc *driverFunc;
const struct pci_id_match * supported_devices;
Bool (*PciProbe)( struct _DriverRec * drv, int entity_num,
struct pci_device * dev, intptr_t match_data );
} DriverRec, *DriverPtr;
#define HaveDriverFuncs 1
_X_DEPRECATED typedef struct _ModuleInfoRec {
int moduleVersion;
char * moduleName;
pointer module;
int refCount;
const OptionInfoRec * (*AvailableOptions)(void *unused);
pointer unused[8];
} ModuleInfoRec, *ModuleInfoPtr;
#if defined(linux) && defined(_INPUT_H)
#undef BUS_NONE
#undef BUS_ISA
#undef BUS_PCI
#undef BUS_SBUS
#undef BUS_last
#endif
typedef enum {
BUS_NONE,
BUS_ISA,
BUS_PCI,
BUS_SBUS,
BUS_last
} BusType;
struct pci_device;
typedef struct {
int fbNum;
} SbusBusId;
typedef struct _bus {
BusType type;
union {
struct pci_device *pci;
SbusBusId sbus;
} id;
} BusRec, *BusPtr;
#define MAXCLOCKS 128
typedef enum {
DAC_BPP8 = 0,
DAC_BPP16,
DAC_BPP24,
DAC_BPP32,
MAXDACSPEEDS
} DacSpeedIndex;
typedef struct {
char * identifier;
char * vendor;
char * board;
char * chipset;
char * ramdac;
char * driver;
struct _confscreenrec * myScreenSection;
Bool claimed;
int dacSpeeds[MAXDACSPEEDS];
int numclocks;
int clock[MAXCLOCKS];
char * clockchip;
char * busID;
Bool active;
Bool inUse;
int videoRam;
int textClockFreq;
unsigned long BiosBase;
unsigned long MemBase;
unsigned long IOBase;
int chipID;
int chipRev;
pointer options;
int irq;
int screen;
} GDevRec, *GDevPtr;
typedef struct {
char * identifier;
char * driver;
pointer commonOptions;
pointer extraOptions;
} IDevRec, *IDevPtr;
typedef struct {
int frameX0;
int frameY0;
int virtualX;
int virtualY;
int depth;
int fbbpp;
rgb weight;
rgb blackColour;
rgb whiteColour;
int defaultVisual;
char ** modes;
pointer options;
} DispRec, *DispPtr;
typedef struct _confxvportrec {
char * identifier;
pointer options;
} confXvPortRec, *confXvPortPtr;
typedef struct _confxvadaptrec {
char * identifier;
int numports;
confXvPortPtr ports;
pointer options;
} confXvAdaptorRec, *confXvAdaptorPtr;
typedef struct _confscreenrec {
char * id;
int screennum;
int defaultdepth;
int defaultbpp;
int defaultfbbpp;
MonPtr monitor;
GDevPtr device;
int numdisplays;
DispPtr displays;
int numxvadaptors;
confXvAdaptorPtr xvadaptors;
pointer options;
} confScreenRec, *confScreenPtr;
typedef enum {
PosObsolete = -1,
PosAbsolute = 0,
PosRightOf,
PosLeftOf,
PosAbove,
PosBelow,
PosRelative
} PositionType;
typedef struct _screenlayoutrec {
confScreenPtr screen;
char * topname;
confScreenPtr top;
char * bottomname;
confScreenPtr bottom;
char * leftname;
confScreenPtr left;
char * rightname;
confScreenPtr right;
PositionType where;
int x;
int y;
char * refname;
confScreenPtr refscreen;
} screenLayoutRec, *screenLayoutPtr;
typedef struct _serverlayoutrec {
char * id;
screenLayoutPtr screens;
GDevPtr inactives;
IDevPtr* inputs;
pointer options;
} serverLayoutRec, *serverLayoutPtr;
typedef struct _confdribufferrec {
int count;
int size;
enum {
XF86DRI_WC_HINT = 0x0001
} flags;
} confDRIBufferRec, *confDRIBufferPtr;
typedef struct _confdrirec {
int group;
int mode;
int bufs_count;
confDRIBufferRec *bufs;
} confDRIRec, *confDRIPtr;
#define NUM_RESERVED_INTS 16
#define NUM_RESERVED_POINTERS 15
#define NUM_RESERVED_FUNCS 11
typedef pointer (*funcPointer)(void);
typedef enum {
Pix24DontCare = 0,
Pix24Use24,
Pix24Use32
} Pix24Flags;
typedef enum {
XF86_APM_UNKNOWN = -1,
XF86_APM_SYS_STANDBY,
XF86_APM_SYS_SUSPEND,
XF86_APM_CRITICAL_SUSPEND,
XF86_APM_USER_STANDBY,
XF86_APM_USER_SUSPEND,
XF86_APM_STANDBY_RESUME,
XF86_APM_NORMAL_RESUME,
XF86_APM_CRITICAL_RESUME,
XF86_APM_LOW_BATTERY,
XF86_APM_POWER_STATUS_CHANGE,
XF86_APM_UPDATE_TIME,
XF86_APM_CAPABILITY_CHANGED,
XF86_APM_STANDBY_FAILED,
XF86_APM_SUSPEND_FAILED
} pmEvent;
typedef enum {
PM_WAIT,
PM_CONTINUE,
PM_FAILED,
PM_NONE
} pmWait;
typedef struct _AccessRec {
void (*AccessDisable)(void *arg);
void (*AccessEnable)(void *arg);
void *arg;
} xf86AccessRec, *xf86AccessPtr;
typedef struct {
xf86AccessPtr mem;
xf86AccessPtr io;
xf86AccessPtr io_mem;
} xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
typedef enum {
NONE,
IO,
MEM_IO,
MEM
} resType;
typedef struct _EntityAccessRec {
xf86AccessPtr fallback;
xf86AccessPtr pAccess;
resType rt;
pointer busAcc;
struct _EntityAccessRec *next;
} EntityAccessRec, *EntityAccessPtr;
typedef struct _CurrAccRec {
EntityAccessPtr pMemAccess;
EntityAccessPtr pIoAccess;
} xf86CurrentAccessRec, *xf86CurrentAccessPtr;
#define ResNone ((unsigned long)(-1))
#define ResMem 0x0001
#define ResIo 0x0002
#define ResPhysMask 0x000F
#define ResExclusive 0x0010
#define ResShared 0x0020
#define ResAny 0x0040
#define ResAccMask 0x0070
#define ResUnused 0x0080
#define ResUnusedOpr 0x0100
#define ResDisableOpr 0x0200
#define ResOprMask 0x0300
#define ResBlock 0x0400
#define ResSparse 0x0800
#define ResExtMask 0x0C00
#define ResEstimated 0x001000
#define ResInit 0x002000
#define ResBios 0x004000
#define ResMiscMask 0x00F000
#define ResBus 0x010000
#if defined(__alpha__) && defined(linux)
# define ResDomain 0x1ff000000ul
#else
# define ResDomain 0xff000000ul
#endif
#define ResTypeMask (ResPhysMask | ResDomain)
#define ResEnd ResNone
#define ResExcMemBlock (ResMem | ResExclusive | ResBlock)
#define ResExcIoBlock (ResIo | ResExclusive | ResBlock)
#define ResShrMemBlock (ResMem | ResShared | ResBlock)
#define ResShrIoBlock (ResIo | ResShared | ResBlock)
#define ResExcUusdMemBlock (ResMem | ResExclusive | ResUnused | ResBlock)
#define ResExcUusdIoBlock (ResIo | ResExclusive | ResUnused | ResBlock)
#define ResShrUusdMemBlock (ResMem | ResShared | ResUnused | ResBlock)
#define ResShrUusdIoBlock (ResIo | ResShared | ResUnused | ResBlock)
#define ResExcUusdMemSparse (ResMem | ResExclusive | ResUnused | ResSparse)
#define ResExcUusdIoSparse (ResIo | ResExclusive | ResUnused | ResSparse)
#define ResShrUusdMemSparse (ResMem | ResShared | ResUnused | ResSparse)
#define ResShrUusdIoSparse (ResIo | ResShared | ResUnused | ResSparse)
#define ResExcMemSparse (ResMem | ResExclusive | ResSparse)
#define ResExcIoSparse (ResIo | ResExclusive | ResSparse)
#define ResShrMemSparse (ResMem | ResShared | ResSparse)
#define ResShrIoSparse (ResIo | ResShared | ResSparse)
#define ResUusdMemSparse (ResMem | ResUnused | ResSparse)
#define ResUusdIoSparse (ResIo | ResUnused | ResSparse)
#define ResIsMem(r) (((r)->type & ResPhysMask) == ResMem)
#define ResIsIo(r) (((r)->type & ResPhysMask) == ResIo)
#define ResIsExclusive(r) (((r)->type & ResAccMask) == ResExclusive)
#define ResIsShared(r) (((r)->type & ResAccMask) == ResShared)
#define ResIsUnused(r) (((r)->type & ResAccMask) == ResUnused)
#define ResIsBlock(r) (((r)->type & ResExtMask) == ResBlock)
#define ResIsSparse(r) (((r)->type & ResExtMask) == ResSparse)
#define ResIsEstimated(r) (((r)->type & ResMiscMask) == ResEstimated)
typedef struct {
unsigned long type;
memType a;
memType b;
} resRange, *resList;
#define RANGE_TYPE(type, domain) \
(((unsigned long)(domain) << 24) | ((type) & ~ResBus))
#define RANGE(r,u,v,t) {\
(r).a = (u);\
(r).b = (v);\
(r).type = (t);\
}
#define rBase a
#define rMask b
#define rBegin a
#define rEnd b
typedef struct _resRec *resPtr;
typedef struct _resRec {
resRange val;
int entityIndex;
resPtr next;
} resRec;
#define sparse_base val.rBase
#define sparse_mask val.rMask
#define block_begin val.rBegin
#define block_end val.rEnd
#define res_type val.type
typedef struct _PciChipsets {
int numChipset;
int PCIid;
resRange *resList;
} PciChipsets;
typedef void (*EntityProc)(int entityIndex,pointer private);
typedef struct _entityInfo {
int index;
BusRec location;
int chipset;
Bool active;
resPtr resources;
GDevPtr device;
DriverPtr driver;
} EntityInfoRec, *EntityInfoPtr;
typedef enum {
SETUP,
OPERATING
} xf86State;
typedef enum {
NOTIFY_SETUP_TRANSITION,
NOTIFY_SETUP,
NOTIFY_OPERATING,
NOTIFY_OPERATING_TRANSITION,
NOTIFY_ENABLE,
NOTIFY_ENTER,
NOTIFY_LEAVE
} xf86NotifyState;
typedef void (*xf86StateChangeNotificationCallbackFunc)(xf86NotifyState state,pointer);
typedef struct {
int num;
DisplayModePtr mode;
int flags;
int imageWidth;
int imageHeight;
int pixmapWidth;
int pixmapHeight;
int bytesPerScanline;
int byteOrder;
int depth;
int bitsPerPixel;
unsigned long red_mask;
unsigned long green_mask;
unsigned long blue_mask;
short visualClass;
int viewportWidth;
int viewportHeight;
int xViewportStep;
int yViewportStep;
int maxViewportX;
int maxViewportY;
int viewportFlags;
int offset;
unsigned char *address;
int reserved1;
int reserved2;
} DGAModeRec, *DGAModePtr;
typedef struct {
DGAModePtr mode;
PixmapPtr pPix;
} DGADeviceRec, *DGADevicePtr;
#define PROBE_DEFAULT 0x00
#define PROBE_DETECT 0x01
#define PROBE_TRYHARD 0x02
typedef Bool xf86ProbeProc (DriverPtr, int);
typedef Bool xf86PreInitProc (ScrnInfoPtr, int);
typedef Bool xf86ScreenInitProc (int, ScreenPtr, int, char**);
typedef Bool xf86SwitchModeProc (int, DisplayModePtr, int);
typedef void xf86AdjustFrameProc (int, int, int, int);
typedef Bool xf86EnterVTProc (int, int);
typedef void xf86LeaveVTProc (int, int);
typedef void xf86FreeScreenProc (int, int);
typedef ModeStatus xf86ValidModeProc (int, DisplayModePtr, Bool, int);
typedef void xf86EnableDisableFBAccessProc(int, Bool);
typedef int xf86SetDGAModeProc (int, int, DGADevicePtr);
typedef int xf86ChangeGammaProc (int, Gamma);
typedef void xf86PointerMovedProc (int, int, int);
typedef Bool xf86PMEventProc (int, pmEvent, Bool);
typedef void xf86DPMSSetProc (ScrnInfoPtr, int, int);
typedef void xf86LoadPaletteProc (ScrnInfoPtr, int, int *, LOCO *, VisualPtr);
typedef void xf86SetOverscanProc (ScrnInfoPtr, int);
typedef struct _ScrnInfoRec {
int driverVersion;
char * driverName;
ScreenPtr pScreen;
int scrnIndex;
Bool configured;
int origIndex;
int imageByteOrder;
int bitmapScanlineUnit;
int bitmapScanlinePad;
int bitmapBitOrder;
int numFormats;
PixmapFormatRec formats[MAXFORMATS];
PixmapFormatRec fbFormat;
int bitsPerPixel;
Pix24Flags pixmap24;
int depth;
MessageType depthFrom;
MessageType bitsPerPixelFrom;
rgb weight;
rgb mask;
rgb offset;
int rgbBits;
Gamma gamma;
int defaultVisual;
int maxHValue;
int maxVValue;
int virtualX;
int virtualY;
int xInc;
MessageType virtualFrom;
int displayWidth;
int frameX0;
int frameY0;
int frameX1;
int frameY1;
int zoomLocked;
DisplayModePtr modePool;
DisplayModePtr modes;
DisplayModePtr currentMode;
confScreenPtr confScreen;
MonPtr monitor;
DispPtr display;
int * entityList;
int numEntities;
int widthmm;
int heightmm;
int xDpi;
int yDpi;
char * name;
pointer driverPrivate;
DevUnion * privates;
DriverPtr drv;
pointer module;
int colorKey;
int overlayFlags;
char * chipset;
char * ramdac;
char * clockchip;
Bool progClock;
int numClocks;
int clock[MAXCLOCKS];
int videoRam;
unsigned long biosBase;
unsigned long memPhysBase;
unsigned long fbOffset;
IOADDRESS domainIOBase;
int memClk;
int textClockFreq;
Bool flipPixels;
pointer options;
int chipID;
int chipRev;
int racMemFlags;
int racIoFlags;
pointer access;
xf86CurrentAccessPtr CurrentAccess;
resType resourceType;
pointer busAccess;
Bool vtSema;
DevUnion pixmapPrivate;
Bool silkenMouse;
ClockRangesPtr clockRanges;
int adjustFlags;
int reservedInt[NUM_RESERVED_INTS];
int * entityInstanceList;
pointer reservedPtr[NUM_RESERVED_POINTERS];
xf86ProbeProc *Probe;
xf86PreInitProc *PreInit;
xf86ScreenInitProc *ScreenInit;
xf86SwitchModeProc *SwitchMode;
xf86AdjustFrameProc *AdjustFrame;
xf86EnterVTProc *EnterVT;
xf86LeaveVTProc *LeaveVT;
xf86FreeScreenProc *FreeScreen;
xf86ValidModeProc *ValidMode;
xf86EnableDisableFBAccessProc *EnableDisableFBAccess;
xf86SetDGAModeProc *SetDGAMode;
xf86ChangeGammaProc *ChangeGamma;
xf86PointerMovedProc *PointerMoved;
xf86PMEventProc *PMEvent;
xf86DPMSSetProc *DPMSSet;
xf86LoadPaletteProc *LoadPalette;
xf86SetOverscanProc *SetOverscan;
xorgDriverFuncProc *DriverFunc;
funcPointer reservedFuncs[NUM_RESERVED_FUNCS];
} ScrnInfoRec;
typedef struct {
Bool (*OpenFramebuffer)(
ScrnInfoPtr pScrn,
char **name,
unsigned char **mem,
int *size,
int *offset,
int *extra
);
void (*CloseFramebuffer)(ScrnInfoPtr pScrn);
Bool (*SetMode)(ScrnInfoPtr pScrn, DGAModePtr pMode);
void (*SetViewport)(ScrnInfoPtr pScrn, int x, int y, int flags);
int (*GetViewport)(ScrnInfoPtr pScrn);
void (*Sync)(ScrnInfoPtr);
void (*FillRect)(
ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned long color
);
void (*BlitRect)(
ScrnInfoPtr pScrn,
int srcx, int srcy,
int w, int h,
int dstx, int dsty
);
void (*BlitTransRect)(
ScrnInfoPtr pScrn,
int srcx, int srcy,
int w, int h,
int dstx, int dsty,
unsigned long color
);
} DGAFunctionRec, *DGAFunctionPtr;
typedef struct _SymTabRec {
int token;
const char * name;
} SymTabRec, *SymTabPtr;
typedef enum {
LOOKUP_DEFAULT = 0,
LOOKUP_BEST_REFRESH,
LOOKUP_CLOSEST_CLOCK,
LOOKUP_LIST_ORDER,
LOOKUP_CLKDIV2 = 0x0100,
LOOKUP_OPTIONAL_TOLERANCES = 0x0200
} LookupModeFlags;
#define NoDepth24Support 0x00
#define Support24bppFb 0x01
#define Support32bppFb 0x02
#define SupportConvert24to32 0x04
#define SupportConvert32to24 0x08
#define PreferConvert24to32 0x10
#define PreferConvert32to24 0x20
typedef void (*DPMSSetProcPtr)(ScrnInfoPtr, int, int);
typedef void (*InputHandlerProc)(int fd, pointer data);
#define CLK_REG_SAVE -1
#define CLK_REG_RESTORE -2
#define INTERLACE_REFRESH_WEIGHT 1.5
#define SYNC_TOLERANCE 0.01
#define CLOCK_TOLERANCE 2000
#define OVERLAY_8_32_DUALFB 0x00000001
#define OVERLAY_8_24_DUALFB 0x00000002
#define OVERLAY_8_16_DUALFB 0x00000004
#define OVERLAY_8_32_PLANAR 0x00000008
#define MF_CLEAR_DTR 1
#define MF_CLEAR_RTS 2
typedef enum {
ACTION_TERMINATE = 0,
ACTION_NEXT_MODE = 10,
ACTION_PREV_MODE,
ACTION_SWITCHSCREEN = 100,
ACTION_SWITCHSCREEN_NEXT,
ACTION_SWITCHSCREEN_PREV,
} ActionEvent;
#endif