8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#ifndef _XF86RAMDAC_H
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define _XF86RAMDAC_H 1
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "colormapst.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#include "xf86Cursor.h"
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Define unique vendor codes for RAMDAC's */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VENDOR_IBM 0x0000
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VENDOR_BT 0x0001
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VENDOR_TI 0x0002
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _RamDacRegRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* This is probably the nastiest assumption, we allocate 1024 slots for
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * ramdac registers, should be enough. I've checked IBM and TVP series
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * and they seem o.k
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Then we allocate 768 entries for the DAC too. IBM640 needs 1024 -FIXME
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned short DacRegs[0x400]; /* register set */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char DAC[0x300]; /* colour map */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync Bool Overlay;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacRegRec, *RamDacRegRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _RamDacHWRegRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRegRec SavedReg;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRegRec ModeReg;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacHWRec, *RamDacHWRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _RamDacRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32 RamDacType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*LoadPalette)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int numColors,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int *indices,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync LOCO *colors,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync VisualPtr pVisual
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char (*ReadDAC)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*WriteDAC)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*WriteAddress)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*WriteData)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*ReadAddress)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char (*ReadData)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacRec, *RamDacRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _RamDacHelperRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync CARD32 RamDacType;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*Restore)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRecPtr ramdacPtr,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRegRecPtr ramdacReg
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*Save)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRecPtr ramdacPtr,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRegRecPtr ramdacReg
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*SetBpp)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync ScrnInfoPtr pScrn,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRegRecPtr ramdacReg
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync void (*HWCursorInit)(
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync xf86CursorInfoPtr infoPtr
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync );
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacHelperRec, *RamDacHelperRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define RAMDACHWPTR(p) ((RamDacHWRecPtr)((p)->privates[RamDacGetHWIndex()].ptr))
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct _RamdacScreenRec {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync RamDacRecPtr RamDacRec;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacScreenRec, *RamDacScreenRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define RAMDACSCRPTR(p) ((RamDacScreenRecPtr)((p)->privates[RamDacGetScreenIndex()].ptr))->RamDacRec
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT int RamDacHWPrivateIndex;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT int RamDacScreenPrivateIndex;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync int token;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync} RamDacSupportedInfoRec, *RamDacSupportedInfoRecPtr;
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT RamDacRecPtr RamDacCreateInfoRec(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT RamDacHelperRecPtr RamDacHelperCreateInfoRec(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void RamDacDestroyInfoRec(RamDacRecPtr RamDacRec);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void RamDacHelperDestroyInfoRec(RamDacHelperRecPtr RamDacRec);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool RamDacInit(ScrnInfoPtr pScrn, RamDacRecPtr RamDacRec);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool RamDacHandleColormaps(ScreenPtr pScreen, int maxColors, int sigRGBbits,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void RamDacFreeRec(ScrnInfoPtr pScrn);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT int RamDacGetHWIndex(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif /* _XF86RAMDAC_H */