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