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