apm.h revision 17a48c7c
1/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/apm/apm.h,v 1.19tsi Exp $ */ 2 3#include <string.h> 4 5/* All drivers should typically include these */ 6#include "xf86.h" 7#include "xf86_OSproc.h" 8 9/* All drivers need this */ 10 11/* Everything using inb/outb, etc needs "compiler.h" */ 12#include "compiler.h" 13 14/* This is used for module versioning */ 15#include "xf86Version.h" 16 17/* Drivers for PCI hardware need this */ 18#include "xf86PciInfo.h" 19 20/* Drivers that need to access the PCI config space directly need this */ 21#include "xf86Pci.h" 22 23/* All drivers using the vgahw module need this */ 24#include "vgaHW.h" 25 26/* Drivers using the mi banking wrapper need this */ 27#include "mibank.h" 28 29/* All drivers using the mi colormap manipulation need this */ 30#include "micmap.h" 31 32/* Needed for the 1 and 4 bpp framebuffers */ 33#include "xf1bpp.h" 34#include "xf4bpp.h" 35 36#include "fb.h" 37 38/* Drivers using the XAA interface ... */ 39#include "xaa.h" 40#include "xaalocal.h" 41#include "xf86Cursor.h" 42#include "xf86fbman.h" 43 44/* All drivers initialising the SW cursor need this */ 45#include "mipointer.h" 46 47/* All drivers implementing backing store need this */ 48#include "mibstore.h" 49 50/* I2C support */ 51#include "xf86i2c.h" 52 53/* DDC support */ 54#include "xf86DDC.h" 55 56#include "xf86xv.h" 57#include <X11/extensions/Xv.h> 58 59#ifdef TRUE 60#undef TRUE 61#endif 62#define TRUE (1) 63 64#define rdinx(port, ind) (outb((port), (ind)), inb((port) + 1)) 65#define wrinx(port, ind, val) outb((port), (ind)), outb((port) + 1, (val)) 66#define modinx(port, ind, mask, bits) \ 67 do { \ 68 unsigned char tmp; \ 69 tmp = (rdinx((port), (ind)) & ~(mask)) | ((bits) & (mask)); \ 70 wrinx((port), (ind), tmp); \ 71 } while(0) 72 73typedef unsigned char u8; 74typedef unsigned short u16; 75typedef unsigned long u32; 76 77#define NoSEQRegs 0x20 78#define NoCRTRegs 0x1F 79#define NoGRCRegs 0x09 80#define NoATCRegs 0x15 81 82enum { 83 XR80, XRC0, XRD0, XRE0, XRE8, XREC, XR140, XR144, XR148, XR14C, NoEXRegs 84}; 85 86typedef struct { 87 unsigned char SEQ[NoSEQRegs]; 88 unsigned char CRT[NoCRTRegs]; 89 unsigned char GRC[NoGRCRegs]; 90 unsigned char ATC[NoATCRegs]; 91 unsigned int EX[NoEXRegs]; 92} ApmRegStr, *ApmRegPtr; 93 94typedef struct { 95 int displayWidth, displayHeight; 96 int bitsPerPixel, bytesPerScanline; 97 int depth, Scanlines; 98 CARD32 mask32; /* Mask to have 32bit aligned data */ 99 unsigned int Setup_DEC; 100 DisplayModePtr pMode; 101} ApmFBLayout; 102 103#define APM_CACHE_NUMBER 32 104 105typedef struct { 106 pciVideoPtr PciInfo; 107 PCITAG PciTag; 108 int scrnIndex; 109 int Chipset; 110 int ChipRev; 111 CARD32 LinAddress; 112 unsigned long LinMapSize; 113 CARD32 FbMapSize; 114 pointer LinMap; 115 pointer FbBase; 116 char *VGAMap; 117 char *MemMap; 118 pointer BltMap; 119 Bool UnlockCalled; 120 IOADDRESS iobase, xport, xbase; 121 unsigned char savedSR10; 122 CARD8 MiscOut; 123 CARD8 c9, d9, db, Rush; 124 unsigned long saveCmd; 125 pointer FontInfo; 126 Bool hwCursor; 127 Bool noLinear; 128 ApmRegStr ModeReg, SavedReg; 129 CloseScreenProcPtr CloseScreen; 130 Bool UsePCIRetry; /* Do we use PCI-retry or busy-waiting */ 131 Bool NoAccel; /* Do we use XAA acceleration architecture */ 132 int MinClock; /* Min ramdac clock */ 133 int MaxClock; /* Max ramdac clock */ 134 ApmFBLayout CurrentLayout, SavedLayout; 135 EntityInfoPtr pEnt; 136 XAAInfoRecPtr AccelInfoRec, DGAXAAInfo; 137 xf86CursorInfoPtr CursorInfoRec; 138 int DGAactive, numDGAModes; 139 DGAModePtr DGAModes; 140 int BaseCursorAddress,CursorAddress,DisplayedCursorAddress; 141 int OffscreenReserved; 142 int blitxdir, blitydir; 143 Bool apmTransparency, apmClip, ShadowFB, I2C; 144 int rop, Bg8x8, Fg8x8; 145 I2CBusPtr I2CPtr; 146 struct ApmStippleCacheRec { 147 XAACacheInfoRec apmStippleCache; 148 FBAreaPtr area; 149 unsigned int apmStippleCached:1; 150 } apmCache[APM_CACHE_NUMBER]; 151 int apmCachePtr; 152 unsigned char regcurr[0x54]; 153 ScreenPtr pScreen; 154 int Generation; 155 int apmLock, pixelStride, RushY[7], CopyMode; 156 int PutImageStride; 157 Bool (*DestroyPixmap)(PixmapPtr); 158 PixmapPtr (*CreatePixmap)(ScreenPtr, int, int, int); 159 void (*SetupForSolidFill)(ScrnInfoPtr pScrn, int color, int rop, 160 unsigned int planemask); 161 void (*SubsequentSolidFillRect)(ScrnInfoPtr pScrn, int x, int y, 162 int w, int h); 163 void (*SetupForSolidFill24)(ScrnInfoPtr pScrn, int color, int rop, 164 unsigned int planemask); 165 void (*SubsequentSolidFillRect24)(ScrnInfoPtr pScrn, int x, int y, 166 int w, int h); 167 void (*SetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, int xdir, int ydir, 168 int rop, unsigned int planemask, 169 int transparency_color); 170 void (*SubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn, int x1, int y1, 171 int x2, int y2, int w, int h); 172 void (*SetupForScreenToScreenCopy24)(ScrnInfoPtr pScrn, int xdir, int ydir, 173 int rop, unsigned int planemask, 174 int transparency_color); 175 void (*SubsequentScreenToScreenCopy24)(ScrnInfoPtr pScrn, int x1, int y1, 176 int x2, int y2, int w, int h); 177 int MemClk; 178 unsigned char *ShadowPtr; 179 int ShadowPitch; 180 memType ScratchMem, ScratchMemSize, ScratchMemOffset; 181 memType ScratchMemPtr, ScratchMemEnd; 182 int ScratchMemWidth; 183 CARD32 color; 184 XF86VideoAdaptorPtr adaptor; 185 int timerIsOn; 186 Time offTime; 187 OptionInfoPtr Options; 188 char DPMSMask[4]; 189} ApmRec, *ApmPtr; 190 191#define curr ((unsigned char *)pApm->regcurr) 192 193typedef struct { 194 u16 ca; 195 u8 font; 196 u8 pad; 197} ApmFontBuf; 198 199typedef struct { 200 u16 ca; 201 u8 font; 202 u8 pad; 203 u16 ca2; 204 u8 font2; 205 u8 pad2; 206} ApmTextBuf; 207 208enum ApmChipId { 209 AP6422 = 0x6422, 210 AT24 = 0x6424, 211 AT3D = 0x643D 212}; 213 214typedef struct { 215 BoxRec box; 216 int num; 217 MoveAreaCallbackProcPtr MoveAreaCallback; 218 RemoveAreaCallbackProcPtr RemoveAreaCallback; 219 void *devPriv; 220} ApmPixmapRec, *ApmPixmapPtr; 221 222#define APMDECL(p) ApmPtr pApm = ((ApmPtr)(((ScrnInfoPtr)(p))->driverPrivate)) 223#define APMPTR(p) ((ApmPtr)(((ScrnInfoPtr)(p))->driverPrivate)) 224 225extern int ApmHWCursorInit(ScreenPtr pScreen); 226extern int ApmDGAInit(ScreenPtr pScreen); 227extern int ApmAccelInit(ScreenPtr pScreen); 228extern Bool ApmI2CInit(ScrnInfoPtr pScrn); 229extern void XFree86RushExtensionInit(ScreenPtr pScreen); 230extern void ApmInitVideo(ScreenPtr pScreen); 231extern void ApmInitVideo_IOP(ScreenPtr pScreen); 232extern void ApmSetupXAAInfo(ApmPtr pApm, XAAInfoRecPtr pXAAinfo); 233extern Bool ApmSwitchMode(int scrnIndex, DisplayModePtr mode, 234 int flags); 235extern void ApmAdjustFrame(int scrnIndex, int x, int y, int flags); 236extern void ApmHWCursorReserveSpace(ApmPtr pApm); 237extern void ApmAccelReserveSpace(ApmPtr pApm); 238 239extern int ApmPixmapIndex; 240#define APM_GET_PIXMAP_PRIVATE(pix)\ 241 ((ApmPixmapPtr)(((PixmapPtr)(pix))->devPrivates[ApmPixmapIndex].ptr)) 242 243#include "apm_regs.h" 244