atiregs.h revision 32b578d3
1/*
2 * Copyright 1994 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
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 copyright
7 * notice and this permission notice appear in supporting documentation, and
8 * that the name of Marc Aurele La France not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission.  Marc Aurele La France 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 * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO
16 * EVENT SHALL MARC AURELE LA FRANCE 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 * Acknowledgements:
23 *    Jake Richter, Panacea Inc., Londonderry, New Hampshire, U.S.A.
24 *    Kevin E. Martin, martin@cs.unc.edu
25 *    Tiago Gons, tiago@comosjn.hobby.nl
26 *    Rickard E. Faith, faith@cs.unc.edu
27 *    Scott Laird, lair@kimbark.uchicago.edu
28 *
29 * The intent here is to list all I/O ports for VGA (and its predecessors),
30 * ATI VGA Wonder, 8514/A, ATI Mach8, ATI Mach32 and ATI Mach64 video adapters,
31 * not just the ones in use by the ATI driver.
32 */
33
34#ifndef ___ATIREGS_H___
35#define ___ATIREGS_H___ 1
36
37#include "atiutil.h"
38
39/* I/O decoding definitions */
40#define SPARSE_IO_BASE		0x03fcu
41#define SPARSE_IO_SELECT	0xfc00u
42
43#define BLOCK_IO_BASE		0xff00u
44#define BLOCK_IO_SELECT		0x00fcu
45
46#define MM_IO_SELECT		0x03fcu
47#define BLOCK_SELECT		0x0400u
48#define DWORD_SELECT		(BLOCK_SELECT | MM_IO_SELECT)
49
50#define IO_BYTE_SELECT		0x0003u
51
52#define SPARSE_IO_PORT		(SPARSE_IO_BASE | IO_BYTE_SELECT)
53#define BLOCK_IO_PORT		(BLOCK_IO_BASE | IO_BYTE_SELECT)
54
55#define IOPortTag(_SparseIOSelect, _BlockIOSelect)	\
56	(SetBits(_SparseIOSelect, SPARSE_IO_SELECT) |	\
57	 SetBits(_BlockIOSelect, DWORD_SELECT))
58#define SparseIOTag(_IOSelect)	IOPortTag(_IOSelect, 0)
59#define BlockIOTag(_IOSelect)	IOPortTag(0, _IOSelect)
60
61/* MDA/[M]CGA/EGA/VGA I/O ports */
62#define GENVS			0x0102u		/* Write (and Read on uC only) */
63
64#define R_GENLPS		0x03b9u		/* Read */
65
66#define GENHP			0x03bfu
67
68#define ATTRX			0x03c0u
69#define ATTRD			0x03c1u
70#define GENS0			0x03c2u		/* Read */
71#define GENMO			0x03c2u		/* Write */
72#define GENENB			0x03c3u		/* Read */
73#define SEQX			0x03c4u
74#define SEQD			0x03c5u
75#define VGA_DAC_MASK		0x03c6u
76#define VGA_DAC_READ		0x03c7u
77#define VGA_DAC_WRITE		0x03c8u
78#define VGA_DAC_DATA		0x03c9u
79#define R_GENFC			0x03cau		/* Read */
80/*	?			0x03cbu */
81#define R_GENMO			0x03ccu		/* Read */
82/*	?			0x03cdu */
83#define GRAX			0x03ceu
84#define GRAD			0x03cfu
85
86#define GENB			0x03d9u
87
88#define GENLPS			0x03dcu		/* Write */
89#define KCX			0x03ddu
90#define KCD			0x03deu
91
92#define GENENA			0x46e8u		/* Write */
93
94/* I/O port base numbers */
95#define MonochromeIOBase	0x03b0u
96#define ColourIOBase		0x03d0u
97
98/* Other MDA/[M]CGA/EGA/VGA I/O ports */
99/*	?(_IOBase)		((_IOBase) + 0x00u) */	/* CRTX synonym */
100/*	?(_IOBase)		((_IOBase) + 0x01u) */	/* CRTD synonym */
101/*	?(_IOBase)		((_IOBase) + 0x02u) */	/* CRTX synonym */
102/*	?(_IOBase)		((_IOBase) + 0x03u) */	/* CRTD synonym */
103#define CRTX(_IOBase)		((_IOBase) + 0x04u)
104#define CRTD(_IOBase)		((_IOBase) + 0x05u)
105/*	?(_IOBase)		((_IOBase) + 0x06u) */
106/*	?(_IOBase)		((_IOBase) + 0x07u) */
107#define GENMC(_IOBase)		((_IOBase) + 0x08u)
108/*	?(_IOBase)		((_IOBase) + 0x09u) */	/* R_GENLPS/GENB */
109#define GENS1(_IOBase)		((_IOBase) + 0x0au)	/* Read */
110#define GENFC(_IOBase)		((_IOBase) + 0x0au)	/* Write */
111#define GENLPC(_IOBase)		((_IOBase) + 0x0bu)
112/*	?(_IOBase)		((_IOBase) + 0x0cu) */	/* /GENLPS */
113/*	?(_IOBase)		((_IOBase) + 0x0du) */	/* /KCX */
114/*	?(_IOBase)		((_IOBase) + 0x0eu) */	/* /KCD */
115/*	?(_IOBase)		((_IOBase) + 0x0fu) */	/* GENHP/ */
116
117/* 8514/A VESA approved register definitions */
118#define DISP_STAT		0x02e8u		/* Read */
119#define SENSE				0x0001u	/* Presumably belong here */
120#define VBLANK				0x0002u
121#define HORTOG				0x0004u
122#define H_TOTAL			0x02e8u		/* Write */
123#define IBM_DAC_MASK		0x02eau
124#define IBM_DAC_READ		0x02ebu
125#define IBM_DAC_WRITE		0x02ecu
126#define IBM_DAC_DATA		0x02edu
127#define H_DISP			0x06e8u		/* Write */
128#define H_SYNC_STRT		0x0ae8u		/* Write */
129#define H_SYNC_WID		0x0ee8u		/* Write */
130#define HSYNCPOL_POS			0x0000u
131#define HSYNCPOL_NEG			0x0020u
132#define H_POLARITY_POS			HSYNCPOL_POS	/* Sigh */
133#define H_POLARITY_NEG			HSYNCPOL_NEG	/* Sigh */
134#define V_TOTAL			0x12e8u		/* Write */
135#define V_DISP			0x16e8u		/* Write */
136#define V_SYNC_STRT		0x1ae8u		/* Write */
137#define V_SYNC_WID		0x1ee8u		/* Write */
138#define VSYNCPOL_POS			0x0000u
139#define VSYNCPOL_NEG			0x0020u
140#define V_POLARITY_POS			VSYNCPOL_POS	/* Sigh */
141#define V_POLARITY_NEG			VSYNCPOL_NEG	/* Sigh */
142#define DISP_CNTL		0x22e8u		/* Write */
143#define ODDBNKENAB			0x0001u
144#define MEMCFG_2			0x0000u
145#define MEMCFG_4			0x0002u
146#define MEMCFG_6			0x0004u
147#define MEMCFG_8			0x0006u
148#define DBLSCAN				0x0008u
149#define INTERLACE			0x0010u
150#define DISPEN_NC			0x0000u
151#define DISPEN_ENAB			0x0020u
152#define DISPEN_DISAB			0x0040u
153#define R_H_TOTAL		0x26e8u		/* Read */
154/*	?			0x2ae8u */
155/*	?			0x2ee8u */
156/*	?			0x32e8u */
157/*	?			0x36e8u */
158/*	?			0x3ae8u */
159/*	?			0x3ee8u */
160#define SUBSYS_STAT		0x42e8u		/* Read */
161#define VBLNKFLG			0x0001u
162#define PICKFLAG			0x0002u
163#define INVALIDIO			0x0004u
164#define GPIDLE				0x0008u
165#define MONITORID_MASK			0x0070u
166/*	MONITORID_?				0x0000u */
167#define MONITORID_8507				0x0010u
168#define MONITORID_8514				0x0020u
169/*	MONITORID_?				0x0030u */
170/*	MONITORID_?				0x0040u */
171#define MONITORID_8503				0x0050u
172#define MONITORID_8512				0x0060u
173#define MONITORID_8513				0x0060u
174#define MONITORID_NONE				0x0070u
175#define _8PLANE				0x0080u
176#define SUBSYS_CNTL		0x42e8u		/* Write */
177#define RVBLNKFLG			0x0001u
178#define RPICKFLAG			0x0002u
179#define RINVALIDIO			0x0004u
180#define RGPIDLE				0x0008u
181#define IVBLNKFLG			0x0100u
182#define IPICKFLAG			0x0200u
183#define IINVALIDIO			0x0400u
184#define IGPIDLE				0x0800u
185#define CHPTEST_NC			0x0000u
186#define CHPTEST_NORMAL			0x1000u
187#define CHPTEST_ENAB			0x2000u
188#define GPCTRL_NC			0x0000u
189#define GPCTRL_ENAB			0x4000u
190#define GPCTRL_RESET			0x8000u
191#define ROM_PAGE_SEL		0x46e8u		/* Write */
192#define ADVFUNC_CNTL		0x4ae8u		/* Write */
193#define DISABPASSTHRU			0x0001u
194#define CLOKSEL				0x0004u
195/*	?			0x4ee8u */
196#define EXT_CONFIG_0		0x52e8u		/* C & T 82C480 */
197#define EXT_CONFIG_1		0x56e8u		/* C & T 82C480 */
198#define EXT_CONFIG_2		0x5ae8u		/* C & T 82C480 */
199#define EXT_CONFIG_3		0x5ee8u		/* C & T 82C480 */
200/*	?			0x62e8u */
201/*	?			0x66e8u */
202/*	?			0x6ae8u */
203/*	?			0x6ee8u */
204/*	?			0x72e8u */
205/*	?			0x76e8u */
206/*	?			0x7ae8u */
207/*	?			0x7ee8u */
208#define CUR_Y			0x82e8u
209#define CUR_X			0x86e8u
210#define DESTY_AXSTP		0x8ae8u		/* Write */
211#define DESTX_DIASTP		0x8ee8u		/* Write */
212#define ERR_TERM		0x92e8u
213#define MAJ_AXIS_PCNT		0x96e8u		/* Write */
214#define GP_STAT			0x9ae8u		/* Read */
215#define GE_STAT			0x9ae8u		/* Alias */
216#define DATARDY				0x0100u
217#define DATA_READY			DATARDY	/* Alias */
218#define GPBUSY				0x0200u
219#define CMD			0x9ae8u		/* Write */
220#define WRTDATA				0x0001u
221#define PLANAR				0x0002u
222#define LASTPIX				0x0004u
223#define LINETYPE			0x0008u
224#define DRAW				0x0010u
225#define INC_X				0x0020u
226#define YMAJAXIS			0x0040u
227#define INC_Y				0x0080u
228#define PCDATA				0x0100u
229#define _16BIT				0x0200u
230#define CMD_NOP				0x0000u
231#define CMD_OP_MSK			0xf000u
232#define BYTSEQ					0x1000u
233#define CMD_LINE				0x2000u
234#define CMD_RECT				0x4000u
235#define CMD_RECTV1				0x6000u
236#define CMD_RECTV2				0x8000u
237#define CMD_LINEAF				0xa000u
238#define CMD_BITBLT				0xc000u
239#define SHORT_STROKE		0x9ee8u		/* Write */
240#define SSVDRAW				0x0010u
241#define VECDIR_000			0x0000u
242#define VECDIR_045			0x0020u
243#define VECDIR_090			0x0040u
244#define VECDIR_135			0x0060u
245#define VECDIR_180			0x0080u
246#define VECDIR_225			0x00a0u
247#define VECDIR_270			0x00c0u
248#define VECDIR_315			0x00e0u
249#define BKGD_COLOR		0xa2e8u		/* Write */
250#define FRGD_COLOR		0xa6e8u		/* Write */
251#define WRT_MASK		0xaae8u		/* Write */
252#define RD_MASK			0xaee8u		/* Write */
253#define COLOR_CMP		0xb2e8u		/* Write */
254#define BKGD_MIX		0xb6e8u		/* Write */
255/*					0x001fu	See MIX_* definitions below */
256#define BSS_BKGDCOL			0x0000u
257#define BSS_FRGDCOL			0x0020u
258#define BSS_PCDATA			0x0040u
259#define BSS_BITBLT			0x0060u
260#define FRGD_MIX		0xbae8u		/* Write */
261/*					0x001fu	See MIX_* definitions below */
262#define FSS_BKGDCOL			0x0000u
263#define FSS_FRGDCOL			0x0020u
264#define FSS_PCDATA			0x0040u
265#define FSS_BITBLT			0x0060u
266#define MULTIFUNC_CNTL		0xbee8u		/* Write */
267#define MIN_AXIS_PCNT			0x0000u
268#define SCISSORS_T			0x1000u
269#define SCISSORS_L			0x2000u
270#define SCISSORS_B			0x3000u
271#define SCISSORS_R			0x4000u
272#define M32_MEM_CNTL			0x5000u
273#define HORCFG_4				0x0000u
274#define HORCFG_5				0x0001u
275#define HORCFG_8				0x0002u
276#define HORCFG_10				0x0003u
277#define VRTCFG_2				0x0000u
278#define VRTCFG_4				0x0004u
279#define VRTCFG_6				0x0008u
280#define VRTCFG_8				0x000cu
281#define BUFSWP					0x0010u
282#define PATTERN_L			0x8000u
283#define PATTERN_H			0x9000u
284#define PIX_CNTL			0xa000u
285#define PLANEMODE				0x0004u
286#define COLCMPOP_F				0x0000u
287#define COLCMPOP_T				0x0008u
288#define COLCMPOP_GE				0x0010u
289#define COLCMPOP_LT				0x0018u
290#define COLCMPOP_NE				0x0020u
291#define COLCMPOP_EQ				0x0028u
292#define COLCMPOP_LE				0x0030u
293#define COLCMPOP_GT				0x0038u
294#define MIXSEL_FRGDMIX				0x0000u
295#define MIXSEL_PATT				0x0040u
296#define MIXSEL_EXPPC				0x0080u
297#define MIXSEL_EXPBLT				0x00c0u
298/*	?			0xc2e8u */
299/*	?			0xc6e8u */
300/*	?			0xcae8u */
301/*	?			0xcee8u */
302/*	?			0xd2e8u */
303/*	?			0xd6e8u */
304/*	?			0xdae8u */
305/*	?			0xdee8u */
306#define PIX_TRANS		0xe2e8u
307/*	?			0xe6e8u */
308/*	?			0xeae8u */
309/*	?			0xeee8u */
310/*	?			0xf2e8u */
311/*	?			0xf6e8u */
312/*	?			0xfae8u */
313/*	?			0xfee8u */
314
315/* ATI Mach8 & Mach32 register definitions */
316#define OVERSCAN_COLOR_8	0x02eeu		/* Write */	/* Mach32 */
317#define OVERSCAN_BLUE_24	0x02efu		/* Write */	/* Mach32 */
318#define OVERSCAN_GREEN_24	0x06eeu		/* Write */	/* Mach32 */
319#define OVERSCAN_RED_24		0x06efu		/* Write */	/* Mach32 */
320#define CURSOR_OFFSET_LO	0x0aeeu		/* Write */	/* Mach32 */
321#define CURSOR_OFFSET_HI	0x0eeeu		/* Write */	/* Mach32 */
322#define CONFIG_STATUS_1		0x12eeu		/* Read */
323#define CLK_MODE			0x0001u			/* Mach8 */
324#define BUS_16				0x0002u			/* Mach8 */
325#define MC_BUS				0x0004u			/* Mach8 */
326#define EEPROM_ENA			0x0008u			/* Mach8 */
327#define DRAM_ENA			0x0010u			/* Mach8 */
328#define MEM_INSTALLED			0x0060u			/* Mach8 */
329#define ROM_ENA				0x0080u			/* Mach8 */
330#define ROM_PAGE_ENA			0x0100u			/* Mach8 */
331#define ROM_LOCATION			0xfe00u			/* Mach8 */
332#define _8514_ONLY			0x0001u			/* Mach32 */
333#define BUS_TYPE			0x000eu			/* Mach32 */
334#define ISA_16_BIT				0x0000u		/* Mach32 */
335#define EISA					0x0002u		/* Mach32 */
336#define MICRO_C_16_BIT				0x0004u		/* Mach32 */
337#define MICRO_C_8_BIT				0x0006u		/* Mach32 */
338#define LOCAL_386SX				0x0008u		/* Mach32 */
339#define LOCAL_386DX				0x000au		/* Mach32 */
340#define LOCAL_486				0x000cu		/* Mach32 */
341#define PCI					0x000eu		/* Mach32 */
342#define MEM_TYPE			0x0070u			/* Mach32 */
343#define CHIP_DIS			0x0080u			/* Mach32 */
344#define TST_VCTR_ENA			0x0100u			/* Mach32 */
345#define DACTYPE				0x0e00u			/* Mach32 */
346#define MC_ADR_DECODE			0x1000u			/* Mach32 */
347#define CARD_ID				0xe000u			/* Mach32 */
348#define HORZ_CURSOR_POSN	0x12eeu		/* Write */	/* Mach32 */
349#define CONFIG_STATUS_2		0x16eeu		/* Read */
350#define SHARE_CLOCK			0x0001u			/* Mach8 */
351#define HIRES_BOOT			0x0002u			/* Mach8 */
352#define EPROM_16_ENA			0x0004u			/* Mach8 */
353#define WRITE_PER_BIT			0x0008u			/* Mach8 */
354#define FLASH_ENA			0x0010u			/* Mach8 */
355#define SLOW_SEQ_EN			0x0001u			/* Mach32 */
356#define MEM_ADDR_DIS			0x0002u			/* Mach32 */
357#define ISA_16_ENA			0x0004u			/* Mach32 */
358#define KOR_TXT_MODE_ENA		0x0008u			/* Mach32 */
359#define LOCAL_BUS_SUPPORT		0x0030u			/* Mach32 */
360#define LOCAL_BUS_CONFIG_2		0x0040u			/* Mach32 */
361#define LOCAL_BUS_RD_DLY_ENA		0x0080u			/* Mach32 */
362#define LOCAL_DAC_EN			0x0100u			/* Mach32 */
363#define LOCAL_RDY_EN			0x0200u			/* Mach32 */
364#define EEPROM_ADR_SEL			0x0400u			/* Mach32 */
365#define GE_STRAP_SEL			0x0800u			/* Mach32 */
366#define VESA_RDY			0x1000u			/* Mach32 */
367#define Z4GB				0x2000u			/* Mach32 */
368#define LOC2_MDRAM			0x4000u			/* Mach32 */
369#define VERT_CURSOR_POSN	0x16eeu		/* Write */	/* Mach32 */
370#define FIFO_TEST_DATA		0x1aeeu		/* Read */	/* Mach32 */
371#define CURSOR_COLOR_0		0x1aeeu		/* Write */	/* Mach32 */
372#define CURSOR_COLOR_1		0x1aefu		/* Write */	/* Mach32 */
373#define HORZ_CURSOR_OFFSET	0x1eeeu		/* Write */	/* Mach32 */
374#define VERT_CURSOR_OFFSET	0x1eefu		/* Write */	/* Mach32 */
375#define PCI_CNTL		0x22eeu				/* Mach32-PCI */
376#define CRT_PITCH		0x26eeu		/* Write */
377#define CRT_OFFSET_LO		0x2aeeu		/* Write */
378#define CRT_OFFSET_HI		0x2eeeu		/* Write */
379#define LOCAL_CNTL		0x32eeu				/* Mach32 */
380#define FIFO_OPT		0x36eeu		/* Write */	/* Mach8 */
381#define MISC_OPTIONS		0x36eeu				/* Mach32 */
382#define W_STATE_ENA			0x0000u			/* Mach32 */
383#define HOST_8_ENA			0x0001u			/* Mach32 */
384#define MEM_SIZE_ALIAS			0x000cu			/* Mach32 */
385#define MEM_SIZE_512K				0x0000u		/* Mach32 */
386#define MEM_SIZE_1M				0x0004u		/* Mach32 */
387#define MEM_SIZE_2M				0x0008u		/* Mach32 */
388#define MEM_SIZE_4M				0x000cu		/* Mach32 */
389#define DISABLE_VGA			0x0010u			/* Mach32 */
390#define _16_BIT_IO			0x0020u			/* Mach32 */
391#define DISABLE_DAC			0x0040u			/* Mach32 */
392#define DLY_LATCH_ENA			0x0080u			/* Mach32 */
393#define TEST_MODE			0x0100u			/* Mach32 */
394#define BLK_WR_ENA			0x0400u			/* Mach32 */
395#define _64_DRAW_ENA			0x0800u			/* Mach32 */
396#define FIFO_TEST_TAG		0x3aeeu		/* Read */	/* Mach32 */
397#define EXT_CURSOR_COLOR_0	0x3aeeu		/* Write */	/* Mach32 */
398#define EXT_CURSOR_COLOR_1	0x3eeeu		/* Write */	/* Mach32 */
399#define MEM_BNDRY		0x42eeu				/* Mach32 */
400#define MEM_PAGE_BNDRY			0x000fu			/* Mach32 */
401#define MEM_BNDRY_ENA			0x0010u			/* Mach32 */
402#define SHADOW_CTL		0x46eeu		/* Write */
403#define CLOCK_SEL		0x4aeeu
404/*	DISABPASSTHRU			0x0001u	See ADVFUNC_CNTL */
405#define VFIFO_DEPTH_1			0x0100u			/* Mach32 */
406#define VFIFO_DEPTH_2			0x0200u			/* Mach32 */
407#define VFIFO_DEPTH_3			0x0300u			/* Mach32 */
408#define VFIFO_DEPTH_4			0x0400u			/* Mach32 */
409#define VFIFO_DEPTH_5			0x0500u			/* Mach32 */
410#define VFIFO_DEPTH_6			0x0600u			/* Mach32 */
411#define VFIFO_DEPTH_7			0x0700u			/* Mach32 */
412#define VFIFO_DEPTH_8			0x0800u			/* Mach32 */
413#define VFIFO_DEPTH_9			0x0900u			/* Mach32 */
414#define VFIFO_DEPTH_A			0x0a00u			/* Mach32 */
415#define VFIFO_DEPTH_B			0x0b00u			/* Mach32 */
416#define VFIFO_DEPTH_C			0x0c00u			/* Mach32 */
417#define VFIFO_DEPTH_D			0x0d00u			/* Mach32 */
418#define VFIFO_DEPTH_E			0x0e00u			/* Mach32 */
419#define VFIFO_DEPTH_F			0x0f00u			/* Mach32 */
420#define COMPOSITE_SYNC			0x1000u
421/*	?			0x4eeeu */
422#define ROM_ADDR_1		0x52eeu
423#define BIOS_BASE_SEGMENT		0x007fu			/* Mach32 */
424/*	?				0xff80u */		/* Mach32 */
425#define ROM_ADDR_2		0x56eeu		/* Sick ... */
426#define SHADOW_SET		0x5aeeu		/* Write */
427#define MEM_CFG			0x5eeeu				/* Mach32 */
428#define MEM_APERT_SEL			0x0003u			/* Mach32 */
429#define MEM_APERT_PAGE			0x000cu			/* Mach32 */
430#define MEM_APERT_LOC			0xfff0u			/* Mach32 */
431#define EXT_GE_STATUS		0x62eeu		/* Read */	/* Mach32 */
432#define HORZ_OVERSCAN		0x62eeu		/* Write */	/* Mach32 */
433#define VERT_OVERSCAN		0x66eeu		/* Write */	/* Mach32 */
434#define MAX_WAITSTATES		0x6aeeu
435#define GE_OFFSET_LO		0x6eeeu		/* Write */
436#define BOUNDS_LEFT		0x72eeu		/* Read */
437#define GE_OFFSET_HI		0x72eeu		/* Write */
438#define BOUNDS_TOP		0x76eeu		/* Read */
439#define GE_PITCH		0x76eeu		/* Write */
440#define BOUNDS_RIGHT		0x7aeeu		/* Read */
441#define EXT_GE_CONFIG		0x7aeeu		/* Write */	/* Mach32 */
442#define MONITOR_ALIAS			0x0007u			/* Mach32 */
443/*	MONITOR_?				0x0000u */	/* Mach32 */
444#define MONITOR_8507				0x0001u		/* Mach32 */
445#define MONITOR_8514				0x0002u		/* Mach32 */
446/*	MONITOR_?				0x0003u */	/* Mach32 */
447/*	MONITOR_?				0x0004u */	/* Mach32 */
448#define MONITOR_8503				0x0005u		/* Mach32 */
449#define MONITOR_8512				0x0006u		/* Mach32 */
450#define MONITOR_8513				0x0006u		/* Mach32 */
451#define MONITOR_NONE				0x0007u		/* Mach32 */
452#define ALIAS_ENA			0x0008u			/* Mach32 */
453#define PIXEL_WIDTH_4			0x0000u			/* Mach32 */
454#define PIXEL_WIDTH_8			0x0010u			/* Mach32 */
455#define PIXEL_WIDTH_16			0x0020u			/* Mach32 */
456#define PIXEL_WIDTH_24			0x0030u			/* Mach32 */
457#define RGB16_555			0x0000u			/* Mach32 */
458#define RGB16_565			0x0040u			/* Mach32 */
459#define RGB16_655			0x0080u			/* Mach32 */
460#define RGB16_664			0x00c0u			/* Mach32 */
461#define MULTIPLEX_PIXELS		0x0100u			/* Mach32 */
462#define RGB24				0x0000u			/* Mach32 */
463#define RGBx24				0x0200u			/* Mach32 */
464#define BGR24				0x0400u			/* Mach32 */
465#define xBGR24				0x0600u			/* Mach32 */
466#define DAC_8_BIT_EN			0x4000u			/* Mach32 */
467#define ORDER_16BPP_565			RGB16_565		/* Mach32 */
468#define BOUNDS_BOTTOM		0x7eeeu		/* Read */
469#define MISC_CNTL		0x7eeeu		/* Write */	/* Mach32 */
470#define PATT_DATA_INDEX		0x82eeu
471/*	?			0x86eeu */
472/*	?			0x8aeeu */
473#define R_EXT_GE_CONFIG		0x8eeeu		/* Read */	/* Mach32 */
474#define PATT_DATA		0x8eeeu		/* Write */
475#define R_MISC_CNTL		0x92eeu		/* Read */	/* Mach32 */
476#define BRES_COUNT		0x96eeu
477#define EXT_FIFO_STATUS		0x9aeeu		/* Read */
478#define LINEDRAW_INDEX		0x9aeeu		/* Write */
479/*	?			0x9eeeu */
480#define LINEDRAW_OPT		0xa2eeu
481#define BOUNDS_RESET			0x0100u
482#define CLIP_MODE_0			0x0000u	/* Clip exception disabled */
483#define CLIP_MODE_1			0x0200u	/* Line segments */
484#define CLIP_MODE_2			0x0400u	/* Polygon boundary lines */
485#define CLIP_MODE_3			0x0600u	/* Patterned lines */
486#define DEST_X_START		0xa6eeu		/* Write */
487#define DEST_X_END		0xaaeeu		/* Write */
488#define DEST_Y_END		0xaeeeu		/* Write */
489#define R_H_TOTAL_DISP		0xb2eeu		/* Read */	/* Mach32 */
490#define SRC_X_STRT		0xb2eeu		/* Write */
491#define R_H_SYNC_STRT		0xb6eeu		/* Read */	/* Mach32 */
492#define ALU_BG_FN		0xb6eeu		/* Write */
493#define R_H_SYNC_WID		0xbaeeu		/* Read */	/* Mach32 */
494#define ALU_FG_FN		0xbaeeu		/* Write */
495#define SRC_X_END		0xbeeeu		/* Write */
496#define R_V_TOTAL		0xc2eeu		/* Read */
497#define SRC_Y_DIR		0xc2eeu		/* Write */
498#define R_V_DISP		0xc6eeu		/* Read */	/* Mach32 */
499#define EXT_SHORT_STROKE	0xc6eeu		/* Write */
500#define R_V_SYNC_STRT		0xcaeeu		/* Read */	/* Mach32 */
501#define SCAN_X			0xcaeeu		/* Write */
502#define VERT_LINE_CNTR		0xceeeu		/* Read */	/* Mach32 */
503#define DP_CONFIG		0xceeeu		/* Write */
504#define READ_WRITE			0x0001u
505#define DATA_WIDTH			0x0200u
506#define DATA_ORDER			0x1000u
507#define FG_COLOR_SRC_FG			0x2000u
508#define FG_COLOR_SRC_BLIT		0x6000u
509#define R_V_SYNC_WID		0xd2eeu		/* Read */
510#define PATT_LENGTH		0xd2eeu		/* Write */
511#define PATT_INDEX		0xd6eeu		/* Write */
512#define READ_SRC_X		0xdaeeu		/* Read */	/* Mach32 */
513#define EXT_SCISSOR_L		0xdaeeu		/* Write */
514#define READ_SRC_Y		0xdeeeu		/* Read */	/* Mach32 */
515#define EXT_SCISSOR_T		0xdeeeu		/* Write */
516#define EXT_SCISSOR_R		0xe2eeu		/* Write */
517#define EXT_SCISSOR_B		0xe6eeu		/* Write */
518/*	?			0xeaeeu */
519#define DEST_COMP_FN		0xeeeeu		/* Write */
520#define DEST_COLOR_CMP_MASK	0xf2eeu		/* Write */	/* Mach32 */
521/*	?			0xf6eeu */
522#define CHIP_ID			0xfaeeu		/* Read */	/* Mach32 */
523#define CHIP_CODE_0			0x001fu			/* Mach32 */
524#define CHIP_CODE_1			0x03e0u			/* Mach32 */
525#define CHIP_CLASS			0x0c00u			/* Mach32 */
526#define CHIP_REV			0xf000u			/* Mach32 */
527#define LINEDRAW		0xfeeeu		/* Write */
528
529/* ATI Mach64 register definitions */
530#define CRTC_H_TOTAL_DISP	IOPortTag(0x00u, 0x00u)
531#define CRTC_H_TOTAL			0x000001fful
532/*	?				0x0000fe00ul */
533#define CRTC_H_DISP			0x01ff0000ul
534/*	?				0xfe000000ul */
535#define CRTC_H_SYNC_STRT_WID	IOPortTag(0x01u, 0x01u)
536#define CRTC_H_SYNC_STRT		0x000000fful
537#define CRTC_H_SYNC_DLY			0x00000700ul
538/*	?				0x00000800ul */
539#define CRTC_H_SYNC_STRT_HI		0x00001000ul
540/*	?				0x0000e000ul */
541#define CRTC_H_SYNC_WID			0x001f0000ul
542#define CRTC_H_SYNC_POL			0x00200000ul
543/*	?				0xffc00000ul */
544#define CRTC_V_TOTAL_DISP	IOPortTag(0x02u, 0x02u)
545#define CRTC_V_TOTAL			0x000007fful
546/*	?				0x0000f800ul */
547#define CRTC_V_DISP			0x07ff0000ul
548/*	?				0xf8000000ul */
549#define CRTC_V_SYNC_STRT_WID	IOPortTag(0x03u, 0x03u)
550#define CRTC_V_SYNC_STRT		0x000007fful
551/*	?				0x0000f800ul */
552#define CRTC_V_SYNC_WID			0x001f0000ul
553#define CRTC_V_SYNC_END_VGA		0x000f0000ul
554#define CRTC_V_SYNC_POL			0x00200000ul
555/*	?				0xffc00000ul */
556#define CRTC_VLINE_CRNT_VLINE	IOPortTag(0x04u, 0x04u)
557#define CRTC_VLINE			0x000007fful
558/*	?				0x0000f800ul */
559#define CRTC_CRNT_VLINE			0x07ff0000ul
560/*	?				0xf8000000ul */
561#define CRTC_OFF_PITCH		IOPortTag(0x05u, 0x05u)
562#define CRTC_OFFSET			0x000ffffful
563#define CRTC_OFFSET_VGA			0x0003fffful
564#define CRTC_OFFSET_LOCK		0x00100000ul	/* XC/XL */
565/*	?				0x00200000ul */
566#define CRTC_PITCH			0xffc00000ul
567#define CRTC_INT_CNTL		IOPortTag(0x06u, 0x06u)
568#define CRTC_VBLANK			0x00000001ul
569#define CRTC_VBLANK_INT_EN		0x00000002ul
570#define CRTC_VBLANK_INT			0x00000004ul
571#define CRTC_VLINE_INT_EN		0x00000008ul
572#define CRTC_VLINE_INT			0x00000010ul
573#define CRTC_VLINE_SYNC			0x00000020ul
574#define CRTC_FRAME			0x00000040ul
575#define CRTC_SNAPSHOT_INT_EN		0x00000080ul	/* GTPro */
576#define CRTC_SNAPSHOT_INT		0x00000100ul	/* GTPro */
577#define CRTC_I2C_INT_EN			0x00000200ul	/* GTPro */
578#define CRTC_I2C_INT			0x00000400ul	/* GTPro */
579#define CRTC2_VBLANK			0x00000800ul	/* LTPro */
580#define CRTC2_VBLANK_INT_EN		0x00001000ul	/* LTPro */
581#define CRTC2_VBLANK_INT		0x00002000ul	/* LTPro */
582#define CRTC2_VLINE_INT_EN		0x00004000ul	/* LTPro */
583#define CRTC2_VLINE_INT			0x00008000ul	/* LTPro */
584#define CRTC_CAPBUF0_INT_EN		0x00010000ul	/* VT/GT */
585#define CRTC_CAPBUF0_INT		0x00020000ul	/* VT/GT */
586#define CRTC_CAPBUF1_INT_EN		0x00040000ul	/* VT/GT */
587#define CRTC_CAPBUF1_INT		0x00080000ul	/* VT/GT */
588#define CRTC_OVERLAY_EOF_INT_EN		0x00100000ul	/* VT/GT */
589#define CRTC_OVERLAY_EOF_INT		0x00200000ul	/* VT/GT */
590#define CRTC_ONESHOT_CAP_INT_EN		0x00400000ul	/* VT/GT */
591#define CRTC_ONESHOT_CAP_INT		0x00800000ul	/* VT/GT */
592#define CRTC_BUSMASTER_EOL_INT_EN	0x01000000ul	/* VTB/GTB/LT */
593#define CRTC_BUSMASTER_EOL_INT		0x02000000ul	/* VTB/GTB/LT */
594#define CRTC_GP_INT_EN			0x04000000ul	/* VTB/GTB/LT */
595#define CRTC_GP_INT			0x08000000ul	/* VTB/GTB/LT */
596#define CRTC2_VLINE_SYNC		0x10000000ul	/* LTPro */
597#define CRTC_SNAPSHOT2_INT_EN		0x20000000ul	/* LTPro */
598#define CRTC_SNAPSHOT2_INT		0x40000000ul	/* LTPro */
599#define CRTC_VBLANK_BIT2_INT		0x80000000ul	/* GTPro */
600#define CRTC_INT_ENS	/* *** UPDATE ME *** */		\
601		(					\
602			CRTC_VBLANK_INT_EN |		\
603			CRTC_VLINE_INT_EN |		\
604			CRTC_SNAPSHOT_INT_EN |		\
605			CRTC_I2C_INT_EN |		\
606			CRTC2_VBLANK_INT_EN |		\
607			CRTC2_VLINE_INT_EN |		\
608			CRTC_CAPBUF0_INT_EN |		\
609			CRTC_CAPBUF1_INT_EN |		\
610			CRTC_OVERLAY_EOF_INT_EN |	\
611			CRTC_ONESHOT_CAP_INT_EN |	\
612			CRTC_BUSMASTER_EOL_INT_EN |	\
613			CRTC_GP_INT_EN |		\
614			CRTC_SNAPSHOT2_INT_EN |		\
615			0				\
616		)
617#define CRTC_INT_ACKS	/* *** UPDATE ME *** */		\
618		(					\
619			CRTC_VBLANK_INT |		\
620			CRTC_VLINE_INT |		\
621			CRTC_SNAPSHOT_INT |		\
622			CRTC_I2C_INT |			\
623			CRTC2_VBLANK_INT |		\
624			CRTC2_VLINE_INT |		\
625			CRTC_CAPBUF0_INT |		\
626			CRTC_CAPBUF1_INT |		\
627			CRTC_OVERLAY_EOF_INT |		\
628			CRTC_ONESHOT_CAP_INT |		\
629			CRTC_BUSMASTER_EOL_INT |	\
630			CRTC_GP_INT |			\
631			CRTC_SNAPSHOT2_INT |		\
632			CRTC_VBLANK_BIT2_INT |		\
633			0				\
634		)
635#define CRTC_GEN_CNTL		IOPortTag(0x07u, 0x07u)
636#define CRTC_DBL_SCAN_EN		0x00000001ul
637#define CRTC_INTERLACE_EN		0x00000002ul
638#define CRTC_HSYNC_DIS			0x00000004ul
639#define CRTC_VSYNC_DIS			0x00000008ul
640#define CRTC_CSYNC_EN			0x00000010ul
641#define CRTC_PIX_BY_2_EN		0x00000020ul
642#define CRTC2_DBL_SCAN_EN		0x00000020ul	/* LTPro */
643#define CRTC_DISPLAY_DIS		0x00000040ul
644#define CRTC_VGA_XOVERSCAN		0x00000080ul
645#define CRTC_PIX_WIDTH			0x00000700ul
646#define CRTC_BYTE_PIX_ORDER		0x00000800ul
647#define CRTC_VSYNC_INT_EN		0x00001000ul	/* XC/XL */
648#define CRTC_VSYNC_INT			0x00002000ul	/* XC/XL */
649#define CRTC_FIFO_OVERFILL		0x0000c000ul	/* VT/GT */
650#define CRTC2_VSYNC_INT_EN		0x00004000ul	/* XC/XL */
651#define CRTC2_VSYNC_INT			0x00008000ul	/* XC/XL */
652#define CRTC_FIFO_LWM			0x000f0000ul
653#define CRTC_HVSYNC_IO_DRIVE		0x00010000ul	/* XC/XL */
654#define CRTC2_PIX_WIDTH			0x000e0000ul	/* LTPro */
655#define CRTC_VGA_128KAP_PAGING		0x00100000ul	/* VT/GT */
656#define CRTC_DISPREQ_ONLY		0x00200000ul	/* VT/GT */
657#define CRTC_VFC_SYNC_TRISTATE		0x00200000ul	/* VTB/GTB/LT */
658#define CRTC2_EN			0x00200000ul	/* LTPro */
659#define CRTC_LOCK_REGS			0x00400000ul	/* VT/GT */
660#define CRTC_SYNC_TRISTATE		0x00800000ul	/* VT/GT */
661#define CRTC_EXT_DISP_EN		0x01000000ul
662#define CRTC_EN				0x02000000ul
663#define CRTC_DISP_REQ_EN		0x04000000ul
664#define CRTC_VGA_LINEAR			0x08000000ul
665#define CRTC_VSYNC_FALL_EDGE		0x10000000ul
666#define CRTC_VGA_TEXT_132		0x20000000ul
667#define CRTC_CNT_EN			0x40000000ul
668#define CRTC_CUR_B_TEST			0x80000000ul
669#define CRTC_INT_ENS_X	/* *** UPDATE ME *** */		\
670		(					\
671			CRTC_VSYNC_INT_EN |		\
672			CRTC2_VSYNC_INT_EN |		\
673			0				\
674		)
675#define CRTC_INT_ACKS_X	/* *** UPDATE ME *** */		\
676		(					\
677			CRTC_VSYNC_INT |		\
678			CRTC2_VSYNC_INT |		\
679			0				\
680		)
681#define DSP_CONFIG		BlockIOTag(0x08u)	/* VTB/GTB/LT */
682#define DSP_XCLKS_PER_QW		0x00003ffful
683/*	?				0x00004000ul */
684#define DSP_FLUSH_WB			0x00008000ul
685#define DSP_LOOP_LATENCY		0x000f0000ul
686#define DSP_PRECISION			0x00700000ul
687/*	?				0xff800000ul */
688#define DSP_ON_OFF		BlockIOTag(0x09u)	/* VTB/GTB/LT */
689#define DSP_OFF				0x000007fful
690/*	?				0x0000f800ul */
691#define DSP_ON				0x07ff0000ul
692/*	?				0xf8000000ul */
693#define TIMER_CONFIG		BlockIOTag(0x0au)	/* VTB/GTB/LT */
694#define MEM_BUF_CNTL		BlockIOTag(0x0bu)	/* VTB/GTB/LT */
695#define Z_WB_FLUSH			0x00000007ul
696#define Z_WB_FLUSH_P			0x0000000ful	/* GTPro */
697#define VID_WB_FLUSH_P			0x000000f0ul	/* GTPro */
698#define VID_WB_FLUSH_MSB		0x00000100ul
699#define GUI_WB_FLUSH_P			0x00001f00ul	/* GTPro */
700#define HST_WB_FLUSH_P			0x0000e000ul	/* GTPro */
701#define SCL_MIN_BURST_LEN		0x001f0000ul
702#define SCL_THRESH			0x003f0000ul	/* GTPro */
703/*	?				0x00400000ul */
704#define INVALIDATE_RB_CACHE		0x00800000ul
705#define HST_WB_FLUSH			0x03000000ul
706#define VID_WB_FLUSH			0x1c000000ul
707#define GUI_WB_FLUSH			0xe0000000ul
708#define SHARED_CNTL		BlockIOTag(0x0cu)	/* VTB/GTB/LT */
709#define SHARED_MEM_CONFIG	BlockIOTag(0x0du)	/* VTB/GTB/LT */
710#define MEM_ADDR_CONFIG		BlockIOTag(0x0du)	/* GTPro */
711#define SHARED_CNTL_CTD		BlockIOTag(0x0eu)	/* CTD */
712/*	?				0x00fffffful */
713#define CTD_FIFO5			0x01000000ul
714/*	?				0xfe000000ul */
715#define CRT_TRAP		BlockIOTag(0x0eu)	/* VTB/GTB/LT */
716#define DSTN_CONTROL		BlockIOTag(0x0fu)	/* LT */
717#define I2C_CNTL_0		BlockIOTag(0x0fu)	/* GTPro */
718#define I2C_CNTL_STAT			0x0000000ful
719#define I2C_CNTL_DONE				0x00000001ul
720#define I2C_CNTL_NACK				0x00000002ul
721#define I2C_CNTL_HALT				0x00000004ul
722#define I2C_CNTL_FULL				0x00000008ul
723/*	?				0x00000010ul */
724#define I2C_CNTL_HPTR_RST		0x00000020ul
725/*	?				0x000000c0ul */
726#define I2C_CNTL_START			0x00000100ul
727#define I2C_CNTL_STOP			0x00000200ul
728#define I2C_CNTL_GO			0x00000400ul
729#define I2C_CNTL_RECEIVE		0x00000800ul
730#define I2C_CNTL_ABORT			0x00001000ul
731#define I2C_CNTL_INT_EN			0x00002000ul
732#define I2C_CNTL_SCL			0x00004000ul
733#define I2C_CNTL_SDA			0x00008000ul
734#define I2C_CNTL_M_FACTOR		0x00ff0000ul
735#define I2C_CNTL_N_FACTOR		0xff000000ul
736#define OVR_CLR			IOPortTag(0x08u, 0x10u)
737#define OVR_CLR_8			0x000000fful
738#define OVR_CLR_B			0x0000ff00ul
739#define OVR_CLR_G			0x00ff0000ul
740#define OVR_CLR_R			0xff000000ul
741#define OVR_WID_LEFT_RIGHT	IOPortTag(0x09u, 0x11u)
742#define OVR_WID_LEFT			0x0000003ful	/* 0x0f on <LT */
743/*	?				0x0000ffc0ul */
744#define OVR_WID_RIGHT			0x003f0000ul	/* 0x0f0000 on <LT */
745/*	?				0xffc00000ul */
746#define OVR_WID_TOP_BOTTOM	IOPortTag(0x0au, 0x12u)
747#define OVR_WID_TOP			0x000001fful	/* 0x00ff on <LT */
748/*	?				0x0000fe00ul */
749#define OVR_WID_BOTTOM			0x01ff0000ul	/* 0x00ff0000 on <LT */
750/*	?				0xfe000000ul */
751#define VGA_DSP_CONFIG		BlockIOTag(0x13u)	/* VTB/GTB/LT */
752#define VGA_DSP_XCLKS_PER_QW		DSP_XCLKS_PER_QW
753/*	?				0x000fc000ul */
754#define VGA_DSP_PREC_PCLKBY2		0x00700000ul
755/*	?				0x00800000ul */
756#define VGA_DSP_PREC_PCLK		0x07000000ul
757/*	?				0xf8000000ul */
758#define VGA_DSP_ON_OFF		BlockIOTag(0x14u)	/* VTB/GTB/LT */
759#define VGA_DSP_OFF			DSP_OFF
760/*	?				0x0000f800ul */
761#define VGA_DSP_ON			DSP_ON
762/*	?				0xf8000000ul */
763#define DSP2_CONFIG		BlockIOTag(0x15u)	/* LTPro */
764#define DSP2_ON_OFF		BlockIOTag(0x16u)	/* LTPro */
765#define EXT_CRTC_GEN_CNTL	BlockIOTag(0x17u)	/* VT-A4 (W) */
766#define CRTC2_OFF_PITCH		BlockIOTag(0x17u)	/* LTPro */
767#define CUR_CLR0		IOPortTag(0x0bu, 0x18u)
768#define CUR_CLR1		IOPortTag(0x0cu, 0x19u)
769/* These are for both CUR_CLR0 and CUR_CLR1 */
770#define CUR_CLR_I			0x000000fful
771#define CUR_CLR_B			0x0000ff00ul
772#define CUR_CLR_G			0x00ff0000ul
773#define CUR_CLR_R			0xff000000ul
774#define CUR_CLR				(CUR_CLR_R | CUR_CLR_G | CUR_CLR_B)
775#define CUR_OFFSET		IOPortTag(0x0du, 0x1au)
776#define CUR_HORZ_VERT_POSN	IOPortTag(0x0eu, 0x1bu)
777#define CUR_HORZ_POSN			0x000007fful
778/*	?				0x0000f800ul */
779#define CUR_VERT_POSN			0x07ff0000ul
780/*	?				0xf8000000ul */
781#define CUR_HORZ_VERT_OFF	IOPortTag(0x0fu, 0x1cu)
782#define CUR_HORZ_OFF			0x0000007ful
783/*	?				0x0000ff80ul */
784#define CUR_VERT_OFF			0x007f0000ul
785/*	?				0xff800000ul */
786#define CONFIG_PANEL		BlockIOTag(0x1du)	/* LT */
787#define PANEL_FORMAT			0x00000007ul
788/*	?				0x00000008ul */
789#define PANEL_TYPE			0x000000f0ul
790#define NO_OF_GREY			0x00000700ul
791#define MOD_GEN				0x00001800ul
792#define EXT_LVDS_CLK			0x00001800ul	/* LTPro */
793#define BLINK_RATE			0x00006000ul
794#define BLINK_RATE_PRO			0x00002000ul	/* LTPro */
795#define DONT_SHADOW_HEND		0x00004000ul	/* LTPro */
796#define DONT_USE_F32KHZ			0x00008000ul
797#define LCD_IO_DRIVE			0x00008000ul	/* XC/XL */
798#define FP_POL				0x00010000ul
799#define LP_POL				0x00020000ul
800#define DTMG_POL			0x00040000ul
801#define SCK_POL				0x00080000ul
802#define DITHER_SEL			0x00300000ul
803#define INVERSE_VIDEO_EN		0x00400000ul
804#define BL_CLK_SEL			0x01800000ul
805#define BL_LEVEL			0x0e000000ul
806#define BL_CLK_SEL_PRO			0x00800000ul	/* LTPro */
807#define BL_LEVEL_PRO			0x03000000ul	/* LTPro */
808#define BIAS_LEVEL_PRO			0x0c000000ul	/* LTPro */
809#define HSYNC_DELAY			0xf0000000ul
810#define TV_OUT_INDEX		BlockIOTag(0x1du)	/* LTPro */
811#define TV_REG_INDEX			0x000000fful
812#define TV_ON				0x00000100ul
813/*	?				0xfffffe00ul */
814#define GP_IO			IOPortTag(0x1eu, 0x1eu)	/* VT/GT */
815#define GP_IO_0				0x00000001ul
816#define GP_IO_1				0x00000002ul
817#define GP_IO_2				0x00000004ul
818#define GP_IO_3				0x00000008ul
819#define GP_IO_4				0x00000010ul
820#define GP_IO_5				0x00000020ul
821#define GP_IO_6				0x00000040ul
822#define GP_IO_7				0x00000080ul
823#define GP_IO_8				0x00000100ul
824#define GP_IO_9				0x00000200ul
825#define GP_IO_A				0x00000400ul
826#define GP_IO_B				0x00000800ul
827#define GP_IO_C				0x00001000ul
828#define GP_IO_D				0x00002000ul
829#define GP_IO_E				0x00004000ul
830#define GP_IO_F				0x00008000ul
831#define GP_IO_DIR_0			0x00010000ul
832#define GP_IO_DIR_1			0x00020000ul
833#define GP_IO_DIR_2			0x00040000ul
834#define GP_IO_DIR_3			0x00080000ul
835#define GP_IO_DIR_4			0x00100000ul
836#define GP_IO_DIR_5			0x00200000ul
837#define GP_IO_DIR_6			0x00400000ul
838#define GP_IO_DIR_7			0x00800000ul
839#define GP_IO_DIR_8			0x01000000ul
840#define GP_IO_DIR_9			0x02000000ul
841#define GP_IO_DIR_A			0x04000000ul
842#define GP_IO_DIR_B			0x08000000ul
843#define GP_IO_DIR_C			0x10000000ul
844#define GP_IO_DIR_D			0x20000000ul
845#define GP_IO_DIR_E			0x40000000ul
846#define GP_IO_DIR_F			0x80000000ul
847#define GP_IO_CNTL		BlockIOTag(0x1fu)	/* VT/GT */
848#define GP_IO_MODE			0x0000000ful
849/*	?				0x7ffffff0ul */
850#define GP_IO_EN			0x80000000ul
851#define HW_DEBUG		BlockIOTag(0x1fu)	/* VTB/GTB/LT */
852#define FAST_SRCCOPY_DIS		0x00000001ul
853#define BYPASS_SUBPIC_DBF		0x00000001ul	/* XL/XC */
854#define SRC_AUTONA_FIX_DIS		0x00000002ul
855#define SYNC_PD_EN			0x00000002ul	/* Mobility */
856#define DISP_QW_FIX_DIS			0x00000004ul
857#define GUIDST_WB_EXP_DIS		0x00000008ul
858#define CYC_ALL_FIX_DIS			0x00000008ul	/* GTPro */
859#define AGPPLL_FIX_EN			0x00000008ul	/* Mobility */
860#define SRC_AUTONA_ALWAYS_EN		0x00000010ul
861#define GUI_BEATS_HOST_P		0x00000010ul	/* GTPro */
862#define DRV_CNTL_DQMB_WEB		0x00000020ul
863#define FAST_FILL_SCISSOR_DIS		0x00000020ul	/* GT2c/VT4 */
864#define INTER_BLIT_FIX_DIS		0x00000020ul	/* GTPro */
865#define DRV_CNTL_MA			0x00000040ul
866#define AUTO_BLKWRT_COLOR_DIS		0x00000040ul	/* GT2c/VT4 */
867#define INTER_PRIM_DIS			0x00000040ul	/* GTPro */
868#define DRV_CNTL_MD			0x00000080ul
869#define CHG_DEV_ID			0x00000100ul
870#define SRC_TRACK_DST_FIX_DIS		0x00000200ul
871#define HCLK_FB_SKEW			0x00000380ul	/* GT2c/VT4 */
872#define SRC_TRACK_DST_FIX_DIS_P		0x00000080ul	/* GTPro */
873#define AUTO_BLKWRT_COLOR_DIS_P		0x00000100ul	/* GTPro */
874#define INTER_LINE_OVERLAP_DIS		0x00000200ul	/* GTPro */
875#define MEM_OE_PULLBACK			0x00000400ul
876#define DBL_BUFFER_EN			0x00000400ul	/* GTPro */
877#define MEM_WE_FIX_DIS			0x00000800ul
878#define MEM_OE_PULLBACK_B		0x00000800ul	/* GT2c/VT4 */
879#define CMDFIFO_SIZE_EN			0x00000800ul	/* GTPro */
880#define RD_EN_FIX_DIS			0x00001000ul
881#define MEM_WE_FIX_DIS_B		0x00001000ul
882#define AUTO_FF_DIS			0x00001000ul	/* GTPro */
883#define CMDFIFO_SIZE_DIS		0x00002000ul	/* GT2c/VT4 */
884#define AUTO_BLKWRT_DIS			0x00002000ul	/* GTPro */
885#define GUI_BEATS_HOST			0x00004000ul	/* GT2c/VT4 */
886#define ORED_INVLD_RB_CACHE		0x00004000ul	/* GTPro */
887#define BLOCK_DBL_BUF			0x00008000ul	/* GTPro */
888#define R2W_TURNAROUND_DELAY		0x00020000ul	/* GT2c/VT4 */
889#define ENA_32BIT_DATA_BUS		0x00040000ul	/* GT2c/VT4 */
890#define HCLK_FB_SKEW_P			0x00070000ul	/* GTPro */
891#define ENA_FLASH_ROM			0x00080000ul	/* GT2c/VT4 */
892#define DISABLE_SWITCH_FIX		0x00080000ul	/* GTPro */
893#define MCLK_START_EN			0x00080000ul	/* LTPro */
894#define SEL_VBLANK_BDL_BUF		0x00100000ul	/* GTPro */
895#define CMDFIFO_64EN			0x00200000ul	/* GTPro */
896#define BM_FIX_DIS			0x00400000ul	/* GTPro */
897#define Z_SWITCH_EN			0x00800000ul	/* LTPro */
898#define FLUSH_HOST_WB			0x01000000ul	/* GTPro */
899#define HW_DEBUG_WRITE_MSK_FIX_DIS	0x02000000ul	/* LTPro */
900#define Z_NO_WRITE_EN			0x04000000ul	/* LTPro */
901#define DISABLE_PCLK_RESET_P		0x08000000ul	/* LTPro */
902#define PM_D3_SUPPORT_ENABLE_P		0x10000000ul	/* LTPro */
903#define STARTCYCLE_FIX_ENABLE		0x20000000ul	/* LTPro */
904#define DONT_RST_CHAREN			0x20000000ul	/* XL/XC */
905#define C3_FIX_ENABLE			0x40000000ul	/* LTPro */
906#define BM_HOSTRA_EN			0x40000000ul	/* XL/XC */
907#define PKGBGAb				0x80000000ul	/* XL/XC */
908#define AUTOEXP_HORZ_FIX		0x80000000ul	/* Mobility */
909#define SCRATCH_REG0		IOPortTag(0x10u, 0x20u)
910#define SCRATCH_REG1		IOPortTag(0x11u, 0x21u)
911/*	BIOS_BASE_SEGMENT		0x0000007ful */	/* As above */
912/*	?				0x00000f80ul */
913#define BIOS_INIT_DAC_SUBTYPE		0x0000f000ul
914/*	?				0xffff0000ul */
915#define SCRATCH_REG2		BlockIOTag(0x22u)	/* LT */
916#define SCRATCH_REG3		BlockIOTag(0x23u)	/* GTPro */
917/*	Not described here		0x07fffffful */
918#define DISPLAY_SWITCH_DISABLE		0x08000000ul
919/*	Not described here		0xf0000000ul */
920#define CLOCK_CNTL		IOPortTag(0x12u, 0x24u)
921#define CLOCK_BIT			0x00000004ul	/* For ICS2595 */
922#define CLOCK_PULSE			0x00000008ul	/* For ICS2595 */
923#define CLOCK_SELECT			0x0000000ful
924#define CLOCK_DIVIDER			0x00000030ul
925#define CLOCK_STROBE			0x00000040ul
926#define CLOCK_DATA			0x00000080ul
927/*	?				0x00000100ul */
928#define PLL_WR_EN			0x00000200ul	/* For internal PLL */
929#define PLL_ADDR			0x0000fc00ul	/* For internal PLL */
930#define PLL_DATA			0x00ff0000ul	/* For internal PLL */
931/*	?				0xff000000ul */
932#define CONFIG_STAT64_1		BlockIOTag(0x25u)	/* GTPro */
933#define CFG_SUBSYS_DEV_ID		0x000000fful
934#define CFG_SUBSYS_VEN_ID		0x00ffff00ul
935/*	?				0x1f000000ul */
936#define CFG_DIMM_TYPE			0xe0000000ul
937#define CFG_PCI_SUBSYS_DEV_ID		0x0000fffful	/* XC/XL */
938#define CFG_PCI_SUBSYS_VEN_ID		0xffff0000ul	/* XC/XL */
939#define CONFIG_STAT64_2		BlockIOTag(0x26u)	/* GTPro */
940#define CFG_DIMM_TYPE_3			0x00000001ul
941/*	?				0x0000001eul */
942#define CFG_ROMWRTEN			0x00000020ul
943#define CFG_AGPVCOGAIN			0x000000c0ul
944#define CFG_PCI_TYPE			0x00000100ul
945#define CFG_AGPSKEW			0x00000e00ul
946#define CFG_X1CLKSKEW			0x00007000ul
947#define CFG_PANEL_ID_P			0x000f8000ul	/* LTPro */
948/*	?				0x00100000ul */
949#define CFG_PREFETCH_EN			0x00200000ul
950#define CFG_ID_DISABLE			0x00400000ul
951#define CFG_PRE_TESTEN			0x00800000ul
952/*	?				0x01000000ul */
953#define CFG_PCI5VEN			0x02000000ul	/* LTPro */
954#define CFG_VGA_DISABLE			0x04000000ul
955#define CFG_ENINTB			0x08000000ul
956/*	?				0x10000000ul */
957#define CFG_ROM_REMAP_2			0x20000000ul
958#define CFG_IDSEL			0x40000000ul
959/*	?				0x80000000ul */
960#define TV_OUT_DATA		BlockIOTag(0x27u)	/* LTPro */
961#define BUS_CNTL		IOPortTag(0x13u, 0x28u)
962#define BUS_WS				0x0000000ful
963#define BUS_DBL_RESYNC			0x00000001ul	/* VTB/GTB/LT */
964#define BUS_MSTR_RESET			0x00000002ul	/* VTB/GTB/LT */
965#define BUS_FLUSH_BUF			0x00000004ul	/* VTB/GTB/LT */
966#define BUS_STOP_REQ_DIS		0x00000008ul	/* VTB/GTB/LT */
967#define BUS_ROM_WS			0x000000f0ul
968#define BUS_APER_REG_DIS		0x00000010ul	/* VTB/GTB/LT */
969#define BUS_EXTRA_PIPE_DIS		0x00000020ul	/* VTB/GTB/LT */
970#define BUS_MASTER_DIS			0x00000040ul	/* VTB/GTB/LT */
971#define BUS_ROM_WRT_EN			0x00000080ul	/* GTPro */
972#define BUS_ROM_PAGE			0x00000f00ul
973#define BUS_MINOR_REV_ID		0x00000700ul	/* LTPro */
974/*		First silicom - Prototype (A11)	0x00000000ul */
975/*		Metal mask spin (A12 & A13)	0x00000100ul */
976/*		All layer spin (A21)		0x00000200ul */
977/*		Fast metal spin (A22) - Prod.	0x00000300ul */
978/*		All layer spin (A31)		0x00000700ul */
979/*	?				0x00000800ul */	/* LTPro */
980#define BUS_CHIP_HIDDEN_REV		0x00000300ul	/* XC/XL */
981/*	?				0x00001c00ul */	/* XC/XL */
982#define BUS_ROM_DIS			0x00001000ul
983#define BUS_IO_16_EN			0x00002000ul	/* GX */
984#define BUS_PCI_READ_RETRY_EN		0x00002000ul	/* VTB/GTB/LT */
985#define BUS_DAC_SNOOP_EN		0x00004000ul
986#define BUS_PCI_RETRY_EN		0x00008000ul	/* VT/GT */
987#define BUS_PCI_WRT_RETRY_EN		0x00008000ul	/* VTB/GTB/LT */
988#define BUS_FIFO_WS			0x000f0000ul
989#define BUS_RETRY_WS			0x000f0000ul	/* VTB/GTB/LT */
990#define BUS_FIFO_ERR_INT_EN		0x00100000ul
991#define BUS_MSTR_RD_MULT		0x00100000ul	/* VTB/GTB/LT */
992#define BUS_FIFO_ERR_INT		0x00200000ul
993#define BUS_MSTR_RD_LINE		0x00200000ul	/* VTB/GTB/LT */
994#define BUS_HOST_ERR_INT_EN		0x00400000ul
995#define BUS_SUSPEND			0x00400000ul	/* GTPro */
996#define BUS_HOST_ERR_INT		0x00800000ul
997#define BUS_LAT16X			0x00800000ul	/* GTPro */
998#define BUS_PCI_DAC_WS			0x07000000ul
999#define BUS_RD_DISCARD_EN		0x01000000ul	/* VTB/GTB/LT */
1000#define BUS_RD_ABORT_EN			0x02000000ul	/* VTB/GTB/LT */
1001#define BUS_MSTR_WS			0x04000000ul	/* VTB/GTB/LT */
1002#define BUS_PCI_DAC_DLY			0x08000000ul
1003#define BUS_EXT_REG_EN			0x08000000ul	/* VT/GT */
1004#define BUS_PCI_MEMW_WS			0x10000000ul
1005#define BUS_MSTR_DISCONNECT_EN		0x10000000ul	/* VTB/GTB/LT */
1006#define BUS_PCI_BURST_DEC		0x20000000ul	/* GX/CX */
1007#define BUS_BURST			0x20000000ul	/* 264xT */
1008#define BUS_WRT_BURST			0x20000000ul	/* VTB/GTB/LT */
1009#define BUS_RDY_READ_DLY		0xc0000000ul
1010#define BUS_READ_BURST			0x40000000ul	/* VTB/GTB/LT */
1011#define BUS_RDY_READ_DLY_B		0x80000000ul	/* VTB/GTB/LT */
1012#define LCD_INDEX		BlockIOTag(0x29u)	/* LTPro */
1013#define LCD_REG_INDEX			0x0000003ful
1014/*	?				0x000000c0ul */
1015#define LCD_DISPLAY_DIS			0x00000100ul
1016#define LCD_SRC_SEL			0x00000200ul
1017#define LCD_SRC_SEL_CRTC1			0x00000000ul
1018#define LCD_SRC_SEL_CRTC2			0x00000200ul
1019#define LCD_CRTC2_DISPLAY_DIS		0x00000400ul
1020#define LCD_GUI_ACTIVE			0x00000800ul	/* XC/XL */
1021/*	?				0x00fff000ul */
1022#define LCD_MONDET_SENSE		0x01000000ul	/* XC/XL */
1023#define LCD_MONDET_INT_POL		0x02000000ul	/* XC/XL */
1024#define LCD_MONDET_INT_EN		0x04000000ul	/* XC/XL */
1025#define LCD_MONDET_INT			0x08000000ul	/* XC/XL */
1026#define LCD_MONDET_EN			0x10000000ul	/* XC/XL */
1027#define LCD_EN_PL			0x20000000ul	/* XC/XL */
1028/*	?				0xc0000000ul */
1029#define HFB_PITCH_ADDR		BlockIOTag(0x2au)	/* LT */
1030#define LCD_DATA		BlockIOTag(0x2au)	/* LTPro */
1031#define EXT_MEM_CNTL		BlockIOTag(0x2bu)	/* VTB/GTB/LT */
1032#define MEM_CNTL		IOPortTag(0x14u, 0x2cu)
1033#define CTL_MEM_SIZE			0x00000007ul
1034/*	?				0x00000008ul */
1035#define CTL_MEM_REFRESH			0x00000078ul	/* VT/GT */
1036#define CTL_MEM_SIZEB			0x0000000ful	/* VTB/GTB/LT */
1037#define CTL_MEM_RD_LATCH_EN		0x00000010ul
1038#define CTL_MEM_RD_LATCH_DLY		0x00000020ul
1039#define CTL_MEM_LATENCY			0x00000030ul	/* VTB/GTB/LT */
1040#define CTL_MEM_SD_LATCH_EN		0x00000040ul
1041#define CTL_MEM_SD_LATCH_DLY		0x00000080ul
1042#define CTL_MEM_LATCH			0x000000c0ul	/* VTB/GTB/LT */
1043#define CTL_MEM_WDOE_CNTL		0x000000c0ul	/* XC/XL */
1044#define CTL_MEM_FULL_PLS		0x00000100ul
1045#define CTL_MEM_CYC_LNTH_AUX		0x00000180ul	/* VT/GT */
1046#define CTL_MEM_TRP			0x00000300ul	/* VTB/GTB/LT */
1047#define CTL_MEM_CYC_LNTH		0x00000600ul
1048#define CTL_MEM_REFRESH_RATE		0x00001800ul	/* 264xT */
1049#define CTL_MEM_TRCD			0x00000c00ul	/* VTB/GTB/LT */
1050#define CTL_MEM_WR_RDY_SEL		0x00000800ul	/* GX/CX */
1051#define CTL_MEM_EXT_RMW_CYC_EN		0x00001000ul	/* GX/CX */
1052#define CTL_MEM_TCRD			0x00001000ul	/* VTB/GTB/LT */
1053#define CTL_MEM_DLL_RESET		0x00002000ul	/* VT/GT */
1054#define CTL_MEM_TR2W			0x00002000ul	/* GTPro */
1055#define CTL_MEM_ACTV_PRE		0x0000c000ul	/* VT/GT */
1056#define CTL_MEM_CAS_PHASE		0x00004000ul	/* GTPro */
1057#define CTL_MEM_OE_PULLBACK		0x00008000ul	/* GTPro */
1058#define CTL_MEM_TWR			0x0000c000ul	/* XC/XL */
1059#define CTL_MEM_BNDRY			0x00030000ul
1060#define CTL_MEM_BNDRY_0K			0x00000000ul
1061#define CTL_MEM_BNDRY_256K			0x00010000ul
1062#define CTL_MEM_BNDRY_512K			0x00020000ul
1063#define CTL_MEM_BNDRY_1024K			0x00030000ul
1064#define CTL_MEM_DLL_GAIN_CNTL		0x00030000ul	/* VT/GT */
1065#define CTL_MEM_BNDRY_EN		0x00040000ul
1066#define CTL_MEM_SDRAM_RESET		0x00040000ul	/* VT/GT */
1067#define CTL_MEM_TRAS			0x00070000ul	/* VTB/GTB/LT */
1068#define CTL_MEM_TILE_SELECT		0x00180000ul	/* VT/GT */
1069#define CTL_MEM_REFRESH_DIS		0x00080000ul	/* VTB/GTB/LT */
1070#define CTL_MEM_LOW_LATENCY_MODE	0x00200000ul	/* VT/GT */
1071#define CTL_MEM_CDE_PULLBACK		0x00400000ul	/* VT/GT */
1072#define CTL_MEM_REFRESH_RATE_B		0x00f00000ul	/* VTB/GTB/LT */
1073#define CTL_MEM_PIX_WIDTH		0x07000000ul
1074#define CTL_MEM_LOWER_APER_ENDIAN	0x03000000ul	/* VTB/GTB/LT */
1075#define CTL_MEM_OE_SELECT		0x18000000ul	/* VT/GT */
1076#define CTL_MEM_UPPER_APER_ENDIAN	0x0c000000ul	/* VTB/GTB/LT */
1077/*	?				0xe0000000ul */
1078#define CTL_MEM_PAGE_SIZE		0x30000000ul	/* VTB/GTB/LT */
1079#define MEM_VGA_WP_SEL		IOPortTag(0x15u, 0x2du)
1080#define MEM_VGA_WPS0			0x0000fffful
1081#define MEM_VGA_WPS1			0xffff0000ul
1082#define MEM_VGA_RP_SEL		IOPortTag(0x16u, 0x2eu)
1083#define MEM_VGA_RPS0			0x0000fffful
1084#define MEM_VGA_RPS1			0xffff0000ul
1085#define LT_GIO			BlockIOTag(0x2fu)	/* LT */
1086#define I2C_CNTL_1		BlockIOTag(0x2fu)	/* GTPro */
1087#define I2C_DATA_PORT			0x000000fful
1088#define I2C_DATA_COUNT			0x0000ff00ul
1089#define I2C_ADDR_COUNT			0x00070000ul
1090/*	?				0x00380000ul */
1091#define I2C_SEL				0x00400000ul
1092/*	?				0x00800000ul */
1093#define I2C_TIME_LIMIT			0xff000000ul
1094#define DAC_REGS		IOPortTag(0x17u, 0x30u)	/* 4 separate bytes */
1095#define M64_DAC_WRITE			(DAC_REGS + 0)
1096#define M64_DAC_DATA			(DAC_REGS + 1)
1097#define M64_DAC_MASK			(DAC_REGS + 2)
1098#define M64_DAC_READ			(DAC_REGS + 3)
1099#define DAC_CNTL		IOPortTag(0x18u, 0x31u)
1100#define DAC_EXT_SEL			0x00000003ul
1101#define DAC_EXT_SEL_RS2				0x000000001ul
1102#define DAC_EXT_SEL_RS3				0x000000002ul
1103#define DAC_RANGE_CTL			0x00000003ul	/* VTB/GTB/LT */
1104#define DAC_BLANKING			0x00000004ul	/* 264xT */
1105#define DAC_CMP_DIS			0x00000008ul	/* 264xT */
1106#define DAC1_CLK_SEL			0x00000010ul	/* LTPro */
1107#define DAC_PALETTE_ACCESS_CNTL		0x00000020ul	/* LTPro */
1108#define DAC_PALETTE2_SNOOP_EN		0x00000040ul	/* LTPro */
1109#define DAC_CMP_OUTPUT			0x00000080ul	/* 264xT */
1110#define DAC_8BIT_EN			0x00000100ul
1111#define DAC_PIX_DLY			0x00000600ul
1112#define DAC_DIRECT			0x00000400ul	/* VTB/GTB/LT */
1113#define DAC_BLANK_ADJ			0x00001800ul
1114#define DAC_PAL_CLK_SEL			0x00000800ul	/* VTB/GTB/LT */
1115#define DAC_CRT_SENSE			0x00000800ul	/* XC/XL */
1116#define DAC_CRT_DETECTION_ON		0x00001000ul	/* XC/XL */
1117#define DAC_VGA_ADR_EN			0x00002000ul
1118#define DAC_FEA_CON_EN			0x00004000ul	/* 264xT */
1119#define DAC_PDMN			0x00008000ul	/* 264xT */
1120#define DAC_TYPE			0x00070000ul
1121/*	?				0x00f80000ul */
1122#define DAC_MON_ID_STATE0		0x01000000ul	/* GX-E+/CX */
1123#define DAC_GIO_STATE_1			0x01000000ul	/* 264xT */
1124#define DAC_MON_ID_STATE1		0x02000000ul	/* GX-E+/CX */
1125#define DAC_GIO_STATE_0			0x02000000ul	/* 264xT */
1126#define DAC_MON_ID_STATE2		0x04000000ul	/* GX-E+/CX */
1127#define DAC_GIO_STATE_4			0x04000000ul	/* 264xT */
1128#define DAC_MON_ID_DIR0			0x08000000ul	/* GX-E+/CX */
1129#define DAC_GIO_DIR_1			0x08000000ul	/* 264xT */
1130#define DAC_MON_ID_DIR1			0x10000000ul	/* GX-E+/CX */
1131#define DAC_GIO_DIR_0			0x10000000ul	/* 264xT */
1132#define DAC_MON_ID_DIR2			0x20000000ul	/* GX-E+/CX */
1133#define DAC_GIO_DIR_4			0x20000000ul	/* 264xT */
1134#define DAC_MAN_CMP_STATE		0x40000000ul	/* GX-E+ */
1135#define DAC_RW_WS			0x80000000ul	/* VT/GT */
1136#define HORZ_STRETCHING		BlockIOTag(0x32u)	/* LT */
1137#define HORZ_STRETCH_BLEND		0x00000ffful
1138#define HORZ_STRETCH_RATIO		0x0000fffful
1139#define HORZ_STRETCH_LOOP		0x00070000ul
1140#define HORZ_STRETCH_LOOP09			0x00000000ul
1141#define HORZ_STRETCH_LOOP11			0x00010000ul
1142#define HORZ_STRETCH_LOOP12			0x00020000ul
1143#define HORZ_STRETCH_LOOP14			0x00030000ul
1144#define HORZ_STRETCH_LOOP15			0x00040000ul
1145/*	?					0x00050000ul */
1146/*	?					0x00060000ul */
1147/*	?					0x00070000ul */
1148/*	?				0x00080000ul */
1149#define HORZ_PANEL_SIZE			0x0ff00000ul	/* XC/XL */
1150/*	?				0x10000000ul */
1151#define AUTO_HORZ_RATIO			0x20000000ul	/* XC/XL */
1152#define HORZ_STRETCH_MODE		0x40000000ul
1153#define HORZ_STRETCH_EN			0x80000000ul
1154#define EXT_DAC_REGS		BlockIOTag(0x32u)	/* GTPro */
1155#define EXT_DAC_REG_SEL			0x0000000ful
1156/*	?				0x000000f0ul */
1157#define EXT_DAC_DATA			0x0000ff00ul
1158#define EXT_DAC_EN			0x00010000ul
1159#define EXT_DAC_WID			0x00020000ul
1160/*	?				0xfffc0000ul */
1161#define VERT_STRETCHING		BlockIOTag(0x33u)	/* LT */
1162#define VERT_STRETCH_RATIO0		0x000003fful
1163#define VERT_STRETCH_RATIO1		0x000ffc00ul
1164#define VERT_STRETCH_RATIO2		0x3ff00000ul
1165#define VERT_STRETCH_USE0		0x40000000ul
1166#define VERT_STRETCH_EN			0x80000000ul
1167#define GEN_TEST_CNTL		IOPortTag(0x19u, 0x34u)
1168#define GEN_EE_DATA_OUT			0x00000001ul	/* GX/CX */
1169#define GEN_GIO2_DATA_OUT		0x00000001ul	/* 264xT */
1170#define GEN_EE_CLOCK			0x00000002ul	/* GX/CX */
1171/*	?				0x00000002ul */	/* 264xT */
1172#define GEN_EE_CHIP_SEL			0x00000004ul	/* GX/CX */
1173#define GEN_GIO3_DATA_OUT		0x00000004ul	/* 264xT */
1174#define GEN_EE_DATA_IN			0x00000008ul	/* GX/CX */
1175#define GEN_GIO2_DATA_IN		0x00000008ul	/* 264xT */
1176#define GEN_EE_EN			0x00000010ul	/* GX/CX */
1177#define GEN_GIO2_ENABLE			0x00000010ul	/* 264xT */
1178#define GEN_ICON2_ENABLE		0x00000010ul	/* XC/XL */
1179#define GEN_OVR_OUTPUT_EN		0x00000020ul	/* GX/CX */
1180#define GEN_GIO2_WRITE			0x00000020ul	/* 264xT */
1181#define GEN_CUR2_ENABLE			0x00000020ul	/* XC/XL */
1182#define GEN_OVR_POLARITY		0x00000040ul	/* GX/CX */
1183#define GEN_ICON_ENABLE			0x00000040ul	/* XC/XL */
1184#define GEN_CUR_EN			0x00000080ul
1185#define GEN_GUI_EN			0x00000100ul	/* GX/CX */
1186#define GEN_GUI_RESETB			0x00000100ul	/* 264xT */
1187#define GEN_BLOCK_WR_EN			0x00000200ul	/* GX */
1188/*	?				0x00000200ul */	/* CX/264xT */
1189#define GEN_SOFT_RESET			0x00000200ul	/* VTB/GTB/LT */
1190#define GEN_MEM_TRISTATE		0x00000400ul	/* GTPro */
1191/*	?				0x00000800ul */
1192#define GEN_TEST_VECT_MODE		0x00003000ul	/* VT/GT */
1193/*	?				0x0000c000ul */
1194#define GEN_TEST_FIFO_EN		0x00010000ul	/* GX/CX */
1195#define GEN_TEST_GUI_REGS_EN		0x00020000ul	/* GX/CX */
1196#define GEN_TEST_VECT_EN		0x00040000ul	/* GX/CX */
1197#define GEN_TEST_CRC_STR		0x00080000ul	/* GX-C/-D */
1198/*	?				0x00080000ul */	/* GX-E+/CX */
1199#define GEN_TEST_MODE_T			0x000f0000ul	/* 264xT */
1200#define GEN_TEST_MODE			0x00700000ul	/* GX/CX */
1201#define GEN_TEST_CNT_EN			0x00100000ul	/* 264xT */
1202#define GEN_TEST_CRC_EN			0x00200000ul	/* 264xT */
1203/*	?				0x00400000ul */	/* 264xT */
1204/*	?				0x00800000ul */
1205#define GEN_TEST_MEM_WR			0x01000000ul	/* GX-C/-D */
1206#define GEN_TEST_MEM_STROBE		0x02000000ul	/* GX-C/-D */
1207#define GEN_TEST_DST_SS_EN		0x04000000ul	/* GX/CX */
1208#define GEN_TEST_DST_SS_STROBE		0x08000000ul	/* GX/CX */
1209#define GEN_TEST_SRC_SS_EN		0x10000000ul	/* GX/CX */
1210#define GEN_TEST_SRC_SS_STROBE		0x20000000ul	/* GX/CX */
1211#define GEN_TEST_CNT_VALUE		0x3f000000ul	/* 264xT */
1212#define GEN_TEST_CC_EN			0x40000000ul	/* GX/CX */
1213#define GEN_TEST_CC_STROBE		0x80000000ul	/* GX/CX */
1214/*	?				0xc0000000ul */	/* 264xT */
1215#define GEN_DEBUG_MODE			0xff000000ul	/* VTB/GTB/LT */
1216#define LCD_GEN_CTRL		BlockIOTag(0x35u)	/* LT */
1217#define CRT_ON				0x00000001ul
1218#define LCD_ON				0x00000002ul
1219#define HORZ_DIVBY2_EN			0x00000004ul
1220#define TRISTATE_MEM_EN			0x00000008ul
1221#define DONT_DS_ICON			0x00000008ul	/* LTPro */
1222#define LOCK_8DOT			0x00000010ul
1223#define ICON_ENABLE			0x00000020ul
1224#define DONT_SHADOW_VPAR		0x00000040ul
1225#define TOGGLE_EN			0x00000080ul
1226#define V2CLK_PM_EN			0x00000080ul	/* LTPro */
1227#define RST_FM				0x00000100ul
1228#define DISABLE_PCLK_RESET		0x00000200ul	/* XC/XL */
1229#define DIS_HOR_CRT_DIVBY2		0x00000400ul
1230#define SCLK_SEL			0x00000800ul
1231#define SCLK_DELAY			0x0000f000ul
1232#define MCLK_PM_EN			0x00010000ul
1233#define TVCLK_PM_EN			0x00010000ul	/* LTPro */
1234#define VCLK_DAC_PM_EN			0x00020000ul
1235#define VCLK_LCD_OFF			0x00040000ul
1236#define SLOWDOWN_XMCLK			0x00080000ul
1237#define SELECT_WAIT_4MS			0x00080000ul	/* LTPro */
1238#define XTALIN_PM_EN			0x00080000ul	/* XC/XL */
1239#define LCD_CLK_RATIO			0x00100000ul
1240#define V2CLK_DAC_PM_EN			0x00100000ul	/* LTPro */
1241#define LVDS_EN				0x00200000ul
1242#define LVDS_PLL_EN			0x00400000ul
1243#define LVDS_PLL_RESET			0x00800000ul
1244#define LVDS_RESERVED_BITS		0x07000000ul
1245#define CRTC_RW_SELECT			0x08000000ul	/* LTPro */
1246#define USE_SHADOWED_VEND		0x10000000ul
1247#define USE_SHADOWED_ROWCUR		0x20000000ul
1248#define SHADOW_EN			0x40000000ul
1249#define SHADOW_RW_EN			0x80000000ul
1250#define CUSTOM_MACRO_CNTL	BlockIOTag(0x35u)	/* GTPro */
1251#define POWER_MANAGEMENT	BlockIOTag(0x36u)	/* LT */
1252#define PWR_MGT_ON			0x00000001ul
1253#define PWR_MGT_MODE			0x00000006ul
1254#define AUTO_PWRUP_EN			0x00000008ul
1255#define ACTIVITY_PIN_ON			0x00000010ul
1256#define STANDBY_POL			0x00000020ul
1257#define SUSPEND_POL			0x00000040ul
1258#define SELF_REFRESH			0x00000080ul
1259#define ACTIVITY_PIN_EN			0x00000100ul
1260#define KEYBD_SNOOP			0x00000200ul
1261#define USE_F32KHZ			0x00000400ul	/* LTPro */
1262#define DONT_USE_XTALIN			0x00000400ul	/* XC/XL */
1263#define TRISTATE_MEM_EN_P		0x00000800ul	/* LTPro */
1264#define LCDENG_TEST_MODE		0x0000f000ul
1265#define STANDBY_COUNT			0x000f0000ul
1266#define SUSPEND_COUNT			0x00f00000ul
1267#define BAISON				0x01000000ul
1268#define BLON				0x02000000ul
1269#define DIGON				0x04000000ul
1270#define PM_D3_SUPPORT_ENABLE		0x08000000ul	/* XC/XL */
1271#define STANDBY_NOW			0x10000000ul
1272#define SUSPEND_NOW			0x20000000ul
1273#define PWR_MGT_STATUS			0xc0000000ul
1274#define CONFIG_CNTL		IOPortTag(0x1au, 0x37u)
1275#define CFG_MEM_AP_SIZE			0x00000003ul
1276#define CFG_MEM_VGA_AP_EN		0x00000004ul
1277/*	?				0x00000008ul */
1278#define CFG_MEM_AP_LOC			0x00003ff0ul
1279/*	?				0x0000c000ul */
1280#define CFG_CARD_ID			0x00070000ul
1281#define CFG_VGA_DIS			0x00080000ul
1282/*	?				0x00f00000ul */
1283#define CFG_CDE_WINDOW			0x3f000000ul	/* VT/GT */
1284/*	?				0xc0000000ul */
1285#define CONFIG_CHIP_ID		IOPortTag(0x1bu, 0x38u)	/* Read */
1286#define CFG_CHIP_TYPE0			0x000000fful
1287#define CFG_CHIP_TYPE1			0x0000ff00ul
1288#define CFG_CHIP_TYPE			0x0000fffful
1289#define CFG_CHIP_CLASS			0x00ff0000ul
1290#define CFG_CHIP_REV			0xff000000ul
1291#define CFG_CHIP_VERSION		0x07000000ul	/* 264xT */
1292#define CFG_CHIP_FOUNDRY		0x38000000ul	/* 264xT */
1293#define CFG_CHIP_REVISION		0xc0000000ul	/* 264xT */
1294#define CONFIG_STATUS64_0	IOPortTag(0x1cu, 0x39u)	/* Read (R/W (264xT)) */
1295#define CFG_BUS_TYPE			0x00000007ul	/* GX/CX */
1296#define CFG_MEM_TYPE_T			0x00000007ul	/* 264xT */
1297#define CFG_MEM_TYPE			0x00000038ul	/* GX/CX */
1298#define CFG_DUAL_CAS_EN_T		0x00000008ul	/* 264xT */
1299#define CFG_ROM_128K_EN			0x00000008ul	/* VTB/GTB/LT */
1300#define CFG_ROM_REMAP			0x00000008ul	/* GTPro */
1301#define CFG_VGA_EN_T			0x00000010ul	/* VT/GT */
1302#define CFG_CLOCK_EN			0x00000020ul	/* 264xT */
1303#define CFG_DUAL_CAS_EN			0x00000040ul	/* GX/CX */
1304#define CFG_VMC_SENSE			0x00000040ul	/* VT/GT */
1305#define CFG_SHARED_MEM_EN		0x00000040ul	/* VTB/GTB/LT */
1306#define CFG_LOCAL_BUS_OPTION		0x00000180ul	/* GX/CX */
1307#define CFG_VFC_SENSE			0x00000080ul	/* VT/GT */
1308#define CFG_INIT_DAC_TYPE		0x00000e00ul	/* GX/CX */
1309#define CFG_INIT_CARD_ID		0x00007000ul	/* GX-C/-D */
1310#define CFG_BLK_WR_SIZE			0x00001000ul	/* GX-E+ */
1311#define CFG_INT_QSF_EN			0x00002000ul	/* GX-E+ */
1312/*	?				0x00004000ul */	/* GX-E+ */
1313/*	?				0x00007000ul */	/* CX */
1314#define CFG_TRI_BUF_DIS			0x00008000ul	/* GX/CX */
1315#define CFG_BOARD_ID			0x0000ff00ul	/* VT/GT */
1316#define CFG_EXT_RAM_ADDR		0x003f0000ul	/* GX/CX */
1317#define CFG_PANEL_ID			0x001f0000ul	/* LT */
1318#define CFG_MACROVISION_EN		0x00200000ul	/* GTPro */
1319#define CFG_ROM_DIS			0x00400000ul	/* GX/CX */
1320#define CFG_PCI33EN			0x00400000ul	/* GTPro */
1321#define CFG_VGA_EN			0x00800000ul	/* GX/CX */
1322#define CFG_FULLAGP			0x00800000ul	/* GTPro */
1323#define CFG_ARITHMOS_ENABLE		0x00800000ul	/* XC/XL */
1324#define CFG_LOCAL_BUS_CFG		0x01000000ul	/* GX/CX */
1325#define CFG_CHIP_EN			0x02000000ul	/* GX/CX */
1326#define CFG_LOCAL_READ_DLY_DIS		0x04000000ul	/* GX/CX */
1327#define CFG_ROM_OPTION			0x08000000ul	/* GX/CX */
1328#define CFG_BUS_OPTION			0x10000000ul	/* GX/CX */
1329#define CFG_LOCAL_DAC_WR_EN		0x20000000ul	/* GX/CX */
1330#define CFG_VLB_RDY_DIS			0x40000000ul	/* GX/CX */
1331#define CFG_AP_4GBYTE_DIS		0x80000000ul	/* GX/CX */
1332#define CONFIG_STATUS64_1	IOPortTag(0x1du, 0x3au)	/* Read */
1333#define CFG_PCI_DAC_CFG			0x00000001ul	/* GX/CX */
1334/*	?				0x0000001eul */	/* GX/CX */
1335#define CFG_1C8_IO_SEL			0x00000020ul	/* GX/CX */
1336/*	?				0xffffffc0ul */	/* GX/CX */
1337#define CRC_SIG				0xfffffffful	/* 264xT */
1338#define MPP_CONFIG		BlockIOTag(0x3bu)	/* VTB/GTB/LT */
1339#define MPP_PRESCALE			0x00000007ul
1340/*	?				0x00000008ul */
1341#define MPP_NSTATES			0x00000030ul
1342/*	?					0x00000000ul */
1343#define MPP_NSTATES_2				0x00000010ul
1344#define MPP_NSTATES_4				0x00000020ul
1345#define MPP_NSTATES_8				0x00000030ul
1346#define MPP_FORMAT			0x000000c0ul
1347#define MPP_FORMAT_DO8				0x00000000ul
1348#define MPP_FORMAT_DO16				0x00000040ul
1349#define MPP_FORMAT_DA8				0x00000080ul
1350#define MPP_FORMAT_DA16				0x000000c0ul
1351#define MPP_WAIT_STATE			0x00000700ul
1352#define MPP_CHKRDY_EN			0x00000800ul
1353#define MPP_INSERT_WAIT			0x00001000ul
1354#define MPP_TRISTATE_ADDR		0x00002000ul
1355/*	?				0x00004000ul */
1356#define MPP_READ_EARLY			0x00008000ul
1357#define MPP_RW_MODE			0x00030000ul
1358#define MPP_INT_MASK			0x000c0000ul
1359#define MPP_AUTO_INC_EN			0x00300000ul
1360#define MPP_CHKREQ_EN			0x00400000ul
1361#define MPP_CHKREQ_MODE			0x00800000ul
1362#define MPP_BUFFER_SIZE			0x03000000ul
1363#define MPP_BUFFER_MODE			0x0c000000ul
1364#define MPP_BUFFER_MODE_NORMAL			0x00000000ul
1365#define MPP_BUFFER_MODE_PREFETCH		0x04000000ul
1366#define MPP_BUFFER_MODE_BUS_MASTER		0x08000000ul
1367/*	?					0x0c000000ul */
1368/*	?				0x30000000ul */
1369#define MPP_BUSY			0x40000000ul
1370#define MPP_EN				0x80000000ul
1371#define MPP_STROBE_SEQ		BlockIOTag(0x3cu)	/* VTB/GTB/LT */
1372#define MPP_STB0_SEQ			0x000000fful
1373#define MPP_STB1_SEQ			0x0000ff00ul
1374/*	?				0xffff0000ul */
1375#define MPP_ADDR		BlockIOTag(0x3du)	/* VTB/GTB/LT */
1376#define MPP_DATA		BlockIOTag(0x3eu)	/* VTB/GTB/LT */
1377#define TVO_CNTL		BlockIOTag(0x3fu)	/* VTB/GTB/LT */
1378#define TVO_H_TOT_PIX			0x00000007ul
1379#define TVO_PC_OVR_DIS			0x00000008ul
1380#define TVO_H_TOT_EDGE			0x00000010ul
1381/*	?				0x00000060ul */
1382#define TVO_VBLANK_ONLY			0x00000080ul
1383/*	?				0x0000ff00ul */
1384#define TVO_MPEG_CLR_SRC		0x00030000ul
1385/*	?				0x1ffc0000ul */
1386#define TVO_MPEG_CLK_EN			0x20000000ul
1387#define TVO_OVERRIDE_EN			0x40000000ul
1388#define TVO_EN				0x80000000ul
1389/*	GP_IO			IOPortTag(0x1eu, 0x1eu) */	/* See above */
1390/*	CRTC_H_TOTAL_DISP	IOPortTag(0x1fu, 0x00u) */	/* Duplicate */
1391#define DST_OFF_PITCH		BlockIOTag(0x40u)
1392#define DST_OFFSET			0x000ffffful
1393/*	?				0x00300000ul */
1394#define DST_PITCH			0xffc00000ul
1395#define DST_X			BlockIOTag(0x41u)
1396#define DST_Y			BlockIOTag(0x42u)
1397#define DST_Y_X			BlockIOTag(0x43u)
1398#define DST_WIDTH		BlockIOTag(0x44u)
1399#define DST_HEIGHT		BlockIOTag(0x45u)
1400#define DST_HEIGHT_WIDTH	BlockIOTag(0x46u)
1401#define DST_X_WIDTH		BlockIOTag(0x47u)
1402#define DST_BRES_LNTH		BlockIOTag(0x48u)
1403#define DST_BRES_ERR		BlockIOTag(0x49u)
1404#define DST_BRES_INC		BlockIOTag(0x4au)
1405#define DST_BRES_DEC		BlockIOTag(0x4bu)
1406#define DST_CNTL		BlockIOTag(0x4cu)
1407#define DST_X_DIR			0x00000001ul
1408#define DST_Y_DIR			0x00000002ul
1409#define DST_Y_MAJOR			0x00000004ul
1410#define DST_X_TILE			0x00000008ul
1411#define DST_Y_TILE			0x00000010ul
1412#define DST_LAST_PEL			0x00000020ul
1413#define DST_POLYGON_EN			0x00000040ul
1414#define DST_24_ROT_EN			0x00000080ul
1415#define DST_24_ROT			0x00000700ul
1416#define DST_BRES_SIGN			0x00000800ul	/* GX/CX */
1417#define DST_BRES_ZERO			0x00000800ul	/* CT */
1418#define DST_POLYGON_RTEDGE_DIS		0x00001000ul	/* CT */
1419#define TRAIL_X_DIR			0x00002000ul	/* GT */
1420#define TRAP_FILL_DIR			0x00004000ul	/* GT */
1421#define TRAIL_BRES_SIGN			0x00008000ul	/* GT */
1422/*	?				0x00010000ul */
1423#define BRES_SIGN_AUTO			0x00020000ul	/* GT */
1424/*	?				0x00040000ul */
1425#define ALPHA_OVERLAP_ENB		0x00080000ul	/* GTPro */
1426#define SUB_PIX_ON			0x00100000ul	/* GTPro */
1427/*	?				0xffe00000ul */
1428/*	DST_Y_X			BlockIOTag(0x4du) */	/* Duplicate */
1429#define TRAIL_BRES_ERR		BlockIOTag(0x4eu)	/* GT */
1430#define TRAIL_BRES_INC		BlockIOTag(0x4fu)	/* GT */
1431#define TRAIL_BRES_DEC		BlockIOTag(0x50u)	/* GT */
1432#define LEAD_BRES_LNTH		BlockIOTag(0x51u)	/* GT */
1433#define Z_OFF_PITCH		BlockIOTag(0x52u)	/* GT */
1434#define Z_CNTL			BlockIOTag(0x53u)	/* GT */
1435#define ALPHA_TST_CNTL		BlockIOTag(0x54u)	/* GTPro */
1436/*	?			BlockIOTag(0x55u) */
1437#define SECONDARY_STW_EXP	BlockIOTag(0x56u)	/* GTPro */
1438#define SECONDARY_S_X_INC	BlockIOTag(0x57u)	/* GTPro */
1439#define SECONDARY_S_Y_INC	BlockIOTag(0x58u)	/* GTPro */
1440#define SECONDARY_S_START	BlockIOTag(0x59u)	/* GTPro */
1441#define SECONDARY_W_X_INC	BlockIOTag(0x5au)	/* GTPro */
1442#define SECONDARY_W_Y_INC	BlockIOTag(0x5bu)	/* GTPro */
1443#define SECONDARY_W_START	BlockIOTag(0x5cu)	/* GTPro */
1444#define SECONDARY_T_X_INC	BlockIOTag(0x5du)	/* GTPro */
1445#define SECONDARY_T_Y_INC	BlockIOTag(0x5eu)	/* GTPro */
1446#define SECONDARY_T_START	BlockIOTag(0x5fu)	/* GTPro */
1447#define SRC_OFF_PITCH		BlockIOTag(0x60u)
1448#define SRC_OFFSET			0x000ffffful
1449/*	?				0x00300000ul */
1450#define SRC_PITCH			0xffc00000ul
1451#define SRC_X			BlockIOTag(0x61u)
1452#define SRC_Y			BlockIOTag(0x62u)
1453#define SRC_Y_X			BlockIOTag(0x63u)
1454#define SRC_WIDTH1		BlockIOTag(0x64u)
1455#define SRC_HEIGHT1		BlockIOTag(0x65u)
1456#define SRC_HEIGHT1_WIDTH1	BlockIOTag(0x66u)
1457#define SRC_X_START		BlockIOTag(0x67u)
1458#define SRC_Y_START		BlockIOTag(0x68u)
1459#define SRC_Y_X_START		BlockIOTag(0x69u)
1460#define SRC_WIDTH2		BlockIOTag(0x6au)
1461#define SRC_HEIGHT2		BlockIOTag(0x6bu)
1462#define SRC_HEIGHT2_WIDTH2	BlockIOTag(0x6cu)
1463#define SRC_CNTL		BlockIOTag(0x6du)
1464#define SRC_PATT_EN			0x00000001ul
1465#define SRC_PATT_ROT_EN			0x00000002ul
1466#define SRC_LINEAR_EN			0x00000004ul
1467#define SRC_BYTE_ALIGN			0x00000008ul
1468#define SRC_LINE_X_DIR			0x00000010ul
1469#define SRC_8X8X8_BRUSH			0x00000020ul	/* VTB/GTB */
1470#define FAST_FILL_EN			0x00000040ul	/* VTB/GTB */
1471#define SRC_TRACK_DST			0x00000080ul	/* VTB/GTB */
1472#define BUS_MASTER_EN			0x00000100ul	/* VTB/GTB */
1473#define BUS_MASTER_SYNC			0x00000200ul	/* VTB/GTB */
1474#define BUS_MASTER_OP			0x00000c00ul	/* VTB/GTB */
1475#define SRC_8X8X8_BRUSH_LOADED		0x00001000ul	/* VTB/GTB */
1476#define COLOR_REG_WRITE_EN		0x00002000ul	/* VTB/GTB */
1477#define BLOCK_WRITE_EN			0x00004000ul	/* VTB/GTB */
1478/*	?				0xffff8000ul */
1479/*	?			BlockIOTag(0x6eu) */
1480/*	?			BlockIOTag(0x6fu) */
1481#define SCALE_Y_OFF		BlockIOTag(0x70u)	/* GT */
1482#define SCALE_OFF		BlockIOTag(0x70u)	/* GTPro */
1483#define SECONDARY_SCALE_OFF	BlockIOTag(0x70u)	/* GTPro */
1484#define TEX_0_OFF		BlockIOTag(0x70u)	/* GT */
1485#define TEX_1_OFF		BlockIOTag(0x71u)	/* GT */
1486#define TEX_2_OFF		BlockIOTag(0x72u)	/* GT */
1487#define TEX_3_OFF		BlockIOTag(0x73u)	/* GT */
1488#define TEX_4_OFF		BlockIOTag(0x74u)	/* GT */
1489#define TEX_5_OFF		BlockIOTag(0x75u)	/* GT */
1490#define TEX_6_OFF		BlockIOTag(0x76u)	/* GT */
1491#define SCALE_WIDTH		BlockIOTag(0x77u)	/* GT */
1492#define TEX_7_OFF		BlockIOTag(0x77u)	/* GT */
1493#define SCALE_HEIGHT		BlockIOTag(0x78u)	/* GT */
1494#define TEX_8_OFF		BlockIOTag(0x78u)	/* GT */
1495#define TEX_9_OFF		BlockIOTag(0x79u)	/* GT */
1496#define TEX_10_OFF		BlockIOTag(0x7au)	/* GT */
1497#define S_Y_INC			BlockIOTag(0x7bu)	/* GT */
1498#define SCALE_Y_PITCH		BlockIOTag(0x7bu)	/* GT */
1499#define SCALE_X_INC		BlockIOTag(0x7cu)	/* GT */
1500#define RED_X_INC		BlockIOTag(0x7cu)	/* GT */
1501#define GREEN_X_INC		BlockIOTag(0x7du)	/* GT */
1502#define SCALE_Y_INC		BlockIOTag(0x7du)	/* GT */
1503#define SCALE_VACC		BlockIOTag(0x7eu)	/* GT */
1504#define SCALE_3D_CNTL		BlockIOTag(0x7fu)	/* GT */
1505#define HOST_DATA_0		BlockIOTag(0x80u)
1506#define HOST_DATA_1		BlockIOTag(0x81u)
1507#define HOST_DATA_2		BlockIOTag(0x82u)
1508#define HOST_DATA_3		BlockIOTag(0x83u)
1509#define HOST_DATA_4		BlockIOTag(0x84u)
1510#define HOST_DATA_5		BlockIOTag(0x85u)
1511#define HOST_DATA_6		BlockIOTag(0x86u)
1512#define HOST_DATA_7		BlockIOTag(0x87u)
1513#define HOST_DATA_8		BlockIOTag(0x88u)
1514#define HOST_DATA_9		BlockIOTag(0x89u)
1515#define HOST_DATA_A		BlockIOTag(0x8au)
1516#define HOST_DATA_B		BlockIOTag(0x8bu)
1517#define HOST_DATA_C		BlockIOTag(0x8cu)
1518#define HOST_DATA_D		BlockIOTag(0x8du)
1519#define HOST_DATA_E		BlockIOTag(0x8eu)
1520#define HOST_DATA_F		BlockIOTag(0x8fu)
1521#define HOST_CNTL		BlockIOTag(0x90u)
1522#define HOST_BYTE_ALIGN			0x00000001ul
1523#define HOST_BIG_ENDIAN_EN		0x00000002ul	/* GX-E/CT */
1524/*	?				0xfffffffcul */
1525#define BM_HOSTDATA		BlockIOTag(0x91u)	/* VTB/GTB */
1526#define BM_ADDR			BlockIOTag(0x92u)	/* VTB/GTB */
1527#define BM_DATA			BlockIOTag(0x92u)	/* VTB/GTB */
1528#define BM_GUI_TABLE_CMD	BlockIOTag(0x93u)	/* GTPro */
1529/*	?			BlockIOTag(0x94u) */
1530/*	?			BlockIOTag(0x95u) */
1531/*	?			BlockIOTag(0x96u) */
1532/*	?			BlockIOTag(0x97u) */
1533/*	?			BlockIOTag(0x98u) */
1534/*	?			BlockIOTag(0x99u) */
1535/*	?			BlockIOTag(0x9au) */
1536/*	?			BlockIOTag(0x9bu) */
1537/*	?			BlockIOTag(0x9cu) */
1538/*	?			BlockIOTag(0x9du) */
1539/*	?			BlockIOTag(0x9eu) */
1540/*	?			BlockIOTag(0x9fu) */
1541#define PAT_REG0		BlockIOTag(0xa0u)
1542#define PAT_REG1		BlockIOTag(0xa1u)
1543#define PAT_CNTL		BlockIOTag(0xa2u)
1544#define PAT_MONO_EN			0x00000001ul
1545#define PAT_CLR_4x2_EN			0x00000002ul
1546#define PAT_CLR_8x1_EN			0x00000004ul
1547/*	?				0xfffffff8ul */
1548/*	?			BlockIOTag(0xa3u) */
1549/*	?			BlockIOTag(0xa4u) */
1550/*	?			BlockIOTag(0xa5u) */
1551/*	?			BlockIOTag(0xa6u) */
1552/*	?			BlockIOTag(0xa7u) */
1553#define SC_LEFT			BlockIOTag(0xa8u)
1554#define SC_RIGHT		BlockIOTag(0xa9u)
1555#define SC_LEFT_RIGHT		BlockIOTag(0xaau)
1556#define SC_TOP			BlockIOTag(0xabu)
1557#define SC_BOTTOM		BlockIOTag(0xacu)
1558#define SC_TOP_BOTTOM		BlockIOTag(0xadu)
1559#define USR1_DST_OFF_PITCH	BlockIOTag(0xaeu)	/* LTPro */
1560#define USR2_DST_OFF_PITCH	BlockIOTag(0xafu)	/* LTPro */
1561#define DP_BKGD_CLR		BlockIOTag(0xb0u)
1562#define DP_FRGD_CLR		BlockIOTag(0xb1u)
1563#define DP_WRITE_MASK		BlockIOTag(0xb2u)
1564#define DP_CHAIN_MASK		BlockIOTag(0xb3u)
1565#define DP_CHAIN_1BPP			0x00000000ul	/* Irrelevant */
1566#define DP_CHAIN_4BPP			0x00008888ul
1567#define DP_CHAIN_8BPP			0x00008080ul
1568#define DP_CHAIN_8BPP_332		0x00009292ul
1569#define DP_CHAIN_15BPP_1555		0x00004210ul
1570#define DP_CHAIN_16BPP_565		0x00008410ul
1571#define DP_CHAIN_24BPP_888		0x00008080ul
1572#define DP_CHAIN_32BPP_8888		0x00008080ul
1573/*	?				0xffff0000ul */
1574#define DP_PIX_WIDTH		BlockIOTag(0xb4u)
1575#define DP_DST_PIX_WIDTH		0x0000000ful
1576#define COMPOSITE_PIX_WIDTH		0x000000f0ul	/* GTPro */
1577#define DP_SRC_PIX_WIDTH		0x00000f00ul
1578/*	?				0x00001000ul */
1579#define DP_HOST_TRIPLE_EN		0x00002000ul	/* GT2c/VT4 */
1580#define DP_SRC_AUTONA_FIX_DIS		0x00004000ul	/* GTB */
1581#define DP_FAST_SRCCOPY_DIS		0x00008000ul	/* GTB */
1582#define DP_HOST_PIX_WIDTH		0x000f0000ul
1583#define DP_CI4_RGB_INDEX		0x00f00000ul	/* GTB */
1584#define DP_BYTE_PIX_ORDER		0x01000000ul
1585#define DP_CONVERSION_TEMP		0x02000000ul	/* GTB */
1586#define DP_CI4_RGB_LOW_NIBBLE		0x04000000ul	/* GTB */
1587#define DP_C14_RGB_HIGH_NIBBLE		0x08000000ul	/* GTB */
1588#define DP_SCALE_PIX_WIDTH		0xf0000000ul	/* GTB */
1589#define DP_MIX			BlockIOTag(0xb5u)
1590#define DP_BKGD_MIX			0x0000001ful
1591/*	?				0x0000ffe0ul */
1592#define DP_FRGD_MIX			0x001f0000ul
1593/*	?				0xffe00000ul */
1594#define DP_SRC			BlockIOTag(0xb6u)
1595#define DP_BKGD_SRC			0x00000007ul
1596/*	?				0x000000feul */
1597#define DP_FRGD_SRC			0x00000700ul
1598/*	?				0x0000fe00ul */
1599#define DP_MONO_SRC			0x00030000ul
1600#define DP_MONO_SRC_ALLONES			0x00000000ul
1601#define DP_MONO_SRC_PATTERN			0x00010000ul
1602#define DP_MONO_SRC_HOST			0x00020000ul
1603#define DP_MONO_SRC_BLIT			0x00030000ul
1604/*	?				0xfffc0000ul */
1605#define DP_FRGD_CLR_MIX		BlockIOTag(0xb7u)	/* VTB/GTB */
1606#define DP_FRGD_BKGD_CLR	BlockIOTag(0xb8u)	/* VTB/GTB */
1607/*	?			BlockIOTag(0xb9u) */
1608#define DST_X_Y			BlockIOTag(0xbau)	/* VTB/GTB */
1609#define DST_WIDTH_HEIGHT	BlockIOTag(0xbbu)	/* VTB/GTB */
1610#define USR_DST_PITCH		BlockIOTag(0xbcu)	/* GTPro */
1611/*	?			BlockIOTag(0xbdu) */
1612#define DP_SET_GUI_ENGINE2	BlockIOTag(0xbeu)	/* GTPro */
1613#define DP_SET_GUI_ENGINE	BlockIOTag(0xbfu)	/* VTB/GTB */
1614#define CLR_CMP_CLR		BlockIOTag(0xc0u)
1615#define CLR_CMP_MSK		BlockIOTag(0xc1u)
1616#define CLR_CMP_CNTL		BlockIOTag(0xc2u)
1617#define CLR_CMP_FN			0x00000007ul
1618#define CLR_CMP_FN_FALSE			0x00000000ul
1619#define CLR_CMP_FN_TRUE				0x00000001ul
1620/*	?					0x00000002ul */
1621/*	?					0x00000003ul */
1622#define CLR_CMP_FN_NOT_EQUAL			0x00000004ul
1623#define CLR_CMP_FN_EQUAL			0x00000005ul
1624/*	?					0x00000006ul */
1625/*	?					0x00000007ul */
1626/*	?				0x00fffff8ul */
1627#define CLR_CMP_SRC			0x03000000ul
1628#define CLR_CMP_SRC_DST				0x00000000ul
1629#define CLR_CMP_SRC_2D				0x01000000ul
1630#define CLR_CMP_SRC_TEXEL			0x02000000ul
1631/*	?					0x03000000ul */
1632/*	?				0xfc000000ul */
1633/*	?			BlockIOTag(0xc3u) */
1634#define FIFO_STAT		BlockIOTag(0xc4u)
1635#define FIFO_STAT_BITS			0x0000fffful
1636/*	?				0x7fff0000ul */
1637#define FIFO_ERR			0x80000000ul
1638/*	?			BlockIOTag(0xc5u) */
1639/*	?			BlockIOTag(0xc6u) */
1640/*	?			BlockIOTag(0xc7u) */
1641#define CONTEXT_MASK		BlockIOTag(0xc8u)
1642/*	?			BlockIOTag(0xc9u) */
1643/*	?			BlockIOTag(0xcau) */
1644#define CONTEXT_LOAD_CNTL	BlockIOTag(0xcbu)
1645#define CONTEXT_LOAD_PTR		0x00007ffful
1646/*	?				0x00008000ul */
1647#define CONTEXT_LOAD_CMD		0x00030000ul
1648#define CONTEXT_LOAD_NONE			0x00000000ul
1649#define CONTEXT_LOAD_ONLY			0x00010000ul
1650#define CONTEXT_LOAD_FILL			0x00020000ul
1651#define CONTEXT_LOAD_LINE			0x00030000ul
1652/*	?				0x7ffc0000ul */
1653#define CONTEXT_LOAD_DIS		0x80000000ul
1654#define GUI_TRAJ_CNTL		BlockIOTag(0xccu)
1655/*	?			BlockIOTag(0xcdu) */
1656#define GUI_STAT		BlockIOTag(0xceu)
1657#define GUI_ACTIVE			0x00000001ul
1658/*	?				0x000000feul */
1659#define DSTX_LT_SCISSOR_LEFT		0x00000100ul
1660#define DSTX_GT_SCISSOR_RIGHT		0x00000200ul
1661#define DSTY_LT_SCISSOR_TOP		0x00000400ul
1662#define DSTY_GT_SCISSOR_BOTTOM		0x00000800ul
1663/*	?				0x0000f000ul */
1664#define GUI_FIFO			0x03ff0000ul	/* VTB/GTB */
1665/*	?				0xfc000000ul */
1666/*	?			BlockIOTag(0xcfu) */
1667#define S_X_INC2		BlockIOTag(0xd0u)	/* GTB */
1668#define TEX_PALETTE_INDEX	BlockIOTag(0xd0u)	/* GTPro */
1669#define S_Y_INC2		BlockIOTag(0xd1u)	/* GTB */
1670#define STW_EXP			BlockIOTag(0xd1u)	/* GTPro */
1671#define S_XY_INC2		BlockIOTag(0xd2u)	/* GTB */
1672#define LOG_MAX_INC		BlockIOTag(0xd2u)	/* GTPro */
1673#define S_XINC_START		BlockIOTag(0xd3u)	/* GTB */
1674/*	S_Y_INC			BlockIOTag(0xd4u) */	/* Duplicate */
1675/*	SCALE_Y_PITCH		BlockIOTag(0xd4u) */	/* Duplicate */
1676#define S_START			BlockIOTag(0xd5u)	/* GTB */
1677#define T_X_INC2		BlockIOTag(0xd6u)	/* GTB */
1678#define W_X_INC			BlockIOTag(0xd6u)	/* GTPro */
1679#define T_Y_INC2		BlockIOTag(0xd7u)	/* GTB */
1680#define W_Y_INC			BlockIOTag(0xd7u)	/* GTPro */
1681#define T_XY_INC2		BlockIOTag(0xd8u)	/* GTB */
1682#define W_START			BlockIOTag(0xd8u)	/* GTPro */
1683#define T_XINC_START		BlockIOTag(0xd9u)	/* GTB */
1684#define T_Y_INC			BlockIOTag(0xdau)	/* GTB */
1685#define SECONDARY_SCALE_PITCH	BlockIOTag(0xdau)	/* GTPro */
1686#define T_START			BlockIOTag(0xdbu)	/* GTB */
1687#define TEX_SIZE_PITCH		BlockIOTag(0xdcu)	/* GTB */
1688#define TEX_CNTL		BlockIOTag(0xddu)	/* GTPro */
1689#define SECONDARY_TEX_OFFSET	BlockIOTag(0xdeu)	/* GTPro */
1690#define TEX_PAL_WR		BlockIOTag(0xdfu)	/* GTB */
1691#define TEX_PALETTE		BlockIOTag(0xdfu)	/* GTPro */
1692#define SCALE_PITCH_BOTH	BlockIOTag(0xe0u)	/* GTPro */
1693#define SECONDARY_SCALE_OFF_ACC	BlockIOTag(0xe1u)	/* GTPro */
1694#define SCALE_OFF_ACC		BlockIOTag(0xe2u)	/* GTPro */
1695#define SCALE_DST_Y_X		BlockIOTag(0xe3u)	/* GTPro */
1696/*	?			BlockIOTag(0xe4u) */
1697/*	?			BlockIOTag(0xe5u) */
1698#define COMPOSITE_SHADOW_ID	BlockIOTag(0xe6u)	/* GTPro */
1699#define SECONDARY_SCALE_X_INC	BlockIOTag(0xe7u)	/* GTPro */
1700#define SPECULAR_RED_X_INC	BlockIOTag(0xe7u)	/* GTPro */
1701#define SPECULAR_RED_Y_INC	BlockIOTag(0xe8u)	/* GTPro */
1702#define SPECULAR_RED_START	BlockIOTag(0xe9u)	/* GTPro */
1703#define SECONDARY_SCALE_HACC	BlockIOTag(0xe9u)	/* GTPro */
1704#define SPECULAR_GREEN_X_INC	BlockIOTag(0xeau)	/* GTPro */
1705#define SPECULAR_GREEN_Y_INC	BlockIOTag(0xebu)	/* GTPro */
1706#define SPECULAR_GREEN_START	BlockIOTag(0xecu)	/* GTPro */
1707#define SPECULAR_BLUE_X_INC	BlockIOTag(0xedu)	/* GTPro */
1708#define SPECULAR_BLUE_Y_INC	BlockIOTag(0xeeu)	/* GTPro */
1709#define SPECULAR_BLUE_START	BlockIOTag(0xefu)	/* GTPro */
1710/*	SCALE_X_INC		BlockIOTag(0xf0u) */	/* Duplicate */
1711/*	RED_X_INC		BlockIOTag(0xf0u) */	/* Duplicate */
1712#define RED_Y_INC		BlockIOTag(0xf1u)	/* GTB */
1713#define SCALE_HACC		BlockIOTag(0xf2u)	/* GTB */
1714#define RED_START		BlockIOTag(0xf2u)	/* GTB */
1715/*	GREEN_X_INC		BlockIOTag(0xf3u) */	/* Duplicate */
1716/*	SCALE_Y_INC		BlockIOTag(0xf3u) */	/* Duplicate */
1717#define GREEN_Y_INC		BlockIOTag(0xf4u)	/* GTB */
1718#define SECONDARY_SCALE_Y_INC	BlockIOTag(0xf4u)	/* GTPro */
1719#define SECONDARY_SCALE_VACC	BlockIOTag(0xf5u)	/* GTPro */
1720#define GREEN_START		BlockIOTag(0xf5u)	/* GTB */
1721#define BLUE_X_INC		BlockIOTag(0xf6u)	/* GTB */
1722#define SCALE_XUV_INC		BlockIOTag(0xf6u)	/* GTB */
1723#define BLUE_Y_INC		BlockIOTag(0xf7u)	/* GTB */
1724#define BLUE_START		BlockIOTag(0xf8u)	/* GTB */
1725#define SCALE_UV_HACC		BlockIOTag(0xf8u)	/* GTB */
1726#define Z_X_INC			BlockIOTag(0xf9u)	/* GTB */
1727#define Z_Y_INC			BlockIOTag(0xfau)	/* GTB */
1728#define Z_START			BlockIOTag(0xfbu)	/* GTB */
1729#define ALPHA_FOG_X_INC		BlockIOTag(0xfcu)	/* GTB */
1730#define ALPHA_FOG_Y_INC		BlockIOTag(0xfdu)	/* GTB */
1731#define ALPHA_FOG_START		BlockIOTag(0xfeu)	/* GTB */
1732/*	?			BlockIOTag(0xffu) */
1733#define OVERLAY_Y_X_START	BlockIOTag(0x100u)
1734#define OVERLAY_Y_START			0x000003fful
1735/*	?				0x0000fc00ul */
1736#define OVERLAY_X_START			0x03ff0000ul
1737/*	?				0x7c000000ul */
1738#define OVERLAY_LOCK_START		0x80000000ul
1739#define OVERLAY_Y_X_END		BlockIOTag(0x101u)
1740#define OVERLAY_Y_END			0x000003fful
1741/*	?				0x0000fc00ul */
1742#define OVERLAY_X_END			0x03ff0000ul
1743/*	?				0x7c000000ul */
1744#define OVERLAY_LOCK_END		0x80000000ul
1745#define OVERLAY_VIDEO_KEY_CLR	BlockIOTag(0x102u)
1746#define OVERLAY_VIDEO_KEY_MSK	BlockIOTag(0x103u)
1747#define OVERLAY_GRAPHICS_KEY_CLR BlockIOTag(0x104u)
1748#define OVERLAY_GRAPHICS_KEY_MSK BlockIOTag(0x105u)
1749#define OVERLAY_KEY_CNTL	BlockIOTag(0x106u)
1750#define OVERLAY_VIDEO_FN		0x00000007ul
1751/*	?				0x00000008ul */
1752#define OVERLAY_GRAPHICS_FN		0x00000070ul
1753/*	?				0x00000080ul */
1754#define OVERLAY_CMP_MIX			0x00000100ul
1755/*	?				0xfffffe00ul */
1756/*	?			BlockIOTag(0x107u) */
1757#define OVERLAY_SCALE_INC	BlockIOTag(0x108u)
1758#define OVERLAY_SCALE_CNTL	BlockIOTag(0x109u)
1759#define SCALE_PIX_EXPAND		0x00000001ul
1760#define SCALE_Y2R_TEMP			0x00000002ul
1761#define SCALE_HORZ_MODE			0x00000004ul
1762#define SCALE_VERT_MODE			0x00000008ul
1763#define SCALE_SIGNED_UV			0x00000010ul
1764#define SCALE_GAMMA_SEL			0x00000060ul
1765/*	?				0x03ffff80ul */
1766#define SCALE_BANDWIDTH			0x04000000ul
1767#define SCALE_DIS_LIMIT			0x08000000ul
1768/*	?				0x10000000ul */
1769#define SCALE_CLK_FORCE_ON		0x20000000ul
1770#define OVERLAY_EN			0x40000000ul
1771#define SCALE_EN			0x80000000ul
1772#define SCALER_HEIGHT_WIDTH	BlockIOTag(0x10au)
1773#define SCALER_TEST		BlockIOTag(0x10bu)
1774/*	?				0x00000001ul */
1775#define SCALE_Y2R_DIS			0x00000002ul
1776/*	?				0xfffffffcul */
1777#define SCALER_THRESHOLD	BlockIOTag(0x10cu)
1778#define SCALER_BUF0_OFFSET	BlockIOTag(0x10du)	/* VTB/GTB */
1779#define SCALER_BUF1_OFFSET	BlockIOTag(0x10eu)	/* VTB/GTB */
1780#define SCALER_BUF_PITCH	BlockIOTag(0x10fu)	/* VTB/GTB */
1781#define CAPTURE_Y_X		BlockIOTag(0x110u)
1782#define CAPTURE_START_END	BlockIOTag(0x110u)	/* VTB/GTB */
1783#define CAPTURE_HEIGHT_WIDTH	BlockIOTag(0x111u)
1784#define CAPTURE_X_WIDTH		BlockIOTag(0x111u)	/* VTB/GTB */
1785#define VIDEO_FORMAT		BlockIOTag(0x112u)
1786#define VIDEO_IN			0x0000000ful
1787/*	?					0x00000000ul */
1788/*	?					0x00000001ul */
1789/*	?					0x00000002ul */
1790/*	?					0x00000003ul */
1791/*	?					0x00000004ul */
1792/*	?					0x00000005ul */
1793/*	?					0x00000006ul */
1794/*	?					0x00000007ul */
1795/*	?					0x00000008ul */
1796/*	?					0x00000009ul */
1797/*	?					0x0000000aul */
1798#define VIDEO_IN_VYUY422			0x0000000bul
1799#define VIDEO_IN_YVYU422			0x0000000cul
1800/*	?					0x0000000dul */
1801/*	?					0x0000000eul */
1802/*	?					0x0000000ful */
1803#define VIDEO_SIGNED_UV			0x00000010ul
1804/*	?				0x0000ffe0ul */
1805#define SCALER_IN			0x000f0000ul
1806/*	?					0x00000000ul */
1807/*	?					0x00010000ul */
1808/*	?					0x00020000ul */
1809#define SCALER_IN_15BPP				0x00030000ul
1810#define SCALER_IN_16BPP				0x00040000ul
1811/*	?					0x00050000ul */
1812#define SCALER_IN_32BPP				0x00060000ul
1813/*	?					0x00070000ul */
1814/*	?					0x00080000ul */
1815#define SCALER_IN_YUV9				0x00090000ul
1816#define SCALER_IN_YUV12				0x000a0000ul
1817#define SCALER_IN_VYUY422			0x000b0000ul
1818#define SCALER_IN_YVYU422			0x000c0000ul
1819/*	?					0x000d0000ul */
1820/*	?					0x000e0000ul */
1821/*	?					0x000f0000ul */
1822/*	?				0x0ff00000ul */
1823#define HOST_BYTE_SHIFT_EN		0x10000000ul
1824#define HOST_YUV_APER			0x20000000ul
1825#define HOST_MEM_MODE			0xc0000000ul
1826#define HOST_MEM_MODE_NORMAL			0x00000000ul
1827#define HOST_MEM_MODE_Y				0x40000000ul
1828#define HOST_MEM_MODE_U				0x80000000ul
1829#define HOST_MEM_MODE_V				0xc0000000ul
1830#define VIDEO_CONFIG		BlockIOTag(0x113u)
1831#define VBI_START_END		BlockIOTag(0x113u)	/* VTB/GTB */
1832#define CAPTURE_CONFIG		BlockIOTag(0x114u)
1833#define CAP_INPUT_MODE			0x00000001ul
1834#define CAP_START_FIELD			0x00000002ul
1835#define CAP_BUF_MODE			0x00000004ul
1836#define CAP_START_BUF			0x00000008ul
1837#define CAP_BUF_TYPE			0x00000030ul
1838#define CAP_BUF_FIELD				0x00000000ul
1839#define CAP_BUF_ALTERNATING			0x00000010ul
1840#define CAP_BUF_FRAME				0x00000020ul
1841/*	?					0x00000030ul */
1842#define CAP_FIELD_FLIP			0x00000040ul
1843#define CAP_CCIR656_EN			0x00000080ul
1844/*	?				0x00000f00ul */
1845#define CAP_MIRROR_EN			0x00001000ul
1846#define ONESHOT_MIRROR_EN		0x00002000ul
1847#define ONESHOT_MODE			0x00004000ul
1848/*	?				0x00008000ul */
1849#define CAP_HORZ_DOWN			0x00030000ul
1850#define CAP_VERT_DOWN			0x000c0000ul
1851#define ONESHOT_HORZ_DOWN		0x00300000ul
1852#define ONESHOT_VERT_DOWN		0x00c00000ul
1853/*	?				0x0f000000ul */
1854#define OVL_BUF_MODE			0x10000000ul
1855#define OVL_BUF_NEXT			0x20000000ul
1856/*	?				0xc0000000ul */
1857#define TRIG_CNTL		BlockIOTag(0x115u)
1858#define CAP_TRIGGER			0x00000003ul
1859#define CAP_TRIGGER_NEXT			0x00000001ul
1860/*	?				0x0000001cul */
1861#define OVL_CUR_BUF			0x00000020ul
1862#define OVL_BUF_STATUS			0x00000040ul
1863#define CAP_BUF_STATUS			0x00000080ul
1864/*	?				0x7fffff00ul */
1865#define CAPTURE_EN			0x80000000ul
1866#define VIDEO_SYNC_TEST		BlockIOTag(0x116u)
1867#define OVERLAY_EXCLUSIVE_HORZ	BlockIOTag(0x116u)	/* VTB/GTB */
1868#define EXCLUSIVE_HORZ_START		0x000000fful
1869#define EXCLUSIVE_HORZ_END		0x0000ff00ul
1870#define EXCLUSIVE_HORZ_PORCH		0x00ff0000ul
1871/*	?				0x7f000000ul */
1872#define EXCLUSIVE_EN			0x80000000ul
1873#define EXT_CRTC_GEN_CNTL_R	BlockIOTag(0x117u)	/* VT-A4 (R) */
1874#define OVERLAY_EXCLUSIVE_VERT	BlockIOTag(0x117u)	/* VTB/GTB */
1875#define EXCLUSIVE_VERT_START		0x000003fful
1876/*	?				0x0000fc00ul */
1877#define EXCLUSIVE_VERT_END		0x03ff0000ul
1878/*	?				0xfc000000ul */
1879#define VMC_CONFIG		BlockIOTag(0x118u)
1880#define VBI_WIDTH		BlockIOTag(0x118u)	/* VTB/GTB */
1881#define VMC_STATUS		BlockIOTag(0x119u)
1882#define CAPTURE_DEBUG		BlockIOTag(0x119u)	/* VTB/GTB */
1883#define VMC_CMD			BlockIOTag(0x11au)
1884#define VIDEO_SYNC_TEST_B	BlockIOTag(0x11au)	/* VTB/GTB */
1885#define VMC_ARG0		BlockIOTag(0x11bu)
1886#define VMC_ARG1		BlockIOTag(0x11cu)
1887#define SNAPSHOT_VH_COUNTS	BlockIOTag(0x11cu)	/* GTPro */
1888#define VMC_SNOOP_ARG0		BlockIOTag(0x11du)
1889#define SNAPSHOT_F_COUNT	BlockIOTag(0x11du)	/* GTPro */
1890#define VMC_SNOOP_ARG1		BlockIOTag(0x11eu)
1891#define N_VIF_COUNT		BlockIOTag(0x11eu)	/* GTPro */
1892#define SNAPSHOT_VIF_COUNT	BlockIOTag(0x11fu)	/* GTPro */
1893#define BUF0_OFFSET		BlockIOTag(0x120u)
1894#define CAPTURE_BUF0_OFFSET	BlockIOTag(0x120u)	/* VTB/GTB */
1895#define CAPTURE_BUF1_OFFSET	BlockIOTag(0x121u)	/* VTB/GTB */
1896#define ONESHOT_BUF_OFFSET	BlockIOTag(0x122u)	/* VTB/GTB */
1897#define BUF0_PITCH		BlockIOTag(0x123u)
1898/*	?			BlockIOTag(0x124u) */
1899/*	?			BlockIOTag(0x125u) */
1900#define BUF1_OFFSET		BlockIOTag(0x126u)
1901/*	?			BlockIOTag(0x127u) */
1902/*	?			BlockIOTag(0x128u) */
1903#define BUF1_PITCH		BlockIOTag(0x129u)
1904/*	?			BlockIOTag(0x12au) */
1905#define BUF0_CAP_ODD_OFFSET	BlockIOTag(0x12bu)
1906#define BUF1_CAP_ODD_OFFSET	BlockIOTag(0x12cu)
1907#define SNAPSHOT2_VH_COUNTS	BlockIOTag(0x12cu)	/* LTPro */
1908#define SNAPSHOT2_F_COUNT	BlockIOTag(0x12du)	/* LTPro */
1909#define N_VIF2_COUNT		BlockIOTag(0x12eu)	/* LTPro */
1910#define SNAPSHOT2_VIF_COUNT	BlockIOTag(0x12fu)	/* LTPro */
1911#define VMC_STRM_DATA_0		BlockIOTag(0x130u)
1912/*	MPP_CONFIG		BlockIOTag(0x130u) */	/* See 0x3bu */
1913#define VMC_STRM_DATA_1		BlockIOTag(0x131u)
1914/*	MPP_STROBE_SEQ		BlockIOTag(0x131u) */	/* See 0x3cu */
1915#define VMC_STRM_DATA_2		BlockIOTag(0x132u)
1916/*	MPP_ADDR		BlockIOTag(0x132u) */	/* See 0x3du */
1917#define VMC_STRM_DATA_3		BlockIOTag(0x133u)
1918/*	MPP_DATA		BlockIOTag(0x133u) */	/* See 0x3eu */
1919#define VMC_STRM_DATA_4		BlockIOTag(0x134u)
1920#define VMC_STRM_DATA_5		BlockIOTag(0x135u)
1921#define VMC_STRM_DATA_6		BlockIOTag(0x136u)
1922#define VMC_STRM_DATA_7		BlockIOTag(0x137u)
1923#define VMC_STRM_DATA_8		BlockIOTag(0x138u)
1924#define VMC_STRM_DATA_9		BlockIOTag(0x139u)
1925#define VMC_STRM_DATA_A		BlockIOTag(0x13au)
1926#define VMC_STRM_DATA_B		BlockIOTag(0x13bu)
1927#define VMC_STRM_DATA_C		BlockIOTag(0x13cu)
1928#define VMC_STRM_DATA_D		BlockIOTag(0x13du)
1929#define VMC_STRM_DATA_E		BlockIOTag(0x13eu)
1930#define VMC_STRM_DATA_F		BlockIOTag(0x13fu)
1931/*	TVO_CNTL		BlockIOTag(0x140u) */	/* See 0x3fu */
1932/*	?			BlockIOTag(0x141u) */
1933/*	?			BlockIOTag(0x142u) */
1934/*	?			BlockIOTag(0x143u) */
1935/*	?			BlockIOTag(0x144u) */
1936/*	?			BlockIOTag(0x145u) */
1937/*	?			BlockIOTag(0x146u) */
1938/*	?			BlockIOTag(0x147u) */
1939/*	?			BlockIOTag(0x148u) */
1940/*	?			BlockIOTag(0x149u) */
1941/*	?			BlockIOTag(0x14au) */
1942/*	?			BlockIOTag(0x14bu) */
1943/*	?			BlockIOTag(0x14cu) */
1944/*	?			BlockIOTag(0x14du) */
1945/*	?			BlockIOTag(0x14eu) */
1946/*	?			BlockIOTag(0x14fu) */
1947/*	?			BlockIOTag(0x150u) */
1948#define CRT_HORZ_VERT_LOAD	BlockIOTag(0x151u)	/* VTB/GTB */
1949#define AGP_BASE		BlockIOTag(0x152u)	/* GTPro */
1950#define AGP_CNTL		BlockIOTag(0x153u)	/* GTPro */
1951#define AGP_MODE_1X                     0x00000001ul
1952#define AGP_MODE_2X                     0x00000002ul
1953#define AGP_MODE_MASK                   0x00000003ul
1954#define AGP_APER_SIZE_MASK              0x0000003ful
1955#define AGP_APER_SIZE_4MB               0x0000003ful
1956#define AGP_APER_SIZE_8MB               0x0000003eul
1957#define AGP_APER_SIZE_16MB              0x0000003cul
1958#define AGP_APER_SIZE_32MB              0x00000038ul
1959#define AGP_APER_SIZE_64MB              0x00000030ul
1960#define AGP_APER_SIZE_128MB             0x00000020ul
1961#define AGP_APER_SIZE_256MB             0x00000000ul
1962#define HIGH_PRIORITY_READ_EN           0x00010000ul
1963#define AGP_TRDY_MODE                   0x00020000ul
1964#define SCALER_COLOUR_CNTL	BlockIOTag(0x154u)	/* GTPro */
1965#define SCALE_BRIGHTNESS		0x0000007ful
1966/*	?				0x00000080ul */
1967#define SCALE_SATURATION_U		0x00001f00ul
1968/*	?				0x0000e000ul */
1969#define SCALE_SATURATION_V		0x001f0000ul
1970#define SCALE_VERT_ADJ_UV		0x0fe00000ul
1971#define SCALE_HORZ_ADJ_UV		0xf0000000ul
1972#define SCALER_H_COEFF0		BlockIOTag(0x155u)	/* GTPro */
1973#define SCALER_H_COEFF1		BlockIOTag(0x156u)	/* GTPro */
1974#define SCALER_H_COEFF2		BlockIOTag(0x157u)	/* GTPro */
1975#define SCALER_H_COEFF3		BlockIOTag(0x158u)	/* GTPro */
1976#define SCALER_H_COEFF4		BlockIOTag(0x159u)	/* GTPro */
1977/*	?			BlockIOTag(0x15au) */
1978/*	?			BlockIOTag(0x15bu) */
1979#define GUI_CMDFIFO_DEBUG	BlockIOTag(0x15cu)	/* GT2c/VT4 */
1980#define GUI_CMDFIFO_DATA	BlockIOTag(0x15du)	/* GT2c/VT4 */
1981#define GUI_CNTL		BlockIOTag(0x15eu)	/* GT2c/VT4 */
1982#define CMDFIFO_SIZE_MODE		0x00000003ul
1983/*	?				0x0000fffcul */
1984#define IDCT_PRSR_MODE			0x00010000ul	/* XL/XC */
1985#define IDCT_BLOCK_GUI_INITIATOR	0x00020000ul	/* XL/XC */
1986/*	?				0xfffc0000ul */
1987/*	?			BlockIOTag(0x15fu) */
1988#define BM_FRAME_BUF_OFFSET	BlockIOTag(0x160u)	/* VTB/GTB */
1989#define BM_SYSTEM_MEM_ADDR	BlockIOTag(0x161u)	/* VTB/GTB */
1990#define BM_COMMAND		BlockIOTag(0x162u)	/* VTB/GTB */
1991#define BM_STATUS		BlockIOTag(0x163u)	/* VTB/GTB */
1992/*	?			BlockIOTag(0x164u) */
1993/*	?			BlockIOTag(0x165u) */
1994/*	?			BlockIOTag(0x166u) */
1995/*	?			BlockIOTag(0x167u) */
1996/*	?			BlockIOTag(0x168u) */
1997/*	?			BlockIOTag(0x169u) */
1998/*	?			BlockIOTag(0x16au) */
1999/*	?			BlockIOTag(0x16bu) */
2000/*	?			BlockIOTag(0x16cu) */
2001/*	?			BlockIOTag(0x16du) */
2002#define BM_GUI_TABLE		BlockIOTag(0x16eu)	/* VTB/GTB */
2003#define BM_SYSTEM_TABLE		BlockIOTag(0x16fu)	/* VTB/GTB */
2004/*	?			BlockIOTag(0x170u) */
2005/*	?			BlockIOTag(0x171u) */
2006/*	?			BlockIOTag(0x172u) */
2007/*	?			BlockIOTag(0x173u) */
2008/*	?			BlockIOTag(0x174u) */
2009#define SCALER_BUF0_OFFSET_U	BlockIOTag(0x175u)	/* GTPro */
2010#define SCALER_BUF0_OFFSET_V	BlockIOTag(0x176u)	/* GTPro */
2011#define SCALER_BUF1_OFFSET_U	BlockIOTag(0x177u)	/* GTPro */
2012#define SCALER_BUF1_OFFSET_V	BlockIOTag(0x178u)	/* GTPro */
2013/*	?			BlockIOTag(0x179u) */
2014/*	?			BlockIOTag(0x17au) */
2015/*	?			BlockIOTag(0x17bu) */
2016/*	?			BlockIOTag(0x17cu) */
2017/*	?			BlockIOTag(0x17du) */
2018/*	?			BlockIOTag(0x17eu) */
2019/*	?			BlockIOTag(0x17fu) */
2020/*	?			BlockIOTag(0x180u) */
2021/*	?			BlockIOTag(0x181u) */
2022/*	?			BlockIOTag(0x182u) */
2023/*	?			BlockIOTag(0x183u) */
2024/*	?			BlockIOTag(0x184u) */
2025/*	?			BlockIOTag(0x185u) */
2026/*	?			BlockIOTag(0x186u) */
2027/*	?			BlockIOTag(0x187u) */
2028/*	?			BlockIOTag(0x188u) */
2029/*	?			BlockIOTag(0x189u) */
2030/*	?			BlockIOTag(0x18au) */
2031/*	?			BlockIOTag(0x18bu) */
2032/*	?			BlockIOTag(0x18cu) */
2033/*	?			BlockIOTag(0x18du) */
2034/*	?			BlockIOTag(0x18eu) */
2035/*	?			BlockIOTag(0x18fu) */
2036#define VERTEX_1_S		BlockIOTag(0x190u)	/* GTPro */
2037#define VERTEX_1_T		BlockIOTag(0x191u)	/* GTPro */
2038#define VERTEX_1_W		BlockIOTag(0x192u)	/* GTPro */
2039#define VERTEX_1_SPEC_ARGB	BlockIOTag(0x193u)	/* GTPro */
2040#define VERTEX_1_Z		BlockIOTag(0x194u)	/* GTPro */
2041#define VERTEX_1_ARGB		BlockIOTag(0x195u)	/* GTPro */
2042#define VERTEX_1_X_Y		BlockIOTag(0x196u)	/* GTPro */
2043#define ONE_OVER_AREA		BlockIOTag(0x197u)	/* GTPro */
2044#define VERTEX_2_S		BlockIOTag(0x198u)	/* GTPro */
2045#define VERTEX_2_T		BlockIOTag(0x199u)	/* GTPro */
2046#define VERTEX_2_W		BlockIOTag(0x19au)	/* GTPro */
2047#define VERTEX_2_SPEC_ARGB	BlockIOTag(0x19bu)	/* GTPro */
2048#define VERTEX_2_Z		BlockIOTag(0x19cu)	/* GTPro */
2049#define VERTEX_2_ARGB		BlockIOTag(0x19du)	/* GTPro */
2050#define VERTEX_2_X_Y		BlockIOTag(0x19eu)	/* GTPro */
2051/*	ONE_OVER_AREA		BlockIOTag(0x19fu) */	/* Duplicate */
2052#define VERTEX_3_S		BlockIOTag(0x1a0u)	/* GTPro */
2053#define VERTEX_3_T		BlockIOTag(0x1a1u)	/* GTPro */
2054#define VERTEX_3_W		BlockIOTag(0x1a2u)	/* GTPro */
2055#define VERTEX_3_SPEC_ARGB	BlockIOTag(0x1a3u)	/* GTPro */
2056#define VERTEX_3_Z		BlockIOTag(0x1a4u)	/* GTPro */
2057#define VERTEX_3_ARGB		BlockIOTag(0x1a5u)	/* GTPro */
2058#define VERTEX_3_X_Y		BlockIOTag(0x1a6u)	/* GTPro */
2059/*	ONE_OVER_AREA		BlockIOTag(0x1a7u) */	/* Duplicate */
2060#define VERTEX_3_SECONDARY_S	BlockIOTag(0x1a8u)	/* GTPro */
2061#define VERTEX_3_SECONDARY_T	BlockIOTag(0x1a9u)	/* GTPro */
2062#define VERTEX_3_SECONDARY_W	BlockIOTag(0x1aau)	/* GTPro */
2063/*	VERTEX_1_S		BlockIOTag(0x1abu) */	/* Duplicate */
2064/*	VERTEX_1_T		BlockIOTag(0x1acu) */	/* Duplicate */
2065/*	VERTEX_1_W		BlockIOTag(0x1adu) */	/* Duplicate */
2066/*	VERTEX_2_S		BlockIOTag(0x1aeu) */	/* Duplicate */
2067/*	VERTEX_2_T		BlockIOTag(0x1afu) */	/* Duplicate */
2068/*	VERTEX_2_W		BlockIOTag(0x1b0u) */	/* Duplicate */
2069/*	VERTEX_3_S		BlockIOTag(0x1b1u) */	/* Duplicate */
2070/*	VERTEX_3_T		BlockIOTag(0x1b2u) */	/* Duplicate */
2071/*	VERTEX_3_W		BlockIOTag(0x1b3u) */	/* Duplicate */
2072/*	VERTEX_1_SPEC_ARGB	BlockIOTag(0x1b4u) */	/* Duplicate */
2073/*	VERTEX_2_SPEC_ARGB	BlockIOTag(0x1b5u) */	/* Duplicate */
2074/*	VERTEX_3_SPEC_ARGB	BlockIOTag(0x1b6u) */	/* Duplicate */
2075/*	VERTEX_1_Z		BlockIOTag(0x1b7u) */	/* Duplicate */
2076/*	VERTEX_2_Z		BlockIOTag(0x1b8u) */	/* Duplicate */
2077/*	VERTEX_3_Z		BlockIOTag(0x1b9u) */	/* Duplicate */
2078/*	VERTEX_1_ARGB		BlockIOTag(0x1bau) */	/* Duplicate */
2079/*	VERTEX_2_ARGB		BlockIOTag(0x1bbu) */	/* Duplicate */
2080/*	VERTEX_3_ARGB		BlockIOTag(0x1bcu) */	/* Duplicate */
2081/*	VERTEX_1_X_Y		BlockIOTag(0x1bdu) */	/* Duplicate */
2082/*	VERTEX_2_X_Y		BlockIOTag(0x1beu) */	/* Duplicate */
2083/*	VERTEX_3_X_Y		BlockIOTag(0x1bfu) */	/* Duplicate */
2084#define ONE_OVER_AREA_UC	BlockIOTag(0x1c0u)	/* GTPro */
2085#define SETUP_CNTL		BlockIOTag(0x1c1u)	/* GTPro */
2086/*	?			BlockIOTag(0x1c2u) */
2087/*	?			BlockIOTag(0x1c3u) */
2088/*	?			BlockIOTag(0x1c4u) */
2089/*	?			BlockIOTag(0x1c5u) */
2090/*	?			BlockIOTag(0x1c6u) */
2091/*	?			BlockIOTag(0x1c7u) */
2092/*	?			BlockIOTag(0x1c8u) */
2093/*	?			BlockIOTag(0x1c9u) */
2094#define VERTEX_1_SECONDARY_S	BlockIOTag(0x1cau)	/* GTPro */
2095#define VERTEX_1_SECONDARY_T	BlockIOTag(0x1cbu)	/* GTPro */
2096#define VERTEX_1_SECONDARY_W	BlockIOTag(0x1ccu)	/* GTPro */
2097#define VERTEX_2_SECONDARY_S	BlockIOTag(0x1cdu)	/* GTPro */
2098#define VERTEX_2_SECONDARY_T	BlockIOTag(0x1ceu)	/* GTPro */
2099#define VERTEX_2_SECONDARY_W	BlockIOTag(0x1cfu)	/* GTPro */
2100/*	?			BlockIOTag(0x1d0u) */
2101/*	?			BlockIOTag(0x1d1u) */
2102/*	?			BlockIOTag(0x1d2u) */
2103/*	?			BlockIOTag(0x1d3u) */
2104/*	?			BlockIOTag(0x1d4u) */
2105/*	?			BlockIOTag(0x1d5u) */
2106/*	?			BlockIOTag(0x1d6u) */
2107/*	?			BlockIOTag(0x1d7u) */
2108/*	?			BlockIOTag(0x1d8u) */
2109/*	?			BlockIOTag(0x1d9u) */
2110/*	?			BlockIOTag(0x1dau) */
2111/*	?			BlockIOTag(0x1dbu) */
2112/*	?			BlockIOTag(0x1dcu) */
2113/*	?			BlockIOTag(0x1ddu) */
2114/*	?			BlockIOTag(0x1deu) */
2115/*	?			BlockIOTag(0x1dfu) */
2116/*	?			BlockIOTag(0x1e0u) */
2117/*	?			BlockIOTag(0x1e1u) */
2118/*	?			BlockIOTag(0x1e2u) */
2119/*	?			BlockIOTag(0x1e3u) */
2120/*	?			BlockIOTag(0x1e4u) */
2121/*	?			BlockIOTag(0x1e5u) */
2122/*	?			BlockIOTag(0x1e6u) */
2123/*	?			BlockIOTag(0x1e7u) */
2124/*	?			BlockIOTag(0x1e8u) */
2125/*	?			BlockIOTag(0x1e9u) */
2126/*	?			BlockIOTag(0x1eau) */
2127/*	?			BlockIOTag(0x1ebu) */
2128/*	?			BlockIOTag(0x1ecu) */
2129/*	?			BlockIOTag(0x1edu) */
2130/*	?			BlockIOTag(0x1eeu) */
2131/*	?			BlockIOTag(0x1efu) */
2132/*	?			BlockIOTag(0x1f0u) */
2133/*	?			BlockIOTag(0x1f1u) */
2134/*	?			BlockIOTag(0x1f2u) */
2135/*	?			BlockIOTag(0x1f3u) */
2136/*	?			BlockIOTag(0x1f4u) */
2137/*	?			BlockIOTag(0x1f5u) */
2138/*	?			BlockIOTag(0x1f6u) */
2139/*	?			BlockIOTag(0x1f7u) */
2140/*	?			BlockIOTag(0x1f8u) */
2141/*	?			BlockIOTag(0x1f9u) */
2142/*	?			BlockIOTag(0x1fau) */
2143/*	?			BlockIOTag(0x1fbu) */
2144/*	?			BlockIOTag(0x1fcu) */
2145/*	?			BlockIOTag(0x1fdu) */
2146/*	?			BlockIOTag(0x1feu) */
2147/*	?			BlockIOTag(0x1ffu) */
2148
2149/* Definitions for MEM_CNTL's CTL_MEM_?????_APER_ENDIAN fields */
2150#define CTL_MEM_APER_BYTE_ENDIAN	0x00u
2151#define CTL_MEM_APER_WORD_ENDIAN	0x01u
2152#define CTL_MEM_APER_LONG_ENDIAN	0x02u
2153/*	?				0x03u */
2154
2155/* Definitions for an ICS2595's programme word */
2156#define ICS2595_CLOCK		0x000001f0ul
2157#define ICS2595_FB_DIV		0x0001fe00ul		/* Feedback divider */
2158#define ICS2595_POST_DIV	0x000c0000ul		/* Post-divider */
2159#define ICS2595_STOP		0x00300000ul		/* Stop bits */
2160#define ICS2595_TOGGLE		(ICS2595_POST_DIV | ICS2595_STOP)
2161
2162/* Definitions for internal PLL registers on a 264xT */
2163#define PLL_MPLL_CNTL		0x00u
2164#define MPLL_PC_GAIN			0x07u
2165#define MPLL_VC_GAIN			0x18u
2166#define MPLL_D_CYC			0x60u
2167#define MPLL_RANGE			0x80u
2168#define VPLL_CNTL		0x01u
2169#define VPLL_PC_GAIN			0x07u
2170#define VPLL_VC_GAIN			0x18u
2171#define VPLL_D_CYC			0x60u
2172#define VPLL_RANGE			0x80u
2173#define PLL_REF_DIV		0x02u
2174#define PLL_GEN_CNTL		0x03u
2175#define PLL_OVERRIDE			0x01u
2176#define PLL_SLEEP			0x01u	/* GTPro */
2177#define PLL_MCLK_RESET			0x02u
2178#define PLL_OSC_EN			0x04u
2179#define PLL_EXT_CLK_EN			0x08u
2180#define PLL_MCLK_SRC_SEL		0x70u
2181#define PLL_EXT_CLK_CNTL		0x80u	/* CT/ET */
2182#define PLL_DLL_PWDN			0x80u	/* VTB/GTB/LT */
2183#define PLL_MCLK_FB_DIV		0x04u
2184#define PLL_VCLK_CNTL		0x05u
2185#define PLL_VCLK_SRC_SEL		0x03u
2186#define PLL_VCLK_RESET			0x04u
2187#define PLL_VCLK_INVERT			0x08u
2188#define PLL_ECP_DIV			0x30u	/* VT/GT */
2189#define PLL_ERATE_GT_XRATE		0x40u	/* VT/GT */
2190#define PLL_SCALER_LOCK_EN		0x80u	/* VT/GT */
2191#define PLL_VCLK_POST_DIV	0x06u
2192#define PLL_VCLK0_POST_DIV		0x03u
2193#define PLL_VCLK1_POST_DIV		0x0cu
2194#define PLL_VCLK2_POST_DIV		0x30u
2195#define PLL_VCLK3_POST_DIV		0xc0u
2196#define PLL_VCLK0_FB_DIV	0x07u
2197#define PLL_VCLK1_FB_DIV	0x08u
2198#define PLL_VCLK2_FB_DIV	0x09u
2199#define PLL_VCLK3_FB_DIV	0x0au
2200#define PLL_XCLK_CNTL		0x0bu		/* VT/GT */
2201#define PLL_XCLK_MCLK_RATIO		0x03u
2202#define PLL_XCLK_SRC_SEL		0x07u	/* VTB/GTB/LT */
2203#define PLL_MFB_TIMES_4_2B		0x08u
2204#define PLL_VCLK0_XDIV			0x10u
2205#define PLL_VCLK1_XDIV			0x20u
2206#define PLL_VCLK2_XDIV			0x40u
2207#define PLL_VCLK3_XDIV			0x80u
2208#define PLL_FCP_CNTL		0x0cu		/* VT/GT */
2209#define PLL_FCP_POST_DIV		0x0fu
2210#define PLL_FCP_SRC_SEL			0x70u
2211#define PLL_DCLK_BY2_EN			0x80u
2212#define PLL_DLL_CNTL		0x0cu		/* VTB/GTB/LT */
2213#define PLL_DLL_REF_SRC			0x03u
2214#define PLL_DLL_FB_SRC			0x0cu
2215#define PLL_DLL_GAIN			0x30u
2216#define PLL_DLL_RESET			0x40u
2217#define PLL_DLL_HCLK_OUT_EN		0x80u
2218#define PLL_VFC_CNTL		0x0du		/* VT/GT */
2219#define PLL_DCLK_INVB			0x01u
2220#define PLL_DCLKBY2_EN			0x02u
2221#define PLL_VFC_2PHASE			0x04u
2222#define PLL_VFC_DELAY			0x18u
2223#define PLL_VFC_DCLKBY2_SHIFT		0x20u
2224/*	?				0x40u */
2225#define PLL_TST_SRC_SEL_BIT5		0x80u	/* VTB/GTB/LT */
2226#define PLL_TEST_CNTL		0x0eu
2227#define PLL_TST_SRC_SEL			0x1fu
2228#define PLL_TST_DIVIDERS		0x20u
2229#define PLL_TST_MASK_READ		0x40u
2230#define PLL_TST_ANALOG_MON_EN		0x80u
2231#define PLL_TEST_COUNT		0x0fu
2232#define PLL_LVDSPLL_CNTL0	0x10u		/* LT */
2233#define PLL_FPDI_NS_TIMING		0x01u
2234#define PLL_CURR_LEVEL			0x0eu
2235#define PLL_LVDS_TEST_MODE		0xf0u
2236#define PLL_LVDSPLL_CNTL1	0x11u		/* LT */
2237#define PLL_LPPL_RANGE			0x01u
2238#define PLL_LPLL_DUTY			0x06u
2239#define PLL_LPLL_VC_GAIN		0x18u
2240#define PLL_LPLL_CP_GAIN		0xe0u
2241#define PLL_AGP1_CNTL		0x12u		/* GTPro */
2242#define PLL_AGP2_CNTL		0x13u		/* GTPro */
2243#define PLL_DLL2_CNTL		0x14u		/* GTPro */
2244#define PLL_SCLK_FB_DIV		0x15u		/* GTPro */
2245#define PLL_SPLL_CNTL1		0x16u		/* GTPro */
2246#define PLL_SPLL_CNTL2		0x17u		/* GTPro */
2247#define PLL_APLL_STRAPS		0x18u		/* GTPro */
2248#define PLL_EXT_VPLL_CNTL	0x19u		/* GTPro */
2249#define PLL_EXT_VPLL_REF_SRC		0x03u
2250#define PLL_EXT_VPLL_EN			0x04u
2251#define PLL_EXT_VPLL_VGA_EN		0x08u
2252#define PLL_EXT_VPLL_INSYNC		0x10u
2253/*	?				0x60u */
2254#define PLL_EXT_V2PLL_EN		0x80u
2255#define PLL_EXT_VPLL_REF_DIV	0x1au		/* GTPro */
2256#define PLL_EXT_VPLL_FB_DIV	0x1bu		/* GTPro */
2257#define PLL_EXT_VPLL_MSB	0x1cu		/* GTPro */
2258#define PLL_HTOTAL_CNTL		0x1du		/* GTPro */
2259#define PLL_BYTE_CLK_CNTL	0x1eu		/* GTPro */
2260#define PLL_TV_REF_DIV		0x1fu		/* LTPro */
2261#define PLL_TV_FB_DIV		0x20u		/* LTPro */
2262#define PLL_TV_CNTL		0x21u		/* LTPro */
2263#define PLL_TV_GEN_CNTL		0x22u		/* LTPro */
2264#define PLL_V2_CNTL		0x23u		/* LTPro */
2265#define PLL_V2_GEN_CNTL		0x24u		/* LTPro */
2266#define PLL_V2_REF_DIV		0x25u		/* LTPro */
2267#define PLL_V2_FB_DIV		0x26u		/* LTPro */
2268#define PLL_V2_MSB		0x27u		/* LTPro */
2269#define PLL_HTOTAL2_CNTL	0x28u		/* LTPro */
2270#define PLL_YCLK_CNTL		0x29u		/* XC/XL */
2271#define PM_DYN_CLK_CNTL		0x2au		/* XC/XL */
2272/*	?			0x2bu */
2273/*	?			0x2cu */
2274/*	?			0x2du */
2275/*	?			0x2eu */
2276/*	?			0x2fu */
2277/*	?			0x30u */
2278/*	?			0x31u */
2279/*	?			0x32u */
2280/*	?			0x33u */
2281/*	?			0x34u */
2282/*	?			0x35u */
2283/*	?			0x36u */
2284/*	?			0x37u */
2285/*	?			0x38u */
2286/*	?			0x39u */
2287/*	?			0x3au */
2288/*	?			0x3bu */
2289/*	?			0x3cu */
2290/*	?			0x3du */
2291/*	?			0x3eu */
2292/*	?			0x3fu */
2293
2294/* Definitions for an LTPro's 32-bit LCD registers */
2295#define LCD_CONFIG_PANEL	0x00u	/* See LT's CONFIG_PANEL (0x1d) */
2296#define LCD_GEN_CNTL		0x01u	/* See LT's LCD_GEN_CTRL (0x35) */
2297#define LCD_DSTN_CONTROL	0x02u	/* See LT's DSTN_CONTROL (0x1f) */
2298#define LCD_HFB_PITCH_ADDR	0x03u	/* See LT's HFB_PITCH_ADDR (0x2a) */
2299#define LCD_HORZ_STRETCHING	0x04u	/* See LT's HORZ_STRETCHING (0x32) */
2300#define LCD_VERT_STRETCHING	0x05u	/* See LT's VERT_STRETCHING (0x33) */
2301#define LCD_EXT_VERT_STRETCH	0x06u
2302#define VERT_STRETCH_RATIO3		0x000003fful
2303#define FORCE_DAC_DATA			0x000000fful
2304#define FORCE_DAC_DATA_SEL		0x00000300ul
2305#define VERT_STRETCH_MODE		0x00000400ul
2306#define VERT_PANEL_SIZE			0x003ff800ul
2307#define AUTO_VERT_RATIO			0x00400000ul
2308#define USE_AUTO_FP_POS			0x00800000ul
2309#define USE_AUTO_LCD_VSYNC		0x01000000ul
2310/*	?				0xfe000000ul */
2311#define LCD_LT_GIO		0x07u	/* See LT's LT_GIO (0x2f) */
2312#define LCD_POWER_MANAGEMENT	0x08u	/* See LT's POWER_MANAGEMENT (0x36) */
2313#define LCD_ZVGPIO		0x09u
2314#define LCD_ICON_CLR0		0x0au			/* Mobility */
2315#define LCD_ICON_CLR1		0x0bu			/* Mobility */
2316#define LCD_ICON_OFFSET		0x0cu			/* Mobility */
2317#define LCD_ICON_HORZ_VERT_POSN	0x0du			/* Mobility */
2318#define LCD_ICON_HORZ_VERT_OFF	0x0eu			/* Mobility */
2319#define LCD_ICON2_CLR0		0x0fu			/* Mobility */
2320#define LCD_ICON2_CLR1		0x10u			/* Mobility */
2321#define LCD_ICON2_OFFSET	0x11u			/* Mobility */
2322#define LCD_ICON2_HORZ_VERT_POSN 0x12u			/* Mobility */
2323#define LCD_ICON2_HORZ_VERT_OFF	0x13u			/* Mobility */
2324#define LCD_MISC_CNTL		0x14u			/* XC/XL */
2325#define BL_MOD_LEVEL			0x000000fful
2326#define BIAS_MOD_LEVEL			0x0000ff00ul
2327#define BLMOD_EN			0x00010000ul
2328#define BIASMOD_EN			0x00020000ul
2329/*	?				0x00040000ul */
2330#define PWRSEQ_MODE			0x00080000ul
2331#define APC_EN				0x00100000ul
2332#define MONITOR_DET_EN			0x00200000ul
2333#define FORCE_DAC_DATA_SEL_X		0x00c00000ul
2334#define FORCE_DAC_DATA_X		0xff000000ul
2335#define LCD_TMDS_CNTL		0x15u			/* XC/XL */
2336#define LCD_SCRATCH_PAD_4M	0x15u			/* Mobility */
2337#define LCD_TMDS_SYNC_CHAR_SETA	0x16u			/* XC/XL */
2338#define LCD_SCRATCH_PAD_5M	0x16u			/* Mobility */
2339#define LCD_TMDS_SYNC_CHAR_SETB	0x17u			/* XC/XL */
2340#define LCD_SCRATCH_PAD_6M	0x17u			/* Mobility */
2341#define LCD_TMDS_SRC		0x18u			/* XC/XL */
2342#define LCD_SCRATCH_PAD_7M	0x18u			/* Mobility */
2343#define LCD_PLTSTBLK_CNTL	0x19u			/* XC/XL */
2344#define LCD_SCRATCH_PAD_8M	0x19u			/* Mobility */
2345#define LCD_SYNC_GEN_CNTL	0x1au			/* XC/XL */
2346#define LCD_PATTERN_GEN_SEED	0x1bu			/* XC/XL */
2347#define LCD_APC_CNTL		0x1cu			/* XC/XL */
2348#define LCD_POWER_MANAGEMENT_2	0x1du			/* XC/XL */
2349#define LCD_XCLK_DISP_PM_EN		0x00000001ul
2350#define LCD_XCLK_DISP2_PM_EN		0x00000002ul	/* Mobility */
2351#define LCD_XCLK_VID_PM_EN		0x00000004ul
2352#define LCD_XCLK_SCL_PM_EN		0x00000008ul
2353#define LCD_XCLK_GUI_PM_EN		0x00000010ul
2354#define LCD_XCLK_SUB_PM_EN		0x00000020ul
2355/*	?				0x000000c0ul */
2356#define LCD_MCLK_PM_EN			0x00000100ul
2357#define LCD_SS_EN			0x00000200ul
2358#define LCD_BLON_DIGON_EN		0x00000400ul
2359/*	?				0x00000800ul */
2360#define LCD_PM_DYN_XCLK_SYNC		0x00003000ul
2361#define LCD_SEL_W4MS			0x00004000ul
2362/*	?				0x00008000ul */
2363#define LCD_PM_DYN_XCLK_EN		0x00010000ul
2364#define LCD_PM_XCLK_ALWAYS		0x00020000ul
2365#define LCD_PM_DYN_XCLK_STATUS		0x00040000ul
2366#define LCD_PCI_ACC_DIS			0x00080000ul
2367#define LCD_PM_DYN_XCLK_DISP		0x00100000ul
2368#define LCD_PM_DYN_XCLK_DISP2		0x00200000ul	/* Mobility */
2369#define LCD_PM_DYN_XCLK_VID		0x00400000ul
2370#define LCD_PM_DYN_XCLK_HFB		0x00800000ul
2371#define LCD_PM_DYN_XCLK_SCL		0x01000000ul
2372#define LCD_PM_DYN_XCLK_SUB		0x02000000ul
2373#define LCD_PM_DYN_XCLK_GUI		0x04000000ul
2374#define LCD_PM_DYN_XCLK_HOST		0x08000000ul
2375/*	?				0xf0000000ul */
2376#define LCD_PRI_ERR_PATTERN	0x1eu			/* XC/XL */
2377#define LCD_CUR_ERR_PATTERN	0x1fu			/* XC/XL */
2378#define LCD_PLTSTBLK_RPT	0x20u			/* XC/XL */
2379#define LCD_SYNC_RPT		0x21u			/* XC/XL */
2380#define LCD_CRC_PATTERN_RPT	0x22u			/* XC/XL */
2381#define LCD_PL_TRANSMITTER_CNTL	0x23u			/* XC/XL */
2382#define LCD_PL_PLL_CNTL		0x24u			/* XC/XL */
2383#define LCD_ALPHA_BLENDING	0x25u			/* Mobility */
2384#define LCD_PORTRAIT_GEN_CNTL	0x26u			/* Mobility */
2385#define LCD_APC_CTRL_IO		0x27u			/* Mobility */
2386#define LCD_TEST_IO		0x28u			/* XC/XL */
2387/*	?			0x29u */
2388#define LCD_DP1_MEM_ACCESS	0x2au			/* XC/XL */
2389#define LCD_DP0_MEM_ACCESS	0x2bu			/* XC/XL */
2390#define LCD_DP0_DEBUG_A		0x2cu			/* XC/XL */
2391#define LCD_DP0_DEBUG_B		0x2du			/* XC/XL */
2392#define LCD_DP1_DEBUG_A		0x2eu			/* XC/XL */
2393#define LCD_DP1_DEBUG_B		0x2fu			/* XC/XL */
2394#define LCD_DPCTRL_DEBUG_A	0x30u			/* XC/XL */
2395#define LCD_DPCTRL_DEBUG_B	0x31u			/* XC/XL */
2396#define LCD_MEMBLK_DEBUG	0x32u			/* XC/XL */
2397#define LCD_APC_LUT_AB		0x33u			/* Mobility */
2398#define LCD_SCRATCH_PAD_4X	0x33u			/* XL/XC */
2399#define LCD_APC_LUT_CD		0x34u			/* Mobility */
2400#define LCD_SCRATCH_PAD_5X	0x34u			/* XL/XC */
2401#define LCD_APC_LUT_EF		0x35u			/* Mobility */
2402#define LCD_SCRATCH_PAD_6X	0x35u			/* XL/XC */
2403#define LCD_APC_LUT_GH		0x36u			/* Mobility */
2404#define LCD_SCRATCH_PAD_7X	0x36u			/* XL/XC */
2405#define LCD_APC_LUT_IJ		0x37u			/* Mobility */
2406#define LCD_SCRATCH_PAD_8X	0x37u			/* XL/XC */
2407#define LCD_APC_LUT_KL		0x38u			/* Mobility */
2408#define LCD_APC_LUT_MN		0x39u			/* Mobility */
2409#define LCD_APC_LUT_OP		0x3au			/* Mobility */
2410/*	?			0x3bu */
2411/*	?			0x3cu */
2412/*	?			0x3du */
2413/*	?			0x3eu */
2414/*	?			0x3fu */
2415
2416/* Definitions for an LTPro's TV registers */
2417/*	?			0x00u */
2418/*	?			0x01u */
2419/*	?			0x02u */
2420/*	?			0x03u */
2421/*	?			0x04u */
2422/*	?			0x05u */
2423/*	?			0x06u */
2424/*	?			0x07u */
2425/*	?			0x08u */
2426/*	?			0x09u */
2427/*	?			0x0au */
2428/*	?			0x0bu */
2429/*	?			0x0cu */
2430/*	?			0x0du */
2431/*	?			0x0eu */
2432/*	?			0x0fu */
2433#define TV_MASTER_CNTL		0x10u
2434/*	?			0x11u */
2435#define TV_RGB_CNTL		0x12u
2436/*	?			0x13u */
2437#define TV_SYNC_CNTL		0x14u
2438/*	?			0x15u */
2439/*	?			0x16u */
2440/*	?			0x17u */
2441/*	?			0x18u */
2442/*	?			0x19u */
2443/*	?			0x1au */
2444/*	?			0x1bu */
2445/*	?			0x1cu */
2446/*	?			0x1du */
2447/*	?			0x1eu */
2448/*	?			0x1fu */
2449#define TV_HTOTAL		0x20u
2450#define TV_HDISP		0x21u
2451#define TV_HSIZE		0x22u
2452#define TV_HSTART		0x23u
2453#define TV_HCOUNT		0x24u
2454#define TV_VTOTAL		0x25u
2455#define TV_VDISP		0x26u
2456#define TV_VCOUNT		0x27u
2457#define TV_FTOTAL		0x28u
2458#define TV_FCOUNT		0x29u
2459#define TV_FRESTART		0x2au
2460#define TV_HRESTART		0x2bu
2461#define TV_VRESTART		0x2cu
2462/*	?			0x2du */
2463/*	?			0x2eu */
2464/*	?			0x2fu */
2465/*	?			0x30u */
2466/*	?			0x31u */
2467/*	?			0x32u */
2468/*	?			0x33u */
2469/*	?			0x34u */
2470/*	?			0x35u */
2471/*	?			0x36u */
2472/*	?			0x37u */
2473/*	?			0x38u */
2474/*	?			0x39u */
2475/*	?			0x3au */
2476/*	?			0x3bu */
2477/*	?			0x3cu */
2478/*	?			0x3du */
2479/*	?			0x3eu */
2480/*	?			0x3fu */
2481/*	?			0x40u */
2482/*	?			0x41u */
2483/*	?			0x42u */
2484/*	?			0x43u */
2485/*	?			0x44u */
2486/*	?			0x45u */
2487/*	?			0x46u */
2488/*	?			0x47u */
2489/*	?			0x48u */
2490/*	?			0x49u */
2491/*	?			0x4au */
2492/*	?			0x4bu */
2493/*	?			0x4cu */
2494/*	?			0x4du */
2495/*	?			0x4eu */
2496/*	?			0x4fu */
2497/*	?			0x50u */
2498/*	?			0x51u */
2499/*	?			0x52u */
2500/*	?			0x53u */
2501/*	?			0x54u */
2502/*	?			0x55u */
2503/*	?			0x56u */
2504/*	?			0x57u */
2505/*	?			0x58u */
2506/*	?			0x59u */
2507/*	?			0x5au */
2508/*	?			0x5bu */
2509/*	?			0x5cu */
2510/*	?			0x5du */
2511/*	?			0x5eu */
2512/*	?			0x5fu */
2513#define TV_HOST_READ_DATA	0x60u
2514#define TV_HOST_WRITE_DATA	0x61u
2515#define TV_HOST_RD_WT_CNTL	0x62u
2516/*	?			0x63u */
2517/*	?			0x64u */
2518/*	?			0x65u */
2519/*	?			0x66u */
2520/*	?			0x67u */
2521/*	?			0x68u */
2522/*	?			0x69u */
2523/*	?			0x6au */
2524/*	?			0x6bu */
2525/*	?			0x6cu */
2526/*	?			0x6du */
2527/*	?			0x6eu */
2528/*	?			0x6fu */
2529#define TV_VSCALER_CNTL		0x70u
2530#define TV_TIMING_CNTL		0x71u
2531#define TV_GAMMA_CNTL		0x72u
2532#define TV_Y_FALL_CNTL		0x73u
2533#define TV_Y_RISE_CNTL		0x74u
2534#define TV_Y_SAW_TOOTH_CNTL	0x75u
2535/*	?			0x76u */
2536/*	?			0x77u */
2537/*	?			0x78u */
2538/*	?			0x79u */
2539/*	?			0x7au */
2540/*	?			0x7bu */
2541/*	?			0x7cu */
2542/*	?			0x7du */
2543/*	?			0x7eu */
2544/*	?			0x7fu */
2545#define TV_MODULATOR_CNTL1	0x80u
2546#define TV_MODULATOR_CNTL2	0x81u
2547/*	?			0x82u */
2548/*	?			0x83u */
2549/*	?			0x84u */
2550/*	?			0x85u */
2551/*	?			0x86u */
2552/*	?			0x87u */
2553/*	?			0x88u */
2554/*	?			0x89u */
2555/*	?			0x8au */
2556/*	?			0x8bu */
2557/*	?			0x8cu */
2558/*	?			0x8du */
2559/*	?			0x8eu */
2560/*	?			0x8fu */
2561#define TV_PRE_DAC_MUX_CNTL	0x90u
2562/*	?			0x91u */
2563/*	?			0x92u */
2564/*	?			0x93u */
2565/*	?			0x94u */
2566/*	?			0x95u */
2567/*	?			0x96u */
2568/*	?			0x97u */
2569/*	?			0x98u */
2570/*	?			0x99u */
2571/*	?			0x9au */
2572/*	?			0x9bu */
2573/*	?			0x9cu */
2574/*	?			0x9du */
2575/*	?			0x9eu */
2576/*	?			0x9fu */
2577#define TV_DAC_CNTL		0xa0u
2578/*	?			0xa1u */
2579/*	?			0xa2u */
2580/*	?			0xa3u */
2581/*	?			0xa4u */
2582/*	?			0xa5u */
2583/*	?			0xa6u */
2584/*	?			0xa7u */
2585/*	?			0xa8u */
2586/*	?			0xa9u */
2587/*	?			0xaau */
2588/*	?			0xabu */
2589/*	?			0xacu */
2590/*	?			0xadu */
2591/*	?			0xaeu */
2592/*	?			0xafu */
2593#define TV_CRC_CNTL		0xb0u
2594#define TV_VIDEO_PORT_SIG	0xb1u
2595/*	?			0xb2u */
2596/*	?			0xb3u */
2597/*	?			0xb4u */
2598/*	?			0xb5u */
2599/*	?			0xb6u */
2600/*	?			0xb7u */
2601#define TV_VBI_CC_CNTL		0xb8u
2602#define TV_VBI_EDS_CNTL		0xb9u
2603#define TV_VBI_20BIT_CNTL	0xbau
2604/*	?			0xbbu */
2605/*	?			0xbcu */
2606#define TV_VBI_DTO_CNTL		0xbdu
2607#define TV_VBI_LEVEL_CNTL	0xbeu
2608/*	?			0xbfu */
2609#define TV_UV_ADR		0xc0u
2610#define TV_FIFO_TEST_CNTL	0xc1u
2611/*	?			0xc2u */
2612/*	?			0xc3u */
2613/*	?			0xc4u */
2614/*	?			0xc5u */
2615/*	?			0xc6u */
2616/*	?			0xc7u */
2617/*	?			0xc8u */
2618/*	?			0xc9u */
2619/*	?			0xcau */
2620/*	?			0xcbu */
2621/*	?			0xccu */
2622/*	?			0xcdu */
2623/*	?			0xceu */
2624/*	?			0xcfu */
2625/*	?			0xd0u */
2626/*	?			0xd1u */
2627/*	?			0xd2u */
2628/*	?			0xd3u */
2629/*	?			0xd4u */
2630/*	?			0xd5u */
2631/*	?			0xd6u */
2632/*	?			0xd7u */
2633/*	?			0xd8u */
2634/*	?			0xd9u */
2635/*	?			0xdau */
2636/*	?			0xdbu */
2637/*	?			0xdcu */
2638/*	?			0xddu */
2639/*	?			0xdeu */
2640/*	?			0xdfu */
2641/*	?			0xe0u */
2642/*	?			0xe1u */
2643/*	?			0xe2u */
2644/*	?			0xe3u */
2645/*	?			0xe4u */
2646/*	?			0xe5u */
2647/*	?			0xe6u */
2648/*	?			0xe7u */
2649/*	?			0xe8u */
2650/*	?			0xe9u */
2651/*	?			0xeau */
2652/*	?			0xebu */
2653/*	?			0xecu */
2654/*	?			0xedu */
2655/*	?			0xeeu */
2656/*	?			0xefu */
2657/*	?			0xf0u */
2658/*	?			0xf1u */
2659/*	?			0xf2u */
2660/*	?			0xf3u */
2661/*	?			0xf4u */
2662/*	?			0xf5u */
2663/*	?			0xf6u */
2664/*	?			0xf7u */
2665/*	?			0xf8u */
2666/*	?			0xf9u */
2667/*	?			0xfau */
2668/*	?			0xfbu */
2669/*	?			0xfcu */
2670/*	?			0xfdu */
2671/*	?			0xfeu */
2672/*	?			0xffu */
2673
2674/* Some ImpacTV definitions */
2675#define IT_SDA_GET		0x40u
2676#define IT_SDA_SET		0x20u
2677#define IT_SDA_DIR		0x10u
2678#define IT_SCL_GET		0x04u
2679#define IT_SCL_SET		0x02u
2680#define IT_SCL_DIR		0x01u
2681
2682#define IT_I2C_CNTL		0x0015u
2683
2684/* Miscellaneous */
2685
2686/* Current X, Y & Dest X, Y mask */
2687#define COORD_MASK	0x07ffu
2688
2689/* Pixel widths */
2690#define PIX_WIDTH_1BPP			0x00u
2691#define PIX_WIDTH_4BPP			0x01u	/* CRTC2: 8bpp */
2692#define PIX_WIDTH_8BPP			0x02u	/* CRTC2: Undefined */
2693#define PIX_WIDTH_15BPP			0x03u
2694#define PIX_WIDTH_16BPP			0x04u
2695#define PIX_WIDTH_24BPP			0x05u
2696#define PIX_WIDTH_32BPP			0x06u
2697#define PIX_WIDTH_YUV422		0x07u	/* CRTC2 only */
2698
2699/* Source definitions */
2700#define SRC_BKGD			0x00u
2701#define SRC_FRGD			0x01u
2702#define SRC_HOST			0x02u
2703#define SRC_BLIT			0x03u
2704#define SRC_PATTERN			0x04u
2705#define SRC_SCALER_3D			0x05u
2706/*	?				0x06u */
2707/*	?				0x07u */
2708
2709/* The Mixes */
2710#define MIX_MASK			0x001fu
2711
2712#define MIX_NOT_DST			0x0000u
2713#define MIX_0				0x0001u
2714#define MIX_1				0x0002u
2715#define MIX_DST				0x0003u
2716#define MIX_NOT_SRC			0x0004u
2717#define MIX_XOR				0x0005u
2718#define MIX_XNOR			0x0006u
2719#define MIX_SRC				0x0007u
2720#define MIX_NAND			0x0008u
2721#define MIX_NOT_SRC_OR_DST		0x0009u
2722#define MIX_SRC_OR_NOT_DST		0x000au
2723#define MIX_OR				0x000bu
2724#define MIX_AND				0x000cu
2725#define MIX_SRC_AND_NOT_DST		0x000du
2726#define MIX_NOT_SRC_AND_DST		0x000eu
2727#define MIX_NOR				0x000fu
2728
2729#define MIX_MIN				0x0010u
2730#define MIX_DST_MINUS_SRC		0x0011u
2731#define MIX_SRC_MINUS_DST		0x0012u
2732#define MIX_PLUS			0x0013u
2733#define MIX_MAX				0x0014u
2734#define MIX_HALF__DST_MINUS_SRC		0x0015u
2735#define MIX_HALF__SRC_MINUS_DST		0x0016u
2736#define MIX_AVERAGE			0x0017u
2737#define MIX_DST_MINUS_SRC_SAT		0x0018u
2738#define MIX_SRC_MINUS_DST_SAT		0x001au
2739#define MIX_HALF__DST_MINUS_SRC_SAT	0x001cu
2740#define MIX_HALF__SRC_MINUS_DST_SAT	0x001eu
2741#define MIX_AVERAGE_SAT			0x001fu
2742#define MIX_FN_PAINT			MIX_SRC
2743
2744/* Video/Graphics mix functions for overlay */
2745#define OVERLAY_MIX_FALSE		0x00u
2746#define OVERLAY_MIX_TRUE		0x01u
2747/*	?				0x02u */
2748/*	?				0x03u */
2749#define OVERLAY_MIX_NOT_EQUAL		0x04u
2750#define OVERLAY_MIX_EQUAL		0x05u
2751/*	?				0x06u */
2752/*	?				0x07u */
2753
2754/* 3D Engine for render acceleration (from Mach64 DRI driver) */
2755
2756/* SCALE_3D_CNTL */
2757#define MACH64_SCALE_PIX_EXPAND_ZERO_EXTEND	(0 << 0)
2758#define MACH64_SCALE_PIX_EXPAND_DYNAMIC_RANGE	(1 << 0)
2759#define MACH64_SCALE_DITHER_ERROR_DIFFUSE	(0 << 1)
2760#define MACH64_SCALE_DITHER_2D_TABLE		(1 << 1)
2761#define MACH64_DITHER_EN			(1 << 2)
2762#define MACH64_DITHER_INIT_CURRENT		(O << 3)
2763#define MACH64_DITHER_INIT_RESET		(1 << 3)
2764#define MACH64_ROUND_EN				(1 << 4)
2765
2766#define MACH64_TEX_CACHE_DIS			(1 << 5)
2767
2768#define MACH64_SCALE_3D_FCN_MASK		(3 << 6)
2769#define MACH64_SCALE_3D_FCN_NOP			(0 << 6)
2770#define MACH64_SCALE_3D_FCN_SCALE		(1 << 6)
2771#define MACH64_SCALE_3D_FCN_TEXTURE		(2 << 6)
2772#define MACH64_SCALE_3D_FCN_SHADE		(3 << 6)
2773#define MACH64_TEXTURE_DISABLE			(1 << 6)
2774
2775#define MACH64_EDGE_ANTI_ALIAS			(1 << 8)
2776#define MACH64_TEX_CACHE_SPLIT			(1 << 9)
2777#define MACH64_APPLE_YUV_MODE			(1 << 10)
2778
2779#define MACH64_ALPHA_FOG_EN_MASK		(3 << 11)
2780#define MACH64_ALPHA_FOG_DIS			(0 << 11)
2781#define MACH64_ALPHA_FOG_EN_ALPHA		(1 << 11)
2782#define MACH64_ALPHA_FOG_EN_FOG			(2 << 11)
2783
2784#define MACH64_ALPHA_BLEND_SAT			(1 << 13)
2785#define MACH64_RED_DITHER_MAX			(1 << 14)
2786#define MACH64_SIGNED_DST_CLAMP			(1 << 15)
2787
2788#define MACH64_ALPHA_BLEND_SRC_MASK		(7 << 16)
2789#define MACH64_ALPHA_BLEND_SRC_ZERO		(0 << 16)
2790#define MACH64_ALPHA_BLEND_SRC_ONE		(1 << 16)
2791#define MACH64_ALPHA_BLEND_SRC_DSTCOLOR		(2 << 16)
2792#define MACH64_ALPHA_BLEND_SRC_INVDSTCOLOR	(3 << 16)
2793#define MACH64_ALPHA_BLEND_SRC_SRCALPHA		(4 << 16)
2794#define MACH64_ALPHA_BLEND_SRC_INVSRCALPHA	(5 << 16)
2795#define MACH64_ALPHA_BLEND_SRC_DSTALPHA		(6 << 16)
2796#define MACH64_ALPHA_BLEND_SRC_INVDSTALPHA	(7 << 16)
2797#define MACH64_ALPHA_BLEND_DST_MASK		(7 << 19)
2798#define MACH64_ALPHA_BLEND_DST_ZERO		(0 << 19)
2799#define MACH64_ALPHA_BLEND_DST_ONE		(1 << 19)
2800#define MACH64_ALPHA_BLEND_DST_SRCCOLOR		(2 << 19)
2801#define MACH64_ALPHA_BLEND_DST_INVSRCCOLOR	(3 << 19)
2802#define MACH64_ALPHA_BLEND_DST_SRCALPHA		(4 << 19)
2803#define MACH64_ALPHA_BLEND_DST_INVSRCALPHA	(5 << 19)
2804#define MACH64_ALPHA_BLEND_DST_DSTALPHA		(6 << 19)
2805#define MACH64_ALPHA_BLEND_DST_INVDSTALPHA	(7 << 19)
2806
2807#define MACH64_TEX_LIGHT_FCN_MASK		(3 << 22)
2808#define MACH64_TEX_LIGHT_FCN_REPLACE		(0 << 22)
2809#define MACH64_TEX_LIGHT_FCN_MODULATE		(1 << 22)
2810#define MACH64_TEX_LIGHT_FCN_ALPHA_DECAL	(2 << 22)
2811
2812#define MACH64_MIP_MAP_DISABLE			(1 << 24)
2813
2814#define MACH64_BILINEAR_TEX_EN			(1 << 25)
2815#define MACH64_TEX_BLEND_FCN_MASK		(3 << 26)
2816#define MACH64_TEX_BLEND_FCN_NEAREST		(0 << 26)
2817#define MACH64_TEX_BLEND_FCN_LINEAR		(2 << 26)
2818#define MACH64_TEX_BLEND_FCN_TRILINEAR		(3 << 26)
2819
2820#define MACH64_TEX_AMASK_AEN			(1 << 28)
2821#define MACH64_TEX_AMASK_BLEND_EDGE		(1 << 29)
2822#define MACH64_TEX_MAP_AEN			(1 << 30)
2823#define MACH64_SRC_3D_HOST_FIFO			(1 << 31)
2824
2825/* TEX_CNTL */
2826#define MACH64_LOD_BIAS_SHIFT			0
2827#define MACH64_LOD_BIAS_MASK			(0xf << 0)
2828#define MACH64_COMP_FACTOR_SHIFT		4
2829#define MACH64_COMP_FACTOR_MASK			(0xf << 4)
2830
2831#define MACH64_TEXTURE_COMPOSITE		(1 << 8)
2832
2833#define MACH64_COMP_COMBINE_BLEND		(0 << 9)
2834#define MACH64_COMP_COMBINE_MODULATE		(1 << 9)
2835#define MACH64_COMP_BLEND_NEAREST		(0 << 11)
2836#define MACH64_COMP_BLEND_BILINEAR		(1 << 11)
2837#define MACH64_COMP_FILTER_NEAREST		(0 << 12)
2838#define MACH64_COMP_FILTER_BILINEAR		(1 << 12)
2839#define MACH64_COMP_ALPHA			(1 << 13)
2840
2841#define MACH64_TEXTURE_TILING			(1 << 14)
2842#define MACH64_COMPOSITE_TEX_TILING		(1 << 15)
2843#define MACH64_TEX_COLLISION_DISABLE		(1 << 16)
2844
2845#define MACH64_TEXTURE_CLAMP_S			(1 << 17)
2846#define MACH64_TEXTURE_CLAMP_T			(1 << 18)
2847#define MACH64_TEX_ST_MULT_W			(0 << 19)
2848#define MACH64_TEX_ST_DIRECT			(1 << 19)
2849#define MACH64_TEX_SRC_LOCAL			(0 << 20)
2850#define MACH64_TEX_SRC_AGP			(1 << 20)
2851#define MACH64_TEX_UNCOMPRESSED			(0 << 21)
2852#define MACH64_TEX_VQ_COMPRESSED		(1 << 21)
2853#define MACH64_COMP_TEX_UNCOMPRESSED		(0 << 22)
2854#define MACH64_COMP_TEX_VQ_COMPRESSED		(1 << 22)
2855#define MACH64_TEX_CACHE_FLUSH			(1 << 23)
2856#define MACH64_SEC_TEX_CLAMP_S			(1 << 24)
2857#define MACH64_SEC_TEX_CLAMP_T			(1 << 25)
2858#define MACH64_TEX_WRAP_S			(1 << 28)
2859#define MACH64_TEX_WRAP_T			(1 << 29)
2860#define MACH64_TEX_CACHE_SIZE_4K		(1 << 30)
2861#define MACH64_TEX_CACHE_SIZE_2K		(1 << 30)
2862#define MACH64_SECONDARY_STW			(1 << 31)
2863
2864/* DP_PIX_WIDTH (superset of PIX_WIDTH_?BPP) */
2865#define MACH64_DATATYPE_CI8                             2
2866#define MACH64_DATATYPE_ARGB1555                        3
2867#define MACH64_DATATYPE_RGB565                          4
2868#define MACH64_DATATYPE_ARGB8888                        6
2869#define MACH64_DATATYPE_RGB332                          7
2870#define MACH64_DATATYPE_Y8                              8
2871#define MACH64_DATATYPE_RGB8                            9
2872#define MACH64_DATATYPE_VYUY422                         11
2873#define MACH64_DATATYPE_YVYU422                         12
2874#define MACH64_DATATYPE_AYUV444                         14
2875#define MACH64_DATATYPE_ARGB4444                        15
2876
2877/* Extract texture level from TEX_SIZE_PITCH and shift appropriately for
2878 * addition to TEX_0_OFF.
2879 */
2880#define TEX_LEVEL(_tex_size_pitch) (((_tex_size_pitch) & 0xf0) >> 2)
2881
2882#endif /* ___ATIREGS_H___ */
2883