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