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