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