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