xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

vgaHW.h (9467B)


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