1 #ifndef __NV_STRUCT_H__ 2 #define __NV_STRUCT_H__ 3 4 #include "colormapst.h" 5 #include "vgaHW.h" 6 #include "xf86Cursor.h" 7 #include "xf86int10.h" 8 9 #define NV_ARCH_04 0x04 10 #define NV_ARCH_10 0x10 11 #define NV_ARCH_20 0x20 12 #define NV_ARCH_30 0x30 13 #define NV_ARCH_40 0x40 14 15 16 #define NV_BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b)) 17 #define NV_MASKEXPAND(mask) NV_BITMASK(1?mask,0?mask) 18 #define NV_SetBF(mask,value) ((value) << (0?mask)) 19 #define NV_GetBF(var,mask) (((unsigned)((var) & NV_MASKEXPAND(mask))) >> (0?mask) ) 20 #define NV_SetBitField(value,from,to) NV_SetBF(to, NV_GetBF(value,from)) 21 #define NV_SetBit(n) (1<<(n)) 22 #define NV_Set8Bits(value) ((value)&0xff) 23 24 typedef struct { 25 int bitsPerPixel; 26 int depth; 27 int displayWidth; 28 rgb weight; 29 DisplayModePtr mode; 30 } NVFBLayout; 31 32 typedef struct _riva_hw_state 33 { 34 U032 bpp; 35 U032 width; 36 U032 height; 37 U032 interlace; 38 U032 repaint0; 39 U032 repaint1; 40 U032 screen; 41 U032 scale; 42 U032 dither; 43 U032 extra; 44 U032 fifo; 45 U032 pixel; 46 U032 horiz; 47 U032 arbitration0; 48 U032 arbitration1; 49 U032 pll; 50 U032 pllB; 51 U032 vpll; 52 U032 vpll2; 53 U032 vpllB; 54 U032 vpll2B; 55 U032 pllsel; 56 U032 control; 57 U032 general; 58 U032 crtcOwner; 59 U032 head; 60 U032 head2; 61 U032 config; 62 U032 cursorConfig; 63 U032 cursor0; 64 U032 cursor1; 65 U032 cursor2; 66 U032 timingH; 67 U032 timingV; 68 U032 displayV; 69 U032 crtcSync; 70 U032 crtcVSync; 71 } RIVA_HW_STATE, *NVRegPtr; 72 73 74 typedef struct { 75 RIVA_HW_STATE SavedReg; 76 RIVA_HW_STATE ModeReg; 77 RIVA_HW_STATE *CurrentState; 78 CARD32 Architecture; 79 CARD32 CursorStart; 80 EntityInfoPtr pEnt; 81 #if XSERVER_LIBPCIACCESS 82 struct pci_device *PciInfo; 83 #else 84 pciVideoPtr PciInfo; 85 PCITAG PciTag; 86 #endif 87 int Chipset; 88 int ChipRev; 89 Bool Primary; 90 CARD32 IOAddress; 91 unsigned long FbAddress; 92 unsigned char * FbBase; 93 unsigned char * FbStart; 94 CARD32 FbMapSize; 95 CARD32 FbUsableSize; 96 CARD32 ScratchBufferSize; 97 CARD32 ScratchBufferStart; 98 Bool NoAccel; 99 Bool HWCursor; 100 Bool FpScale; 101 Bool ShadowFB; 102 unsigned char * ShadowPtr; 103 int ShadowPitch; 104 CARD32 MinVClockFreqKHz; 105 CARD32 MaxVClockFreqKHz; 106 CARD32 CrystalFreqKHz; 107 CARD32 RamAmountKBytes; 108 109 volatile U032 *REGS; 110 volatile U032 *PCRTC0; 111 volatile U032 *PCRTC; 112 volatile U032 *PRAMDAC0; 113 volatile U032 *PFB; 114 volatile U032 *PFIFO; 115 volatile U032 *PGRAPH; 116 volatile U032 *PEXTDEV; 117 volatile U032 *PTIMER; 118 volatile U032 *PMC; 119 volatile U032 *PRAMIN; 120 volatile U032 *FIFO; 121 volatile U032 *CURSOR; 122 volatile U008 *PCIO0; 123 volatile U008 *PCIO; 124 volatile U008 *PVIO; 125 volatile U008 *PDIO0; 126 volatile U008 *PDIO; 127 volatile U032 *PRAMDAC; 128 #ifdef HAVE_XAA_H 129 XAAInfoRecPtr AccelInfoRec; 130 #endif 131 xf86CursorInfoPtr CursorInfoRec; 132 DGAModePtr DGAModes; 133 int numDGAModes; 134 Bool DGAactive; 135 int DGAViewportStatus; 136 CreateScreenResourcesProcPtr CreateScreenResources; 137 RefreshAreaFuncPtr refreshArea; 138 void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y); 139 ScreenBlockHandlerProcPtr BlockHandler; 140 CloseScreenProcPtr CloseScreen; 141 xf86EnableDisableFBAccessProc *EnableDisableFBAccess; 142 Bool accessEnabled; 143 Bool FBDev; 144 int Rotate; 145 NVFBLayout CurrentLayout; 146 /* Cursor */ 147 CARD32 curFg, curBg; 148 CARD32 curImage[256]; 149 /* I2C / DDC */ 150 I2CBusPtr I2C; 151 xf86Int10InfoPtr pInt; 152 void (*VideoTimerCallback)(ScrnInfoPtr, Time); 153 void (*DMAKickoffCallback)(ScrnInfoPtr); 154 XF86VideoAdaptorPtr overlayAdaptor; 155 XF86VideoAdaptorPtr blitAdaptor; 156 int videoKey; 157 int FlatPanel; 158 Bool FPDither; 159 Bool Television; 160 int CRTCnumber; 161 OptionInfoPtr Options; 162 Bool alphaCursor; 163 unsigned char DDCBase; 164 Bool twoHeads; 165 Bool twoStagePLL; 166 Bool fpScaler; 167 int fpWidth; 168 int fpHeight; 169 CARD32 fpVTotal; 170 CARD32 fpSyncs; 171 Bool usePanelTweak; 172 int PanelTweak; 173 Bool LVDS; 174 175 CARD32 dmaPut; 176 CARD32 dmaCurrent; 177 CARD32 dmaFree; 178 CARD32 dmaMax; 179 CARD32 *dmaBase; 180 181 CARD32 currentRop; 182 Bool WaitVSyncPossible; 183 Bool BlendingPossible; 184 Bool RandRRotation; 185 186 /* VBE dual-head */ 187 Bool VBEDualhead; 188 vbeInfoPtr pVbe; 189 VbeInfoBlock *pVbeInfo; 190 int vbeMode; 191 CARD32 vbeCRTC1Offset; 192 } NVRec, *NVPtr; 193 194 #define NVPTR(p) ((NVPtr)((p)->driverPrivate)) 195 196 #endif /* __NV_STRUCT_H__ */ 197