xserver-multidpi/hw/xfree86/ramdac/xf86RamDac.h
Paulo Cesar Pereira de Andrade 49f77fff14 Rework symbol visibility for easier maintenance
Save in a few special cases, _X_EXPORT should not be used in C source
files. Instead, it should be used in headers, and the proper C source
include that header. Some special cases are symbols that need to be
shared between modules, but not expected to be used by external drivers,
and symbols that are accessible via LoaderSymbol/dlopen.

  This patch also adds conditionally some new sdk header files, depending
on extensions enabled. These files were added to match pattern for
other extensions/modules, that is, have the headers "deciding" symbol
visibility in the sdk. These headers are:
o Xext/panoramiXsrv.h, Xext/panoramiX.h
o fbpict.h (unconditionally)
o vidmodeproc.h
o mioverlay.h (unconditionally, used only by xaa)
o xfixes.h (unconditionally, symbols required by dri2)

  LoaderSymbol and similar functions now don't have different prototypes,
in loaderProcs.h and xf86Module.h, so that both headers can be included,
without the need of defining IN_LOADER.

  xf86NewInputDevice() device prototype readded to xf86Xinput.h, but
not exported (and with a comment about it).
2008-12-03 05:43:34 -02:00

122 lines
2.8 KiB
C

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