xf86RamDac.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef _XF86RAMDAC_H
  2. #define _XF86RAMDAC_H 1
  3. #include "colormapst.h"
  4. #include "xf86Cursor.h"
  5. /* Define unique vendor codes for RAMDAC's */
  6. #define VENDOR_IBM 0x0000
  7. #define VENDOR_BT 0x0001
  8. #define VENDOR_TI 0x0002
  9. typedef struct _RamDacRegRec {
  10. /* This is probably the nastiest assumption, we allocate 1024 slots for
  11. * ramdac registers, should be enough. I've checked IBM and TVP series
  12. * and they seem o.k
  13. * Then we allocate 768 entries for the DAC too. IBM640 needs 1024 -FIXME
  14. */
  15. unsigned short DacRegs[0x400]; /* register set */
  16. unsigned char DAC[0x300]; /* colour map */
  17. Bool Overlay;
  18. } RamDacRegRec, *RamDacRegRecPtr;
  19. typedef struct _RamDacHWRegRec {
  20. RamDacRegRec SavedReg;
  21. RamDacRegRec ModeReg;
  22. } RamDacHWRec, *RamDacHWRecPtr;
  23. typedef struct _RamDacRec {
  24. CARD32 RamDacType;
  25. void (*LoadPalette) (ScrnInfoPtr pScrn,
  26. int numColors,
  27. int *indices, LOCO * colors, VisualPtr pVisual);
  28. unsigned char (*ReadDAC) (ScrnInfoPtr pScrn, CARD32);
  29. void (*WriteDAC) (ScrnInfoPtr pScrn, CARD32, unsigned char, unsigned char);
  30. void (*WriteAddress) (ScrnInfoPtr pScrn, CARD32);
  31. void (*WriteData) (ScrnInfoPtr pScrn, unsigned char);
  32. void (*ReadAddress) (ScrnInfoPtr pScrn, CARD32);
  33. unsigned char (*ReadData) (ScrnInfoPtr pScrn);
  34. } RamDacRec, *RamDacRecPtr;
  35. typedef struct _RamDacHelperRec {
  36. CARD32 RamDacType;
  37. void (*Restore) (ScrnInfoPtr pScrn,
  38. RamDacRecPtr ramdacPtr, RamDacRegRecPtr ramdacReg);
  39. void (*Save) (ScrnInfoPtr pScrn,
  40. RamDacRecPtr ramdacPtr, RamDacRegRecPtr ramdacReg);
  41. void (*SetBpp) (ScrnInfoPtr pScrn, RamDacRegRecPtr ramdacReg);
  42. void (*HWCursorInit) (xf86CursorInfoPtr infoPtr);
  43. } RamDacHelperRec, *RamDacHelperRecPtr;
  44. #define RAMDACHWPTR(p) ((RamDacHWRecPtr)((p)->privates[RamDacGetHWIndex()].ptr))
  45. typedef struct _RamdacScreenRec {
  46. RamDacRecPtr RamDacRec;
  47. } RamDacScreenRec, *RamDacScreenRecPtr;
  48. #define RAMDACSCRPTR(p) ((RamDacScreenRecPtr)((p)->privates[RamDacGetScreenIndex()].ptr))->RamDacRec
  49. extern _X_EXPORT int RamDacHWPrivateIndex;
  50. extern _X_EXPORT int RamDacScreenPrivateIndex;
  51. typedef struct {
  52. int token;
  53. } RamDacSupportedInfoRec, *RamDacSupportedInfoRecPtr;
  54. extern _X_EXPORT RamDacRecPtr RamDacCreateInfoRec(void);
  55. extern _X_EXPORT RamDacHelperRecPtr RamDacHelperCreateInfoRec(void);
  56. extern _X_EXPORT void RamDacDestroyInfoRec(RamDacRecPtr RamDacRec);
  57. extern _X_EXPORT void RamDacHelperDestroyInfoRec(RamDacHelperRecPtr RamDacRec);
  58. extern _X_EXPORT Bool RamDacInit(ScrnInfoPtr pScrn, RamDacRecPtr RamDacRec);
  59. extern _X_EXPORT Bool RamDacHandleColormaps(ScreenPtr pScreen, int maxColors,
  60. int sigRGBbits, unsigned int flags);
  61. extern _X_EXPORT void RamDacFreeRec(ScrnInfoPtr pScrn);
  62. extern _X_EXPORT int RamDacGetHWIndex(void);
  63. #endif /* _XF86RAMDAC_H */