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