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