tga.h revision b92e825a
1/* 2 * Copyright 1997,1998 by Alan Hourihane <alanh@fairlite.demon.co.uk> 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Alan Hourihane not be used in 9 * advertising or publicity pertaining to distribution of the software without 10 * specific, written prior permission. Alan Hourihane makes no representations 11 * about the suitability of this software for any purpose. It is provided 12 * "as is" without express or implied warranty. 13 * 14 * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 * 22 * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> 23 */ 24 25#ifndef _TGA_H_ 26#define _TGA_H_ 27 28#include "tga_pcirename.h" 29#ifdef HAVE_XAA_H 30#include "xaa.h" 31#endif 32#include "xf86RamDac.h" 33 34#include "compat-api.h" 35 36typedef struct { 37 unsigned long tgaRegs[0x100]; 38} TGARegRec, *TGARegPtr; 39 40#define TGA_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4) 41 42#define TGAPTR(p) ((TGAPtr)((p)->driverPrivate)) 43 44typedef struct { 45 pciVideoPtr PciInfo; 46#ifndef XSERVER_LIBPCIACCESS 47 PCITAG PciTag; 48#endif 49 int Chipset; 50 RamDacHelperRecPtr RamDac; 51 int ChipRev; 52 int HwBpp; 53 int BppShift; 54 int pprod; 55 CARD32 CardAddress; 56 CARD32 IOAddress; 57 CARD32 FbAddress; 58 unsigned char * FbBase; 59 unsigned char * IOBase; 60 unsigned char * ClkBase; /* TGA2 */ 61 unsigned char * DACBase; /* TGA2 */ 62 unsigned char * HACKBase; /* TGA2 */ 63 long FbMapSize; 64 unsigned long regOffset; 65 Bool NoAccel; 66 Bool NoXaaPolySegment; 67 Bool Dac6Bit; 68 Bool SyncOnGreen; 69 Bool HWCursor; 70 Bool UsePCIRetry; 71 int MinClock; 72 int MaxClock; 73 TGARegRec SavedReg; 74 TGARegRec ModeReg; 75 CARD32 AccelFlags; 76 RamDacRecPtr RamDacRec; 77#ifdef HAVE_XAA_H 78 XAAInfoRecPtr AccelInfoRec; 79#endif 80 xf86CursorInfoPtr CursorInfoRec; 81 CloseScreenProcPtr CloseScreen; 82 int CardType; 83 unsigned char Bt463modeReg[59]; 84 unsigned char Bt463saveReg[59]; 85 unsigned char Ibm561modeReg[59]; 86 unsigned char Ibm561saveReg[59]; 87 EntityInfoPtr pEnt; 88 CARD32 *buffers[1]; 89 unsigned int current_rop; 90 unsigned int current_planemask; 91 int transparent_pattern_p; 92 int blitdir; 93 int block_or_opaque_p; 94 int ce_height; 95 int ce_width; 96 int ce_x; 97 int ce_y; 98 int ce_skipleft; 99 int line_pattern_length; 100 CARD16 line_pattern; /* for dashed lines */ 101 int Bpp; /* bytes per pixel */ 102 int depthflag; /* either BPP8PACKED or BPP24 */ 103 OptionInfoPtr Options; 104} TGARec, *TGAPtr; 105 106/* ?? this is a hack for initial TGA2 support */ 107struct monitor_data { 108 unsigned int max_rows; /* Monitor setup */ 109 unsigned int max_cols; 110 unsigned int pixel_freq; 111 unsigned int refresh_rate; 112 unsigned int vert_slines; 113 unsigned int vert_fp; 114 unsigned int vert_sync; 115 unsigned int vert_bp; 116 unsigned int horz_pix; 117 unsigned int horz_fp; 118 unsigned int horz_sync; 119 unsigned int horz_bp; 120 unsigned int vco_div; /* ICS setup */ 121 unsigned int ref_div; 122 unsigned int vco_pre; 123 unsigned int clk_div; 124 unsigned int vco_out_div; 125 unsigned int clk_out_en; 126 unsigned int clk_out_enX; 127 unsigned int res0; 128 unsigned int clk_sel; 129 unsigned int res1; 130 unsigned int ibm561_vco_div; /* IBM561 PLL setup */ 131 unsigned int ibm561_ref; 132}; 133 134extern struct monitor_data tga_crystal_table[]; 135extern int tga_crystal_table_entries; 136extern struct monitor_data *tga_c_table; 137 138/* Prototypes */ 139 140/* tga_dac.c */ 141void DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/ 142 TGARegPtr tgaReg/*, Bool restoreFonts*/); 143void DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*, 144 Bool saveFonts*/); 145Bool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode); 146void write_av9110(ScrnInfoPtr pScrn, unsigned int *); 147void TGA2SetupMode(ScrnInfoPtr pScrn); 148void Ibm561Init(TGAPtr pTga); 149void Bt463Init(TGAPtr pTga); 150 151/* tga_accel.c */ 152Bool DEC21030AccelInit(ScreenPtr pScreen); 153 154/* BTramdac.c */ 155void tgaBTOutIndReg(ScrnInfoPtr pScrn, 156 CARD32 reg, unsigned char mask, unsigned char data); 157unsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 158void tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 159void tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 160void tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data); 161unsigned char tgaBTReadData(ScrnInfoPtr pScrn); 162 163void tga2BTOutIndReg(ScrnInfoPtr pScrn, 164 CARD32 reg, unsigned char mask, unsigned char data); 165unsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 166void tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 167void tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 168void tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data); 169unsigned char tga2BTReadData(ScrnInfoPtr pScrn); 170 171/* BT463ramdac.c */ 172void BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 173void BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 174 175/* IBM561ramdac.c */ 176void IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 177void IBM561ramdacHWInit(ScrnInfoPtr pScrn); 178void IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 179unsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg); 180void IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data); 181 182/* tga_cursor.c */ 183Bool TGAHWCursorInit(ScreenPtr pScreen); 184 185/* tga_line.c */ 186 187void TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, 188 xSegment *pSeg); 189void TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 190 DDXPointPtr pptInit); 191void TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int nseg, 192 xSegment *pSeg); 193void TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 194 DDXPointPtr pptInit); 195 196/* line functions */ 197void 198TGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop, 199 unsigned int planemask); 200void 201TGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, 202 int dir); 203void 204TGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 205 int octant, int flags); 206void 207TGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 208 int octant); 209void 210TGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 211 int err); 212 213void 214TGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop, 215 unsigned int planemask, int length, 216 unsigned char *pattern); 217void 218TGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 219 int octant, int flags, int phase); 220void 221TGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 222 int err, int phase); 223 224 225 226 227#endif /* _TGA_H_ */ 228 229