/* $XConsortium: vga.h,v 1.4 95/01/16 13:18:28 kaleb Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/vga256/vga/vga.h,v 3.9 1995/05/27 03:17:59 dawes Exp $ */ /* * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Thomas Roell not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Thomas Roell makes no representations * about the suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. * * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. * * Author: Thomas Roell, roell@informatik.tu-muenchen.de * */ #ifndef _XF86_VGA_H_ #define _XF86_VGA_H_ #define VGA2_PATCHLEVEL "0" #define VGA16_PATCHLEVEL "0" #define SVGA_PATCHLEVEL "0" #include "X.h" #include "misc.h" #include "input.h" #include "scrnintstr.h" #include "colormapst.h" #if !defined(MONOVGA) && !defined(XF86VGA16) extern void vgaBitBlt(); extern void vgaImageRead(); extern void vgaImageWrite(); extern void vgaPixBitBlt(); extern void vgaImageGlyphBlt(); #endif #ifndef MONOVGA extern int vgaListInstalledColormaps(); extern void vgaStoreColors(); extern void vgaInstallColormap(); extern void vgaUninstallColormap(); #endif #ifdef MONOVGA extern int vga2ValidTokens[]; #else #ifdef XF86VGA16 extern int vga16ValidTokens[]; #else extern int vga256ValidTokens[]; #endif #endif /* * structure for accessing the video chip`s functions */ typedef struct { Bool (* ChipProbe)(); char * (* ChipIdent)(); void (* ChipEnterLeave)(); Bool (* ChipInit)(); Bool (* ChipValidMode)(); void * (* ChipSave)(); void (* ChipRestore)(); void (* ChipAdjust)(); void (* ChipSaveScreen)(); void (* ChipGetMode)(); void (* ChipFbInit)(); void (* ChipSetRead)(); void (* ChipSetWrite)(); void (* ChipSetReadWrite)(); int ChipMapSize; int ChipSegmentSize; int ChipSegmentShift; int ChipSegmentMask; int ChipReadBottom; int ChipReadTop; int ChipWriteBottom; int ChipWriteTop; Bool ChipUse2Banks; /* TRUE if the chip uses separate read and write banks */ int ChipInterlaceType; /* divide vertical timing values for interlaced modes */ OFlagSet ChipOptionFlags; /* option flags support by this driver */ int ChipRounding; /* the horizontal resolution rounding */ Bool ChipUseLinearAddressing; /* TRUE if driver has requested linear addressing */ int ChipLinearBase; /* Physical base address of the linear framebuffer */ int ChipLinearSize; /* Size of the linear framebuffer */ Bool ChipHas16bpp; /* Driver supports 16bpp */ Bool ChipHas32bpp; /* Driver supports 32bpp */ DisplayModePtr ChipBuiltinModes; /* Pointer to builtin mode list */ int ChipClockScaleFactor; /* Factor to divide raw clocks by */ } vgaVideoChipRec, *vgaVideoChipPtr; /* * hooks for communicating with the VideoChip on the VGA */ extern Bool (* vgaInitFunc)( #if NeedFunctionPrototypes DisplayModePtr #endif ); extern Bool (* vgaValidModeFunc)( #if NeedFunctionPrototypes DisplayModePtr #endif ); extern void (* vgaEnterLeaveFunc)( #if NeedFunctionPrototypes Bool #endif ); extern void * (* vgaSaveFunc)( #if NeedFunctionPrototypes void * #endif ); extern void (* vgaRestoreFunc)( #if NeedFunctionPrototypes void * #endif ); extern void (* vgaAdjustFunc)( #if NeedFunctionPrototypes int, int #endif ); extern void (* vgaSaveScreenFunc)(); extern void (* vgaSetReadFunc)(); extern void (* vgaSetWriteFunc)(); extern void (* vgaSetReadWriteFunc)(); extern int vgaMapSize; extern int vgaSegmentSize; extern int vgaSegmentShift; extern int vgaSegmentMask; extern int vgaIOBase; extern int vgaInterlaceType; extern int vgaBitsPerPixel; #if !defined(S3_SERVER) && !defined(MACH32_SERVER) && !defined(MACH64_SERVER) #include "vgaBank.h" #endif extern pointer vgaOrigVideoState; /* buffers for all video information */ extern pointer vgaNewVideoState; extern pointer vgaBase; /* the framebuffer himself */ extern pointer vgaLinearBase; typedef struct { unsigned char MiscOutReg; /* */ unsigned char CRTC[25]; /* Crtc Controller */ unsigned char Sequencer[5]; /* Video Sequencer */ unsigned char Graphics[9]; /* Video Graphics */ unsigned char Attribute[21]; /* Video Atribute */ unsigned char DAC[768]; /* Internal Colorlookuptable */ char NoClock; /* number of selected clock */ pointer FontInfo1; /* save area for fonts in plane 2 */ pointer FontInfo2; /* save area for fonts in plane 3 */ pointer TextInfo; /* save area for text */ } vgaHWRec, *vgaHWPtr; typedef struct { Bool Initialized; void (*Init)(); void (*Restore)(); void (*Warp)(); void (*QueryBestSize)(); } vgaHWCursorRec, *vgaHWCursorPtr; #define OVERSCAN 0x11 /* Index of OverScan register */ #ifdef MONOVGA #define BIT_PLANE 3 /* Which plane we write to in mono mode */ #else #define BITS_PER_GUN 6 #define COLORMAP_SIZE 256 extern void vgaImageGlyphBlt(); extern void vgaDoBitBlt(); #endif #define DACDelay \ { \ unsigned char temp = inb(vgaIOBase + 0x0A); \ temp = inb(vgaIOBase + 0x0A); \ } #ifdef MONOVGA #define vga256InfoRec vga2InfoRec #endif #ifdef XF86VGA16 #define vga256InfoRec vga16InfoRec #define vga2InfoRec vga16InfoRec #endif #ifdef S3_SERVER #define vga256InfoRec s3InfoRec #endif #ifdef MACH32_SERVER #define vga256InfoRec mach32InfoRec #endif #ifdef MACH64_SERVER #define vga256InfoRec mach64InfoRec #endif #ifdef AGX_SERVER #define vga256InfoRec agxInfoRec #endif extern ScrnInfoRec vga256InfoRec; /* Values for vgaInterlaceType */ #define VGA_NO_DIVIDE_VERT 0 #define VGA_DIVIDE_VERT 1 /* * This are used to tell the ChipSaveScreen() functions to save/restore * anything that must be retained across a synchronous reset of the SVGA */ #define SS_START 0 #define SS_FINISH 1 /* * List of I/O ports for generic VGA */ extern unsigned VGA_IOPorts[]; extern int Num_VGA_IOPorts; /* Function Prototypes */ /* vgaHW.c */ void vgaProtect( #if NeedFunctionPrototypes Bool on #endif ); Bool vgaSaveScreen( #if NeedFunctionPrototypes ScreenPtr pScreen, Bool on #endif ); void vgaHWSaveScreen( #if NeedFunctionPrototypes Bool start #endif ); void vgaHWRestore( #if NeedFunctionPrototypes vgaHWPtr restore #endif ); void *vgaHWSave( #if NeedFunctionPrototypes vgaHWPtr save, int size #endif ); Bool vgaHWInit( #if NeedFunctionPrototypes DisplayModePtr mode, int size #endif ); void vgaGetClocks( #if NeedFunctionPrototypes int num, Bool (*ClockFunc)() #endif ); /* vga.c */ void NoopVGA( #if NeedFunctionPrototypes void #endif ); void vgaRestore( #if NeedFunctionPrototypes pointer mode #endif ); void vgaPrintIdent( #if NeedFunctionPrototypes void #endif ); Bool vgaProbe( #if NeedFunctionPrototypes void #endif ); Bool vgaScreenInit( #if NeedFunctionPrototypes int scr_index, ScreenPtr pScreen, int argc, char **argv #endif ); Bool vgaValidMode( #if NeedFunctionPrototypes DisplayModePtr #endif ); void vgaEnterLeaveVT( #if NeedFunctionPrototypes Bool enter, int screen_idx #endif ); Bool vgaCloseScreen( #if NeedFunctionPrototypes int screen_idx, ScreenPtr pScreen #endif ); void vgaAdjustFrame( #if NeedFunctionPrototypes int x, int y #endif ); Bool vgaSwitchMode( #if NeedFunctionPrototypes DisplayModePtr mode #endif ); /* vgaCmap.c */ int vgaListInstalledColormaps( #if NeedFunctionPrototypes ScreenPtr pScreen, Colormap *pmaps #endif ); void vgaStoreColors( #if NeedFunctionPrototypes ColormapPtr pmap, int ndef, xColorItem *pdefs #endif ); void vgaInstallColormap( #if NeedFunctionPrototypes ColormapPtr pmap #endif ); void vgaUninstallColormap( #if NeedFunctionPrototypes ColormapPtr pmap #endif ); #endif /* _XF86_VGA_H_ */