1706f2543Smrg 2706f2543Smrg#ifndef _XF86RAMDAC_H 3706f2543Smrg#define _XF86RAMDAC_H 1 4706f2543Smrg 5706f2543Smrg#include "colormapst.h" 6706f2543Smrg#include "xf86Cursor.h" 7706f2543Smrg 8706f2543Smrg/* Define unique vendor codes for RAMDAC's */ 9706f2543Smrg#define VENDOR_IBM 0x0000 10706f2543Smrg#define VENDOR_BT 0x0001 11706f2543Smrg#define VENDOR_TI 0x0002 12706f2543Smrg 13706f2543Smrgtypedef struct _RamDacRegRec { 14706f2543Smrg/* This is probably the nastiest assumption, we allocate 1024 slots for 15706f2543Smrg * ramdac registers, should be enough. I've checked IBM and TVP series 16706f2543Smrg * and they seem o.k 17706f2543Smrg * Then we allocate 768 entries for the DAC too. IBM640 needs 1024 -FIXME 18706f2543Smrg */ 19706f2543Smrg unsigned short DacRegs[0x400]; /* register set */ 20706f2543Smrg unsigned char DAC[0x300]; /* colour map */ 21706f2543Smrg Bool Overlay; 22706f2543Smrg} RamDacRegRec, *RamDacRegRecPtr; 23706f2543Smrg 24706f2543Smrgtypedef struct _RamDacHWRegRec { 25706f2543Smrg RamDacRegRec SavedReg; 26706f2543Smrg RamDacRegRec ModeReg; 27706f2543Smrg} RamDacHWRec, *RamDacHWRecPtr; 28706f2543Smrg 29706f2543Smrgtypedef struct _RamDacRec { 30706f2543Smrg CARD32 RamDacType; 31706f2543Smrg 32706f2543Smrg void (*LoadPalette)( 33706f2543Smrg ScrnInfoPtr pScrn, 34706f2543Smrg int numColors, 35706f2543Smrg int *indices, 36706f2543Smrg LOCO *colors, 37706f2543Smrg VisualPtr pVisual 38706f2543Smrg ); 39706f2543Smrg 40706f2543Smrg unsigned char (*ReadDAC)( 41706f2543Smrg ScrnInfoPtr pScrn, 42706f2543Smrg CARD32 43706f2543Smrg ); 44706f2543Smrg 45706f2543Smrg void (*WriteDAC)( 46706f2543Smrg ScrnInfoPtr pScrn, 47706f2543Smrg CARD32, 48706f2543Smrg unsigned char, 49706f2543Smrg unsigned char 50706f2543Smrg ); 51706f2543Smrg 52706f2543Smrg void (*WriteAddress)( 53706f2543Smrg ScrnInfoPtr pScrn, 54706f2543Smrg CARD32 55706f2543Smrg ); 56706f2543Smrg 57706f2543Smrg void (*WriteData)( 58706f2543Smrg ScrnInfoPtr pScrn, 59706f2543Smrg unsigned char 60706f2543Smrg ); 61706f2543Smrg 62706f2543Smrg void (*ReadAddress)( 63706f2543Smrg ScrnInfoPtr pScrn, 64706f2543Smrg CARD32 65706f2543Smrg ); 66706f2543Smrg 67706f2543Smrg unsigned char (*ReadData)( 68706f2543Smrg ScrnInfoPtr pScrn 69706f2543Smrg ); 70706f2543Smrg} RamDacRec, *RamDacRecPtr; 71706f2543Smrg 72706f2543Smrgtypedef struct _RamDacHelperRec { 73706f2543Smrg CARD32 RamDacType; 74706f2543Smrg 75706f2543Smrg void (*Restore)( 76706f2543Smrg ScrnInfoPtr pScrn, 77706f2543Smrg RamDacRecPtr ramdacPtr, 78706f2543Smrg RamDacRegRecPtr ramdacReg 79706f2543Smrg ); 80706f2543Smrg 81706f2543Smrg void (*Save)( 82706f2543Smrg ScrnInfoPtr pScrn, 83706f2543Smrg RamDacRecPtr ramdacPtr, 84706f2543Smrg RamDacRegRecPtr ramdacReg 85706f2543Smrg ); 86706f2543Smrg 87706f2543Smrg void (*SetBpp)( 88706f2543Smrg ScrnInfoPtr pScrn, 89706f2543Smrg RamDacRegRecPtr ramdacReg 90706f2543Smrg ); 91706f2543Smrg 92706f2543Smrg void (*HWCursorInit)( 93706f2543Smrg xf86CursorInfoPtr infoPtr 94706f2543Smrg ); 95706f2543Smrg} RamDacHelperRec, *RamDacHelperRecPtr; 96706f2543Smrg 97706f2543Smrg#define RAMDACHWPTR(p) ((RamDacHWRecPtr)((p)->privates[RamDacGetHWIndex()].ptr)) 98706f2543Smrg 99706f2543Smrgtypedef struct _RamdacScreenRec { 100706f2543Smrg RamDacRecPtr RamDacRec; 101706f2543Smrg} RamDacScreenRec, *RamDacScreenRecPtr; 102706f2543Smrg#define RAMDACSCRPTR(p) ((RamDacScreenRecPtr)((p)->privates[RamDacGetScreenIndex()].ptr))->RamDacRec 103706f2543Smrg 104706f2543Smrgextern _X_EXPORT int RamDacHWPrivateIndex; 105706f2543Smrgextern _X_EXPORT int RamDacScreenPrivateIndex; 106706f2543Smrg 107706f2543Smrgtypedef struct { 108706f2543Smrg int token; 109706f2543Smrg} RamDacSupportedInfoRec, *RamDacSupportedInfoRecPtr; 110706f2543Smrg 111706f2543Smrgextern _X_EXPORT RamDacRecPtr RamDacCreateInfoRec(void); 112706f2543Smrgextern _X_EXPORT RamDacHelperRecPtr RamDacHelperCreateInfoRec(void); 113706f2543Smrgextern _X_EXPORT void RamDacDestroyInfoRec(RamDacRecPtr RamDacRec); 114706f2543Smrgextern _X_EXPORT void RamDacHelperDestroyInfoRec(RamDacHelperRecPtr RamDacRec); 115706f2543Smrgextern _X_EXPORT Bool RamDacInit(ScrnInfoPtr pScrn, RamDacRecPtr RamDacRec); 116706f2543Smrgextern _X_EXPORT Bool RamDacHandleColormaps(ScreenPtr pScreen, int maxColors, int sigRGBbits, 117706f2543Smrg unsigned int flags); 118706f2543Smrgextern _X_EXPORT void RamDacFreeRec(ScrnInfoPtr pScrn); 119706f2543Smrgextern _X_EXPORT int RamDacGetHWIndex(void); 120706f2543Smrg 121706f2543Smrg#endif /* _XF86RAMDAC_H */ 122