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