summaryrefslogtreecommitdiff
path: root/src/apm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/apm.h')
-rw-r--r--src/apm.h243
1 files changed, 243 insertions, 0 deletions
diff --git a/src/apm.h b/src/apm.h
new file mode 100644
index 0000000..44e37eb
--- /dev/null
+++ b/src/apm.h
@@ -0,0 +1,243 @@
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h,v 1.19 2002/05/07 12:53:49 alanh Exp $ */
+
+
+/* All drivers should typically include these */
+#include "xf86.h"
+#include "xf86_OSproc.h"
+
+/* All drivers need this */
+#include "xf86_ansic.h"
+
+/* Everything using inb/outb, etc needs "compiler.h" */
+#include "compiler.h"
+
+/* This is used for module versioning */
+#include "xf86Version.h"
+
+/* Drivers for PCI hardware need this */
+#include "xf86PciInfo.h"
+
+/* Drivers that need to access the PCI config space directly need this */
+#include "xf86Pci.h"
+
+/* All drivers using the vgahw module need this */
+#include "vgaHW.h"
+
+/* Drivers using the mi banking wrapper need this */
+#include "mibank.h"
+
+/* All drivers using the mi colormap manipulation need this */
+#include "micmap.h"
+
+/* Needed for the 1 and 4 bpp framebuffers */
+#include "xf1bpp.h"
+#include "xf4bpp.h"
+
+#include "fb.h"
+
+/* Drivers using the XAA interface ... */
+#include "xaa.h"
+#include "xaalocal.h"
+#include "xf86Cursor.h"
+#include "xf86fbman.h"
+
+/* All drivers initialising the SW cursor need this */
+#include "mipointer.h"
+
+/* All drivers implementing backing store need this */
+#include "mibstore.h"
+
+/* I2C support */
+#include "xf86i2c.h"
+
+/* DDC support */
+#include "xf86DDC.h"
+
+#include "xf86xv.h"
+#include "Xv.h"
+
+#ifdef TRUE
+#undef TRUE
+#endif
+#define TRUE (1)
+
+#define rdinx(port, ind) (outb((port), (ind)), inb((port) + 1))
+#define wrinx(port, ind, val) outb((port), (ind)), outb((port) + 1, (val))
+#define modinx(port, ind, mask, bits) \
+ do { \
+ unsigned char tmp; \
+ tmp = (rdinx((port), (ind)) & ~(mask)) | ((bits) & (mask)); \
+ wrinx((port), (ind), tmp); \
+ } while(0)
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned long u32;
+
+#define NoSEQRegs 0x20
+#define NoCRTRegs 0x1F
+#define NoGRCRegs 0x09
+#define NoATCRegs 0x15
+
+enum {
+ XR80, XRC0, XRD0, XRE0, XRE8, XREC, XR140, XR144, XR148, XR14C, NoEXRegs
+};
+
+typedef struct {
+ unsigned char SEQ[NoSEQRegs];
+ unsigned char CRT[NoCRTRegs];
+ unsigned char GRC[NoGRCRegs];
+ unsigned char ATC[NoATCRegs];
+ unsigned int EX[NoEXRegs];
+} ApmRegStr, *ApmRegPtr;
+
+typedef struct {
+ int displayWidth, displayHeight;
+ int bitsPerPixel, bytesPerScanline;
+ int depth, Scanlines;
+ CARD32 mask32; /* Mask to have 32bit aligned data */
+ unsigned int Setup_DEC;
+ DisplayModePtr pMode;
+} ApmFBLayout;
+
+#define APM_CACHE_NUMBER 32
+
+typedef struct {
+ pciVideoPtr PciInfo;
+ PCITAG PciTag;
+ int scrnIndex;
+ int Chipset;
+ int ChipRev;
+ CARD32 LinAddress;
+ unsigned long LinMapSize;
+ CARD32 FbMapSize;
+ pointer LinMap;
+ pointer FbBase;
+ char *VGAMap;
+ char *MemMap;
+ pointer BltMap;
+ Bool UnlockCalled;
+ IOADDRESS iobase, xport, xbase;
+ unsigned char savedSR10;
+ CARD8 MiscOut;
+ CARD8 c9, d9, db, Rush;
+ unsigned long saveCmd;
+ pointer FontInfo;
+ Bool hwCursor;
+ Bool noLinear;
+ ApmRegStr ModeReg, SavedReg;
+ CloseScreenProcPtr CloseScreen;
+ Bool UsePCIRetry; /* Do we use PCI-retry or busy-waiting */
+ Bool NoAccel; /* Do we use XAA acceleration architecture */
+ int MinClock; /* Min ramdac clock */
+ int MaxClock; /* Max ramdac clock */
+ ApmFBLayout CurrentLayout, SavedLayout;
+ EntityInfoPtr pEnt;
+ XAAInfoRecPtr AccelInfoRec, DGAXAAInfo;
+ xf86CursorInfoPtr CursorInfoRec;
+ int DGAactive, numDGAModes;
+ DGAModePtr DGAModes;
+ int BaseCursorAddress,CursorAddress,DisplayedCursorAddress;
+ int OffscreenReserved;
+ int blitxdir, blitydir;
+ Bool apmTransparency, apmClip, ShadowFB, I2C;
+ int rop, Bg8x8, Fg8x8;
+ I2CBusPtr I2CPtr;
+ struct ApmStippleCacheRec {
+ XAACacheInfoRec apmStippleCache;
+ FBAreaPtr area;
+ int apmStippleCached:1;
+ } apmCache[APM_CACHE_NUMBER];
+ int apmCachePtr;
+ unsigned char regcurr[0x54];
+ ScreenPtr pScreen;
+ int Generation;
+ int apmLock, pixelStride, RushY[7], CopyMode;
+ int PutImageStride;
+ Bool (*DestroyPixmap)(PixmapPtr);
+ PixmapPtr (*CreatePixmap)(ScreenPtr, int, int, int);
+ void (*SetupForSolidFill)(ScrnInfoPtr pScrn, int color, int rop,
+ unsigned int planemask);
+ void (*SubsequentSolidFillRect)(ScrnInfoPtr pScrn, int x, int y,
+ int w, int h);
+ void (*SetupForSolidFill24)(ScrnInfoPtr pScrn, int color, int rop,
+ unsigned int planemask);
+ void (*SubsequentSolidFillRect24)(ScrnInfoPtr pScrn, int x, int y,
+ int w, int h);
+ void (*SetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, int xdir, int ydir,
+ int rop, unsigned int planemask,
+ int transparency_color);
+ void (*SubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn, int x1, int y1,
+ int x2, int y2, int w, int h);
+ void (*SetupForScreenToScreenCopy24)(ScrnInfoPtr pScrn, int xdir, int ydir,
+ int rop, unsigned int planemask,
+ int transparency_color);
+ void (*SubsequentScreenToScreenCopy24)(ScrnInfoPtr pScrn, int x1, int y1,
+ int x2, int y2, int w, int h);
+ int MemClk;
+ unsigned char *ShadowPtr;
+ int ShadowPitch;
+ memType ScratchMem, ScratchMemSize, ScratchMemOffset;
+ memType ScratchMemPtr, ScratchMemEnd;
+ int ScratchMemWidth;
+ CARD32 color;
+ XF86VideoAdaptorPtr adaptor;
+ int timerIsOn;
+ Time offTime;
+ OptionInfoPtr Options;
+ char DPMSMask[4];
+} ApmRec, *ApmPtr;
+
+#define curr ((unsigned char *)pApm->regcurr)
+
+typedef struct {
+ u16 ca;
+ u8 font;
+ u8 pad;
+} ApmFontBuf;
+
+typedef struct {
+ u16 ca;
+ u8 font;
+ u8 pad;
+ u16 ca2;
+ u8 font2;
+ u8 pad2;
+} ApmTextBuf;
+
+enum ApmChipId {
+ AP6422 = 0x6422,
+ AT24 = 0x6424,
+ AT3D = 0x643D
+};
+
+typedef struct {
+ BoxRec box;
+ int num;
+ MoveAreaCallbackProcPtr MoveAreaCallback;
+ RemoveAreaCallbackProcPtr RemoveAreaCallback;
+ void *devPriv;
+} ApmPixmapRec, *ApmPixmapPtr;
+
+#define APMDECL(p) ApmPtr pApm = ((ApmPtr)(((ScrnInfoPtr)(p))->driverPrivate))
+#define APMPTR(p) ((ApmPtr)(((ScrnInfoPtr)(p))->driverPrivate))
+
+extern int ApmHWCursorInit(ScreenPtr pScreen);
+extern int ApmDGAInit(ScreenPtr pScreen);
+extern int ApmAccelInit(ScreenPtr pScreen);
+extern Bool ApmI2CInit(ScrnInfoPtr pScrn);
+extern void XFree86RushExtensionInit(ScreenPtr pScreen);
+extern void ApmInitVideo(ScreenPtr pScreen);
+extern void ApmInitVideo_IOP(ScreenPtr pScreen);
+extern void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo);
+extern Bool ApmSwitchMode(int scrnIndex, DisplayModePtr mode,
+ int flags);
+extern void ApmAdjustFrame(int scrnIndex, int x, int y, int flags);
+extern void ApmHWCursorReserveSpace(ApmPtr pApm);
+extern void ApmAccelReserveSpace(ApmPtr pApm);
+
+extern int ApmPixmapIndex;
+#define APM_GET_PIXMAP_PRIVATE(pix)\
+ ((ApmPixmapPtr)(((PixmapPtr)(pix))->devPrivates[ApmPixmapIndex].ptr))
+
+#include "apm_regs.h"