3 #define _XF86RAMDAC_H 1
5 #include "colormapst.h"
6 #include "xf86Cursor.h"
8 /* Define unique vendor codes for RAMDAC's */
9 #define VENDOR_IBM 0x0000
10 #define VENDOR_BT 0x0001
11 #define VENDOR_TI 0x0002
13 typedef struct _RamDacRegRec
{
14 /* This is probably the nastiest assumption, we allocate 1024 slots for
15 * ramdac registers, should be enough. I've checked IBM and TVP series
17 * Then we allocate 768 entries for the DAC too. IBM640 needs 1024 -FIXME
19 unsigned short DacRegs
[0x400]; /* register set */
20 unsigned char DAC
[0x300]; /* colour map */
22 } RamDacRegRec
, *RamDacRegRecPtr
;
24 typedef struct _RamDacHWRegRec
{
25 RamDacRegRec SavedReg
;
27 } RamDacHWRec
, *RamDacHWRecPtr
;
29 typedef struct _RamDacRec
{
32 void (*LoadPalette
) (ScrnInfoPtr pScrn
,
34 int *indices
, LOCO
* colors
, VisualPtr pVisual
);
36 unsigned char (*ReadDAC
) (ScrnInfoPtr pScrn
, CARD32
);
38 void (*WriteDAC
) (ScrnInfoPtr pScrn
, CARD32
, unsigned char, unsigned char);
40 void (*WriteAddress
) (ScrnInfoPtr pScrn
, CARD32
);
42 void (*WriteData
) (ScrnInfoPtr pScrn
, unsigned char);
44 void (*ReadAddress
) (ScrnInfoPtr pScrn
, CARD32
);
46 unsigned char (*ReadData
) (ScrnInfoPtr pScrn
);
47 } RamDacRec
, *RamDacRecPtr
;
49 typedef struct _RamDacHelperRec
{
52 void (*Restore
) (ScrnInfoPtr pScrn
,
53 RamDacRecPtr ramdacPtr
, RamDacRegRecPtr ramdacReg
);
55 void (*Save
) (ScrnInfoPtr pScrn
,
56 RamDacRecPtr ramdacPtr
, RamDacRegRecPtr ramdacReg
);
58 void (*SetBpp
) (ScrnInfoPtr pScrn
, RamDacRegRecPtr ramdacReg
);
60 void (*HWCursorInit
) (xf86CursorInfoPtr infoPtr
);
61 } RamDacHelperRec
, *RamDacHelperRecPtr
;
63 #define RAMDACHWPTR(p) ((RamDacHWRecPtr)((p)->privates[RamDacGetHWIndex()].ptr))
65 typedef struct _RamdacScreenRec
{
66 RamDacRecPtr RamDacRec
;
67 } RamDacScreenRec
, *RamDacScreenRecPtr
;
69 #define RAMDACSCRPTR(p) ((RamDacScreenRecPtr)((p)->privates[RamDacGetScreenIndex()].ptr))->RamDacRec
71 extern _X_EXPORT
int RamDacHWPrivateIndex
;
72 extern _X_EXPORT
int RamDacScreenPrivateIndex
;
76 } RamDacSupportedInfoRec
, *RamDacSupportedInfoRecPtr
;
78 extern _X_EXPORT RamDacRecPtr
RamDacCreateInfoRec(void);
79 extern _X_EXPORT RamDacHelperRecPtr
RamDacHelperCreateInfoRec(void);
80 extern _X_EXPORT
void RamDacDestroyInfoRec(RamDacRecPtr RamDacRec
);
81 extern _X_EXPORT
void RamDacHelperDestroyInfoRec(RamDacHelperRecPtr RamDacRec
);
82 extern _X_EXPORT Bool
RamDacInit(ScrnInfoPtr pScrn
, RamDacRecPtr RamDacRec
);
83 extern _X_EXPORT Bool
RamDacHandleColormaps(ScreenPtr pScreen
, int maxColors
,
84 int sigRGBbits
, unsigned int flags
);
85 extern _X_EXPORT
void RamDacFreeRec(ScrnInfoPtr pScrn
);
86 extern _X_EXPORT
int RamDacGetHWIndex(void);
88 #endif /* _XF86RAMDAC_H */