Comment out NVDmaKickoff() in NVResetGraphics(). NVResetGraphics is called twice...
[nouveau] / src / nv_type.h
1 /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.51 2005/04/16 23:57:26 mvojkovi Exp $ */
2
3 #ifndef __NV_STRUCT_H__
4 #define __NV_STRUCT_H__
5
6 #include "colormapst.h"
7 #include "vgaHW.h"
8 #include "xaa.h"
9 #include "xf86Cursor.h"
10 #include "xf86int10.h"
11 #include "exa.h"
12 #ifdef XF86DRI
13 #define _XF86DRI_SERVER_
14 #include "xf86drm.h"
15 #include "dri.h"
16 #include "nouveau_drm.h"
17 #else
18 #error "This driver requires a DRI-enabled X server"
19 #endif
20
21 #define NV_ARCH_04  0x04
22 #define NV_ARCH_10  0x10
23 #define NV_ARCH_20  0x20
24 #define NV_ARCH_30  0x30
25 #define NV_ARCH_40  0x40
26
27 #define CHIPSET_NV04     0x0020
28 #define CHIPSET_NV10     0x0100
29 #define CHIPSET_NV11     0x0110
30 #define CHIPSET_NV15     0x0150
31 #define CHIPSET_NV17     0x0170
32 #define CHIPSET_NV18     0x0180
33 #define CHIPSET_NFORCE   0x01A0
34 #define CHIPSET_NFORCE2  0x01F0
35 #define CHIPSET_NV20     0x0200
36 #define CHIPSET_NV25     0x0250
37 #define CHIPSET_NV28     0x0280
38 #define CHIPSET_NV30     0x0300
39 #define CHIPSET_NV31     0x0310
40 #define CHIPSET_NV34     0x0320
41 #define CHIPSET_NV35     0x0330
42 #define CHIPSET_NV36     0x0340
43 #define CHIPSET_NV40     0x0040
44 #define CHIPSET_NV41     0x00C0
45 #define CHIPSET_NV43     0x0140
46 #define CHIPSET_NV44     0x0160
47 #define CHIPSET_NV44A    0x0220
48 #define CHIPSET_NV45     0x0210
49 #define CHIPSET_PCIE     0x00F0
50 #define CHIPSET_G70      0x0090
51 #define CHIPSET_G71      0x0290
52 #define CHIPSET_G72      0x01D0
53 #define CHIPSET_G73      0x0390
54 #define CHIPSET_C51      0x0240
55
56
57 #define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1)  << (b))
58 #define MASKEXPAND(mask) BITMASK(1?mask,0?mask)
59 #define SetBF(mask,value) ((value) << (0?mask))
60 #define GetBF(var,mask) (((unsigned)((var) & MASKEXPAND(mask))) >> (0?mask) )
61 #define SetBitField(value,from,to) SetBF(to, GetBF(value,from))
62 #define SetBit(n) (1<<(n))
63 #define Set8Bits(value) ((value)&0xff)
64
65 typedef struct {
66     int bitsPerPixel;
67     int depth;
68     int displayWidth;
69     rgb weight;
70     DisplayModePtr mode;
71 } NVFBLayout;
72
73 typedef struct _riva_hw_state
74 {
75     U032 bpp;
76     U032 width;
77     U032 height;
78     U032 interlace;
79     U032 repaint0;
80     U032 repaint1;
81     U032 screen;
82     U032 scale;
83     U032 dither;
84     U032 extra;
85     U032 fifo;
86     U032 pixel;
87     U032 horiz;
88     U032 arbitration0;
89     U032 arbitration1;
90     U032 pll;
91     U032 pllB;
92     U032 vpll;
93     U032 vpll2;
94     U032 vpllB;
95     U032 vpll2B;
96     U032 pllsel;
97     U032 general;
98     U032 crtcOwner;
99     U032 head;
100     U032 head2;
101     U032 config;
102     U032 cursorConfig;
103     U032 cursor0;
104     U032 cursor1;
105     U032 cursor2;
106     U032 timingH;
107     U032 timingV;
108     U032 displayV;
109     U032 crtcSync;
110 } RIVA_HW_STATE, *NVRegPtr;
111
112
113 typedef struct _NVRec *NVPtr;
114 typedef struct _NVRec {
115     RIVA_HW_STATE       SavedReg;
116     RIVA_HW_STATE       ModeReg;
117     RIVA_HW_STATE       *CurrentState;
118     CARD32              Architecture;
119     CARD32              CursorStart;
120     EntityInfoPtr       pEnt;
121     pciVideoPtr         PciInfo;
122     PCITAG              PciTag;
123     int                 Chipset;
124     int                 ChipRev;
125     Bool                Primary;
126     CARD32              IOAddress;
127     unsigned long       FbAddress;
128     unsigned char *     FbBase;
129     unsigned char *     FbStart;
130     CARD32              FbMapSize;
131     CARD32              FbUsableSize;
132     CARD32              ScratchBufferSize;
133     CARD32              ScratchBufferStart;
134     Bool                NoAccel;
135     Bool                HWCursor;
136     Bool                FpScale;
137     Bool                ShadowFB;
138     unsigned char *     ShadowPtr;
139     int                 ShadowPitch;
140     CARD32              MinVClockFreqKHz;
141     CARD32              MaxVClockFreqKHz;
142     CARD32              CrystalFreqKHz;
143     CARD32              RamAmountKBytes;
144     int drm_fd;
145     unsigned long drm_agp_handle;
146     unsigned long drm_agp_map_handle;
147     unsigned char *agpScratch;
148     unsigned long agpScratchPhysical;
149     unsigned long agpScratchSize;
150
151     volatile U032 *REGS;
152     volatile U032 *PCRTC0;
153     volatile U032 *PCRTC;
154     volatile U032 *PRAMDAC0;
155     volatile U032 *PFB;
156     volatile U032 *PFIFO;
157     volatile U032 *PGRAPH;
158     volatile U032 *PEXTDEV;
159     volatile U032 *PTIMER;
160     volatile U032 *PMC;
161     volatile U032 *PRAMIN;
162     volatile U032 *FIFO;
163     volatile U032 *CURSOR;
164     volatile U008 *PCIO0;
165     volatile U008 *PCIO;
166     volatile U008 *PVIO;
167     volatile U008 *PDIO0;
168     volatile U008 *PDIO;
169     volatile U032 *PRAMDAC;
170     volatile U008 *PROM;
171
172     volatile U032 *RAMHT;
173     CARD32 pramin_free;
174
175     XAAInfoRecPtr       AccelInfoRec;
176     ExaDriverPtr        EXADriverPtr;
177     Bool                useEXA;
178     xf86CursorInfoPtr   CursorInfoRec;
179     DGAModePtr          DGAModes;
180     int                 numDGAModes;
181     Bool                DGAactive;
182     int                 DGAViewportStatus;
183     void                (*PointerMoved)(int index, int x, int y);
184     ScreenBlockHandlerProcPtr BlockHandler;
185     CloseScreenProcPtr  CloseScreen;
186     Bool                FBDev;
187     int                 Rotate;
188     NVFBLayout          CurrentLayout;
189     /* Cursor */
190     CARD32              curFg, curBg;
191     CARD32              curImage[256];
192     /* I2C / DDC */
193     I2CBusPtr           I2C;
194     xf86Int10InfoPtr    pInt;
195     void                (*VideoTimerCallback)(ScrnInfoPtr, Time);
196     void                (*DMAKickoffCallback)(NVPtr pNv);
197     XF86VideoAdaptorPtr overlayAdaptor;
198     XF86VideoAdaptorPtr blitAdaptor;
199     int                 videoKey;
200     int                 FlatPanel;
201     Bool                FPDither;
202     Bool                Television;
203     int                 CRTCnumber;
204         int         vtOWNER;
205     OptionInfoPtr       Options;
206     Bool                alphaCursor;
207     unsigned char       DDCBase;
208     Bool                twoHeads;
209     Bool                twoStagePLL;
210     Bool                fpScaler;
211     int                 fpWidth;
212     int                 fpHeight;
213     CARD32              fpSyncs;
214     Bool                usePanelTweak;
215     int                 PanelTweak;
216     Bool                LVDS;
217
218     int                 IRQ;
219     Bool                LockedUp;
220
221     void *              Notifier0;
222     drm_nouveau_fifo_init_t fifo;
223     CARD32              dmaPut;
224     CARD32              dmaCurrent;
225     CARD32              dmaFree;
226     CARD32              dmaMax;
227     CARD32              *dmaBase;
228
229     CARD32              currentRop;
230     Bool                WaitVSyncPossible;
231     Bool                BlendingPossible;
232     Bool                RandRRotation;
233 #ifdef XF86DRI
234     DRIInfoPtr          pDRIInfo;
235 #endif /* XF86DRI */
236 } NVRec;
237
238 #define NVPTR(p) ((NVPtr)((p)->driverPrivate))
239
240 #endif /* __NV_STRUCT_H__ */