Home | History | Annotate | Line # | Download | only in src
      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 #ifdef 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