tga.h revision 047944f3
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 */ 24047944f3Smrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h,v 1.18 2001/11/21 22:32:58 alanh Exp $ */ 257706df26Smrg 267706df26Smrg#ifndef _TGA_H_ 277706df26Smrg#define _TGA_H_ 287706df26Smrg 29047944f3Smrg#include "tga_pcirename.h" 307706df26Smrg#include "xaa.h" 317706df26Smrg#include "xf86RamDac.h" 327706df26Smrg 337706df26Smrgtypedef struct { 347706df26Smrg unsigned long tgaRegs[0x100]; 357706df26Smrg} TGARegRec, *TGARegPtr; 367706df26Smrg 37047944f3Smrg#define TGA_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4) 387706df26Smrg 397706df26Smrg#define TGAPTR(p) ((TGAPtr)((p)->driverPrivate)) 407706df26Smrg 417706df26Smrgtypedef struct { 427706df26Smrg pciVideoPtr PciInfo; 43047944f3Smrg#ifndef XSERVER_LIBPCIACCESS 447706df26Smrg PCITAG PciTag; 45047944f3Smrg#endif 467706df26Smrg int Chipset; 477706df26Smrg RamDacHelperRecPtr RamDac; 487706df26Smrg int ChipRev; 497706df26Smrg int HwBpp; 507706df26Smrg int BppShift; 517706df26Smrg int pprod; 527706df26Smrg CARD32 CardAddress; 537706df26Smrg CARD32 IOAddress; 547706df26Smrg CARD32 FbAddress; 557706df26Smrg unsigned char * FbBase; 567706df26Smrg unsigned char * IOBase; 577706df26Smrg unsigned char * ClkBase; /* TGA2 */ 587706df26Smrg unsigned char * DACBase; /* TGA2 */ 597706df26Smrg unsigned char * HACKBase; /* TGA2 */ 607706df26Smrg long FbMapSize; 617706df26Smrg unsigned long regOffset; 627706df26Smrg Bool NoAccel; 637706df26Smrg Bool NoXaaPolySegment; 647706df26Smrg Bool Dac6Bit; 657706df26Smrg Bool SyncOnGreen; 667706df26Smrg Bool HWCursor; 677706df26Smrg Bool UsePCIRetry; 687706df26Smrg int MinClock; 697706df26Smrg int MaxClock; 707706df26Smrg TGARegRec SavedReg; 717706df26Smrg TGARegRec ModeReg; 727706df26Smrg CARD32 AccelFlags; 737706df26Smrg RamDacRecPtr RamDacRec; 747706df26Smrg XAAInfoRecPtr AccelInfoRec; 757706df26Smrg xf86CursorInfoPtr CursorInfoRec; 767706df26Smrg CloseScreenProcPtr CloseScreen; 777706df26Smrg int CardType; 787706df26Smrg unsigned char Bt463modeReg[59]; 797706df26Smrg unsigned char Bt463saveReg[59]; 807706df26Smrg unsigned char Ibm561modeReg[59]; 817706df26Smrg unsigned char Ibm561saveReg[59]; 827706df26Smrg EntityInfoPtr pEnt; 837706df26Smrg CARD32 *buffers[1]; 847706df26Smrg unsigned int current_rop; 857706df26Smrg unsigned int current_planemask; 867706df26Smrg int transparent_pattern_p; 877706df26Smrg int blitdir; 887706df26Smrg int block_or_opaque_p; 897706df26Smrg int ce_height; 907706df26Smrg int ce_width; 917706df26Smrg int ce_x; 927706df26Smrg int ce_y; 937706df26Smrg int ce_skipleft; 947706df26Smrg int line_pattern_length; 957706df26Smrg CARD16 line_pattern; /* for dashed lines */ 967706df26Smrg int Bpp; /* bytes per pixel */ 977706df26Smrg int depthflag; /* either BPP8PACKED or BPP24 */ 987706df26Smrg OptionInfoPtr Options; 997706df26Smrg} TGARec, *TGAPtr; 1007706df26Smrg 1017706df26Smrg/* ?? this is a hack for initial TGA2 support */ 1027706df26Smrgstruct monitor_data { 1037706df26Smrg unsigned int max_rows; /* Monitor setup */ 1047706df26Smrg unsigned int max_cols; 1057706df26Smrg unsigned int pixel_freq; 1067706df26Smrg unsigned int refresh_rate; 1077706df26Smrg unsigned int vert_slines; 1087706df26Smrg unsigned int vert_fp; 1097706df26Smrg unsigned int vert_sync; 1107706df26Smrg unsigned int vert_bp; 1117706df26Smrg unsigned int horz_pix; 1127706df26Smrg unsigned int horz_fp; 1137706df26Smrg unsigned int horz_sync; 1147706df26Smrg unsigned int horz_bp; 1157706df26Smrg unsigned int vco_div; /* ICS setup */ 1167706df26Smrg unsigned int ref_div; 1177706df26Smrg unsigned int vco_pre; 1187706df26Smrg unsigned int clk_div; 1197706df26Smrg unsigned int vco_out_div; 1207706df26Smrg unsigned int clk_out_en; 1217706df26Smrg unsigned int clk_out_enX; 1227706df26Smrg unsigned int res0; 1237706df26Smrg unsigned int clk_sel; 1247706df26Smrg unsigned int res1; 1257706df26Smrg unsigned int ibm561_vco_div; /* IBM561 PLL setup */ 1267706df26Smrg unsigned int ibm561_ref; 1277706df26Smrg}; 1287706df26Smrg 1297706df26Smrgextern struct monitor_data tga_crystal_table[]; 1307706df26Smrgextern int tga_crystal_table_entries; 1317706df26Smrgextern struct monitor_data *tga_c_table; 1327706df26Smrg 1337706df26Smrg/* Prototypes */ 1347706df26Smrg 1357706df26Smrg/* tga_dac.c */ 1367706df26Smrgvoid DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/ 1377706df26Smrg TGARegPtr tgaReg/*, Bool restoreFonts*/); 1387706df26Smrgvoid DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*, 1397706df26Smrg Bool saveFonts*/); 1407706df26SmrgBool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode); 1417706df26Smrgvoid write_av9110(ScrnInfoPtr pScrn, unsigned int *); 1427706df26Smrgvoid TGA2SetupMode(ScrnInfoPtr pScrn); 1437706df26Smrgvoid Ibm561Init(TGAPtr pTga); 1447706df26Smrgvoid Bt463Init(TGAPtr pTga); 1457706df26Smrg 1467706df26Smrg/* tga_accel.c */ 1477706df26SmrgBool DEC21030AccelInit(ScreenPtr pScreen); 1487706df26Smrg 1497706df26Smrg/* BTramdac.c */ 1507706df26Smrgvoid tgaBTOutIndReg(ScrnInfoPtr pScrn, 1517706df26Smrg CARD32 reg, unsigned char mask, unsigned char data); 1527706df26Smrgunsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 1537706df26Smrgvoid tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 1547706df26Smrgvoid tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 1557706df26Smrgvoid tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data); 1567706df26Smrgunsigned char tgaBTReadData(ScrnInfoPtr pScrn); 1577706df26Smrg 1587706df26Smrgvoid tga2BTOutIndReg(ScrnInfoPtr pScrn, 1597706df26Smrg CARD32 reg, unsigned char mask, unsigned char data); 1607706df26Smrgunsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg); 1617706df26Smrgvoid tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index); 1627706df26Smrgvoid tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index); 1637706df26Smrgvoid tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data); 1647706df26Smrgunsigned char tga2BTReadData(ScrnInfoPtr pScrn); 1657706df26Smrg 1667706df26Smrg/* BT463ramdac.c */ 1677706df26Smrgvoid BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 1687706df26Smrgvoid BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 1697706df26Smrg 1707706df26Smrg/* IBM561ramdac.c */ 1717706df26Smrgvoid IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data); 1727706df26Smrgvoid IBM561ramdacHWInit(ScrnInfoPtr pScrn); 1737706df26Smrgvoid IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data); 1747706df26Smrgunsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg); 1757706df26Smrgvoid IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data); 1767706df26Smrg 1777706df26Smrg/* tga_cursor.c */ 1787706df26SmrgBool TGAHWCursorInit(ScreenPtr pScreen); 1797706df26Smrg 1807706df26Smrg/* tga_line.c */ 1817706df26Smrg 1827706df26Smrgvoid TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, 1837706df26Smrg xSegment *pSeg); 1847706df26Smrgvoid TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 1857706df26Smrg DDXPointPtr pptInit); 1867706df26Smrgvoid TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int nseg, 1877706df26Smrg xSegment *pSeg); 1887706df26Smrgvoid TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, 1897706df26Smrg DDXPointPtr pptInit); 1907706df26Smrg 1917706df26Smrg/* line functions */ 1927706df26Smrgvoid 1937706df26SmrgTGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop, 1947706df26Smrg unsigned int planemask); 1957706df26Smrgvoid 1967706df26SmrgTGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, 1977706df26Smrg int dir); 1987706df26Smrgvoid 1997706df26SmrgTGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2007706df26Smrg int octant, int flags); 2017706df26Smrgvoid 2027706df26SmrgTGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2037706df26Smrg int octant); 2047706df26Smrgvoid 2057706df26SmrgTGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 2067706df26Smrg int err); 2077706df26Smrg 2087706df26Smrgvoid 2097706df26SmrgTGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop, 2107706df26Smrg unsigned int planemask, int length, 2117706df26Smrg unsigned char *pattern); 2127706df26Smrgvoid 2137706df26SmrgTGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2, 2147706df26Smrg int octant, int flags, int phase); 2157706df26Smrgvoid 2167706df26SmrgTGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len, 2177706df26Smrg int err, int phase); 2187706df26Smrg 2197706df26Smrg 2207706df26Smrg 2217706df26Smrg 2227706df26Smrg#endif /* _TGA_H_ */ 2237706df26Smrg 224