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