tga.h revision 047944f3
1/*
2 * Copyright 1997,1998 by Alan Hourihane <alanh@fairlite.demon.co.uk>
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Alan Hourihane not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission.  Alan Hourihane makes no representations
11 * about the suitability of this software for any purpose.  It is provided
12 * "as is" without express or implied warranty.
13 *
14 * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
21 *
22 * Authors:  Alan Hourihane, <alanh@fairlite.demon.co.uk>
23 */
24/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h,v 1.18 2001/11/21 22:32:58 alanh Exp $ */
25
26#ifndef _TGA_H_
27#define _TGA_H_
28
29#include "tga_pcirename.h"
30#include "xaa.h"
31#include "xf86RamDac.h"
32
33typedef struct {
34	unsigned long tgaRegs[0x100];
35} TGARegRec, *TGARegPtr;
36
37#define TGA_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4)
38
39#define TGAPTR(p)	((TGAPtr)((p)->driverPrivate))
40
41typedef struct {
42    pciVideoPtr		PciInfo;
43#ifndef XSERVER_LIBPCIACCESS
44    PCITAG		PciTag;
45#endif
46    int			Chipset;
47    RamDacHelperRecPtr	RamDac;
48    int                 ChipRev;
49    int			HwBpp;
50    int			BppShift;
51    int			pprod;
52    CARD32		CardAddress;
53    CARD32		IOAddress;
54    CARD32		FbAddress;
55    unsigned char *     FbBase;
56    unsigned char *     IOBase;
57    unsigned char *     ClkBase; /* TGA2 */
58    unsigned char *     DACBase; /* TGA2 */
59    unsigned char *     HACKBase; /* TGA2 */
60    long		FbMapSize;
61    unsigned long	regOffset;
62    Bool		NoAccel;
63    Bool		NoXaaPolySegment;
64    Bool		Dac6Bit;
65    Bool		SyncOnGreen;
66    Bool		HWCursor;
67    Bool		UsePCIRetry;
68    int			MinClock;
69    int			MaxClock;
70    TGARegRec		SavedReg;
71    TGARegRec		ModeReg;
72    CARD32		AccelFlags;
73    RamDacRecPtr	RamDacRec;
74    XAAInfoRecPtr	AccelInfoRec;
75    xf86CursorInfoPtr   CursorInfoRec;
76    CloseScreenProcPtr	CloseScreen;
77    int                 CardType;
78    unsigned char       Bt463modeReg[59];
79    unsigned char       Bt463saveReg[59];
80    unsigned char       Ibm561modeReg[59];
81    unsigned char       Ibm561saveReg[59];
82    EntityInfoPtr       pEnt;
83    CARD32     *buffers[1];
84    unsigned int        current_rop;
85    unsigned int        current_planemask;
86    int                 transparent_pattern_p;
87    int                 blitdir;
88    int                 block_or_opaque_p;
89    int                 ce_height;
90    int                 ce_width;
91    int                 ce_x;
92    int                 ce_y;
93    int                 ce_skipleft;
94    int                 line_pattern_length;
95    CARD16              line_pattern; /* for dashed lines */
96    int                 Bpp; /* bytes per pixel */
97    int                 depthflag; /* either BPP8PACKED or BPP24 */
98    OptionInfoPtr	Options;
99} TGARec, *TGAPtr;
100
101/* ?? this is a hack for initial TGA2 support */
102struct monitor_data {
103  unsigned int max_rows;   /* Monitor setup */
104  unsigned int max_cols;
105  unsigned int pixel_freq;
106  unsigned int refresh_rate;
107  unsigned int vert_slines;
108  unsigned int vert_fp;
109  unsigned int vert_sync;
110  unsigned int vert_bp;
111  unsigned int horz_pix;
112  unsigned int horz_fp;
113  unsigned int horz_sync;
114  unsigned int horz_bp;
115  unsigned int vco_div;      /* ICS setup */
116  unsigned int ref_div;
117  unsigned int vco_pre;
118  unsigned int clk_div;
119  unsigned int vco_out_div;
120  unsigned int clk_out_en;
121  unsigned int clk_out_enX;
122  unsigned int res0;
123  unsigned int clk_sel;
124  unsigned int res1;
125  unsigned int ibm561_vco_div; /* IBM561 PLL setup */
126  unsigned int ibm561_ref;
127};
128
129extern struct monitor_data tga_crystal_table[];
130extern int tga_crystal_table_entries;
131extern struct monitor_data *tga_c_table;
132
133/* Prototypes */
134
135/* tga_dac.c */
136void DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/
137		      TGARegPtr tgaReg/*, Bool restoreFonts*/);
138void DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*,
139		   Bool saveFonts*/);
140Bool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode);
141void write_av9110(ScrnInfoPtr pScrn, unsigned int *);
142void TGA2SetupMode(ScrnInfoPtr pScrn);
143void Ibm561Init(TGAPtr pTga);
144void Bt463Init(TGAPtr pTga);
145
146/* tga_accel.c */
147Bool DEC21030AccelInit(ScreenPtr pScreen);
148
149/* BTramdac.c */
150void tgaBTOutIndReg(ScrnInfoPtr pScrn,
151		     CARD32 reg, unsigned char mask, unsigned char data);
152unsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg);
153void tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index);
154void tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index);
155void tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data);
156unsigned char tgaBTReadData(ScrnInfoPtr pScrn);
157
158void tga2BTOutIndReg(ScrnInfoPtr pScrn,
159		     CARD32 reg, unsigned char mask, unsigned char data);
160unsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg);
161void tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index);
162void tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index);
163void tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data);
164unsigned char tga2BTReadData(ScrnInfoPtr pScrn);
165
166/* BT463ramdac.c */
167void BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data);
168void BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data);
169
170/* IBM561ramdac.c */
171void IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data);
172void IBM561ramdacHWInit(ScrnInfoPtr pScrn);
173void IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data);
174unsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg);
175void IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data);
176
177/* tga_cursor.c */
178Bool TGAHWCursorInit(ScreenPtr pScreen);
179
180/* tga_line.c */
181
182void TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg,
183		    xSegment *pSeg);
184void TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
185		  DDXPointPtr pptInit);
186void TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int	nseg,
187			  xSegment *pSeg);
188void TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
189			DDXPointPtr pptInit);
190
191/* line functions */
192void
193TGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop,
194		      unsigned int planemask);
195void
196TGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len,
197			      int dir);
198void
199TGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
200		       int octant, int flags);
201void
202TGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
203		       int octant);
204void
205TGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len,
206			      int err);
207
208void
209TGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop,
210		      unsigned int planemask, int length,
211		      unsigned char *pattern);
212void
213TGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
214			int octant, int flags, int phase);
215void
216TGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len,
217			       int err, int phase);
218
219
220
221
222#endif /* _TGA_H_ */
223
224