1 #ifndef __Riva_STRUCT_H__ 2 #define __Riva_STRUCT_H__ 3 4 #include "riva_hw.h" 5 #include "colormapst.h" 6 #include "vgaHW.h" 7 #ifdef HAVE_XAA_H 8 #include "xaa.h" 9 #endif 10 #include "xf86Cursor.h" 11 #include "xf86int10.h" 12 13 14 #define RIVA_BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b)) 15 #define RIVA_MASKEXPAND(mask) RIVA_BITMASK(1?mask,0?mask) 16 #define RIVA_SetBF(mask,value) ((value) << (0?mask)) 17 #define RIVA_GetBF(var,mask) (((unsigned)((var) & RIVA_MASKEXPAND(mask))) >> (0?mask) ) 18 #define RIVA_SetBitField(value,from,to) RIVA_SetBF(to, RIVA_GetBF(value,from)) 19 #define RIVA_SetBit(n) (1<<(n)) 20 #define RIVA_Set8Bits(value) ((value)&0xff) 21 22 typedef RIVA_HW_STATE* RivaRegPtr; 23 24 typedef struct { 25 Bool isHwCursor; 26 int CursorMaxWidth; 27 int CursorMaxHeight; 28 int CursorFlags; 29 int CursorOffscreenMemSize; 30 Bool (*UseHWCursor)(ScreenPtr, CursorPtr); 31 void (*LoadCursorImage)(ScrnInfoPtr, unsigned char*); 32 void (*ShowCursor)(ScrnInfoPtr); 33 void (*HideCursor)(ScrnInfoPtr); 34 void (*SetCursorPosition)(ScrnInfoPtr, int, int); 35 void (*SetCursorColors)(ScrnInfoPtr, int, int); 36 long maxPixelClock; 37 void (*LoadPalette)(ScrnInfoPtr, int, int*, LOCO*, VisualPtr); 38 void (*Save)(ScrnInfoPtr, vgaRegPtr, RivaRegPtr, Bool); 39 void (*Restore)(ScrnInfoPtr, vgaRegPtr, RivaRegPtr, Bool); 40 Bool (*ModeInit)(ScrnInfoPtr, DisplayModePtr); 41 } RivaRamdacRec, *RivaRamdacPtr; 42 43 typedef struct { 44 int bitsPerPixel; 45 int depth; 46 int displayWidth; 47 rgb weight; 48 DisplayModePtr mode; 49 } RivaFBLayout; 50 51 typedef struct { 52 RIVA_HW_INST riva; 53 RIVA_HW_STATE SavedReg; 54 RIVA_HW_STATE ModeReg; 55 EntityInfoPtr pEnt; 56 #if XSERVER_LIBPCIACCESS 57 struct pci_device *PciInfo; 58 #else 59 pciVideoPtr PciInfo; 60 PCITAG PciTag; 61 xf86AccessRec Access; 62 #endif 63 int ChipRev; 64 Bool Primary; 65 CARD32 IOAddress; 66 unsigned long FbAddress; 67 int FbBaseReg; 68 unsigned char * IOBase; 69 unsigned char * FbBase; 70 unsigned char * FbStart; 71 long FbMapSize; 72 long FbUsableSize; 73 RivaRamdacRec Dac; 74 Bool NoAccel; 75 Bool HWCursor; 76 Bool ShowCache; 77 Bool ShadowFB; 78 unsigned char * ShadowPtr; 79 int ShadowPitch; 80 int MinClock; 81 int MaxClock; 82 #ifdef HAVE_XAA_H 83 XAAInfoRecPtr AccelInfoRec; 84 #endif 85 xf86CursorInfoPtr CursorInfoRec; 86 DGAModePtr DGAModes; 87 int numDGAModes; 88 Bool DGAactive; 89 int DGAViewportStatus; 90 void (*Save)(ScrnInfoPtr, vgaRegPtr, RivaRegPtr, Bool); 91 void (*Restore)(ScrnInfoPtr, vgaRegPtr, RivaRegPtr, Bool); 92 Bool (*ModeInit)(ScrnInfoPtr, DisplayModePtr); 93 void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y); 94 CloseScreenProcPtr CloseScreen; 95 Bool FBDev; 96 /* Color expansion */ 97 unsigned char *expandBuffer; 98 unsigned char *expandFifo; 99 int expandWidth; 100 int expandRows; 101 CARD32 FgColor; 102 CARD32 BgColor; 103 int Rotate; 104 RivaFBLayout CurrentLayout; 105 /* Cursor */ 106 CARD32 curFg, curBg; 107 CARD32 curImage[64]; 108 /* Misc flags */ 109 unsigned int opaqueMonochrome; 110 int currentRop; 111 /* I2C / DDC */ 112 I2CBusPtr I2C; 113 xf86Int10InfoPtr pInt; 114 OptionInfoPtr Options; 115 unsigned char DDCBase; 116 } RivaRec, *RivaPtr; 117 118 #define RivaPTR(p) ((RivaPtr)((p)->driverPrivate)) 119 120 void RivaRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 121 void RivaRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 122 void RivaRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 123 void RivaRefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 124 void RivaPointerMoved(SCRN_ARG_TYPE arg, int x, int y); 125 126 int RivaGetConfig(RivaPtr); 127 128 #endif /* __Riva_STRUCT_H__ */ 129