17706df26Smrg/* 27706df26Smrg * Copyright 1997,1998 by Alan Hourihane <alanh@fairlite.demon.co.uk> 37706df26Smrg * 47706df26Smrg * Permission to use, copy, modify, distribute, and sell this software and its 57706df26Smrg * documentation for any purpose is hereby granted without fee, provided that 67706df26Smrg * the above copyright notice appear in all copies and that both that 77706df26Smrg * copyright notice and this permission notice appear in supporting 87706df26Smrg * documentation, and that the name of Alan Hourihane not be used in 97706df26Smrg * advertising or publicity pertaining to distribution of the software without 107706df26Smrg * specific, written prior permission. Alan Hourihane makes no representations 117706df26Smrg * about the suitability of this software for any purpose. It is provided 127706df26Smrg * "as is" without express or implied warranty. 137706df26Smrg * 147706df26Smrg * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 157706df26Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 167706df26Smrg * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR 177706df26Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 187706df26Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 197706df26Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 207706df26Smrg * PERFORMANCE OF THIS SOFTWARE. 217706df26Smrg * 227706df26Smrg * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> 237706df26Smrg */ 247706df26Smrg 257706df26Smrg#ifndef _TGA_H_ 267706df26Smrg#define _TGA_H_ 277706df26Smrg 28047944f3Smrg#include "tga_pcirename.h" 29b92e825aSmrg#ifdef HAVE_XAA_H 307706df26Smrg#include "xaa.h" 31b92e825aSmrg#endif 32556200c8Smrg#if ABI_VIDEODRV_VERSION < SET_ABI_VERSION(25, 2) 33556200c8Smrg#include "xf86RamDac.h" 34556200c8Smrg#else 35556200c8Smrg#include "xf86Cursor.h" 36556200c8Smrg#endif 377706df26Smrg 38b92e825aSmrg#include "compat-api.h" 39b92e825aSmrg 407706df26Smrgtypedef struct { 417706df26Smrg unsigned long tgaRegs[0x100]; 427706df26Smrg} TGARegRec, *TGARegPtr; 437706df26Smrg 44047944f3Smrg#define TGA_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4) 457706df26Smrg 467706df26Smrg#define TGAPTR(p) ((TGAPtr)((p)->driverPrivate)) 477706df26Smrg 487706df26Smrgtypedef struct { 497706df26Smrg pciVideoPtr PciInfo; 50047944f3Smrg#ifndef XSERVER_LIBPCIACCESS 517706df26Smrg PCITAG PciTag; 52047944f3Smrg#endif 537706df26Smrg int Chipset; 547706df26Smrg RamDacHelperRecPtr RamDac; 557706df26Smrg int ChipRev; 567706df26Smrg int HwBpp; 577706df26Smrg int BppShift; 587706df26Smrg int pprod; 597706df26Smrg CARD32 CardAddress; 607706df26Smrg CARD32 IOAddress; 617706df26Smrg CARD32 FbAddress; 627706df26Smrg unsigned char * FbBase; 637706df26Smrg unsigned char * IOBase; 647706df26Smrg unsigned char * ClkBase; /* TGA2 */ 657706df26Smrg unsigned char * DACBase; /* TGA2 */ 667706df26Smrg unsigned char * HACKBase; /* TGA2 */ 677706df26Smrg long FbMapSize; 687706df26Smrg unsigned long regOffset; 697706df26Smrg Bool NoAccel; 707706df26Smrg Bool NoXaaPolySegment; 717706df26Smrg Bool Dac6Bit; 727706df26Smrg Bool SyncOnGreen; 737706df26Smrg Bool HWCursor; 747706df26Smrg Bool UsePCIRetry; 757706df26Smrg int MinClock; 767706df26Smrg int MaxClock; 777706df26Smrg TGARegRec SavedReg; 787706df26Smrg TGARegRec ModeReg; 797706df26Smrg CARD32 AccelFlags; 807706df26Smrg RamDacRecPtr RamDacRec; 81b92e825aSmrg#ifdef HAVE_XAA_H 827706df26Smrg XAAInfoRecPtr AccelInfoRec; 83b92e825aSmrg#endif 847706df26Smrg xf86CursorInfoPtr CursorInfoRec; 857706df26Smrg CloseScreenProcPtr CloseScreen; 867706df26Smrg int CardType; 877706df26Smrg unsigned char Bt463modeReg[59]; 887706df26Smrg unsigned char Bt463saveReg[59]; 897706df26Smrg unsigned char Ibm561modeReg[59]; 907706df26Smrg unsigned char Ibm561saveReg[59]; 917706df26Smrg EntityInfoPtr pEnt; 927706df26Smrg CARD32 *buffers[1]; 937706df26Smrg unsigned int current_rop; 947706df26Smrg unsigned int current_planemask; 957706df26Smrg int transparent_pattern_p; 967706df26Smrg int blitdir; 977706df26Smrg int block_or_opaque_p; 987706df26Smrg int ce_height; 997706df26Smrg int ce_width; 1007706df26Smrg int ce_x; 1017706df26Smrg int ce_y; 1027706df26Smrg int ce_skipleft; 1037706df26Smrg int line_pattern_length; 1047706df26Smrg CARD16 line_pattern; /* for dashed lines */ 1057706df26Smrg int Bpp; /* bytes per pixel */ 1067706df26Smrg int depthflag; /* either BPP8PACKED or BPP24 */ 1077706df26Smrg OptionInfoPtr Options; 1087706df26Smrg} TGARec, *TGAPtr; 1097706df26Smrg 1107706df26Smrg/* ?? this is a hack for initial TGA2 support */ 1117706df26Smrgstruct monitor_data { 1127706df26Smrg unsigned int max_rows; /* Monitor setup */ 1137706df26Smrg unsigned int max_cols; 1147706df26Smrg unsigned int pixel_freq; 1157706df26Smrg unsigned int refresh_rate; 1167706df26Smrg unsigned int vert_slines; 1177706df26Smrg unsigned int vert_fp; 1187706df26Smrg unsigned int vert_sync; 1197706df26Smrg unsigned int vert_bp; 1207706df26Smrg unsigned int horz_pix; 1217706df26Smrg unsigned int horz_fp; 1227706df26Smrg unsigned int horz_sync; 1237706df26Smrg unsigned int horz_bp; 1247706df26Smrg unsigned int vco_div; /* ICS setup */ 1257706df26Smrg unsigned int ref_div; 1267706df26Smrg unsigned int vco_pre; 1277706df26Smrg unsigned int clk_div; 1287706df26Smrg unsigned int vco_out_div; 1297706df26Smrg unsigned int clk_out_en; 1307706df26Smrg unsigned int clk_out_enX; 1317706df26Smrg unsigned int res0; 1327706df26Smrg unsigned int clk_sel; 1337706df26Smrg unsigned int res1; 1347706df26Smrg unsigned int ibm561_vco_div; /* IBM561 PLL setup */ 1357706df26Smrg unsigned int ibm561_ref; 1367706df26Smrg}; 1377706df26Smrg 1387706df26Smrgextern struct monitor_data tga_crystal_table[]; 1397706df26Smrgextern int tga_crystal_table_entries; 1407706df26Smrgextern struct monitor_data *tga_c_table; 1417706df26Smrg 1427706df26Smrg/* Prototypes */ 1437706df26Smrg 1447706df26Smrg/* tga_dac.c */ 1457706df26Smrgvoid DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/ 1467706df26Smrg TGARegPtr tgaReg/*, Bool restoreFonts*/); 1477706df26Smrgvoid DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*, 1487706df26Smrg Bool saveFonts*/); 1497706df26SmrgBool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode); 1507706df26Smrgvoid write_av9110(ScrnInfoPtr pScrn, unsigned int *); 1517706df26Smrgvoid TGA2SetupMode(ScrnInfoPtr pScrn); 1527706df26Smrgvoid Ibm561Init(TGAPtr pTga); 1537706df26Smrgvoid Bt463Init(TGAPtr pTga); 1547706df26Smrg 1557706df26Smrg/* tga_accel.c */ 1567706df26SmrgBool DEC21030AccelInit(ScreenPtr pScreen); 1577706df26Smrg 1587706df26Smrg/* BTramdac.c */ 1597706df26Smrgvoid tgaBTOutIndReg(ScrnInfoPtr pScrn, 1607706df26Smrg CARD32 reg, unsigned char mask, unsigned char data); 1617706df26Smrgunsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 1627706df26Smrgvoid tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 1637706df26Smrgvoid tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 1647706df26Smrgvoid tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data); 1657706df26Smrgunsigned char tgaBTReadData(ScrnInfoPtr pScrn); 1667706df26Smrg 1677706df26Smrgvoid tga2BTOutIndReg(ScrnInfoPtr pScrn, 1687706df26Smrg CARD32 reg, unsigned char mask, unsigned char data); 1697706df26Smrgunsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 1707706df26Smrgvoid tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 1717706df26Smrgvoid tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 1727706df26Smrgvoid tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data); 1737706df26Smrgunsigned char tga2BTReadData(ScrnInfoPtr pScrn); 1747706df26Smrg 1757706df26Smrg/* BT463ramdac.c */ 1767706df26Smrgvoid BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 1777706df26Smrgvoid BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 1787706df26Smrg 1797706df26Smrg/* IBM561ramdac.c */ 1807706df26Smrgvoid IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 1817706df26Smrgvoid IBM561ramdacHWInit(ScrnInfoPtr pScrn); 1827706df26Smrgvoid IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 1837706df26Smrgunsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg); 1847706df26Smrgvoid IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data); 1857706df26Smrg 1867706df26Smrg/* tga_cursor.c */ 1877706df26SmrgBool TGAHWCursorInit(ScreenPtr pScreen); 1887706df26Smrg 1897706df26Smrg/* tga_line.c */ 1907706df26Smrg 1917706df26Smrgvoid TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, 1927706df26Smrg xSegment *pSeg); 1937706df26Smrgvoid TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 1947706df26Smrg DDXPointPtr pptInit); 1957706df26Smrgvoid TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int nseg, 1967706df26Smrg xSegment *pSeg); 1977706df26Smrgvoid TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 1987706df26Smrg DDXPointPtr pptInit); 1997706df26Smrg 2007706df26Smrg/* line functions */ 2017706df26Smrgvoid 2027706df26SmrgTGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop, 2037706df26Smrg unsigned int planemask); 2047706df26Smrgvoid 2057706df26SmrgTGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, 2067706df26Smrg int dir); 2077706df26Smrgvoid 2087706df26SmrgTGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2097706df26Smrg int octant, int flags); 2107706df26Smrgvoid 2117706df26SmrgTGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2127706df26Smrg int octant); 2137706df26Smrgvoid 2147706df26SmrgTGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 2157706df26Smrg int err); 2167706df26Smrg 2177706df26Smrgvoid 2187706df26SmrgTGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop, 2197706df26Smrg unsigned int planemask, int length, 2207706df26Smrg unsigned char *pattern); 2217706df26Smrgvoid 2227706df26SmrgTGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2237706df26Smrg int octant, int flags, int phase); 2247706df26Smrgvoid 2257706df26SmrgTGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 2267706df26Smrg int err, int phase); 2277706df26Smrg 2287706df26Smrg 2297706df26Smrg 2307706df26Smrg 2317706df26Smrg#endif /* _TGA_H_ */ 2327706df26Smrg 233