summaryrefslogtreecommitdiff
path: root/hw/xfree86/common/xf86.h
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xfree86/common/xf86.h')
-rw-r--r--hw/xfree86/common/xf86.h743
1 files changed, 743 insertions, 0 deletions
diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
new file mode 100644
index 000000000..ba00913d8
--- /dev/null
+++ b/hw/xfree86/common/xf86.h
@@ -0,0 +1,743 @@
+/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86.h,v 3.47.2.8 1998/02/24 19:05:53 hohndel Exp $ */
+/*
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Thomas Roell not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Thomas Roell makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as is" without express or implied warranty.
+ *
+ * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+/* $Xorg: xf86.h,v 1.3 2000/08/17 19:50:28 cpqbld Exp $ */
+
+#ifndef _XF86_H
+#define _XF86_H
+
+#include "misc.h"
+#include "input.h"
+#include "scrnintstr.h"
+
+#include "xf86_Option.h"
+
+/*
+ * structure common for all modes
+ */
+typedef struct _DispM {
+ struct _DispM *prev,*next;
+ char *name; /* identifier of this mode */
+ /* These are the values that the user sees/provides */
+ int Clock; /* pixel clock */
+ int HDisplay; /* horizontal timing */
+ int HSyncStart;
+ int HSyncEnd;
+ int HTotal;
+ int HSkew;
+ int VDisplay; /* vertical timing */
+ int VSyncStart;
+ int VSyncEnd;
+ int VTotal;
+ int Flags;
+ /* These are the values the hardware uses */
+ int SynthClock; /* Actual clock freq to be programmed */
+ int CrtcHDisplay;
+ int CrtcHSyncStart;
+ int CrtcHSyncEnd;
+ int CrtcHTotal;
+ int CrtcHSkew;
+ int CrtcVDisplay;
+ int CrtcVSyncStart;
+ int CrtcVSyncEnd;
+ int CrtcVTotal;
+ Bool CrtcHAdjusted;
+ Bool CrtcVAdjusted;
+ int PrivSize;
+ INT32 *Private;
+} DisplayModeRec, *DisplayModePtr;
+
+#define V_PHSYNC 0x0001
+#define V_NHSYNC 0x0002
+#define V_PVSYNC 0x0004
+#define V_NVSYNC 0x0008
+#define V_INTERLACE 0x0010
+#define V_DBLSCAN 0x0020
+#define V_CSYNC 0x0040
+#define V_PCSYNC 0x0080
+#define V_NCSYNC 0x0100
+#define V_HSKEW 0x0200 /* hskew provided */
+#define V_PIXMUX 0x1000
+#define V_DBLCLK 0x2000
+#define V_CLKDIV2 0x4000
+
+/* The monitor description */
+
+#define MAX_HSYNC 8
+#define MAX_VREFRESH 8
+
+typedef struct { float hi, lo; } range;
+
+typedef struct {
+ char *id;
+ char *vendor;
+ char *model;
+ float EMPTY;
+ int n_hsync;
+ range hsync[MAX_HSYNC];
+ int n_vrefresh;
+ range vrefresh[MAX_VREFRESH];
+ DisplayModePtr Modes, Last; /* Start and end of monitor's mode list */
+} MonRec, *MonPtr;
+
+#define MAXCLOCKS 128
+#define MAXDACSPEEDS 4 /* for <= 8, 16, 24, 32bpp */
+
+/* Set default max allowed clock to 90MHz */
+#define DEFAULT_MAX_CLOCK 90000
+
+/*
+ * the graphic device
+ */
+typedef struct {
+ Bool configured;
+ int tmpIndex;
+ int scrnIndex;
+ Bool (* Probe)(
+#if NeedNestedPrototypes
+ void
+#endif
+);
+ Bool (* Init)(
+#if NeedNestedPrototypes
+ int scr_index,
+ ScreenPtr pScreen,
+ int argc,
+ char **argv
+#endif
+);
+ int (* ValidMode)(
+#if NeedNestedPrototypes
+ DisplayModePtr target,
+ Bool verbose,
+ int flag
+#endif
+);
+ void (* EnterLeaveVT)(
+#if NeedNestedPrototypes
+ int,
+ int
+#endif
+);
+ void (* EnterLeaveMonitor)(
+#if NeedNestedPrototypes
+ int
+#endif
+);
+ void (* EnterLeaveCursor)(
+#if NeedNestedPrototypes
+ int
+#endif
+);
+ void (* AdjustFrame)(
+#if NeedNestedPrototypes
+ int x,
+ int y
+#endif
+);
+ Bool (* SwitchMode)(
+#if NeedNestedPrototypes
+ DisplayModePtr modes
+#endif
+);
+ void (* DPMSSet)(
+#if NeedNestedPrototypes
+ int level
+#endif
+);
+ void (* PrintIdent)(
+#if NeedNestedPrototypes
+ void
+#endif
+);
+ int depth;
+ xrgb weight;
+ int bitsPerPixel;
+ int defaultVisual;
+ int virtualX,virtualY;
+ int displayWidth;
+ int frameX0, frameY0, frameX1, frameY1;
+ OFlagSet options;
+ OFlagSet clockOptions;
+ OFlagSet xconfigFlag;
+ char *chipset;
+ char *ramdac;
+ int dacSpeeds[MAXDACSPEEDS];
+ int dacSpeedBpp;
+ int clocks;
+ int clock[MAXCLOCKS];
+ int maxClock;
+ int videoRam;
+ int BIOSbase; /* Base address of video BIOS */
+ unsigned long MemBase; /* Frame buffer base address */
+ int width, height; /* real display dimensions */
+ unsigned long speedup; /* Use SpeedUp code */
+ DisplayModePtr modes;
+ MonPtr monitor;
+ char *clockprog;
+ int textclock;
+ Bool bankedMono; /* display supports banking for mono server */
+ char *name;
+ xrgb blackColour;
+ xrgb whiteColour;
+ int *validTokens;
+ char *patchLevel;
+ unsigned int IObase; /* AGX - video card I/O reg base */
+ unsigned int DACbase; /* AGX - dac I/O reg base */
+ unsigned long COPbase; /* AGX - coprocessor memory base */
+ unsigned int POSbase; /* AGX - I/O address of POS regs */
+ int instance; /* AGX - XGA video card instance number */
+ int s3Madjust;
+ int s3Nadjust;
+ int s3MClk;
+ int chipID;
+ int chipRev;
+ unsigned long VGAbase; /* AGX - 64K aperture memory address */
+ int s3RefClk;
+ int s3BlankDelay;
+ int textClockFreq;
+ char *DCConfig;
+ char *DCOptions;
+ int MemClk; /* General flag used for memory clocking */
+ int LCDClk;
+#ifdef XFreeXDGA
+ int directMode;
+ void (*setBank)(
+#if NeedNestedPrototypes
+ int
+#endif
+ );
+ unsigned long physBase;
+ int physSize;
+#endif
+#ifdef XF86SETUP
+ void *device; /* This should be GDevPtr, but it causes
+ problems with include file order */
+#endif
+} ScrnInfoRec, *ScrnInfoPtr;
+
+typedef struct {
+ int token; /* id of the token */
+ char *name; /* pointer to the LOWERCASED name */
+} SymTabRec, *SymTabPtr;
+
+#define VGA_DRIVER 1
+#define V256_DRIVER 2
+#define WGA_DRIVER 3
+#define XGA_DRIVER 4
+
+#define ENTER 1
+#define LEAVE 0
+
+/* These are possible return values for xf86CheckMode() and ValidMode() */
+#define MODE_OK 0
+#define MODE_HSYNC 1 /* hsync out of range */
+#define MODE_VSYNC 2 /* vsync out of range */
+#define MODE_BAD 255 /* unspecified reason */
+
+/* These are the possible flags for ValidMode */
+#define MODE_USED 1 /* this mode is really being used in the */
+ /* modes line of the Display Subsection */
+#define MODE_SUGGESTED 2 /* this mode is included in the available*/
+ /* modes in the Monitor Section */
+#define MODE_VID 3 /* this is called from the VidMode extension */
+
+/* Indicates the level of DPMS support */
+typedef enum {
+ DPMSSupportUnknown,
+ DPMSNotSupported,
+ DPMSFullSupport
+} DPMSSupportStatus;
+
+/* flags for xf86LookupMode */
+#define LOOKUP_DEFAULT 0 /* Use default mode lookup method */
+#define LOOKUP_BEST_REFRESH 1 /* Pick modes with best refresh */
+#define LOOKUP_NO_INTERLACED 2 /* Ignore interlaced modes */
+#define LOOKUP_FORCE_DEFAULT 4 /* Force default lookup method */
+
+#define INTERLACE_REFRESH_WEIGHT 1.5
+
+/* SpeedUp options */
+
+#define SPEEDUP_FILLBOX 1
+#define SPEEDUP_FILLRECT 2
+#define SPEEDUP_BITBLT 4
+#define SPEEDUP_LINE 8
+#define SPEEDUP_TEGBLT8 0x10
+#define SPEEDUP_RECTSTIP 0x20
+
+/*
+ * This is the routines where SpeedUp is quicker than fXF86. The problem is
+ * that the SpeedUp fillbox is better for drawing vertical and horizontal
+ * line segments, and the fXF86 version is significantly better for
+ * more general lines
+ */
+#define SPEEDUP_BEST (SPEEDUP_FILLRECT | SPEEDUP_BITBLT | \
+ SPEEDUP_LINE | SPEEDUP_TEGBLT8 | \
+ SPEEDUP_RECTSTIP)
+/*
+#define SPEEDUP_BEST (SPEEDUP_FILLBOX | SPEEDUP_FILLRECT | \
+ SPEEDUP_BITBLT | SPEEDUP_LINE | \
+ SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)
+*/
+
+/*
+ * SpeedUp routines which are not dependent on the screen virtual resolution
+ */
+#ifndef SPEEDUP_ANYWIDTH
+#define SPEEDUP_ANYWIDTH (SPEEDUP_FILLRECT | SPEEDUP_BITBLT | \
+ SPEEDUP_LINE | SPEEDUP_FILLBOX)
+#endif
+
+/*
+ * SpeedUp routines which are not dependent on ET4000
+ */
+#ifndef SPEEDUP_ANYCHIPSET
+#define SPEEDUP_ANYCHIPSET (SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)
+#endif
+
+/* All SpeedUps */
+#define SPEEDUP_ALL (SPEEDUP_FILLBOX | SPEEDUP_FILLRECT | \
+ SPEEDUP_BITBLT | SPEEDUP_LINE | \
+ SPEEDUP_TEGBLT8 | SPEEDUP_RECTSTIP)
+
+/* SpeedUp flags used if SpeedUp is not in XF86Config */
+#define SPEEDUP_DEFAULT SPEEDUP_ALL
+
+extern Bool xf86VTSema;
+
+/* Mouse device private record */
+
+#define MSE_MAPTOX (-1)
+#define MSE_MAPTOY (-2)
+#define MSE_MAXBUTTONS 12
+#define MSE_DFLTBUTTONS 3
+
+typedef struct _MouseDevRec {
+ DeviceProc mseProc; /* procedure for initializing */
+ void (* mseEvents)(
+#if NeedNestedPrototypes
+ struct _MouseDevRec *
+#endif
+ ); /* proc for processing events */
+ DeviceIntPtr device;
+ int mseFd;
+ char *mseDevice;
+ int mseType;
+ int mseModel;
+ int baudRate;
+ int oldBaudRate;
+ int sampleRate;
+ int lastButtons;
+ int threshold, num, den; /* acceleration */
+ int buttons; /* # of buttons */
+ int emulateState; /* automata state for 2 button mode */
+ Bool emulate3Buttons;
+ int emulate3Timeout; /* Timeout for 3 button emulation */
+ Bool chordMiddle;
+ int mouseFlags; /* Flags to Clear after opening mouse dev */
+ int truebuttons; /* Arg to maintain before emulate3buttons timer callback */
+
+ int resolution;
+ int negativeZ;
+ int positiveZ;
+#ifndef MOUSE_PROTOCOL_IN_KERNEL
+ unsigned char protoPara[7];
+#endif
+
+#ifndef CSRG_BASED
+ /* xque part */
+ int xquePending; /* was xqueFd, but nothing uses that */
+ int xqueSema;
+#endif
+#ifdef XINPUT
+ struct _LocalDeviceRec *local;
+#endif
+} MouseDevRec, *MouseDevPtr;
+
+#ifdef XINPUT
+#define MOUSE_DEV(dev) (MouseDevPtr) PRIVATE(dev)
+#else
+#define MOUSE_DEV(dev) (MouseDevPtr) (dev)->public.devicePrivate
+#endif
+
+/* Global data */
+/* xf86Init.c */
+extern double xf86rGamma, xf86gGamma, xf86bGamma;
+
+#ifdef XF86VIDMODE
+extern Bool xf86VidModeEnabled;
+extern Bool xf86VidModeAllowNonLocal;
+#endif
+#ifdef XF86MISC
+extern Bool xf86MiscModInDevEnabled;
+extern Bool xf86MiscModInDevAllowNonLocal;
+#endif
+
+/* PCI probe flags */
+
+
+typedef enum {
+ PCIProbe1 = 0,
+ PCIProbe2,
+ PCIForceConfig1,
+ PCIForceConfig2
+} PciProbeType;
+
+extern PciProbeType xf86PCIFlags;
+
+/* Function Prototypes */
+#ifndef _NO_XF86_PROTOTYPES
+
+/* xf86Init.c */
+void InitOutput(
+#if NeedFunctionPrototypes
+ ScreenInfo *pScreenInfo,
+ int argc,
+ char **argv
+#endif
+);
+
+void InitInput(
+#if NeedFunctionPrototypes
+ int argc,
+ char **argv
+#endif
+);
+
+void ddxGiveUp(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void AbortDDX(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+int ddxProcessArgument(
+#if NeedFunctionPrototypes
+ int argc,
+ char *argv[],
+ int i
+#endif
+);
+
+void ddxUseMsg(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+/* xf86Config.c */
+unsigned int StrToUL(
+#if NeedFunctionPrototypes
+ char *str
+#endif
+);
+
+#ifndef CONFIG_RETURN_TYPE
+#ifdef XF86SETUP
+#define CONFIG_RETURN_TYPE int
+#else
+#define CONFIG_RETURN_TYPE void
+#endif
+#endif
+
+CONFIG_RETURN_TYPE xf86Config(
+#if NeedFunctionPrototypes
+ int vtopen
+#endif
+);
+
+CONFIG_RETURN_TYPE configPointerSection(
+#if NeedFunctionPrototypes
+ MouseDevPtr /*mouse_dev*/,
+ int /*end_tag*/,
+ char** /*devicename*/
+#endif
+);
+
+Bool xf86LookupMode(
+#if NeedFunctionPrototypes
+ DisplayModePtr target,
+ ScrnInfoPtr driver,
+ int flags
+#endif
+);
+
+void xf86VerifyOptions(
+#if NeedFunctionPrototypes
+ OFlagSet *allowedOptions,
+ ScrnInfoPtr driver
+#endif
+);
+
+int xf86CheckMode(
+#if NeedFunctionPrototypes
+ ScrnInfoPtr scrp,
+ DisplayModePtr dispmp,
+ MonPtr monp,
+ int verbose
+#endif
+);
+
+int xf86GetNearestClock(
+#if NeedFunctionPrototypes
+ ScrnInfoPtr Screen,
+ int Frequency
+#endif
+);
+
+/* xf86Cursor.c */
+void xf86InitViewport(
+#if NeedFunctionPrototypes
+ ScrnInfoPtr pScr
+#endif
+);
+
+void xf86SetViewport(
+#if NeedFunctionPrototypes
+ ScreenPtr pScreen,
+ int x,
+ int y
+#endif
+);
+
+void xf86LockZoom(
+#if NeedFunctionPrototypes
+ ScreenPtr pScreen,
+ int lock
+#endif
+);
+
+void xf86ZoomViewport(
+#if NeedFunctionPrototypes
+ ScreenPtr pScreen,
+ int zoom
+#endif
+);
+
+/* xf86Dl.c */
+void*
+xf86LoadModule(
+#if NeedFunctionPrototypes
+ const char * file,
+ const char * path
+#endif
+);
+
+/* xf86Events.c */
+int TimeSinceLastInputEvent(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void SetTimeSinceLastInputEvent(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void ProcessInputEvents(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void xf86PostKbdEvent(
+#if NeedFunctionPrototypes
+ unsigned key
+#endif
+);
+
+void xf86PostMseEvent(
+#if NeedFunctionPrototypes
+ DeviceIntPtr device,
+ int buttons,
+ int dx,
+ int dy
+#endif
+);
+
+void xf86Block(
+#if NeedFunctionPrototypes
+ pointer blockData,
+ OSTimePtr pTimeout,
+ pointer pReadmask
+#endif
+);
+
+void xf86Wakeup(
+#if NeedFunctionPrototypes
+ pointer blockData,
+ int err,
+ pointer pReadmask
+#endif
+);
+
+void xf86SigHandler(
+#if NeedFunctionPrototypes
+ int signo
+#endif
+);
+
+/* xf86Io.c */
+void xf86KbdBell(
+#if NeedFunctionPrototypes
+ int percent,
+ DeviceIntPtr pKeyboard,
+ pointer ctrl,
+ int unused
+#endif
+);
+
+void xf86KbdLeds(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void xf86KbdCtrl(
+#if NeedFunctionPrototypes
+ DevicePtr pKeyboard,
+ KeybdCtrl *ctrl
+#endif
+);
+
+void xf86InitKBD(
+#if NeedFunctionPrototypes
+ Bool init
+#endif
+);
+
+int xf86KbdProc(
+#if NeedFunctionPrototypes
+ DeviceIntPtr pKeyboard,
+ int what
+#endif
+);
+
+void xf86MseCtrl(
+#if NeedFunctionPrototypes
+ DevicePtr pPointer,
+ PtrCtrl *ctrl
+#endif
+);
+
+int GetMotionEvents(
+#if NeedFunctionPrototypes
+ DeviceIntPtr,
+ xTimecoord *,
+ unsigned long,
+ unsigned long,
+ ScreenPtr
+#endif
+);
+
+int xf86MseProc(
+#if NeedFunctionPrototypes
+ DeviceIntPtr pPointer,
+ int what
+#endif
+);
+
+void xf86MseEvents(
+#if NeedFunctionPrototypes
+ MouseDevPtr mouse
+#endif
+);
+
+CARD32 GetTimeInMillis(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+void OsVendorInit(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+/* xf86_Mouse.c */
+Bool xf86MouseSupported(
+#if NeedFunctionPrototypes
+ int mousetype
+#endif
+);
+
+void xf86SetupMouse(
+#if NeedFunctionPrototypes
+ MouseDevPtr mouse
+#endif
+);
+
+void xf86MouseProtocol(
+#if NeedFunctionPrototypes
+ DeviceIntPtr device,
+ unsigned char *rBuf,
+ int nBytes
+#endif
+);
+
+#ifdef XINPUT
+void xf86MouseCtrl(
+#if NeedFunctionPrototypes
+ DeviceIntPtr device,
+ PtrCtrl *ctrl
+#endif
+);
+#endif
+
+/* xf86_PnPMouse.c */
+int xf86GetPnPMouseProtocol(
+#if NeedFunctionPrototypes
+ MouseDevPtr mouse
+#endif
+);
+
+/* xf86Kbd.c */
+Bool LegalModifier(
+#if NeedFunctionPrototypes
+ unsigned int key,
+ DevicePtr pDev
+#endif
+);
+
+void xf86KbdGetMapping(
+#if NeedFunctionPrototypes
+ KeySymsPtr pKeySyms,
+ CARD8 *pModMap
+#endif
+);
+#endif /* _NO_XF86_PROTOTYPES */
+
+/* End of Prototypes */
+
+#endif /* _XF86_H */
+
+