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