1301ea0f4Smrg
2301ea0f4Smrg/**************************************************************************
3301ea0f4Smrg
4301ea0f4SmrgCopyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
5301ea0f4SmrgAll Rights Reserved.
6301ea0f4Smrg
7301ea0f4SmrgPermission is hereby granted, free of charge, to any person obtaining a
8301ea0f4Smrgcopy of this software and associated documentation files (the
9301ea0f4Smrg"Software"), to deal in the Software without restriction, including
10301ea0f4Smrgwithout limitation the rights to use, copy, modify, merge, publish,
11301ea0f4Smrgdistribute, sub license, and/or sell copies of the Software, and to
12301ea0f4Smrgpermit persons to whom the Software is furnished to do so, subject to
13301ea0f4Smrgthe following conditions:
14301ea0f4Smrg
15301ea0f4SmrgThe above copyright notice and this permission notice (including the
16301ea0f4Smrgnext paragraph) shall be included in all copies or substantial portions
17301ea0f4Smrgof the Software.
18301ea0f4Smrg
19301ea0f4SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20301ea0f4SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21301ea0f4SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22301ea0f4SmrgIN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
23301ea0f4SmrgANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24301ea0f4SmrgTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25301ea0f4SmrgSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26301ea0f4Smrg
27301ea0f4Smrg**************************************************************************/
28301ea0f4Smrg
29301ea0f4Smrg/*
30301ea0f4Smrg * Authors:
31301ea0f4Smrg *   Kevin E. Martin <kevin@precisioninsight.com>
32301ea0f4Smrg *
33301ea0f4Smrg */
34301ea0f4Smrg
35301ea0f4Smrg/* I/O register offsets */
36301ea0f4Smrg#define SRX 0x3C4
37301ea0f4Smrg#define GRX 0x3CE
38301ea0f4Smrg#define ARX 0x3C0
39301ea0f4Smrg#define XRX 0x3D6
40301ea0f4Smrg#define MRX 0x3D2
41301ea0f4Smrg
42301ea0f4Smrg/* VGA Color Palette Registers */
43301ea0f4Smrg#define DACMASK  0x3C6
44301ea0f4Smrg#define DACSTATE 0x3C7
45301ea0f4Smrg#define DACRX    0x3C7
46301ea0f4Smrg#define DACWX    0x3C8
47301ea0f4Smrg#define DACDATA  0x3C9
48301ea0f4Smrg
49301ea0f4Smrg/* CRT Controller Registers (CRX) */
50301ea0f4Smrg#define START_ADDR_HI        0x0C
51301ea0f4Smrg#define START_ADDR_LO        0x0D
52301ea0f4Smrg#define VERT_SYNC_END        0x11
53301ea0f4Smrg#define EXT_VERT_TOTAL       0x30
54301ea0f4Smrg#define EXT_VERT_DISPLAY     0x31
55301ea0f4Smrg#define EXT_VERT_SYNC_START  0x32
56301ea0f4Smrg#define EXT_VERT_BLANK_START 0x33
57301ea0f4Smrg#define EXT_HORIZ_TOTAL      0x35
58301ea0f4Smrg#define EXT_HORIZ_BLANK      0x39
59301ea0f4Smrg#define EXT_START_ADDR       0x40
60301ea0f4Smrg#define EXT_START_ADDR_ENABLE    0x80
61301ea0f4Smrg#define EXT_OFFSET           0x41
62301ea0f4Smrg#define EXT_START_ADDR_HI    0x42
63301ea0f4Smrg#define INTERLACE_CNTL       0x70
64301ea0f4Smrg#define INTERLACE_ENABLE         0x80
65301ea0f4Smrg#define INTERLACE_DISABLE        0x00
66301ea0f4Smrg
67301ea0f4Smrg/* Miscellaneous Output Register */
68301ea0f4Smrg#define MSR_R          0x3CC
69301ea0f4Smrg#define MSR_W          0x3C2
70301ea0f4Smrg#define IO_ADDR_SELECT     0x01
71301ea0f4Smrg
72301ea0f4Smrg#define MDA_BASE       0x3B0
73301ea0f4Smrg#define CGA_BASE       0x3D0
74301ea0f4Smrg
75301ea0f4Smrg/* System Configuration Extension Registers (XRX) */
76301ea0f4Smrg#define IO_CTNL            0x09
77301ea0f4Smrg#define EXTENDED_ATTR_CNTL     0x02
78301ea0f4Smrg#define EXTENDED_CRTC_CNTL     0x01
79301ea0f4Smrg
80301ea0f4Smrg#define ADDRESS_MAPPING    0x0A
81301ea0f4Smrg#define PACKED_MODE_ENABLE     0x04
82301ea0f4Smrg#define LINEAR_MODE_ENABLE     0x02
83301ea0f4Smrg#define PAGE_MAPPING_ENABLE    0x01
84301ea0f4Smrg
85301ea0f4Smrg#define BITBLT_CNTL        0x20
86301ea0f4Smrg#define COLEXP_MODE            0x30
87301ea0f4Smrg#define COLEXP_8BPP            0x00
88301ea0f4Smrg#define COLEXP_16BPP           0x10
89301ea0f4Smrg#define COLEXP_24BPP           0x20
90301ea0f4Smrg#define COLEXP_RESERVED        0x30
91301ea0f4Smrg#define CHIP_RESET             0x02
92301ea0f4Smrg#define BITBLT_STATUS          0x01
93301ea0f4Smrg
94301ea0f4Smrg#define DISPLAY_CNTL       0x40
95301ea0f4Smrg#define VGA_WRAP_MODE          0x02
96301ea0f4Smrg#define VGA_WRAP_AT_256KB      0x00
97301ea0f4Smrg#define VGA_NO_WRAP            0x02
98301ea0f4Smrg#define GUI_MODE               0x01
99301ea0f4Smrg#define STANDARD_VGA_MODE      0x00
100301ea0f4Smrg#define HIRES_MODE             0x01
101301ea0f4Smrg
102301ea0f4Smrg#define DRAM_ROW_TYPE      0x50
103301ea0f4Smrg#define DRAM_ROW_0             0x07
104301ea0f4Smrg#define DRAM_ROW_0_SDRAM       0x00
105301ea0f4Smrg#define DRAM_ROW_0_EMPTY       0x07
106301ea0f4Smrg#define DRAM_ROW_1             0x38
107301ea0f4Smrg#define DRAM_ROW_1_SDRAM       0x00
108301ea0f4Smrg#define DRAM_ROW_1_EMPTY       0x38
109301ea0f4Smrg#define DRAM_ROW_CNTL_LO   0x51
110301ea0f4Smrg#define DRAM_CAS_LATENCY       0x10
111301ea0f4Smrg#define DRAM_RAS_TIMING        0x08
112301ea0f4Smrg#define DRAM_RAS_PRECHARGE     0x04
113301ea0f4Smrg#define DRAM_ROW_CNTL_HI   0x52
114301ea0f4Smrg#define DRAM_EXT_CNTL      0x53
115301ea0f4Smrg#define DRAM_REFRESH_RATE      0x03
116301ea0f4Smrg#define DRAM_REFRESH_DISABLE   0x00
117301ea0f4Smrg#define DRAM_REFRESH_60HZ      0x01
118301ea0f4Smrg#define DRAM_REFRESH_FAST_TEST 0x02
119301ea0f4Smrg#define DRAM_REFRESH_RESERVED  0x03
120301ea0f4Smrg#define DRAM_TIMING        0x54
121301ea0f4Smrg#define DRAM_ROW_BNDRY_0   0x55
122301ea0f4Smrg#define DRAM_ROW_BNDRY_1   0x56
123301ea0f4Smrg
124301ea0f4Smrg#define DPMS_SYNC_SELECT   0x61
125301ea0f4Smrg#define VSYNC_CNTL             0x08
126301ea0f4Smrg#define VSYNC_ON               0x00
127301ea0f4Smrg#define VSYNC_OFF              0x08
128301ea0f4Smrg#define HSYNC_CNTL             0x02
129301ea0f4Smrg#define HSYNC_ON               0x00
130301ea0f4Smrg#define HSYNC_OFF              0x02
131301ea0f4Smrg
132301ea0f4Smrg#define PIXPIPE_CONFIG_0   0x80
133301ea0f4Smrg#define DAC_8_BIT              0x80
134301ea0f4Smrg#define DAC_6_BIT              0x00
135301ea0f4Smrg#define HW_CURSOR_ENABLE       0x10
136301ea0f4Smrg#define EXTENDED_PALETTE       0x01
137301ea0f4Smrg
138301ea0f4Smrg#define PIXPIPE_CONFIG_1   0x81
139301ea0f4Smrg#define DISPLAY_COLOR_MODE     0x0F
140301ea0f4Smrg#define DISPLAY_VGA_MODE       0x00
141301ea0f4Smrg#define DISPLAY_8BPP_MODE      0x02
142301ea0f4Smrg#define DISPLAY_15BPP_MODE     0x04
143301ea0f4Smrg#define DISPLAY_16BPP_MODE     0x05
144301ea0f4Smrg#define DISPLAY_24BPP_MODE     0x06
145301ea0f4Smrg#define DISPLAY_32BPP_MODE     0x07
146301ea0f4Smrg
147301ea0f4Smrg#define PIXPIPE_CONFIG_2   0x82
148301ea0f4Smrg#define DISPLAY_GAMMA_ENABLE   0x08
149301ea0f4Smrg#define DISPLAY_GAMMA_DISABLE  0x00
150301ea0f4Smrg#define OVERLAY_GAMMA_ENABLE   0x04
151301ea0f4Smrg#define OVERLAY_GAMMA_DISABLE  0x00
152301ea0f4Smrg
153301ea0f4Smrg#define CURSOR_CONTROL     0xA0
154301ea0f4Smrg#define CURSOR_ORIGIN_SCREEN   0x00
155301ea0f4Smrg#define CURSOR_ORIGIN_DISPLAY  0x10
156301ea0f4Smrg#define CURSOR_MODE            0x07
157301ea0f4Smrg#define CURSOR_MODE_DISABLE    0x00
158301ea0f4Smrg#define CURSOR_MODE_32_4C_AX   0x01
159301ea0f4Smrg#define CURSOR_MODE_128_2C     0x02
160301ea0f4Smrg#define CURSOR_MODE_128_1C     0x03
161301ea0f4Smrg#define CURSOR_MODE_64_3C      0x04
162301ea0f4Smrg#define CURSOR_MODE_64_4C_AX   0x05
163301ea0f4Smrg#define CURSOR_MODE_64_4C      0x06
164301ea0f4Smrg#define CURSOR_MODE_RESERVED   0x07
165301ea0f4Smrg#define CURSOR_BASEADDR_LO 0xA2
166301ea0f4Smrg#define CURSOR_BASEADDR_HI 0xA3
167301ea0f4Smrg#define CURSOR_X_LO        0xA4
168301ea0f4Smrg#define CURSOR_X_HI        0xA5
169301ea0f4Smrg#define CURSOR_X_POS           0x00
170301ea0f4Smrg#define CURSOR_X_NEG           0x80
171301ea0f4Smrg#define CURSOR_Y_LO        0xA6
172301ea0f4Smrg#define CURSOR_Y_HI        0xA7
173301ea0f4Smrg#define CURSOR_Y_POS           0x00
174301ea0f4Smrg#define CURSOR_Y_NEG           0x80
175301ea0f4Smrg
176301ea0f4Smrg#define VCLK2_VCO_M        0xC8
177301ea0f4Smrg#define VCLK2_VCO_N        0xC9
178301ea0f4Smrg#define VCLK2_VCO_MN_MSBS  0xCA
179301ea0f4Smrg#define VCO_N_MSBS             0x30
180301ea0f4Smrg#define VCO_M_MSBS             0x03
181301ea0f4Smrg#define VCLK2_VCO_DIV_SEL  0xCB
182301ea0f4Smrg#define POST_DIV_SELECT        0x70
183301ea0f4Smrg#define POST_DIV_1             0x00
184301ea0f4Smrg#define POST_DIV_2             0x10
185301ea0f4Smrg#define POST_DIV_4             0x20
186301ea0f4Smrg#define POST_DIV_8             0x30
187301ea0f4Smrg#define POST_DIV_16            0x40
188301ea0f4Smrg#define POST_DIV_32            0x50
189301ea0f4Smrg#define VCO_LOOP_DIV_BY_4M     0x00
190301ea0f4Smrg#define VCO_LOOP_DIV_BY_16M    0x04
191301ea0f4Smrg#define REF_CLK_DIV_BY_5       0x02
192301ea0f4Smrg#define REF_DIV_4              0x00
193301ea0f4Smrg#define REF_DIV_1              0x01
194301ea0f4Smrg
195301ea0f4Smrg#define PLL_CNTL           0xCE
196301ea0f4Smrg#define PLL_MEMCLK_SEL         0x03
197301ea0f4Smrg#define PLL_MEMCLK__66667KHZ       0x00
198301ea0f4Smrg#define PLL_MEMCLK__75000KHZ       0x01
199301ea0f4Smrg#define PLL_MEMCLK__88889KHZ       0x02
200301ea0f4Smrg#define PLL_MEMCLK_100000KHZ       0x03
201301ea0f4Smrg
202301ea0f4Smrg/* Multimedia Extension Registers (MRX) */
203301ea0f4Smrg#define ACQ_CNTL_1         0x02
204301ea0f4Smrg#define ACQ_CNTL_2         0x03
205301ea0f4Smrg#define FRAME_CAP_MODE         0x01
206301ea0f4Smrg#define CONT_CAP_MODE          0x00
207301ea0f4Smrg#define SINGLE_CAP_MODE        0x01
208301ea0f4Smrg#define ACQ_CNTL_3         0x04
209301ea0f4Smrg#define COL_KEY_CNTL_1     0x3C
210301ea0f4Smrg#define BLANK_DISP_OVERLAY     0x20
211301ea0f4Smrg
212301ea0f4Smrg/* FIFOs */
213301ea0f4Smrg#define LP_FIFO       0x1000
214301ea0f4Smrg#define HP_FIFO       0x2000
215301ea0f4Smrg#define INSTPNT       0x3040
216301ea0f4Smrg#define LP_FIFO_COUNT   0x3040
217301ea0f4Smrg#define HP_FIFO_COUNT   0x3041
218301ea0f4Smrg
219301ea0f4Smrg/* FIFO Commands */
220301ea0f4Smrg#define CLIENT        0xE0000000
221301ea0f4Smrg#define CLIENT_2D         0x60000000
222301ea0f4Smrg
223301ea0f4Smrg/* Command Parser Mode Register */
224301ea0f4Smrg#define COMPARS                  0x3038
225301ea0f4Smrg#define TWO_D_INST_DISABLE           0x08
226301ea0f4Smrg#define THREE_D_INST_DISABLE         0x04
227301ea0f4Smrg#define STATE_VAR_UPDATE_DISABLE     0x02
228301ea0f4Smrg#define PAL_STIP_DISABLE             0x01
229301ea0f4Smrg
230301ea0f4Smrg/* Interrupt Control Registers */
231301ea0f4Smrg#define IER                  0x3030
232301ea0f4Smrg#define IIR                  0x3032
233301ea0f4Smrg#define IMR                  0x3034
234301ea0f4Smrg#define ISR                  0x3036
235301ea0f4Smrg#define VMIINTB_EVENT            0x2000
236301ea0f4Smrg#define GPIO4_INT                0x1000
237301ea0f4Smrg#define DISP_FLIP_EVENT          0x0800
238301ea0f4Smrg#define DVD_PORT_DMA             0x0400
239301ea0f4Smrg#define DISP_VBLANK              0x0200
240301ea0f4Smrg#define FIFO_EMPTY_DMA_DONE      0x0100
241301ea0f4Smrg#define INST_PARSER_ERROR        0x0080
242301ea0f4Smrg#define USER_DEFINED             0x0040
243301ea0f4Smrg#define BREAKPOINT               0x0020
244301ea0f4Smrg#define DISP_HORIZ_COUNT         0x0010
245301ea0f4Smrg#define DISP_VSYNC               0x0008
246301ea0f4Smrg#define CAPTURE_HORIZ_COUNT      0x0004
247301ea0f4Smrg#define CAPTURE_VSYNC            0x0002
248301ea0f4Smrg#define THREE_D_PIPE_FLUSHED     0x0001
249301ea0f4Smrg
250301ea0f4Smrg/* FIFO Watermark and Burst Length Control Register */
251301ea0f4Smrg#define FWATER_BLC       0x00006000
252301ea0f4Smrg#define LMI_BURST_LENGTH     0x7F000000
253301ea0f4Smrg#define LMI_FIFO_WATERMARK   0x003F0000
254301ea0f4Smrg#define AGP_BURST_LENGTH     0x00007F00
255301ea0f4Smrg#define AGP_FIFO_WATERMARK   0x0000003F
256301ea0f4Smrg
257301ea0f4Smrg/* BitBLT Registers */
258301ea0f4Smrg#define SRC_DST_PITCH    0x00040000
259301ea0f4Smrg#define DST_PITCH            0x1FFF0000
260301ea0f4Smrg#define SRC_PITCH            0x00001FFF
261301ea0f4Smrg#define COLEXP_BG_COLOR  0x00040004
262301ea0f4Smrg#define COLEXP_FG_COLOR  0x00040008
263301ea0f4Smrg#define MONO_SRC_CNTL    0x0004000C
264301ea0f4Smrg#define MONO_USE_COLEXP      0x00000000
265301ea0f4Smrg#define MONO_USE_SRCEXP      0x08000000
266301ea0f4Smrg#define MONO_DATA_ALIGN      0x07000000
267301ea0f4Smrg#define MONO_BIT_ALIGN       0x01000000
268301ea0f4Smrg#define MONO_BYTE_ALIGN      0x02000000
269301ea0f4Smrg#define MONO_WORD_ALIGN      0x03000000
270301ea0f4Smrg#define MONO_DWORD_ALIGN     0x04000000
271301ea0f4Smrg#define MONO_QWORD_ALIGN     0x05000000
272301ea0f4Smrg#define MONO_SRC_INIT_DSCRD  0x003F0000
273301ea0f4Smrg#define MONO_SRC_RIGHT_CLIP  0x00003F00
274301ea0f4Smrg#define MONO_SRC_LEFT_CLIP   0x0000003F
275301ea0f4Smrg#define BITBLT_CONTROL   0x00040010
276301ea0f4Smrg#define BLTR_STATUS          0x80000000
277301ea0f4Smrg#define DYN_DEPTH            0x03000000
278301ea0f4Smrg#define DYN_DEPTH_8BPP       0x00000000
279301ea0f4Smrg#define DYN_DEPTH_16BPP      0x01000000
280301ea0f4Smrg#define DYN_DEPTH_24BPP      0x02000000
281301ea0f4Smrg#define DYN_DEPTH_32BPP      0x03000000  /* Not implemented on the i740 */
282301ea0f4Smrg#define DYN_DEPTH_ENABLE     0x00800000
283301ea0f4Smrg#define PAT_VERT_ALIGN       0x00700000
284301ea0f4Smrg#define SOLID_PAT_SELECT     0x00080000
285301ea0f4Smrg#define PAT_IS_IN_COLOR      0x00000000
286301ea0f4Smrg#define PAT_IS_MONO          0x00040000
287301ea0f4Smrg#define MONO_PAT_TRANSP      0x00020000
288301ea0f4Smrg#define COLOR_TRANSP_ROP     0x00000000
289301ea0f4Smrg#define COLOR_TRANSP_DST     0x00008000
290301ea0f4Smrg#define COLOR_TRANSP_EQ      0x00000000
291301ea0f4Smrg#define COLOR_TRANSP_NOT_EQ  0x00010000
292301ea0f4Smrg#define COLOR_TRANSP_ENABLE  0x00004000
293301ea0f4Smrg#define MONO_SRC_TRANSP      0x00002000
294301ea0f4Smrg#define SRC_IS_IN_COLOR      0x00000000
295301ea0f4Smrg#define SRC_IS_MONO          0x00001000
296301ea0f4Smrg#define SRC_USE_SRC_ADDR     0x00000000
297301ea0f4Smrg#define SRC_USE_BLTDATA      0x00000400
298301ea0f4Smrg#define BLT_TOP_TO_BOT       0x00000000
299301ea0f4Smrg#define BLT_BOT_TO_TOP       0x00000200
300301ea0f4Smrg#define BLT_LEFT_TO_RIGHT    0x00000000
301301ea0f4Smrg#define BLT_RIGHT_TO_LEFT    0x00000100
302301ea0f4Smrg#define BLT_ROP              0x000000FF
303301ea0f4Smrg#define BLT_PAT_ADDR     0x00040014
304301ea0f4Smrg#define BLT_SRC_ADDR     0x00040018
305301ea0f4Smrg#define BLT_DST_ADDR     0x0004001C
306301ea0f4Smrg#define BLT_DST_H_W      0x00040020
307301ea0f4Smrg#define BLT_DST_HEIGHT       0x1FFF0000
308301ea0f4Smrg#define BLT_DST_WIDTH        0x00001FFF
309301ea0f4Smrg#define SRCEXP_BG_COLOR  0x00040024
310301ea0f4Smrg#define SRCEXP_FG_COLOR  0x00040028
311301ea0f4Smrg#define BLTDATA          0x00050000
312301ea0f4Smrg
313301ea0f4Smrgtypedef struct {
314301ea0f4Smrg    unsigned int cmd;
315301ea0f4Smrg    unsigned int BR00;
316301ea0f4Smrg    unsigned int BR01;
317301ea0f4Smrg    unsigned int BR02;
318301ea0f4Smrg    unsigned int BR03;
319301ea0f4Smrg    unsigned int BR04;
320301ea0f4Smrg    unsigned int BR05;
321301ea0f4Smrg    unsigned int BR06;
322301ea0f4Smrg    unsigned int BR07;
323301ea0f4Smrg    unsigned int BR09;
324301ea0f4Smrg    unsigned int BR0A;
325301ea0f4Smrg    unsigned int BR08;
326301ea0f4Smrg} GFX2DOPREG_BLTER_FULL_LOAD;
327