tga.h revision b92e825a
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
25#ifndef _TGA_H_
26#define _TGA_H_
27
28#include "tga_pcirename.h"
29#ifdef HAVE_XAA_H
30#include "xaa.h"
31#endif
32#include "xf86RamDac.h"
33
34#include "compat-api.h"
35
36typedef struct {
37	unsigned long tgaRegs[0x100];
38} TGARegRec, *TGARegPtr;
39
40#define TGA_OLDPRIV (GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 4)
41
42#define TGAPTR(p)	((TGAPtr)((p)->driverPrivate))
43
44typedef struct {
45    pciVideoPtr		PciInfo;
46#ifndef XSERVER_LIBPCIACCESS
47    PCITAG		PciTag;
48#endif
49    int			Chipset;
50    RamDacHelperRecPtr	RamDac;
51    int                 ChipRev;
52    int			HwBpp;
53    int			BppShift;
54    int			pprod;
55    CARD32		CardAddress;
56    CARD32		IOAddress;
57    CARD32		FbAddress;
58    unsigned char *     FbBase;
59    unsigned char *     IOBase;
60    unsigned char *     ClkBase; /* TGA2 */
61    unsigned char *     DACBase; /* TGA2 */
62    unsigned char *     HACKBase; /* TGA2 */
63    long		FbMapSize;
64    unsigned long	regOffset;
65    Bool		NoAccel;
66    Bool		NoXaaPolySegment;
67    Bool		Dac6Bit;
68    Bool		SyncOnGreen;
69    Bool		HWCursor;
70    Bool		UsePCIRetry;
71    int			MinClock;
72    int			MaxClock;
73    TGARegRec		SavedReg;
74    TGARegRec		ModeReg;
75    CARD32		AccelFlags;
76    RamDacRecPtr	RamDacRec;
77#ifdef HAVE_XAA_H
78    XAAInfoRecPtr	AccelInfoRec;
79#endif
80    xf86CursorInfoPtr   CursorInfoRec;
81    CloseScreenProcPtr	CloseScreen;
82    int                 CardType;
83    unsigned char       Bt463modeReg[59];
84    unsigned char       Bt463saveReg[59];
85    unsigned char       Ibm561modeReg[59];
86    unsigned char       Ibm561saveReg[59];
87    EntityInfoPtr       pEnt;
88    CARD32     *buffers[1];
89    unsigned int        current_rop;
90    unsigned int        current_planemask;
91    int                 transparent_pattern_p;
92    int                 blitdir;
93    int                 block_or_opaque_p;
94    int                 ce_height;
95    int                 ce_width;
96    int                 ce_x;
97    int                 ce_y;
98    int                 ce_skipleft;
99    int                 line_pattern_length;
100    CARD16              line_pattern; /* for dashed lines */
101    int                 Bpp; /* bytes per pixel */
102    int                 depthflag; /* either BPP8PACKED or BPP24 */
103    OptionInfoPtr	Options;
104} TGARec, *TGAPtr;
105
106/* ?? this is a hack for initial TGA2 support */
107struct monitor_data {
108  unsigned int max_rows;   /* Monitor setup */
109  unsigned int max_cols;
110  unsigned int pixel_freq;
111  unsigned int refresh_rate;
112  unsigned int vert_slines;
113  unsigned int vert_fp;
114  unsigned int vert_sync;
115  unsigned int vert_bp;
116  unsigned int horz_pix;
117  unsigned int horz_fp;
118  unsigned int horz_sync;
119  unsigned int horz_bp;
120  unsigned int vco_div;      /* ICS setup */
121  unsigned int ref_div;
122  unsigned int vco_pre;
123  unsigned int clk_div;
124  unsigned int vco_out_div;
125  unsigned int clk_out_en;
126  unsigned int clk_out_enX;
127  unsigned int res0;
128  unsigned int clk_sel;
129  unsigned int res1;
130  unsigned int ibm561_vco_div; /* IBM561 PLL setup */
131  unsigned int ibm561_ref;
132};
133
134extern struct monitor_data tga_crystal_table[];
135extern int tga_crystal_table_entries;
136extern struct monitor_data *tga_c_table;
137
138/* Prototypes */
139
140/* tga_dac.c */
141void DEC21030Restore(ScrnInfoPtr pScrn,/* vgaRegPtr vgaReg,*/
142		      TGARegPtr tgaReg/*, Bool restoreFonts*/);
143void DEC21030Save(ScrnInfoPtr pScrn, /*vgaRegPtr vgaReg,*/ TGARegPtr tgaReg/*,
144		   Bool saveFonts*/);
145Bool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode);
146void write_av9110(ScrnInfoPtr pScrn, unsigned int *);
147void TGA2SetupMode(ScrnInfoPtr pScrn);
148void Ibm561Init(TGAPtr pTga);
149void Bt463Init(TGAPtr pTga);
150
151/* tga_accel.c */
152Bool DEC21030AccelInit(ScreenPtr pScreen);
153
154/* BTramdac.c */
155void tgaBTOutIndReg(ScrnInfoPtr pScrn,
156		     CARD32 reg, unsigned char mask, unsigned char data);
157unsigned char tgaBTInIndReg(ScrnInfoPtr pScrn, CARD32 reg);
158void tgaBTWriteAddress(ScrnInfoPtr pScrn, CARD32 index);
159void tgaBTReadAddress(ScrnInfoPtr pScrn, CARD32 index);
160void tgaBTWriteData(ScrnInfoPtr pScrn, unsigned char data);
161unsigned char tgaBTReadData(ScrnInfoPtr pScrn);
162
163void tga2BTOutIndReg(ScrnInfoPtr pScrn,
164		     CARD32 reg, unsigned char mask, unsigned char data);
165unsigned char tga2BTInIndReg(ScrnInfoPtr pScrn, CARD32 reg);
166void tga2BTWriteAddress(ScrnInfoPtr pScrn, CARD32 index);
167void tga2BTReadAddress(ScrnInfoPtr pScrn, CARD32 index);
168void tga2BTWriteData(ScrnInfoPtr pScrn, unsigned char data);
169unsigned char tga2BTReadData(ScrnInfoPtr pScrn);
170
171/* BT463ramdac.c */
172void BT463ramdacSave(ScrnInfoPtr pScrn, unsigned char *data);
173void BT463ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data);
174
175/* IBM561ramdac.c */
176void IBM561ramdacSave(ScrnInfoPtr pScrn, unsigned char *data);
177void IBM561ramdacHWInit(ScrnInfoPtr pScrn);
178void IBM561ramdacRestore(ScrnInfoPtr pScrn, unsigned char *data);
179unsigned char IBM561ReadReg(ScrnInfoPtr pScrn, CARD32 reg);
180void IBM561WriteReg(ScrnInfoPtr pScrn, CARD32 reg, unsigned char data);
181
182/* tga_cursor.c */
183Bool TGAHWCursorInit(ScreenPtr pScreen);
184
185/* tga_line.c */
186
187void TGAPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg,
188		    xSegment *pSeg);
189void TGAPolyLines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
190		  DDXPointPtr pptInit);
191void TGAPolySegmentDashed(DrawablePtr pDrawable, GCPtr pGC, int	nseg,
192			  xSegment *pSeg);
193void TGAPolyLinesDashed(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
194			DDXPointPtr pptInit);
195
196/* line functions */
197void
198TGASetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop,
199		      unsigned int planemask);
200void
201TGASubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len,
202			      int dir);
203void
204TGASubsequentSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
205		       int octant, int flags);
206void
207TGASetupForClippedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
208		       int octant);
209void
210TGASubsequentClippedSolidLine(ScrnInfoPtr pScrn, int x1, int y1, int len,
211			      int err);
212
213void
214TGASetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop,
215		      unsigned int planemask, int length,
216		      unsigned char *pattern);
217void
218TGASubsequentDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2,
219			int octant, int flags, int phase);
220void
221TGASubsequentClippedDashedLine(ScrnInfoPtr pScrn, int x1, int y1, int len,
222			       int err, int phase);
223
224
225
226
227#endif /* _TGA_H_ */
228
229