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