1/*
2 * Copyright (c) 2006 Advanced Micro Devices, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 *
22 * Neither the name of the Advanced Micro Devices, Inc. nor the names of its
23 * contributors may be used to endorse or promote products derived from this
24 * software without specific prior written permission.
25 */
26
27 /*
28  * Cimarron register definitions
29  */
30
31#ifndef _cim_regs_h
32#define _cim_regs_h
33
34/*----------------------------------------------------------------*/
35/*                GRAPHICS PROCESSOR DEFINITIONS                  */
36/*----------------------------------------------------------------*/
37
38/*----------------------------*/
39/* COMMAND BUFFER DEFINITIONS */
40/*----------------------------*/
41
42#define GP3_BLT_COMMAND_SIZE			    68  /* 18 DWORDS */
43#define GP3_VECTOR_COMMAND_SIZE             56  /* 14 DWORDS */
44#define GP3_4BPP_LUT_COMMAND_SIZE           76  /* 16 DWORDS + 3 CMD DWORDS */
45#define GP3_8BPP_LUT_COMMAND_SIZE           1036        /* 256 DWORDS +
46                                                         * 3 CMD DWORDS */
47#define GP3_VECTOR_PATTERN_COMMAND_SIZE     20  /* 2 DWORDS + 3 CMD DWORDS */
48#define GP3_MAX_COMMAND_SIZE                9000        /* 8K +
49                                                         * WORKAROUND SPACE */
50#define GP3_SCRATCH_BUFFER_SIZE             0x100000    /* 1MB SCRATCH
51                                                         * BUFFER */
52#define GP3_BLT_1PASS_SIZE                  0xC7F8      /* (50K - 8) is largest
53                                                         * 1-Pass load size */
54
55/*-------------------------------------*/
56/* BLT COMMAND BUFFER REGISTER OFFSETS */
57/*-------------------------------------*/
58
59#define GP3_BLT_CMD_HEADER				    0x00000000
60#define GP3_BLT_RASTER_MODE                 0x00000004
61#define GP3_BLT_DST_OFFSET				    0x00000008
62#define GP3_BLT_SRC_OFFSET				    0x0000000C
63#define GP3_BLT_STRIDE					    0x00000010
64#define GP3_BLT_WID_HEIGHT				    0x00000014
65#define GP3_BLT_SRC_COLOR_FG			    0x00000018
66#define GP3_BLT_SRC_COLOR_BG			    0x0000001C
67#define GP3_BLT_PAT_COLOR_0				    0x00000020
68#define GP3_BLT_PAT_COLOR_1				    0x00000024
69#define GP3_BLT_PAT_DATA_0				    0x00000028
70#define GP3_BLT_PAT_DATA_1				    0x0000002C
71#define GP3_BLT_CH3_OFFSET				    0x00000030
72#define GP3_BLT_CH3_MODE_STR			    0x00000034
73#define GP3_BLT_CH3_WIDHI				    0x00000038
74#define GP3_BLT_BASE_OFFSET				    0x0000003C
75#define GP3_BLT_MODE					    0x00000040
76
77/*-----------------------------------------------------------------*/
78/* VECTOR COMMAND BUFFER REGISTER OFFSETS                          */
79/* Some of these are identical to the BLT registers (and we will   */
80/* be assumed to be such in the Cimarron code, but they are listed */
81/* here for clarity and for future changes.                        */
82/*-----------------------------------------------------------------*/
83
84#define GP3_VEC_CMD_HEADER				    0x00000000
85#define GP3_VECTOR_RASTER_MODE			    0x00000004
86#define GP3_VECTOR_DST_OFFSET			    0x00000008
87#define GP3_VECTOR_VEC_ERR				    0x0000000C
88#define GP3_VECTOR_STRIDE				    0x00000010
89#define GP3_VECTOR_VEC_LEN				    0x00000014
90#define GP3_VECTOR_SRC_COLOR_FG			    0x00000018
91#define GP3_VECTOR_PAT_COLOR_0			    0x0000001C
92#define GP3_VECTOR_PAT_COLOR_1			    0x00000020
93#define GP3_VECTOR_PAT_DATA_0			    0x00000024
94#define GP3_VECTOR_PAT_DATA_1			    0x00000028
95#define GP3_VECTOR_CH3_MODE_STR			    0x0000002C
96#define GP3_VECTOR_BASE_OFFSET			    0x00000030
97#define GP3_VECTOR_MODE					    0x00000034
98
99/*---------------------------------------------------*/
100/* GP REGISTER DEFINITIONS                           */
101/* Addresses for writing or reading directly to/from */
102/* the graphics processor.                           */
103/*---------------------------------------------------*/
104
105#define GP3_DST_OFFSET                      0x00000000
106#define GP3_SRC_OFFSET                      0x00000004
107#define GP3_VEC_ERR                         0x00000004
108#define GP3_STRIDE                          0x00000008
109#define GP3_WID_HEIGHT                      0x0000000C
110#define GP3_VEC_LEN                         0x0000000C
111#define GP3_SRC_COLOR_FG                    0x00000010
112#define GP3_SRC_COLOR_BG                    0x00000014
113#define GP3_PAT_COLOR_0                     0x00000018
114#define GP3_PAT_COLOR_1                     0x0000001C
115#define GP3_PAT_COLOR_2                     0x00000020
116#define GP3_PAT_COLOR_3                     0x00000024
117#define GP3_PAT_COLOR_4                     0x00000028
118#define GP3_PAT_COLOR_5                     0x0000002C
119#define GP3_PAT_DATA_0                      0x00000030
120#define GP3_PAT_DATA_1                      0x00000034
121#define GP3_RASTER_MODE                     0x00000038
122#define GP3_VEC_MODE                        0x0000003C
123#define GP3_BLT_MODE                        0x00000040
124#define GP3_BLT_STATUS                      0x00000044
125#define GP3_HST_SRC                         0x00000048
126#define GP3_BASE_OFFSET                     0x0000004C
127#define GP3_CMD_TOP                         0x00000050
128#define GP3_CMD_BOT                         0x00000054
129#define GP3_CMD_READ					    0x00000058
130#define GP3_CMD_WRITE					    0x0000005C
131#define GP3_CH3_OFFSET                      0x00000060
132#define GP3_CH3_MODE_STR                    0x00000064
133#define GP3_CH3_WIDHI                       0x00000068
134#define GP3_CH3_HST_SRC                     0x0000006C
135#define GP3_LUT_ADDRESS                     0x00000070
136#define GP3_LUT_DATA                        0x00000074
137#define GP3_INT_CTL                         0x00000078
138#define GP3_HST_SRC_RANGE                   0x00000100
139
140/*------------------------*/
141/* REGISTER BIT FIELDS    */
142/*------------------------*/
143
144/* GP3_BLT_CMD_HEADER BIT DEFINITIONS */
145
146#define GP3_BLT_HDR_WRAP				    0x80000000
147#define GP3_BLT_HDR_TYPE				    0x00000000
148#define GP3_BLT_HDR_HAZARD_ENABLE           0x10000000
149#define GP3_BLT_HDR_RASTER_ENABLE		    0x00000001
150#define GP3_BLT_HDR_DST_OFF_ENABLE		    0x00000002
151#define GP3_BLT_HDR_SRC_OFF_ENABLE          0x00000004
152#define GP3_BLT_HDR_STRIDE_ENABLE		    0x00000008
153#define GP3_BLT_HDR_WIDHI_ENABLE		    0x00000010
154#define GP3_BLT_HDR_SRC_FG_ENABLE		    0x00000020
155#define GP3_BLT_HDR_SRC_BG_ENABLE		    0x00000040
156#define GP3_BLT_HDR_PAT_CLR0_ENABLE		    0x00000080
157#define GP3_BLT_HDR_PAT_CLR1_ENABLE		    0x00000100
158#define GP3_BLT_HDR_PAT_DATA0_ENABLE	    0x00000200
159#define GP3_BLT_HDR_PAT_DATA1_ENABLE        0x00000400
160#define GP3_BLT_HDR_CH3_OFF_ENABLE          0x00000800
161#define GP3_BLT_HDR_CH3_STR_ENABLE          0x00001000
162#define GP3_BLT_HDR_CH3_WIDHI_ENABLE        0x00002000
163#define GP3_BLT_HDR_BASE_OFFSET_ENABLE      0x00004000
164#define GP3_BLT_HDR_BLT_MODE_ENABLE         0x00008000
165
166/* GP3_VEC_CMD_HEADER BIT DEFINITIONS */
167
168#define GP3_VEC_HDR_WRAP				    0x80000000
169#define GP3_VEC_HDR_TYPE				    0x20000000
170#define GP3_VEC_HDR_HAZARD_ENABLE           0x10000000
171#define GP3_VEC_HDR_RASTER_ENABLE		    0x00000001
172#define GP3_VEC_HDR_DST_OFF_ENABLE		    0x00000002
173#define GP3_VEC_HDR_VEC_ERR_ENABLE          0x00000004
174#define GP3_VEC_HDR_STRIDE_ENABLE		    0x00000008
175#define GP3_VEC_HDR_VEC_LEN_ENABLE		    0x00000010
176#define GP3_VEC_HDR_SRC_FG_ENABLE		    0x00000020
177#define GP3_VEC_HDR_PAT_CLR0_ENABLE		    0x00000040
178#define GP3_VEC_HDR_PAT_CLR1_ENABLE		    0x00000080
179#define GP3_VEC_HDR_PAT_DATA0_ENABLE	    0x00000100
180#define GP3_VEC_HDR_PAT_DATA1_ENABLE        0x00000200
181#define GP3_VEC_HDR_CH3_STR_ENABLE          0x00000400
182#define GP3_VEC_HDR_BASE_OFFSET_ENABLE      0x00000800
183#define GP3_VEC_HDR_VEC_MODE_ENABLE         0x00001000
184
185/* GP3_RASTER_MODE BIT DEFINITIONS */
186
187#define GP3_RM_BPPFMT_332			0x00000000      /* 8 BPP, palettized        */
188#define GP3_RM_BPPFMT_4444			0x40000000      /* 16 BPP, 4:4:4:4          */
189#define GP3_RM_BPPFMT_1555			0x50000000      /* 16 BPP, 1:5:5:5          */
190#define GP3_RM_BPPFMT_565			0x60000000      /* 16 BPP, 5:6:5            */
191#define GP3_RM_BPPFMT_8888			0x80000000      /* 32 BPP, 8:8:8:8          */
192#define GP3_RM_ALPHA_ALL			0x00C00000      /* Alpha enable             */
193#define GP3_RM_ALPHA_TO_RGB			0x00400000      /* Alpha applies to RGB     */
194#define GP3_RM_ALPHA_TO_ALPHA		0x00800000      /* Alpha applies to alpha   */
195#define GP3_RM_ALPHA_OP_MASK		0x00300000      /* Alpha operation          */
196#define GP3_RM_ALPHA_TIMES_A		0x00000000      /* Alpha * A                */
197#define GP3_RM_BETA_TIMES_B			0x00100000      /* (1-alpha) * B            */
198#define GP3_RM_A_PLUS_BETA_B		0x00200000      /* A + (1-alpha) * B        */
199#define GP3_RM_ALPHA_A_PLUS_BETA_B	0x00300000      /* alpha * A + (1 - alpha)B */
200#define GP3_RM_ALPHA_SELECT			0x000E0000      /* Alpha Select             */
201#define GP3_RM_SELECT_ALPHA_A		0x00000000      /* Alpha from channel A     */
202#define GP3_RM_SELECT_ALPHA_B		0x00020000      /* Alpha from channel B     */
203#define GP3_RM_SELECT_ALPHA_R		0x00040000      /* Registered alpha         */
204#define GP3_RM_SELECT_ALPHA_1		0x00060000      /* Constant 1               */
205#define GP3_RM_SELECT_ALPHA_CHAN_A	0x00080000      /* RGB Values from A        */
206#define GP3_RM_SELECT_ALPHA_CHAN_B	0x000A0000      /* RGB Values from B        */
207#define GP3_RM_SELECT_ALPHA_CHAN_3  0x000C0000  /* Alpha from channel 3     */
208#define GP3_RM_DEST_FROM_CHAN_A		0x00010000      /* Alpha channel select     */
209#define GP3_RM_PATTERN_INVERT       0x00001000  /* Invert monochrome pat    */
210#define GP3_RM_SOURCE_INVERT        0x00002000  /* Invert monochrome src    */
211#define GP3_RM_PAT_FLAGS			0x00000700      /* pattern related bits     */
212#define GP3_RM_PAT_MONO				0x00000100      /* monochrome pattern       */
213#define GP3_RM_PAT_COLOR			0x00000200      /* color pattern            */
214#define GP3_RM_PAT_TRANS			0x00000400      /* pattern transparency     */
215#define GP3_RM_SRC_TRANS			0x00000800      /* source transparency      */
216
217/* GP3_VECTOR_MODE REGISTER DESCRIPTIONS */
218
219#define GP3_VM_DST_REQ			    0x00000008  /* dst data required        */
220#define GP3_VM_THROTTLE			    0x00000010  /* sync to VBLANK           */
221
222/* GP3_BLT_MODE REGISTER DEFINITIONS */
223
224#define GP3_BM_SRC_FB			    0x00000001  /* src = frame buffer       */
225#define GP3_BM_SRC_HOST			    0x00000002  /* src = host register      */
226#define GP3_BM_DST_REQ			    0x00000004  /* dst data required        */
227#define GP3_BM_SRC_MONO			    0x00000040  /* monochrome source data   */
228#define GP3_BM_SRC_BP_MONO		    0x00000080  /* Byte-packed monochrome   */
229#define GP3_BM_NEG_YDIR			    0x00000100  /* negative Y direction     */
230#define GP3_BM_NEG_XDIR			    0x00000200  /* negative X direction     */
231#define GP3_BM_THROTTLE			    0x00000400  /* sync to VBLANK           */
232
233/* GP3_BLT_STATUS REGISTER DEFINITIONS */
234
235#define GP3_BS_BLT_BUSY			    0x00000001  /* GP is not idle           */
236#define GP3_BS_BLT_PENDING		    0x00000004  /* second BLT is pending    */
237#define GP3_BS_HALF_EMPTY		    0x00000008  /* src FIFO half empty      */
238#define GP3_BS_CB_EMPTY             0x00000010  /* Command buffer empty.    */
239
240/* GP3_CH3_MODE_STR REGISTER DEFINITIONS */
241
242#define GP3_CH3_C3EN                        0x80000000
243#define GP3_CH3_REPLACE_SOURCE              0x40000000
244#define GP3_CH3_NEG_XDIR                    0x20000000
245#define GP3_CH3_NEG_YDIR                    0x10000000
246#define GP3_CH3_SRC_FMT_MASK                0x0f000000
247#define GP3_CH3_SRC_3_3_2                   0x00000000
248#define GP3_CH3_SRC_8BPP_INDEXED            0x01000000
249#define GP3_CH3_SRC_8BPP_ALPHA              0x02000000
250#define GP3_CH3_SRC_4_4_4_4                 0x04000000
251#define GP3_CH3_SRC_1_5_5_5                 0x05000000
252#define GP3_CH3_SRC_0_5_6_5                 0x06000000
253#define GP3_CH3_SRC_Y_U_V                   0x07000000
254#define GP3_CH3_SRC_8_8_8_8                 0x08000000
255#define GP3_CH3_SRC_24BPP_PACKED            0x0B000000
256#define GP3_CH3_SRC_4BPP_INDEXED            0x0D000000
257#define GP3_CH3_SRC_4BPP_ALPHA              0x0E000000
258#define GP3_CH3_SRC_MASK                    0x0F000000
259#define GP3_CH3_ROTATE_ENABLE               0x00800000
260#define GP3_CH3_BGR_ORDER                   0x00400000
261#define GP3_CH3_COLOR_PAT_ENABLE            0x00200000
262#define GP3_CH3_PRESERVE_LUT                0x00100000
263#define GP3_CH3_PREFETCH_ENABLE             0x00080000
264#define GP3_CH3_HST_SRC_ENABLE			    0x00040000
265#define GP3_CH3_STRIDE_MASK                 0x0000FFFF
266
267/* DATA AND LUT LOAD BIT DEFINITIONS */
268
269#define GP3_LUT_HDR_WRAP                    0x80000000
270#define GP3_LUT_HDR_TYPE				    0x40000000
271#define GP3_LUT_HDR_DATA_ENABLE             0x00000003
272#define GP3_DATA_LOAD_HDR_WRAP              0x80000000
273#define GP3_DATA_LOAD_HDR_TYPE              0x60000000
274#define GP3_DATA_LOAD_HDR_ENABLE            0x00000001
275
276#define GP3_HOST_SOURCE_TYPE			    0x00000000
277#define GP3_CH3_HOST_SOURCE_TYPE		    0x20000000
278#define GP3_OLD_PATTERN_COLORS			    0x40000000
279#define GP3_LUT_DATA_TYPE				    0x60000000
280
281#define GP3_BASE_OFFSET_DSTMASK             0xFFC00000
282#define GP3_BASE_OFFSET_SRCMASK             0x003FF000
283#define GP3_BASE_OFFSET_CH3MASK             0x00000FFC
284
285/*----------------------------------------------------------------*/
286/*                  VIDEO GENERATOR DEFINITIONS                   */
287/*----------------------------------------------------------------*/
288
289#define DC3_UNLOCK              0x00000000      /* Unlock register              */
290#define DC3_GENERAL_CFG         0x00000004      /* Config registers             */
291#define DC3_DISPLAY_CFG         0x00000008
292#define DC3_ARB_CFG             0x0000000C
293
294#define DC3_FB_ST_OFFSET        0x00000010      /* Frame buffer start offset    */
295#define DC3_CB_ST_OFFSET        0x00000014      /* Compression start offset     */
296#define DC3_CURS_ST_OFFSET      0x00000018      /* Cursor buffer start offset   */
297#define DC3_VID_Y_ST_OFFSET     0x00000020      /* Video Y Buffer start offset  */
298#define DC3_VID_U_ST_OFFSET     0x00000024      /* Video U Buffer start offset  */
299#define DC3_VID_V_ST_OFFSET     0x00000028      /* Video V Buffer start offset  */
300#define DC3_DV_TOP              0x0000002C      /* DV Ram Limit Register        */
301#define DC3_LINE_SIZE           0x00000030      /* Video, CB, and FB line sizes */
302#define DC3_GFX_PITCH           0x00000034      /* FB and DB skip counts        */
303#define DC3_VID_YUV_PITCH       0x00000038      /* Y, U and V buffer skip counts */
304
305#define DC3_H_ACTIVE_TIMING     0x00000040      /* Horizontal timings           */
306#define DC3_H_BLANK_TIMING      0x00000044
307#define DC3_H_SYNC_TIMING       0x00000048
308#define DC3_V_ACTIVE_TIMING     0x00000050      /* Vertical Timings             */
309#define DC3_V_BLANK_TIMING      0x00000054
310#define DC3_V_SYNC_TIMING       0x00000058
311#define DC3_FB_ACTIVE           0x0000005C
312
313#define DC3_CURSOR_X            0x00000060      /* Cursor X position            */
314#define DC3_CURSOR_Y            0x00000064      /* Cursor Y Position            */
315#define DC3_LINE_CNT_STATUS     0x0000006C
316
317#define DC3_PAL_ADDRESS         0x00000070      /* Palette Address              */
318#define DC3_PAL_DATA            0x00000074      /* Palette Data                 */
319#define DC3_DFIFO_DIAG          0x00000078      /* Display FIFO diagnostic      */
320#define DC3_CFIFO_DIAG          0x0000007C      /* Compression FIFO diagnostic  */
321
322#define DC3_VID_DS_DELTA        0x00000080      /* Vertical Downscaling fraction */
323
324#define DC3_PHY_MEM_OFFSET      0x00000084      /* VG Base Address Register     */
325#define DC3_DV_CTL              0x00000088      /* Dirty-Valid Control Register */
326#define DC3_DV_ACC              0x0000008C      /* Dirty-Valid RAM Access       */
327
328#define DC3_GFX_SCALE           0x00000090      /* Graphics Scaling             */
329#define DC3_IRQ_FILT_CTL        0x00000094      /* VBlank interrupt and filters */
330#define DC3_FILT_COEFF1         0x00000098
331#define DC3_FILT_COEFF2         0x0000009C
332
333#define DC3_VBI_EVEN_CTL        0x000000A0      /* VBI Data Buffer Controls     */
334#define DC3_VBI_ODD_CTL         0x000000A4
335#define DC3_VBI_HOR             0x000000A8
336#define DC3_VBI_LN_ODD          0x000000AC
337#define DC3_VBI_LN_EVEN         0x000000B0
338#define DC3_VBI_PITCH           0x000000B4
339
340#define DC3_COLOR_KEY           0x000000B8      /* Graphics color key           */
341#define DC3_COLOR_MASK          0x000000BC      /* Graphics color key mask      */
342#define DC3_CLR_KEY_X           0x000000C0
343#define DC3_CLR_KEY_Y           0x000000C4
344
345#define DC3_IRQ                 0x000000C8
346#define DC3_GENLK_CTL           0x000000D4
347
348#define DC3_VID_EVEN_Y_ST_OFFSET    0x000000D8  /* Even field video buffers */
349#define DC3_VID_EVEN_U_ST_OFFSET    0x000000DC
350#define DC3_VID_EVEN_V_ST_OFFSET    0x000000E0
351
352#define DC3_V_ACTIVE_EVEN       0x000000E4      /* Even field timing registers  */
353#define DC3_V_BLANK_EVEN        0x000000E8
354#define DC3_V_SYNC_EVEN         0x000000EC
355
356/* UNLOCK VALUE */
357
358#define DC3_UNLOCK_VALUE	    0x00004758  /* used to unlock DC regs       */
359
360/* VG GEODELINK DEVICE SMI MSR FIELDS */
361
362#define DC3_VG_BL_MASK                      0x00000001
363#define DC3_MISC_MASK                       0x00000002
364#define DC3_ISR0_MASK                       0x00000004
365#define DC3_VGA_BL_MASK                     0x00000008
366#define DC3_CRTCIO_MSK                      0x00000010
367#define DC3_VG_BLANK_SMI                    0x00000001
368#define DC3_MISC_SMI                        0x00000002
369#define DC3_ISR0_SMI                        0x00000004
370#define DC3_VGA_BLANK_SMI                   0x00000008
371#define DC3_CRTCIO_SMI                      0x00000010
372
373/* DC3_GENERAL_CFG BIT FIELDS */
374
375#define DC3_GCFG_DBUG                       0x80000000
376#define DC3_GCFG_DBSL                       0x40000000
377#define DC3_GCFG_CFRW                       0x20000000
378#define DC3_GCFG_DIAG                       0x10000000
379#define DC3_GCFG_CRC_MODE                   0x08000000
380#define DC3_GCFG_SGFR                       0x04000000
381#define DC3_GCFG_SGRE                       0x02000000
382#define DC3_GCFG_SIGE                       0x01000000
383#define DC3_GCFG_SIG_SEL                    0x00800000
384#define DC3_GCFG_YUV_420                    0x00100000
385#define DC3_GCFG_VDSE                       0x00080000
386#define DC3_GCFG_VGAFT                      0x00040000
387#define DC3_GCFG_FDTY                       0x00020000
388#define DC3_GCFG_STFM                       0x00010000
389#define DC3_GCFG_DFHPEL_MASK                0x0000F000
390#define DC3_GCFG_DFHPSL_MASK                0x00000F00
391#define DC3_GCFG_VGAE                       0x00000080
392#define DC3_GCFG_DECE                       0x00000040
393#define DC3_GCFG_CMPE                       0x00000020
394#define DC3_GCFG_FILT_SIG_SEL               0x00000010
395#define DC3_GCFG_VIDE                       0x00000008
396#define DC3_GCFG_CLR_CUR                    0x00000004
397#define DC3_GCFG_CURE                       0x00000002
398#define DC3_GCFG_DFLE                       0x00000001
399
400/* DC3_DISPLAY_CFG BIT FIELDS */
401
402#define DC3_DCFG_VISL                       0x08000000
403#define DC3_DCFG_FRLK                       0x04000000
404#define DC3_DCFG_PALB                       0x02000000
405#define DC3_DCFG_DCEN                       0x01000000
406#define DC3_DCFG_VFHPEL_MASK                0x000F0000
407#define DC3_DCFG_VFHPSL_MASK                0x0000F000
408#define DC3_DCFG_16BPP_MODE_MASK            0x00000C00
409#define DC3_DCFG_16BPP                      0x00000000
410#define DC3_DCFG_15BPP                      0x00000400
411#define DC3_DCFG_12BPP                      0x00000800
412#define DC3_DCFG_DISP_MODE_MASK             0x00000300
413#define DC3_DCFG_DISP_MODE_8BPP             0x00000000
414#define DC3_DCFG_DISP_MODE_16BPP            0x00000100
415#define DC3_DCFG_DISP_MODE_24BPP            0x00000200
416#define DC3_DCFG_DISP_MODE_32BPP            0x00000300
417#define DC3_DCFG_TRUP                       0x00000040
418#define DC3_DCFG_VDEN                       0x00000010
419#define DC3_DCFG_GDEN                       0x00000008
420#define DC3_DCFG_TGEN                       0x00000001
421
422/* DC3_ARB_CFG BIT FIELDS */
423
424#define DC3_ACFG_LB_LOAD_WM_EN              0x00100000
425#define DC3_ACFG_LB_LOAD_WM_MASK            0x000F0000
426#define DC3_ACFG_LPEN_END_COUNT_MASK        0x0000FE00
427#define DC3_ACFG_HPEN_SBINV                 0x00000100
428#define DC3_ACFG_HPEN_FB_INV_HALFSB         0x00000080
429#define DC3_ACFG_HPEN_FB_INV_SBRD           0x00000040
430#define DC3_ACFG_HPEN_FB_INV                0x00000020
431#define DC3_ACFG_HPEN_1LB_INV               0x00000010
432#define DC3_ACFG_HPEN_2LB_INV               0x00000008
433#define DC3_ACFG_HPEN_3LB_INV               0x00000004
434#define DC3_ACFG_HPEN_LB_FILL               0x00000002
435#define DC3_ACFG_LPEN_VSYNC                 0x00000001
436
437/* DC3_FB_ST_OFFSET BIT FIELDS */
438
439#define DC3_FB_ST_OFFSET_MASK               0x0FFFFFFF
440
441/* DC3_CB_ST_OFFSET BIT FIELDS */
442
443#define DC3_CB_ST_OFFSET_MASK               0x0FFFFFFF
444
445/* DC3_CURS_ST_OFFSET BIT FIELDS */
446
447#define DC3_CURS_ST_OFFSET_MASK             0x0FFFFFFF
448
449/* DC3_ICON_ST_OFFSET BIT FIELDS */
450
451#define DC3_ICON_ST_OFFSET_MASK             0x0FFFFFFF
452
453/* DC3_VID_Y_ST_OFFSET BIT FIELDS */
454
455#define DC3_VID_Y_ST_OFFSET_MASK            0x0FFFFFFF
456
457/* DC3_VID_U_ST_OFFSET BIT FIELDS */
458
459#define DC3_VID_U_ST_OFFSET_MASK            0x0FFFFFFF
460
461/* DC3_VID_V_ST_OFFSET BIT FIELDS */
462
463#define DC3_VID_V_ST_OFFSET_MASK            0x0FFFFFFF
464
465/* DC3_DV_TOP BIT FIELDS */
466
467#define DC3_DVTOP_ENABLE                    0x00000001
468#define DC3_DVTOP_MAX_MASK                  0x00FFFC00
469#define DC3_DVTOP_MAX_SHIFT                 10
470
471/* DC3_LINE_SIZE BIT FIELDS */
472
473#define DC3_LINE_SIZE_VLS_MASK              0x3FF00000
474#define DC3_LINE_SIZE_CBLS_MASK             0x0007F000
475#define DC3_LINE_SIZE_FBLS_MASK             0x000003FF
476#define DC3_LINE_SIZE_CB_SHIFT              12
477#define DC3_LINE_SIZE_VB_SHIFT              20
478
479/* DC3_GFX_PITCH BIT FIELDS */
480
481#define DC3_GFX_PITCH_CBP_MASK              0xFFFF0000
482#define DC3_GFX_PITCH_FBP_MASK              0x0000FFFF
483
484/* DC3_VID_YUV_PITCH BIT FIELDS */
485
486#define DC3_YUV_PITCH_UVP_MASK              0xFFFF0000
487#define DC3_YUV_PITCH_YBP_MASK              0x0000FFFF
488
489/* DC3_H_ACTIVE_TIMING BIT FIELDS */
490
491#define DC3_HAT_HT_MASK                     0x0FF80000
492#define DC3_HAT_HA_MASK                     0x00000FF8
493
494/* DC3_H_BLANK_TIMING BIT FIELDS */
495
496#define DC3_HBT_HBE_MASK                    0x0FF80000
497#define DC3_HBT_HBS_MASK                    0x00000FF8
498
499/* DC3_H_SYNC_TIMING BIT FIELDS */
500
501#define DC3_HST_HSE_MASK                    0x0FF80000
502#define DC3_HST_HSS_MASK                    0x00000FF8
503
504/* DC3_V_ACTIVE_TIMING BIT FIELDS */
505
506#define DC3_VAT_VT_MASK                     0x07FF0000
507#define DC3_VAT_VA_MASK                     0x000007FF
508
509/* DC3_V_BLANK_TIMING BIT FIELDS */
510
511#define DC3_VBT_VBE_MASK                    0x07FF0000
512#define DC3_VBT_VBS_MASK                    0x000007FF
513
514/* DC3_V_SYNC_TIMING BIT FIELDS */
515
516#define DC3_VST_VSE_MASK                    0x07FF0000
517#define DC3_VST_VSS_MASK                    0x000007FF
518
519/* DC3_LINE_CNT_STATUS BIT FIELDS     */
520
521#define DC3_LNCNT_DNA                       0x80000000
522#define DC3_LNCNT_VNA                       0x40000000
523#define DC3_LNCNT_VSA                       0x20000000
524#define DC3_LNCNT_VINT                      0x10000000
525#define DC3_LNCNT_FLIP                      0x08000000
526#define DC3_LNCNT_V_LINE_CNT                0x07FF0000
527#define DC3_LNCNT_VFLIP                     0x00008000
528#define DC3_LNCNT_SIGC                      0x00004000
529#define DC3_LNCNT_EVEN_FIELD                0x00002000
530#define DC3_LNCNT_SS_LINE_CMP               0x000007FF
531
532/* DC3_VID_DS_DELTA BIT FIELDS */
533
534#define DC3_DS_DELTA_MASK                   0xFFFC0000
535#define DC3_601_VSYNC_SHIFT_MASK            0x00000FFF
536#define DC3_601_VSYNC_SHIFT_ENABLE          0x00008000
537
538/* DC3_DV_CTL BIT DEFINITIONS */
539
540#define DC3_DV_LINE_SIZE_MASK               0x00000C00
541#define DC3_DV_LINE_SIZE_1024               0x00000000
542#define DC3_DV_LINE_SIZE_2048               0x00000400
543#define DC3_DV_LINE_SIZE_4096               0x00000800
544#define DC3_DV_LINE_SIZE_8192               0x00000C00
545
546/* DC3_IRQ_FILT_CTL DEFINITIONS */
547
548#define DC3_IRQFILT_LB_MASK                 0x80000200
549#define DC3_IRQFILT_LB_COEFF                0x00000000
550#define DC3_IRQFILT_SCALER_FILTER           0x00000200
551#define DC3_IRQFILT_SYNCHRONIZER            0x80000000
552#define DC3_IRQFILT_FLICKER_FILTER          0x80000200
553#define DC3_IRQFILT_LB_SEL_MASK             0x60000000
554#define DC3_IRQFILT_INTL_ADDR               0x10000000
555#define DC3_IRQFILT_LINE_MASK               0x07FF0000
556#define DC3_IRQFILT_ALPHA_FILT_EN           0x00004000
557#define DC3_IRQFILT_GFX_FILT_EN             0x00001000
558#define DC3_IRQFILT_INTL_EN                 0x00000800
559#define DC3_IRQFILT_H_FILT_SEL              0x00000400
560#define DC3_IRQFILT_LB_ADDR                 0x00000100
561
562/* DC3_VBI_EVEN_CTL DEFINITIONS */
563
564#define DC3_VBI_EVEN_ENABLE_CRC             (1L << 31)
565#define DC3_VBI_EVEN_CTL_ENABLE_16          (1L << 30)
566#define DC3_VBI_EVEN_CTL_UPSCALE            (1L << 29)
567#define DC3_VBI_ENABLE                      (1L << 28)
568#define DC3_VBI_EVEN_CTL_OFFSET_MASK        0x0FFFFFFF
569
570/* DC3_VBI_ODD_CTL DEFINITIONS */
571
572#define DC3_VBI_ODD_CTL_OFFSET_MASK         0x0FFFFFFF
573
574/* DC3_VBI_HOR BIT DEFINITIONS */
575
576#define DC3_VBI_HOR_END_SHIFT               16
577#define DC3_VBI_HOR_END_MASK				0x0FFF0000
578#define DC3_VBI_HOR_START_MASK				0x00000FFF
579
580/* DC3_VBI_LN_ODD BIT DEFINITIONS */
581
582#define DC3_VBI_ODD_ENABLE_SHIFT            2
583#define DC3_VBI_ODD_ENABLE_MASK             0x01FFFFFC
584#define DC3_VBI_ODD_LINE_SHIFT              25
585#define DC3_VBI_ODD_LINE_MASK               0xFE000000
586
587/* DC3_VBI_LN_EVEN BIT DEFINITIONS */
588
589#define DC3_VBI_EVEN_ENABLE_SHIFT           2
590#define DC3_VBI_EVEN_ENABLE_MASK			0x01FFFFFC
591#define DC3_VBI_EVEN_LINE_SHIFT             25
592#define DC3_VBI_EVEN_LINE_MASK				0xFE000000
593
594/* DC3_COLOR_KEY DEFINITIONS */
595
596#define DC3_CLR_KEY_DATA_MASK               0x00FFFFFF
597#define DC3_CLR_KEY_ENABLE                  0x01000000
598
599/* DC3_IRQ DEFINITIONS */
600
601#define DC3_IRQ_MASK                        0x00000001
602#define DC3_VSYNC_IRQ_MASK                  0x00000002
603#define DC3_IRQ_STATUS                      0x00010000
604#define DC3_VSYNC_IRQ_STATUS                0x00020000
605
606/* DC3_GENLK_CTL DEFINITIONS */
607
608#define DC3_GC_FLICKER_FILTER_NONE          0x00000000
609#define DC3_GC_FLICKER_FILTER_1_16          0x10000000
610#define DC3_GC_FLICKER_FILTER_1_8           0x20000000
611#define DC3_GC_FLICKER_FILTER_1_4           0x40000000
612#define DC3_GC_FLICKER_FILTER_5_16          0x50000000
613#define DC3_GC_FLICKER_FILTER_MASK          0xF0000000
614#define DC3_GC_ALPHA_FLICK_ENABLE           0x02000000
615#define DC3_GC_FLICKER_FILTER_ENABLE        0x01000000
616#define DC3_GC_VIP_VID_OK                   0x00800000
617#define DC3_GC_GENLK_ACTIVE                 0x00400000
618#define DC3_GC_SKEW_WAIT                    0x00200000
619#define DC3_GC_VSYNC_WAIT                   0x00100000
620#define DC3_GC_GENLOCK_TO_ENABLE            0x00080000
621#define DC3_GC_GENLOCK_ENABLE               0x00040000
622#define DC3_GC_GENLOCK_SKEW_MASK            0x0003FFFF
623
624/* VGA DEFINITIONS */
625
626#define DC3_SEQUENCER_INDEX                 0x03C4
627#define DC3_SEQUENCER_DATA                  0x03C5
628#define DC3_SEQUENCER_RESET                 0x00
629#define DC3_SEQUENCER_CLK_MODE              0x01
630
631#define DC3_RESET_VGA_DISP_ENABLE           0x03
632#define DC3_CLK_MODE_SCREEN_OFF             0x20
633
634/* DOT CLOCK FREQUENCY STRUCTURE */
635/* Note that m, n and p refer to the register m, n and p  */
636/* and not the m, n and p from the PLL equation.  The PLL */
637/* equation adds 1 to each value.                         */
638
639typedef struct tagPLLFrequency {
640    unsigned long pll_value;
641    unsigned long frequency;
642
643} PLL_FREQUENCY;
644
645/* VG MSRS */
646
647#define DC3_SPARE_MSR                       0x2011
648#define DC3_RAM_CTL                         0x2012
649
650/* DC3_SPARE_MSR DEFINITIONS */
651
652#define DC3_SPARE_DISABLE_CFIFO_HGO         0x00000800
653#define DC3_SPARE_VFIFO_ARB_SELECT          0x00000400
654#define DC3_SPARE_WM_LPEN_OVRD              0x00000200
655#define DC3_SPARE_LOAD_WM_LPEN_MASK         0x00000100
656#define DC3_SPARE_DISABLE_INIT_VID_PRI      0x00000080
657#define DC3_SPARE_DISABLE_VFIFO_WM          0x00000040
658#define DC3_SPARE_DISABLE_CWD_CHECK         0x00000020
659#define DC3_SPARE_PIX8_PAN_FIX              0x00000010
660#define DC3_SPARE_FIRST_REQ_MASK            0x00000002
661
662/* VG DIAG DEFINITIONS */
663
664#define DC3_MBD_DIAG_EN0                    0x00008000
665#define DC3_MBD_DIAG_EN1                    0x80000000
666#define DC3_DIAG_DOT_CRTC_DP                0x00000082
667#define DC3_DIAG_DOT_CRTC_DP_HIGH           0x00820000
668#define DC3_DIAG_EVEN_FIELD                 0x00002000
669
670/*----------------------------------------------------------------*/
671/*                DISPLAY FILTER DEFINITIONS                      */
672/*----------------------------------------------------------------*/
673
674#define DF_VIDEO_CONFIG 		            0x00000000
675#define DF_DISPLAY_CONFIG                   0x00000008
676#define DF_VIDEO_X_POS                      0x00000010
677#define DF_VIDEO_Y_POS                      0x00000018
678#define DF_VIDEO_SCALER                     0x00000020
679#define DF_VIDEO_COLOR_KEY			        0x00000028
680#define DF_VIDEO_COLOR_MASK			        0x00000030
681#define DF_PALETTE_ADDRESS 			        0x00000038
682#define DF_PALETTE_DATA	 			        0x00000040
683#define DF_SATURATION_LIMIT                 0x00000048
684#define DF_VID_MISC					        0x00000050
685#define DF_VIDEO_YSCALE                     0x00000060
686#define DF_VIDEO_XSCALE                     0x00000068
687#define DF_VID_CRC                          0x00000088
688#define DF_VID_CRC32                        0x00000090
689#define DF_VID_ALPHA_CONTROL                0x00000098
690#define DF_CURSOR_COLOR_KEY                 0x000000A0
691#define DF_CURSOR_COLOR_MASK                0x000000A8
692#define DF_CURSOR_COLOR_1                   0x000000B0
693#define DF_CURSOR_COLOR_2                   0x000000B8
694#define DF_ALPHA_XPOS_1                     0x000000C0
695#define DF_ALPHA_YPOS_1                     0x000000C8
696#define DF_ALPHA_COLOR_1                    0x000000D0
697#define DF_ALPHA_CONTROL_1                  0x000000D8
698#define DF_ALPHA_XPOS_2                     0x000000E0
699#define DF_ALPHA_YPOS_2                     0x000000E8
700#define DF_ALPHA_COLOR_2                    0x000000F0
701#define DF_ALPHA_CONTROL_2                  0x000000F8
702#define DF_ALPHA_XPOS_3                     0x00000100
703#define DF_ALPHA_YPOS_3                     0x00000108
704#define DF_ALPHA_COLOR_3                    0x00000110
705#define DF_ALPHA_CONTROL_3                  0x00000118
706#define DF_VIDEO_REQUEST                    0x00000120
707#define DF_ALPHA_WATCH                      0x00000128
708#define DF_VIDEO_TEST_MODE                  0x00000130
709#define DF_VID_YPOS_EVEN                    0x00000138
710#define DF_VID_ALPHA_Y_EVEN_1               0x00000140
711#define DF_VID_ALPHA_Y_EVEN_2               0x00000148
712#define DF_VID_ALPHA_Y_EVEN_3               0x00000150
713#define DF_VIDEO_PANEL_TIM1                 0x00000400
714#define DF_VIDEO_PANEL_TIM2                 0x00000408
715#define DF_POWER_MANAGEMENT                 0x00000410
716#define DF_DITHER_CONTROL                   0x00000418
717#define DF_DITHER_ACCESS                    0x00000448
718#define DF_DITHER_DATA                      0x00000450
719#define DF_PANEL_CRC                        0x00000458
720#define DF_PANEL_CRC32                      0x00000468
721#define DF_COEFFICIENT_BASE                 0x00001000
722
723/* DF_VIDEO_CONFIG BIT DEFINITIONS */
724
725#define DF_VCFG_VID_EN                      0x00000001
726#define DF_VCFG_VID_INP_FORMAT              0x0000000C
727#define DF_VCFG_SC_BYP                      0x00000020
728#define DF_VCFG_LINE_SIZE_LOWER_MASK        0x0000FF00
729#define DF_VCFG_INIT_READ_MASK              0x01FF0000
730#define DF_VCFG_LINE_SIZE_BIT8              0x08000000
731#define DF_VCFG_LINE_SIZE_BIT9              0x04000000
732#define DF_VCFG_4_2_0_MODE                  0x10000000
733#define DF_VCFG_UYVY_FORMAT                 0x00000000
734#define DF_VCFG_Y2YU_FORMAT                 0x00000004
735#define DF_VCFG_YUYV_FORMAT                 0x00000008
736#define DF_VCFG_YVYU_FORMAT                 0x0000000C
737
738/* DF_DISPLAY_CONFIG BIT DEFINITIONS */
739
740#define DF_DCFG_DIS_EN                      0x00000001
741#define DF_DCFG_HSYNC_EN                    0x00000002
742#define DF_DCFG_VSYNC_EN                    0x00000004
743#define DF_DCFG_DAC_BL_EN                   0x00000008
744#define DF_DCFG_CRT_HSYNC_POL               0x00000100
745#define DF_DCFG_CRT_VSYNC_POL               0x00000200
746#define DF_DCFG_CRT_SYNC_SKW_MASK           0x0001C000
747#define DF_DCFG_CRT_SYNC_SKW_INIT           0x00010000
748#define DF_DCFG_PWR_SEQ_DLY_MASK            0x000E0000
749#define DF_DCFG_PWR_SEQ_DLY_INIT            0x00080000
750#define DF_DCFG_VG_CK                       0x00100000
751#define DF_DCFG_GV_PAL_BYP                  0x00200000
752#define DF_DAC_VREF                         0x04000000
753
754/* DF_VID_MISC BIT DEFINITIONS */
755
756#define DF_GAMMA_BYPASS_BOTH                0x00000001
757#define DF_DAC_POWER_DOWN                   0x00000400
758#define DF_ANALOG_POWER_DOWN                0x00000800
759#define DF_USER_IMPLICIT_SCALING            0x00001000
760
761/* DF_VID_ALPHA_CONTROL DEFINITIONS */
762
763#define DF_HD_VIDEO                         0x00000040
764#define DF_YUV_CSC_EN                       0x00000080
765#define DF_NO_CK_OUTSIDE_ALPHA              0x00000100
766#define DF_HD_GRAPHICS                      0x00000200
767#define DF_CSC_VIDEO_YUV_TO_RGB             0x00000400
768#define DF_CSC_GRAPHICS_RGB_TO_YUV          0x00000800
769#define DF_CSC_VOP_RGB_TO_YUV               0x00001000
770#define DF_VIDEO_INPUT_IS_RGB               0x00002000
771#define DF_VID_ALPHA_EN                     0x00004000
772#define DF_ALPHA_DRGB                       0x00008000
773
774/* VIDEO CURSOR COLOR KEY DEFINITIONS */
775
776#define DF_CURSOR_COLOR_KEY_ENABLE          0x20000000
777
778/* ALPHA COLOR BIT DEFINITION */
779
780#define DF_ALPHA_COLOR_ENABLE               0x01000000
781
782/* ALPHA CONTROL BIT DEFINITIONS */
783
784#define DF_ACTRL_WIN_ENABLE                 0x00010000
785#define DF_ACTRL_LOAD_ALPHA	                0x00020000
786#define DF_ACTRL_PERPIXEL_EN                0x00040000
787
788/* DF_VIDEO_SCALER DEFINITIONS */
789
790#define DF_SCALE_128_PHASES                 0x00002000
791#define DF_SCALE_DOUBLE_H_DOWNSCALE         0x00004000
792
793/* DEFAULT PANEL TIMINGS DEFINITIONS */
794
795#define DF_DEFAULT_TFT_PMTIM1               0x00000000
796#define DF_DEFAULT_XVGA_PMTIM1              0x00000000
797#define DF_DEFAULT_TFT_PMTIM2               0x08C00000
798#define DF_DEFAULT_XVGA_PMTIM2              0x08C10000
799#define DF_DEFAULT_TFT_PAD_SEL_LOW          0xDFFFFFFF
800#define DF_DEFAULT_TFT_PAD_SEL_HIGH         0x0000003F
801#define DF_DEFAULT_XVGA_PAD_SEL_LOW         0x00000000
802#define DF_DEFAULT_XVGA_PAD_SEL_HIGH        0x00000000
803#define DF_DEFAULT_DITHCTL                  0x00000070
804#define DF_DEFAULT_TV_PAD_SEL_HIGH          0x000000BF
805#define DF_DEFAULT_TV_PAD_SEL_LOW           0xDFFFFFFF
806#define DF_INVERT_VOP_CLOCK                 0x00000080
807
808/* DF_VIDEO_PANEL_TIM2 DEFINITIONS */
809
810#define DF_PMTIM2_TFT_PASSHTHROUGH          0x40000000
811
812/* DF_POWER_MANAGEMENT DEFINITIONS */
813
814#define DF_PM_PANEL_ON                      0x01000000
815#define DF_PM_INVERT_SHFCLK                 0x00002000
816
817/* DISPLAY FILTER MSRS */
818
819#define DF_MBD_MSR_DIAG_DF                  0x2010
820#define DF_MSR_PAD_SEL                      0x2011
821#define DF_DIAG_32BIT_CRC                   0x80000000
822
823#define DF_OUTPUT_CRT                       0x00000000
824#define DF_OUTPUT_PANEL                     0x00000008
825#define DF_OUTPUT_VOP                       0x00000030
826#define DF_OUTPUT_DRGB                      0x00000038
827#define DF_SIMULTANEOUS_CRT_FP              0x00008000
828#define DF_CONFIG_OUTPUT_MASK               0x00000038
829
830/*----------------------------------------------------------------*/
831/*                       MSR DEFINITIONS                          */
832/*----------------------------------------------------------------*/
833
834/*----------------------------*/
835/* STATIC GEODELINK ADDRESSES */
836/*----------------------------*/
837
838#define MSR_ADDRESS_GLIU0                   0x10000000
839#define MSR_ADDRESS_GLIU1                   0x40000000
840#define MSR_ADDRESS_GLIU2                   0x51010000
841#define MSR_ADDRESS_5535MPCI                0x51000000
842#define MSR_ADDRESS_VAIL                    0x00000000
843
844/*----------------------------*/
845/* UNIVERSAL DEVICE MSRS      */
846/*----------------------------*/
847
848#define MSR_GEODELINK_CAP                   0x2000
849#define MSR_GEODELINK_CONFIG                0x2001
850#define MSR_GEODELINK_SMI                   0x2002
851#define MSR_GEODELINK_ERROR                 0x2003
852#define MSR_GEODELINK_PM                    0x2004
853#define MSR_GEODELINK_DIAG                  0x2005
854
855/*----------------------------*/
856/* DEVICE CLASS CODES         */
857/*----------------------------*/
858
859#define MSR_CLASS_CODE_GLIU                 0x01
860#define MSR_CLASS_CODE_GLCP                 0x02
861#define MSR_CLASS_CODE_MPCI                 0x05
862#define MSR_CLASS_CODE_MC                   0x20
863#define MSR_CLASS_CODE_GP                   0x3D
864#define MSR_CLASS_CODE_VG                   0x3E
865#define MSR_CLASS_CODE_DF                   0x3F
866#define MSR_CLASS_CODE_FG                   0xF0
867#define MSR_CLASS_CODE_VAIL                 0x86
868#define MSR_CLASS_CODE_USB                  0x42
869#define MSR_CLASS_CODE_USB2                 0x43
870#define MSR_CLASS_CODE_ATAC	                0x47
871#define MSR_CLASS_CODE_MDD 	                0xDF
872#define MSR_CLASS_CODE_ACC 	                0x33
873#define MSR_CLASS_CODE_AES                  0x30
874#define MSR_CLASS_CODE_VIP                  0x3C
875#define MSR_CLASS_CODE_REFLECTIVE           0xFFF
876#define MSR_CLASS_CODE_UNPOPULATED          0x7FF
877
878/*----------------------------*/
879/*   GLIU MSR DEFINITIONS     */
880/*----------------------------*/
881
882#define MSR_GLIU_CAP                        0x0086
883#define MSR_GLIU_WHOAMI			            0x008B
884
885#define NUM_PORTS_MASK                      0x00380000
886#define NUM_PORTS_SHIFT                     19
887#define WHOAMI_MASK			                0x07
888
889/*----------------------------*/
890/*   GLCP MSR DEFINITIONS     */
891/*----------------------------*/
892
893#define GLCP_CLKOFF                         0x0010
894#define GLCP_CLKACTIVE                      0x0011
895#define GLCP_CLKDISABLE                     0x0012
896#define GLCP_CLK4ACK                        0x0013
897#define GLCP_SYS_RSTPLL                     0x0014
898#define GLCP_DOTPLL                         0x0015
899#define GLCP_DBGCLKCTL                      0x0016
900#define GLCP_REVID                          0x0017
901#define GLCP_RAW_DIAG                       0x0028
902#define GLCP_SETM0CTL                       0x0040
903#define GLCP_SETN0CTL                       0x0048
904#define GLCP_CMPVAL0                        0x0050
905#define GLCP_CMPMASK0                       0x0051
906#define GLCP_REGA                           0x0058
907#define GLCP_REGB                           0x0059
908#define GLCP_REGAMASK                       0x005A
909#define GLCP_REGAVAL                        0x005B
910#define GLCP_REGBMASK                       0x005C
911#define GLCP_REGBVAL                        0x005D
912#define GLCP_FIFOCTL                        0x005E
913#define GLCP_DIAGCTL                        0x005F
914#define GLCP_H0CTL                          0x0060
915#define GLCP_XSTATE                         0x0066
916#define GLCP_YSTATE                         0x0067
917#define GLCP_ACTION0                        0x0068
918
919/* GLCP_DOTPLL DEFINITIONS */
920
921#define GLCP_DOTPLL_RESET                   0x00000001
922#define GLCP_DOTPLL_BYPASS                  0x00008000
923#define GLCP_DOTPLL_HALFPIX                 0x01000000
924#define GLCP_DOTPLL_LOCK                    0x02000000
925#define GLCP_DOTPLL_VIPCLK                  0x00008000
926#define GLCP_DOTPLL_DIV4                    0x00010000
927
928/* GLCP DIAG DEFINITIONS */
929
930#define GLCP_MBD_DIAG_SEL0                  0x00000007
931#define GLCP_MBD_DIAG_EN0                   0x00008000
932#define GLCP_MBD_DIAG_SEL1                  0x00070000
933#define GLCP_MBD_DIAG_EN1                   0x80000000
934
935/*--------------------------------*/
936/* DISPLAY FILTER MSR DEFINITIONS */
937/*--------------------------------*/
938
939/* DISPLAY FILTER MBD_MSR_DIAG DEFINITIONS */
940
941#define DF_MBD_DIAG_SEL0                    0x00007FFF
942#define DF_MBD_DIAG_EN0                     0x00008000
943#define DF_MBD_DIAG_SEL1                    0x7FFF0000
944#define DF_MBD_DIAG_EN1                     0x80000000
945
946/* DISPLAY FILTER MBD_MSR_CONFIG DEFINITIONS */
947
948#define DF_CONFIG_FMT_MASK                  0x00000038
949#define DF_CONFIG_FMT_CRT                   0x00000000
950#define DF_CONFIG_FMT_FP                    0x00000008
951
952/*----------------------------------------------------------------*/
953/*                       PCI DEFINITIONS                          */
954/*----------------------------------------------------------------*/
955
956#define PCI_VENDOR_DEVICE_GEODEGX           0x0028100B
957#define PCI_VENDOR_DEVICE_GEODEGX_VIDEO     0x0030100B
958#define PCI_VENDOR_DEVICE_GEODELX           0x20801022
959#define PCI_VENDOR_DEVICE_GEODELX_VIDEO     0x20811022
960#define PCI_VENDOR_5535                     0x002B100B
961#define PCI_VENDOR_5536                     0x20901022
962
963/*----------------------------------------------------------------*/
964/*                       VIP DEFINITIONS                          */
965/*----------------------------------------------------------------*/
966
967#define VIP_CONTROL1                        0x00000000
968#define VIP_CONTROL2                        0x00000004
969#define VIP_STATUS                          0x00000008
970#define VIP_INTERRUPT                       0x0000000C
971#define VIP_CURRENT_TARGET                  0x00000010
972#define VIP_MAX_ADDRESS                     0x00000014
973#define	VIP_TASKA_VID_EVEN_BASE             0x00000018
974#define	VIP_TASKA_VID_ODD_BASE              0x0000001C
975#define	VIP_TASKA_VBI_EVEN_BASE             0x00000020
976#define	VIP_TASKA_VBI_ODD_BASE              0x00000024
977#define VIP_TASKA_VID_PITCH                 0x00000028
978#define VIP_CONTROL3                        0x0000002C
979#define VIP_TASKA_V_OFFSET                  0x00000030
980#define VIP_TASKA_U_OFFSET                  0x00000034
981#define	VIP_TASKB_VID_EVEN_BASE             0x00000038
982#define VIP_601_HORZ_END                    0x00000038
983#define	VIP_TASKB_VID_ODD_BASE              0x0000003C
984#define	VIP_601_HORZ_START                  0x0000003C
985#define	VIP_TASKB_VBI_EVEN_BASE             0x00000040
986#define	VIP_601_VBI_END                     0x00000040
987#define	VIP_TASKB_VBI_ODD_BASE              0x00000044
988#define	VIP_601_VBI_START                   0x00000044
989#define VIP_TASKB_VID_PITCH                 0x00000048
990#define VIP_601_EVEN_START_STOP             0x00000048
991#define VIP_TASKB_V_OFFSET                  0x00000050
992#define VIP_ODD_FIELD_DETECT                0x00000050
993#define VIP_TASKB_U_OFFSET                  0x00000054
994#define	VIP_ANC_MSG1_BASE                   0x00000058
995#define	VIP_ANC_MSG2_BASE                   0x0000005C
996#define	VIP_ANC_MSG_SIZE                    0x00000060
997#define VIP_PAGE_OFFSET                     0x00000068
998#define VIP_VERTICAL_START_STOP             0x0000006C
999#define VIP_601_ODD_START_STOP              0x0000006C
1000#define VIP_FIFO_ADDRESS                    0x00000070
1001#define VIP_FIFO_DATA                       0x00000074
1002#define VIP_VSYNC_ERR_COUNT                 0x00000078
1003#define VIP_TASKA_U_EVEN_OFFSET             0x0000007C
1004#define VIP_TASKA_V_EVEN_OFFSET             0x00000080
1005
1006/* INDIVIDUAL REGISTER BIT DEFINITIONS                          */
1007/* Multibit register subsets are expressed as a mask and shift. */
1008/* Single bit values are represented as a mask.                 */
1009
1010/* VIP_CONTROL1 REGISTER DEFINITIONS */
1011
1012#define VIP_CONTROL1_DEFAULT_ANC_FF         2
1013#define VIP_CONTROL1_ANC_FF_MASK            0xE0000000
1014#define VIP_CONTROL1_ANC_FF_SHIFT           29
1015
1016#define VIP_CONTROL1_DEFAULT_VID_FF         2
1017#define VIP_CONTROL1_VID_FF_MASK            0x1F000000
1018#define VIP_CONTROL1_VID_FF_SHIFT           24
1019
1020#define VIP_CONTROL1_VDE_FF_MASK            0x00F00000
1021#define VIP_CONTROL1_VDE_FF_SHIFT           20
1022
1023#define VIP_CONTROL1_NON_INTERLACED         (1L << 19)
1024#define VIP_CONTROL1_MSG_STRM_CTRL          (1L << 18)
1025#define VIP_CONTROL1_DISABLE_ZERO_DETECT    (1L << 17)
1026#define VIP_CONTROL1_DISABLE_DECIMATION     (1L << 16)
1027
1028#define VIP_CONTROL1_CAPTURE_ENABLE_MASK    0x0000FF00
1029#define VIP_CONTROL1_CAPTURE_ENABLE_SHIFT   8
1030
1031#define VIP_CONTROL1_RUNMODE_MASK           0x000000E0
1032#define VIP_CONTROL1_RUNMODE_SHIFT          5
1033
1034#define VIP_CONTROL1_PLANAR                 (1L << 4)
1035
1036#define VIP_CONTROL1_MODE_MASK              0x0000000E
1037#define VIP_CONTROL1_MODE_SHIFT             1
1038
1039#define VIP_CONTROL1_RESET                  0x00000001
1040
1041/* VIP_CONTROL2 REGISTER DEFINITIONS */
1042
1043#define VIP_CONTROL2_INVERT_POLARITY        (1L << 31)
1044#define VIP_CONTROL2_ADD_ERROR_ENABLE       (1L << 30)
1045#define VIP_CONTROL2_REPEAT_ENABLE          (1L << 29)
1046#define VIP_CONTROL2_SWC_ENABLE             (1L << 28)
1047#define VIP_CONTROL2_ANC10                  (1L << 27)
1048#define VIP_CONTROL2_ANCPEN                 (1L << 26)
1049#define VIP_CONTROL2_LOOPBACK_ENABLE        (1L << 25)
1050#define VIP_CONTROL2_FIFO_ACCESS            (1L << 24)
1051#define VIP_CONTROL2_VERTERROR_ENABLE       (1L << 15)
1052
1053#define VIP_CONTROL2_PAGECNT_MASK           0x00E00000
1054#define VIP_CONTROL2_PAGECNT_SHIFT          21
1055
1056#define VIP_CONTROL2_DEFAULT_ANCTH          5
1057#define VIP_CONTROL2_ANCTH_MASK             0x001F0000
1058#define VIP_CONTROL2_ANCTH_SHIFT            16
1059
1060#define VIP_CONTROL2_DEFAULT_VIDTH_420      19
1061#define VIP_CONTROL2_DEFAULT_VIDTH_422      19
1062#define VIP_CONTROL2_VIDTH_MASK             0x00007F00
1063#define VIP_CONTROL2_VIDTH_SHIFT            8
1064
1065#define VIP_CONTROL2_SYNC2PIN_MASK          0x000000E0
1066#define VIP_CONTROL2_SYNC2PIN_SHIFT         5
1067
1068#define VIP_CONTROL2_FIELD2VG_MASK          0x00000018
1069#define VIP_CONTROL2_FIELD2VG_SHIFT         3
1070
1071#define VIP_CONTROL2_SYNC2VG_MASK           0x00000007
1072#define VIP_CONTROL2_SYNC2VG_SHIFT          0
1073
1074/* VIP_CONTROL3 REGISTER DEFINITIONS */
1075
1076#define VIP_CONTROL3_PLANAR_DEINT           0x00000400
1077#define VIP_CONTROL3_BASE_UPDATE            0x00000200
1078#define VIP_CONTROL3_DISABLE_OVERFLOW       0x00000100
1079#define VIP_CONTROL3_DECIMATE_EVEN          0x00000080
1080#define VIP_CONTROL3_TASK_POLARITY          0x00000040
1081#define VIP_CONTROL3_VSYNC_POLARITY         0x00000020
1082#define VIP_CONTROL3_HSYNC_POLARITY         0x00000010
1083#define VIP_CONTROL3_FIFO_RESET             0x00000001
1084
1085/* VIP_STATUS REGISTER DEFINITIONS */
1086
1087#define VIP_STATUS_ANC_COUNT_MASK           0xFF000000
1088#define VIP_STATUS_ANC_COUNT_SHIFT          24
1089
1090#define VIP_STATUS_FIFO_ERROR               0x00700000
1091#define VIP_STATUS_ERROR_SHIFT              20
1092#define VIP_STATUS_DEC_COUNT                (1L << 18)
1093#define VIP_STATUS_SYNCOUT                  (1L << 17)
1094#define VIP_STATUS_BASEREG_NOTUPDT          (1L << 16)
1095#define VIP_STATUS_MSGBUFF_ERR              (1L << 14)
1096#define VIP_STATUS_MSGBUFF2_FULL            (1L << 13)
1097#define VIP_STATUS_MSGBUFF1_FULL            (1L << 12)
1098#define VIP_STATUS_WRITES_COMPLETE          (1L << 9)
1099#define VIP_STATUS_FIFO_EMPTY               (1L << 8)
1100#define VIP_STATUS_FIELD                    (1L << 4)
1101#define VIP_STATUS_VBLANK                   (1L << 3)
1102
1103#define VIP_STATUS_RUN_MASK                 0x00000007
1104#define VIP_STATUS_RUN_SHIFT                0
1105
1106/* VIP_CURRENT_TARGET REGISTER DEFINITIONS */
1107
1108#define VIP_CTARGET_TLINE_MASK              0xFFFF0000
1109#define VIP_CTARGET_TLINE_SHIFT             16
1110
1111#define VIP_CTARGET_CLINE_MASK              0x0000FFFF
1112#define VIP_CTARGET_CLINE_SHIFT             0
1113
1114/* VIP_MAX_ADDRESS REGISTER DEFINITIONS */
1115
1116#define VIP_MAXADDR_MASK                    0xFFFFFFFF
1117#define VIP_MAXADDR_SHIFT                   0
1118
1119/* VIP BUFFER PITCH DEFINITIONS */
1120
1121#define VIP_TASK_PITCH_MASK                 0x0000FFFF
1122#define VIP_TASK_PITCH_SHIFT                0
1123
1124/* VERTICAL START/STOP */
1125
1126#define VIP_VSTART_VERTEND_MASK             0x0FFF0000
1127#define VIP_VSTART_VERTEND_SHIFT            16
1128
1129#define VIP_VSTART_VERTSTART_MASK           0x00000FFF
1130#define VIP_VSTART_VERTSTART_SHIFT          0
1131
1132/* VIP FIFO ADDRESS DEFINITIONS */
1133
1134#define VIP_FIFO_ADDRESS_MASK               0x000000FF
1135#define VIP_FIFO_ADDRESS_SHIFT              0
1136
1137/* VIP VSYNC ERROR DEFINITIONS */
1138
1139#define VIP_VSYNC_ERR_WINDOW_MASK           0xFF000000
1140#define VIP_VSYNC_ERR_WINDOW_SHIFT          24
1141
1142#define VIP_VSYNC_ERR_COUNT_MASK            0x00FFFFFF
1143#define VIP_VSYNC_ERR_COUNT_SHIFT           0
1144
1145/*---------------------*/
1146/* VIP MSR DEFINITIONS */
1147/*---------------------*/
1148
1149/* CAPABILITIES */
1150
1151#define VIP_MSR_CAP_NSMI_MASK               0xF8000000
1152#define VIP_MSR_CAP_NSMI_SHIFT              27
1153#define VIP_MSR_CAP_NCLK_MASK               0x07000000
1154#define VIP_MSR_CAP_NCLK_SHIFT              24
1155#define VIP_MSR_CAP_DEVID_MASK              0x00FFFF00
1156#define VIP_MSR_CAP_DEVID_SHIFT             8
1157#define VIP_MSR_CAP_REVID_MASK              0x000000FF
1158#define VIP_MSR_CAP_REVID_SHIFT             0
1159
1160/* MASTER CONFIG */
1161
1162#define VIP_MSR_MCR_SECOND_PRIORITY_MASK    0x00000700
1163#define VIP_MSR_MCR_SECOND_PRIORITY_SHIFT   8
1164#define VIP_MSR_MCR_PRIMARY_PRIORITY_MASK   0x00000070
1165#define VIP_MSR_MCR_PRIMARY_PRIORITY_SHIFT  4
1166#define VIP_MSR_MCR_PID_MASK                0x00000007
1167#define VIP_MSR_MCR_PID_SHIFT               0
1168
1169/* VIP SMI */
1170
1171#define VIP_MSR_SMI_FIFO_OVERFLOW           (1L << 29)
1172#define VIP_MSR_SMI_FIFO_THRESHOLD          (1L << 28)
1173#define VIP_MSR_SMI_LONGLINE                (1L << 27)
1174#define VIP_MSR_SMI_VERTICAL_TIMING         (1L << 26)
1175#define VIP_MSR_SMI_ACTIVE_PIXELS           (1L << 25)
1176#define VIP_MSR_SMI_CLOCK_INPUT             (1L << 24)
1177#define VIP_MSR_SMI_ANC_CHECKSUM_PARITY     (1L << 23)
1178#define VIP_MSR_SMI_MSG_BUFFER_FULL         (1L << 22)
1179#define VIP_MSR_SMI_END_VBLANK              (1L << 21)
1180#define VIP_MSR_SMI_START_VBLANK            (1L << 20)
1181#define VIP_MSR_SMI_START_EVEN              (1L << 19)
1182#define VIP_MSR_SMI_START_ODD               (1L << 18)
1183#define VIP_MSR_SMI_LINE_MATCH_TARGET       (1L << 17)
1184#define VIP_MSR_SMI_GLINK                   (1L << 16)
1185
1186/* VIP ERROR */
1187
1188#define VIP_MSR_ERROR_ADDRESS_MASK          (1L << 17)
1189#define VIP_MSR_ERROR_ADDRESS_SHIFT         17
1190#define VIP_MSR_ERROR_ADDRESS_ENABLE        (1L << 1)
1191#define VIP_MSR_ERROR_ADDRESS_EN_SHIFT      1
1192#define VIP_MSR_ERROR_TYPE_MASK             (1L << 16)
1193#define VIP_MSR_ERROR_TYPE_SHIFT            16
1194#define VIP_MSR_ERROR_TYPE_ENABLE           1
1195#define VIP_MSR_ERROR_TYPE_EN_SHIFT         0
1196
1197/* VIP POWER */
1198
1199#define VIP_MSR_POWER_GLINK                 (1L << 0)
1200#define VIP_MSR_POWER_CLOCK                 (1L << 2)
1201
1202/* VIP DIAG */
1203
1204#define VIP_MSR_DIAG_BIST_WMASK             0x00000003
1205#define VIP_MSR_DIAG_BIST_RMASK             0x00000007
1206#define VIP_MSR_DIAG_BIST_SHIFT             0
1207
1208#define VIP_MSR_DIAG_MSB_ENABLE             (1L << 31)
1209#define VIP_MSR_DIAG_SEL_UPPER_MASK         0x7FFF0000
1210#define VIP_MSR_DIAG_SEL_UPPER_SHIFT        16
1211#define VIP_MSR_DIAG_LSB_ENABLE             (1L << 15)
1212#define VIP_MSR_DIAG_SEL_LOWER_MASK         0x00007FFF
1213#define VIP_MSR_DIAG_SEL_LOWER_SHIFT        0
1214
1215/*----------------------------------------------------------------*/
1216/*                       VOP DEFINITIONS                          */
1217/*----------------------------------------------------------------*/
1218
1219#define VOP_CONFIGURATION                   0x00000800
1220#define VOP_SIGNATURE                       0x00000808
1221
1222/* VOP_CONFIGURATION BIT DEFINITIONS */
1223
1224#define VOP_CONFIG_SWAPVBI                  0x01000000
1225#define VOP_CONFIG_RGBMODE                  0x00200000
1226#define VOP_CONFIG_SIGVAL                   0x00100000
1227#define VOP_CONFIG_INVERT_DISPE             0x00080000
1228#define VOP_CONFIG_INVERT_VSYNC             0x00040000
1229#define VOP_CONFIG_INVERT_HSYNC             0x00020000
1230#define VOP_CONFIG_SWAPUV                   0x00010000
1231#define VOP_CONFIG_VSYNC_MASK               0x0000C000
1232#define VOP_CONFIG_DISABLE_DECIMATE         0x00002000
1233#define VOP_CONFIG_ENABLE_601               0x00001000
1234#define VOP_CONFIG_VBI                      0x00000800
1235#define VOP_CONFIG_TASK                     0x00000200
1236#define VOP_CONFIG_SIG_FREE_RUN             0x00000100
1237#define VOP_CONFIG_ENABLE_SIGNATURE         0x00000080
1238#define VOP_CONFIG_SC_COMPATIBLE            0x00000040
1239#define VOP_CONFIG_422_COSITED              0x00000000
1240#define VOP_CONFIG_422_INTERSPERSED         0x00000010
1241#define VOP_CONFIG_422_ALTERNATING          0x00000020
1242#define VOP_CONFIG_422_MASK                 0x00000030
1243#define VOP_CONFIG_EXTENDED_SAV             0x00000008
1244#define VOP_CONFIG_VIP2_16BIT               0x00000004
1245#define VOP_CONFIG_DISABLED                 0x00000000
1246#define VOP_CONFIG_VIP1_1                   0x00000001
1247#define VOP_CONFIG_VIP2_0                   0x00000002
1248#define VOP_CONFIG_CCIR656                  0x00000003
1249#define VOP_CONFIG_MODE_MASK                0x00000003
1250
1251#endif
1252