tga.h revision 7706df26
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/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h,v 1.17 2001/05/04 19:05:47 dawes Exp $ */ 25 26#ifndef _TGA_H_ 27#define _TGA_H_ 28 29#include "xaa.h" 30#include "xf86RamDac.h" 31 32typedef struct { 33 unsigned long tgaRegs[0x100]; 34} TGARegRec, *TGARegPtr; 35 36 37#define TGAPTR(p) ((TGAPtr)((p)->driverPrivate)) 38 39typedef struct { 40 pciVideoPtr PciInfo; 41 PCITAG PciTag; 42 int Chipset; 43 RamDacHelperRecPtr RamDac; 44 int ChipRev; 45 int HwBpp; 46 int BppShift; 47 int pprod; 48 CARD32 CardAddress; 49 CARD32 IOAddress; 50 CARD32 FbAddress; 51 unsigned char * FbBase; 52 unsigned char * IOBase; 53 unsigned char * ClkBase; /* TGA2 */ 54 unsigned char * DACBase; /* TGA2 */ 55 unsigned char * HACKBase; /* TGA2 */ 56 long FbMapSize; 57 unsigned long regOffset; 58 Bool NoAccel; 59 Bool NoXaaPolySegment; 60 Bool Dac6Bit; 61 Bool SyncOnGreen; 62 Bool HWCursor; 63 Bool UsePCIRetry; 64 int MinClock; 65 int MaxClock; 66 TGARegRec SavedReg; 67 TGARegRec ModeReg; 68 CARD32 AccelFlags; 69 RamDacRecPtr RamDacRec; 70 XAAInfoRecPtr AccelInfoRec; 71 xf86CursorInfoPtr CursorInfoRec; 72 CloseScreenProcPtr CloseScreen; 73 int CardType; 74 unsigned char Bt463modeReg[59]; 75 unsigned char Bt463saveReg[59]; 76 unsigned char Ibm561modeReg[59]; 77 unsigned char Ibm561saveReg[59]; 78 EntityInfoPtr pEnt; 79 CARD32 *buffers[1]; 80 unsigned int current_rop; 81 unsigned int current_planemask; 82 int transparent_pattern_p; 83 int blitdir; 84 int block_or_opaque_p; 85 int ce_height; 86 int ce_width; 87 int ce_x; 88 int ce_y; 89 int ce_skipleft; 90 int line_pattern_length; 91 CARD16 line_pattern; /* for dashed lines */ 92 int Bpp; /* bytes per pixel */ 93 int depthflag; /* either BPP8PACKED or BPP24 */ 94 OptionInfoPtr Options; 95} TGARec, *TGAPtr; 96 97/* ?? this is a hack for initial TGA2 support */ 98struct monitor_data { 99 unsigned int max_rows; /* Monitor setup */ 100 unsigned int max_cols; 101 unsigned int pixel_freq; 102 unsigned int refresh_rate; 103 unsigned int vert_slines; 104 unsigned int vert_fp; 105 unsigned int vert_sync; 106 unsigned int vert_bp; 107 unsigned int horz_pix; 108 unsigned int horz_fp; 109 unsigned int horz_sync; 110 unsigned int horz_bp; 111 unsigned int vco_div; /* ICS setup */ 112 unsigned int ref_div; 113 unsigned int vco_pre; 114 unsigned int clk_div; 115 unsigned int vco_out_div; 116 unsigned int clk_out_en; 117 unsigned int clk_out_enX; 118 unsigned int res0; 119 unsigned int clk_sel; 120 unsigned int res1; 121 unsigned int ibm561_vco_div; /* IBM561 PLL setup */ 122 unsigned int ibm561_ref; 123}; 124 125extern struct monitor_data tga_crystal_table[]; 126extern int tga_crystal_table_entries; 127extern struct monitor_data *tga_c_table; 128 129/* Prototypes */ 130 131/* tga_dac.c */ 132void DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/ 133 TGARegPtr tgaReg/*, Bool restoreFonts*/); 134void DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*, 135 Bool saveFonts*/); 136Bool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode); 137void write_av9110(ScrnInfoPtr pScrn, unsigned int *); 138void TGA2SetupMode(ScrnInfoPtr pScrn); 139void Ibm561Init(TGAPtr pTga); 140void Bt463Init(TGAPtr pTga); 141 142/* tga_accel.c */ 143Bool DEC21030AccelInit(ScreenPtr pScreen); 144 145/* BTramdac.c */ 146void tgaBTOutIndReg(ScrnInfoPtr pScrn, 147 CARD32 reg, unsigned char mask, unsigned char data); 148unsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 149void tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 150void tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 151void tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data); 152unsigned char tgaBTReadData(ScrnInfoPtr pScrn); 153 154void tga2BTOutIndReg(ScrnInfoPtr pScrn, 155 CARD32 reg, unsigned char mask, unsigned char data); 156unsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 157void tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 158void tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 159void tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data); 160unsigned char tga2BTReadData(ScrnInfoPtr pScrn); 161 162/* BT463ramdac.c */ 163void BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 164void BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 165 166/* IBM561ramdac.c */ 167void IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 168void IBM561ramdacHWInit(ScrnInfoPtr pScrn); 169void IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 170unsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg); 171void IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data); 172 173/* tga_cursor.c */ 174Bool TGAHWCursorInit(ScreenPtr pScreen); 175 176/* tga_line.c */ 177 178void TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, 179 xSegment *pSeg); 180void TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 181 DDXPointPtr pptInit); 182void TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int nseg, 183 xSegment *pSeg); 184void TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 185 DDXPointPtr pptInit); 186 187/* line functions */ 188void 189TGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop, 190 unsigned int planemask); 191void 192TGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, 193 int dir); 194void 195TGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 196 int octant, int flags); 197void 198TGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 199 int octant); 200void 201TGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 202 int err); 203 204void 205TGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop, 206 unsigned int planemask, int length, 207 unsigned char *pattern); 208void 209TGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 210 int octant, int flags, int phase); 211void 212TGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 213 int err, int phase); 214 215 216 217 218#endif /* _TGA_H_ */ 219 220