8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Copyright (c) 1997,1998 The XFree86 Project, Inc.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Loosely based on code bearing the following copyright:
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Author: Dirk Hohndel
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * access macro
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VGAHWPTR(p) ((vgaHWPtr)((p)->privates[vgaHWGetIndex()].ptr))
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Standard VGA registers */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* default number of VGA registers stored internally */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Flags for vgaHWSave() and vgaHWRestore() */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VGA_SR_ALL (VGA_SR_MODE | VGA_SR_FONTS | VGA_SR_CMAP)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Defaults for the VGA memory window */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * vgaRegRec contains settings of standard VGA registers.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef struct {
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char DAC[768]; /* Internal Colorlookuptable */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char numCRTC; /* number of CRTC registers, def=VGA_NUM_CRTC */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char numSequencer; /* number of seq registers, def=VGA_NUM_SEQ */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char numGraphics; /* number of gfx registers, def=VGA_NUM_GFX */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned char numAttribute; /* number of attr registers, def=VGA_NUM_ATTR */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*vgaHWWriteIndexProcPtr)(vgaHWPtr hwp, CARD8 indx, CARD8 value);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef CARD8 (*vgaHWReadIndexProcPtr)(vgaHWPtr hwp, CARD8 indx);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void (*vgaHWWriteProcPtr)(vgaHWPtr hwp, CARD8 value);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * vgaHWRec contains per-screen information required by the vgahw module.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * Note, the palette referred to by the paletteEnabled, enablePalette and
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * disablePalette is the 16-entry (+overscan) EGA-compatible palette accessed
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync * via the first 17 attribute registers and not the main 8-bit palette.
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned long MapPhys; /* phys location of VGA mem */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync = mmioreg */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync current mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync = pioreg */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Some macros that VGA drivers can use in their ChipProbe() function */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define VGAHW_GET_IOBASE() ((inb(VGA_MISC_OUT_R) & 0x01) ? \
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define OVERSCAN 0x11 /* Index of OverScan register */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Flags that define how overscan correction should take place */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define KGA_FIX_OVERSCAN 1 /* overcan correction required */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define KGA_ENABLE_ON_ZERO 2 /* if possible enable display at beginning */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* of next scanline/frame */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define KGA_BE_TOT_DEC 4 /* always fix problem by setting blank end */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync /* to total - 1 */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#define BIT_PLANE 3 /* Which plane we write to in mono mode */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#if defined(__powerpc__) || defined(__arm__) || defined(__s390__) || defined(__nds32__)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync (void)inb((hw)->PIOOffset + (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync (void)inb((hw)->PIOOffset + (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync } while (0)
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync/* Function Prototypes */
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsynctypedef void vgaHWBlankScreenProc(ScrnInfoPtr, Bool);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSetStdFuncs(vgaHWPtr hwp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSetMmioFuncs(vgaHWPtr hwp, CARD8 *base, int offset);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWProtect(ScrnInfoPtr pScrn, Bool on);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT vgaHWProtectProc *vgaHWProtectWeak(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWSaveScreen(ScreenPtr pScreen, int mode);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWBlankScreen(ScrnInfoPtr pScrn, Bool on);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT vgaHWBlankScreenProc *vgaHWBlankScreenWeak(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSeqReset(vgaHWPtr hwp, Bool start);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWRestoreMode(ScrnInfoPtr scrninfp, vgaRegPtr restore);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWRestoreColormap(ScrnInfoPtr scrninfp, vgaRegPtr restore);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWRestore(ScrnInfoPtr scrninfp, vgaRegPtr restore, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSaveFonts(ScrnInfoPtr scrninfp, vgaRegPtr save);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSaveMode(ScrnInfoPtr scrninfp, vgaRegPtr save);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSaveColormap(ScrnInfoPtr scrninfp, vgaRegPtr save);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWSave(ScrnInfoPtr scrninfp, vgaRegPtr save, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWInit(ScrnInfoPtr scrnp, DisplayModePtr mode);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWSetRegCounts(ScrnInfoPtr scrp, int numCRTC, int numSequencer,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWCopyReg(vgaRegPtr dst, vgaRegPtr src);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWGetHWRec(ScrnInfoPtr scrp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWFreeHWRec(ScrnInfoPtr scrp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWMapMem(ScrnInfoPtr scrp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWUnmapMem(ScrnInfoPtr scrp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWDPMSSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWHandleColormaps(ScreenPtr pScreen);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT CARD32 vgaHWHBlankKGA(DisplayModePtr mode, vgaRegPtr regp, int nBits,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned int Flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT CARD32 vgaHWVBlankKGA(DisplayModePtr mode, vgaRegPtr regp, int nBits,
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync unsigned int Flags);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT Bool vgaHWAllocDefaultRegs(vgaRegPtr regp);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT DDC1SetSpeedProc vgaHWddc1SetSpeedWeak(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsyncextern _X_EXPORT SaveScreenProcPtr vgaHWSaveScreenWeak(void);
8c3d541c7ee7442f570b22eca3d82808b35b0385vboxsync#endif /* _VGAHW_H */