(file) Return to vgaHW.h CVS log (file) (dir) Up to [XFree86 CVS] / xc / programs / Xserver / hw / xfree86 / vgahw

  1 mvojkovi 1.29 /* $XFree86: xc/programs/Xserver/hw/xfree86/vgahw/vgaHW.h,v 1.28 2001/05/10 22:18:58 dbateman Exp $ */
  2 dawes    1.2  
  3               
  4               /*
  5                * Copyright (c) 1997,1998 The XFree86 Project, Inc.
  6                *
  7                * Loosely based on code bearing the following copyright:
  8                *
  9                *   Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
 10                *
 11                * Author: Dirk Hohndel
 12                */
 13               
 14               #ifndef _VGAHW_H
 15               #define _VGAHW_H
 16               
 17               #include "X.h"
 18               #include "misc.h"
 19               #include "input.h"
 20               #include "scrnintstr.h"
 21               #include "colormapst.h"
 22               
 23 dawes    1.2  #include "xf86str.h"
 24               
 25 dawes    1.14 #include "xf86DDC.h"
 26               
 27 dawes    1.13 #include "globals.h"
 28 dawes    1.16 #define DPMS_SERVER
 29 dawes    1.2  #include "extensions/dpms.h"
 30               
 31 dawes    1.5  extern int vgaHWGetIndex(void);
 32               
 33 dawes    1.2  /*
 34                * access macro
 35                */
 36 dawes    1.5  #define VGAHWPTR(p) ((vgaHWPtr)((p)->privates[vgaHWGetIndex()].ptr))
 37 dawes    1.4  
 38 dawes    1.5  /* Standard VGA registers */
 39               #define VGA_ATTR_INDEX		0x3C0
 40               #define VGA_ATTR_DATA_W		0x3C0
 41               #define VGA_ATTR_DATA_R		0x3C1
 42               #define VGA_IN_STAT_0		0x3C2		/* read */
 43               #define VGA_MISC_OUT_W		0x3C2		/* write */
 44               #define VGA_ENABLE		0x3C3
 45               #define VGA_SEQ_INDEX		0x3C4
 46               #define VGA_SEQ_DATA		0x3C5
 47               #define VGA_DAC_MASK		0x3C6
 48               #define VGA_DAC_READ_ADDR	0x3C7
 49               #define VGA_DAC_WRITE_ADDR	0x3C8
 50               #define VGA_DAC_DATA		0x3C9
 51               #define VGA_FEATURE_R		0x3CA		/* read */
 52               #define VGA_MISC_OUT_R		0x3CC		/* read */
 53               #define VGA_GRAPH_INDEX		0x3CE
 54               #define VGA_GRAPH_DATA		0x3CF
 55               
 56               #define VGA_IOBASE_MONO		0x3B0
 57               #define VGA_IOBASE_COLOR	0x3D0
 58               
 59 dawes    1.5  #define VGA_CRTC_INDEX_OFFSET	0x04
 60               #define VGA_CRTC_DATA_OFFSET	0x05
 61               #define VGA_IN_STAT_1_OFFSET	0x0A		/* read */
 62               #define VGA_FEATURE_W_OFFSET	0x0A		/* write */
 63               
 64 dawes    1.17 /* default number of VGA registers stored internally */
 65               #define VGA_NUM_CRTC 25
 66               #define VGA_NUM_SEQ 5
 67               #define VGA_NUM_GFX 9
 68               #define VGA_NUM_ATTR 21
 69               
 70 dawes    1.5  /* Flags for vgaHWSave() and vgaHWRestore() */
 71               #define VGA_SR_MODE		0x01
 72               #define VGA_SR_FONTS		0x02
 73               #define VGA_SR_CMAP		0x04
 74               #define VGA_SR_ALL		(VGA_SR_MODE | VGA_SR_FONTS | VGA_SR_CMAP)
 75 dawes    1.2  
 76 dawes    1.9  /* Defaults for the VGA memory window */
 77               #define VGA_DEFAULT_PHYS_ADDR	0xA0000
 78               #define VGA_DEFAULT_MEM_SIZE	(64 * 1024)
 79               
 80 dawes    1.2  /*
 81                * vgaRegRec contains settings of standard VGA registers.
 82                */
 83               typedef struct {
 84                   unsigned char MiscOutReg;     /* */
 85 dawes    1.17     unsigned char *CRTC;       /* Crtc Controller */
 86                   unsigned char *Sequencer;   /* Video Sequencer */
 87                   unsigned char *Graphics;    /* Video Graphics */
 88                   unsigned char *Attribute;  /* Video Atribute */
 89 dawes    1.2      unsigned char DAC[768];       /* Internal Colorlookuptable */
 90 dawes    1.17     unsigned char numCRTC;	/* number of CRTC registers, def=VGA_NUM_CRTC */
 91                   unsigned char numSequencer;	/* number of seq registers, def=VGA_NUM_SEQ */
 92                   unsigned char numGraphics;	/* number of gfx registers, def=VGA_NUM_GFX */
 93                   unsigned char numAttribute;	/* number of attr registers, def=VGA_NUM_ATTR */
 94 dawes    1.2  } vgaRegRec, *vgaRegPtr;
 95               
 96 dawes    1.5  typedef struct _vgaHWRec *vgaHWPtr;
 97               
 98 tsi      1.24 typedef void (*vgaHWWriteIndexProcPtr)(vgaHWPtr hwp, CARD8 indx, CARD8 value);
 99               typedef CARD8 (*vgaHWReadIndexProcPtr)(vgaHWPtr hwp, CARD8 indx);
100 dawes    1.5  typedef void (*vgaHWWriteProcPtr)(vgaHWPtr hwp, CARD8 value);
101               typedef CARD8 (*vgaHWReadProcPtr)(vgaHWPtr hwp);
102               typedef void (*vgaHWMiscProcPtr)(vgaHWPtr hwp);
103               
104               
105 dawes    1.2  /*
106                * vgaHWRec contains per-screen information required by the vgahw module.
107 dawes    1.15  *
108                * Note, the palette referred to by the paletteEnabled, enablePalette and
109                * disablePalette is the 16-entry (+overscan) EGA-compatible palette accessed
110                * via the first 17 attribute registers and not the main 8-bit palette.
111 dawes    1.2   */
112 dawes    1.5  typedef struct _vgaHWRec {
113                   pointer			Base;		/* Address of "VGA" memory */
114                   int				MapSize;	/* Size of "VGA" memory */
115 dawes    1.9      unsigned long		MapPhys;	/* phys location of VGA mem */
116 dawes    1.5      int				IOBase;		/* I/O Base address */
117 dawes    1.7      CARD8 * 			MMIOBase;	/* Pointer to MMIO start */
118                   int				MMIOOffset;	/* base + offset + vgareg
119               						   = mmioreg */
120 dawes    1.5      pointer			FontInfo1;	/* save area for fonts in
121               							plane 2 */ 
122                   pointer			FontInfo2;	/* save area for fonts in	
123               							plane 3 */ 
124                   pointer			TextInfo;	/* save area for text */ 
125                   vgaRegRec			SavedReg;	/* saved registers */
126                   vgaRegRec			ModeReg;	/* register settings for
127               							current mode */
128                   Bool			ShowOverscan;
129                   Bool			paletteEnabled;
130                   Bool			cmapSaved;
131                   ScrnInfoPtr			pScrn;
132                   vgaHWWriteIndexProcPtr	writeCrtc;
133                   vgaHWReadIndexProcPtr	readCrtc;
134                   vgaHWWriteIndexProcPtr	writeGr;
135                   vgaHWReadIndexProcPtr	readGr;
136 eich     1.21     vgaHWReadProcPtr            readST00;
137 dawes    1.20     vgaHWReadProcPtr            readST01;
138 eich     1.21     vgaHWReadProcPtr            readFCR;
139                   vgaHWWriteProcPtr           writeFCR;
140 dawes    1.5      vgaHWWriteIndexProcPtr	writeAttr;
141                   vgaHWReadIndexProcPtr	readAttr;
142                   vgaHWWriteIndexProcPtr	writeSeq;
143                   vgaHWReadIndexProcPtr	readSeq;
144                   vgaHWWriteProcPtr		writeMiscOut;
145                   vgaHWReadProcPtr		readMiscOut;
146                   vgaHWMiscProcPtr		enablePalette;
147                   vgaHWMiscProcPtr		disablePalette;
148                   vgaHWWriteProcPtr		writeDacMask;
149                   vgaHWReadProcPtr		readDacMask;
150                   vgaHWWriteProcPtr		writeDacWriteAddr;
151                   vgaHWWriteProcPtr		writeDacReadAddr;
152                   vgaHWWriteProcPtr		writeDacData;
153                   vgaHWReadProcPtr		readDacData;
154 dawes    1.11     pointer                     ddc;
155 dawes    1.27     int				PIOOffset;	/* offset + vgareg
156               						   = pioreg */
157                   vgaHWReadProcPtr		readEnable;
158                   vgaHWWriteProcPtr		writeEnable;
159 dawes    1.5  } vgaHWRec;
160 dawes    1.2  
161               /* Some macros that VGA drivers can use in their ChipProbe() function */
162 dawes    1.5  #define VGAHW_GET_IOBASE()	((inb(VGA_MISC_OUT_R) & 0x01) ?		      \
163               					 VGA_IOBASE_COLOR : VGA_IOBASE_MONO)
164               
165               #define VGAHW_UNLOCK(base)	do {					      \
166               				  unsigned char tmp;			      \
167               				  outb((base) + VGA_CRTC_INDEX_OFFSET, 0x11); \
168               				  tmp = inb((base) + VGA_CRTC_DATA_OFFSET);   \
169               				  outb((base) + VGA_CRTC_DATA_OFFSET,	      \
170               					tmp | 0x80);			      \
171 dawes    1.2  				} while (0)
172 dawes    1.5  #define VGAHW_LOCK(base)	do {					      \
173               				  unsigned char tmp;			      \
174               				  outb((base) + VGA_CRTC_INDEX_OFFSET, 0x11); \
175               				  tmp = inb((base) + VGA_CRTC_DATA_OFFSET);   \
176               				  outb((base) + VGA_CRTC_DATA_OFFSET,	      \
177               					tmp & ~0x80);			      \
178 dawes    1.2  				} while (0)
179               
180               #define OVERSCAN 0x11		/* Index of OverScan register */
181               
182 eich     1.26 /* Flags that define how overscan correction should take place */
183               #define KGA_FIX_OVERSCAN  1   /* overcan correction required */
184               #define KGA_ENABLE_ON_ZERO 2  /* if possible enable display at beginning */
185                                             /* of next scanline/frame                  */
186               
187 dawes    1.2  #define BIT_PLANE 3		/* Which plane we write to in mono mode */
188               #define BITS_PER_GUN 6
189               #define COLORMAP_SIZE 256
190               
191 mvojkovi 1.29 #if defined(__powerpc__)
192               #define DACDelay(hw) /* No legacy VGA support */
193               #else
194 dawes    1.5  #define DACDelay(hw)							     \
195               	do {								     \
196               	    unsigned char temp = inb((hw)->IOBase + VGA_IN_STAT_1_OFFSET);   \
197               	    temp = inb((hw)->IOBase + VGA_IN_STAT_1_OFFSET);		     \
198               	} while (0)
199 mvojkovi 1.29 #endif
200 dawes    1.2  
201               /* Function Prototypes */
202               
203               /* vgaHW.c */
204               
205 dawes    1.5  void vgaHWSetStdFuncs(vgaHWPtr hwp);
206 dawes    1.7  void vgaHWSetMmioFuncs(vgaHWPtr hwp, CARD8 *base, int offset);
207 dawes    1.2  void vgaHWProtect(ScrnInfoPtr pScrn, Bool on);
208 dawes    1.23 Bool vgaHWSaveScreen(ScreenPtr pScreen, int mode);
209 dawes    1.2  void vgaHWBlankScreen(ScrnInfoPtr pScrn, Bool on);
210               void vgaHWSeqReset(vgaHWPtr hwp, Bool start);
211 dawes    1.5  void vgaHWRestoreFonts(ScrnInfoPtr scrninfp, vgaRegPtr restore);
212               void vgaHWRestoreMode(ScrnInfoPtr scrninfp, vgaRegPtr restore);
213               void vgaHWRestoreColormap(ScrnInfoPtr scrninfp, vgaRegPtr restore);
214               void vgaHWRestore(ScrnInfoPtr scrninfp, vgaRegPtr restore, int flags);
215               void vgaHWSaveFonts(ScrnInfoPtr scrninfp, vgaRegPtr save);
216               void vgaHWSaveMode(ScrnInfoPtr scrninfp, vgaRegPtr save);
217               void vgaHWSaveColormap(ScrnInfoPtr scrninfp, vgaRegPtr save);
218               void vgaHWSave(ScrnInfoPtr scrninfp, vgaRegPtr save, int flags);
219 dawes    1.2  Bool vgaHWInit(ScrnInfoPtr scrnp, DisplayModePtr mode);
220 dawes    1.17 Bool vgaHWSetRegCounts(ScrnInfoPtr scrp, int numCRTC, int numSequencer,
221                                 	int numGraphics, int numAttribute);
222 dawes    1.19 Bool vgaHWCopyReg(vgaRegPtr dst, vgaRegPtr src);
223 dawes    1.2  Bool vgaHWGetHWRec(ScrnInfoPtr scrp);
224               void vgaHWFreeHWRec(ScrnInfoPtr scrp);
225               Bool vgaHWMapMem(ScrnInfoPtr scrp);
226               void vgaHWUnmapMem(ScrnInfoPtr scrp);
227               void vgaHWGetIOBase(vgaHWPtr hwp);
228               void vgaHWLock(vgaHWPtr hwp);
229               void vgaHWUnlock(vgaHWPtr hwp);
230 dawes    1.27 void vgaHWEnable(vgaHWPtr hwp);
231               void vgaHWDisable(vgaHWPtr hwp);
232 dawes    1.2  void vgaHWDPMSSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags);
233 dawes    1.10 Bool vgaHWHandleColormaps(ScreenPtr pScreen);
234 dawes    1.14 void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed);
235 eich     1.26 CARD32 vgaHWHBlankKGA(DisplayModePtr mode, vgaRegPtr regp, int nBits, 
236               	       unsigned int Flags);
237               CARD32 vgaHWVBlankKGA(DisplayModePtr mode, vgaRegPtr regp, int nBits, 
238               	       unsigned int Flags);
239 dbateman 1.28 Bool vgaHWAllocDefaultRegs(vgaRegPtr regp);
240 dawes    1.2  #endif /* _VGAHW_H */

Powered by
ViewCVS 0.9.2