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