diff options
Diffstat (limited to 'src/apm.h')
-rw-r--r-- | src/apm.h | 243 |
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" |