cim_parm.h revision 79d5fcd7
1f29dbc25Smrg/*
2f29dbc25Smrg * Copyright (c) 2006 Advanced Micro Devices, Inc.
3f29dbc25Smrg *
4f29dbc25Smrg * Permission is hereby granted, free of charge, to any person obtaining a
5f29dbc25Smrg * copy of this software and associated documentation files (the "Software"),
6f29dbc25Smrg * to deal in the Software without restriction, including without limitation
7f29dbc25Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8f29dbc25Smrg * and/or sell copies of the Software, and to permit persons to whom the
9f29dbc25Smrg * Software is furnished to do so, subject to the following conditions:
10f29dbc25Smrg *
11f29dbc25Smrg * The above copyright notice and this permission notice shall be included in
12f29dbc25Smrg * all copies or substantial portions of the Software.
13f29dbc25Smrg *
14f29dbc25Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15f29dbc25Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16f29dbc25Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17f29dbc25Smrg * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18f29dbc25Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19f29dbc25Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20f29dbc25Smrg * DEALINGS IN THE SOFTWARE.
21f29dbc25Smrg *
22f29dbc25Smrg * Neither the name of the Advanced Micro Devices, Inc. nor the names of its
23f29dbc25Smrg * contributors may be used to endorse or promote products derived from this
24f29dbc25Smrg * software without specific prior written permission.
25f29dbc25Smrg */
26f29dbc25Smrg
27f29dbc25Smrg /*
28f29dbc25Smrg  * Cimarron user definitions.
29f29dbc25Smrg  */
30f29dbc25Smrg
31f29dbc25Smrg#ifndef _cim_parm_h
32f29dbc25Smrg#define _cim_parm_h
33f29dbc25Smrg
34f29dbc25Smrg/*===================================================*/
35f29dbc25Smrg/*       CIMARRON RETURN VALUE DEFINITIONS           */
36f29dbc25Smrg/*===================================================*/
37f29dbc25Smrg
38f29dbc25Smrg#define CIM_STATUS_OK                     0x00000000
39f29dbc25Smrg#define CIM_STATUS_ERROR                  0x00000001
40f29dbc25Smrg#define CIM_STATUS_INVALIDPARAMS          0x00000002
41f29dbc25Smrg#define CIM_STATUS_DEVNOTFOUND            0x00000004
42f29dbc25Smrg#define CIM_STATUS_INVALIDSCALE           0x00000008
43f29dbc25Smrg#define CIM_STATUS_INEXACTMATCH           0x00000010
44f29dbc25Smrg#define CIM_STATUS_NOLOCK                 0x00000020
45f29dbc25Smrg#define CIM_STATUS_CPUNOTFOUND            0x00000040
46f29dbc25Smrg#define CIM_STATUS_DISPLAYUNAVAILABLE     0x00000080
47f29dbc25Smrg#define CIM_STATUS_NOTFOUND               0x00000100
48f29dbc25Smrg
49f29dbc25Smrg/*===================================================*/
50f29dbc25Smrg/*       CIMARRON CPU DEFINITIONS                    */
51f29dbc25Smrg/*===================================================*/
52f29dbc25Smrg
53f29dbc25Smrg#define CIM_CPU_GEODEGX                   0x00000001
54f29dbc25Smrg#define CIM_CPU_GEODELX                   0x00000002
55f29dbc25Smrg
56f29dbc25Smrg#define CIM_SB_5535                       0x00000001
57f29dbc25Smrg#define CIM_SB_5536                       0x00000002
58f29dbc25Smrg
59f29dbc25Smrg/*===================================================*/
60f29dbc25Smrg/* MSR PARAMETERS                                    */
61f29dbc25Smrg/*===================================================*/
62f29dbc25Smrg
63f29dbc25Smrg/*-------------------------------------------------------------*/
64f29dbc25Smrg/* GEODELINK DEVICE IDS                                        */
65f29dbc25Smrg/* These values uniquely identify all known GeodeLink devices  */
66f29dbc25Smrg/* in GeodeLX and its companion, 5535/6.  For multiple devices */
67f29dbc25Smrg/* of the same class (GLIU, USB, etc.) the table order is used */
68f29dbc25Smrg/* to to identify the expected device order, in terms of on    */
69f29dbc25Smrg/* which GLIU the device is found, and on which port.          */
70f29dbc25Smrg/*-------------------------------------------------------------*/
71f29dbc25Smrg
72f29dbc25Smrg#define MSR_DEVICE_GEODELX_GLIU0          0x00
73f29dbc25Smrg#define MSR_DEVICE_GEODELX_GLIU1          0x01
74f29dbc25Smrg#define MSR_DEVICE_5535_GLIU              0x02
75f29dbc25Smrg#define MSR_DEVICE_GEODELX_GLCP           0x03
76f29dbc25Smrg#define MSR_DEVICE_5535_GLCP              0x04
77f29dbc25Smrg#define MSR_DEVICE_GEODELX_MPCI           0x05
78f29dbc25Smrg#define MSR_DEVICE_5535_MPCI              0x06
79f29dbc25Smrg#define MSR_DEVICE_GEODELX_MC             0x07
80f29dbc25Smrg#define MSR_DEVICE_GEODELX_GP             0x08
81f29dbc25Smrg#define MSR_DEVICE_GEODELX_VG             0x09
82f29dbc25Smrg#define MSR_DEVICE_GEODELX_VIP            0x0A
83f29dbc25Smrg#define MSR_DEVICE_GEODELX_AES            0x0B
84f29dbc25Smrg#define MSR_DEVICE_GEODELX_DF             0x0C
85f29dbc25Smrg#define MSR_DEVICE_GEODELX_FG             0x0D
86f29dbc25Smrg#define MSR_DEVICE_GEODELX_VAIL           0x0E
87f29dbc25Smrg#define MSR_DEVICE_5536_USB_2_0           0x0F
88f29dbc25Smrg#define MSR_DEVICE_5535_USB2              0x10
89f29dbc25Smrg#define MSR_DEVICE_5535_USB1              0x11
90f29dbc25Smrg#define MSR_DEVICE_5535_ATAC              0x12
91f29dbc25Smrg#define MSR_DEVICE_5535_MDD               0x13
92f29dbc25Smrg#define MSR_DEVICE_5535_ACC               0x14
93f29dbc25Smrg#define MSR_DEVICE_EMPTY                  0x15
94f29dbc25Smrg#define MSR_DEVICE_REFLECTIVE             0x16
95f29dbc25Smrg#define MSR_DEVICE_PRESENT                0x17
96f29dbc25Smrg#define MSR_DEVICE_NOTFOUND               0x18
97f29dbc25Smrg
98f29dbc25Smrg/*---------------------------------------------*/
99f29dbc25Smrg/* GEODELINK TABLE ENTRY                       */
100f29dbc25Smrg/* The following structure represents one port */
101f29dbc25Smrg/* on a GeodeLink Interface Unit (GLIU)        */
102f29dbc25Smrg/*---------------------------------------------*/
103f29dbc25Smrg
10404007ebaSmrgtypedef struct tagGeodeLinkNode {
105f29dbc25Smrg    unsigned long address_from_cpu;
106f29dbc25Smrg    unsigned long device_id;
107f29dbc25Smrg
108f29dbc25Smrg} GEODELINK_NODE;
109f29dbc25Smrg
110f29dbc25Smrg/*---------------------------------------------*/
111f29dbc25Smrg/* QWORD DATA STRUCTURE                        */
11279d5fcd7Smrg/* 64-bit data structure for MSR access.       */
113f29dbc25Smrg/*---------------------------------------------*/
114f29dbc25Smrg
11504007ebaSmrgtypedef struct tagQ_WORD {
116f29dbc25Smrg    unsigned long high;
117f29dbc25Smrg    unsigned long low;
118f29dbc25Smrg
119f29dbc25Smrg} Q_WORD;
120f29dbc25Smrg
121f29dbc25Smrg/*===================================================*/
122f29dbc25Smrg/*       INITIALIZATION USER PARAMETERS              */
123f29dbc25Smrg/*===================================================*/
124f29dbc25Smrg
12504007ebaSmrgtypedef struct tagInitBaseAddresses {
126f29dbc25Smrg    unsigned long framebuffer_base;
127f29dbc25Smrg    unsigned long gp_register_base;
128f29dbc25Smrg    unsigned long vg_register_base;
129f29dbc25Smrg    unsigned long df_register_base;
130f29dbc25Smrg    unsigned long vip_register_base;
131f29dbc25Smrg    unsigned long framebuffer_size;
132f29dbc25Smrg
133f29dbc25Smrg} INIT_BASE_ADDRESSES;
134f29dbc25Smrg
135f29dbc25Smrg/*===================================================*/
136f29dbc25Smrg/*          GP USER PARAMETER DEFINITIONS            */
137f29dbc25Smrg/*===================================================*/
138f29dbc25Smrg
139f29dbc25Smrg/*---------------------------*/
140f29dbc25Smrg/* GP_DECLARE_BLT PARAMETERS */
141f29dbc25Smrg/*---------------------------*/
142f29dbc25Smrg
143f29dbc25Smrg#define CIMGP_BLTFLAGS_PRES_LUT          0x0001
144f29dbc25Smrg#define CIMGP_BLTFLAGS_PRES_COLOR_PAT    0x0002
145f29dbc25Smrg#define CIMGP_ENABLE_PREFETCH            0x0004
146f29dbc25Smrg#define CIMGP_BLTFLAGS_HAZARD            0x0008
147f29dbc25Smrg#define CIMGP_BLTFLAGS_INVERTMONO        0x0010
148f29dbc25Smrg#define CIMGP_BLTFLAGS_LIMITBUFFER       0x0020
149f29dbc25Smrg
150f29dbc25Smrg/*-----------------------------------*/
151f29dbc25Smrg/* GP_SET_ALPHA_OPERATION PARAMETERS */
152f29dbc25Smrg/*-----------------------------------*/
153f29dbc25Smrg
154f29dbc25Smrg#define CIMGP_APPLY_BLEND_TO_RGB         1
155f29dbc25Smrg#define CIMGP_APPLY_BLEND_TO_ALPHA       2
156f29dbc25Smrg#define CIMGP_APPLY_BLEND_TO_ALL         3
157f29dbc25Smrg
158f29dbc25Smrg#define CIMGP_ALPHA_TIMES_A              0
159f29dbc25Smrg#define CIMGP_BETA_TIMES_B               1
160f29dbc25Smrg#define CIMGP_A_PLUS_BETA_B              2
161f29dbc25Smrg#define CIMGP_ALPHA_A_PLUS_BETA_B        3
162f29dbc25Smrg
163f29dbc25Smrg#define CIMGP_CHANNEL_A_ALPHA            0
164f29dbc25Smrg#define CIMGP_CHANNEL_B_ALPHA            1
165f29dbc25Smrg#define CIMGP_CONSTANT_ALPHA             2
166f29dbc25Smrg#define CIMGP_ALPHA_EQUALS_ONE           3
167f29dbc25Smrg#define CIMGP_ALPHA_FROM_RGB_A           4
168f29dbc25Smrg#define CIMGP_ALPHA_FROM_RGB_B           5
169f29dbc25Smrg#define CIMGP_CONVERTED_ALPHA            6
170f29dbc25Smrg
171f29dbc25Smrg#define CIMGP_CHANNEL_A_SOURCE           0
172f29dbc25Smrg#define CIMGP_CHANNEL_A_DEST             1
173f29dbc25Smrg
174f29dbc25Smrg/*---------------------------------*/
175f29dbc25Smrg/* GP_SET_SOURCE_FORMAT PARAMETERS */
176f29dbc25Smrg/*---------------------------------*/
177f29dbc25Smrg
178f29dbc25Smrg#define CIMGP_SOURCE_FMT_3_3_2           0x00
179f29dbc25Smrg#define CIMGP_SOURCE_FMT_8BPP_INDEXED    0x01
180f29dbc25Smrg#define CIMGP_SOURCE_FMT_4_4_4_4         0x04
181f29dbc25Smrg#define CIMGP_SOURCE_FMT_12BPP_BGR       0x14
182f29dbc25Smrg#define CIMGP_SOURCE_FMT_1_5_5_5         0x05
183f29dbc25Smrg#define CIMGP_SOURCE_FMT_15BPP_BGR       0x15
184f29dbc25Smrg#define CIMGP_SOURCE_FMT_0_5_6_5         0x06
185f29dbc25Smrg#define CIMGP_SOURCE_FMT_16BPP_BGR       0x16
186f29dbc25Smrg#define CIMGP_SOURCE_FMT_YUYV            0x07
187f29dbc25Smrg#define CIMGP_SOURCE_FMT_UYVY            0x17
188f29dbc25Smrg#define CIMGP_SOURCE_FMT_8_8_8_8         0x08
189f29dbc25Smrg#define CIMGP_SOURCE_FMT_32BPP_BGR       0x18
190f29dbc25Smrg#define CIMGP_SOURCE_FMT_24BPP           0x0B
191f29dbc25Smrg#define CIMGP_SOURCE_FMT_4BPP_INDEXED    0x0D
192f29dbc25Smrg
193f29dbc25Smrg/*------------------------------------*/
194f29dbc25Smrg/* GP_SCREEN_TO_SCREEN_BLT PARAMETERS */
195f29dbc25Smrg/*------------------------------------*/
196f29dbc25Smrg
197f29dbc25Smrg#define CIMGP_NEGXDIR                    1
198f29dbc25Smrg#define CIMGP_NEGYDIR                    2
199f29dbc25Smrg
200f29dbc25Smrg/*------------------------------------*/
201f29dbc25Smrg/* GP_BRESENHAM_LINE PARAMETERS       */
202f29dbc25Smrg/*------------------------------------*/
203f29dbc25Smrg
204f29dbc25Smrg#define CIMGP_YMAJOR                     1
205f29dbc25Smrg#define CIMGP_POSMAJOR                   2
206f29dbc25Smrg#define CIMGP_POSMINOR                   4
207f29dbc25Smrg
208f29dbc25Smrg/*----------------------------------------------*/
209f29dbc25Smrg/* USER STRUCTURE FOR SAVING/RESTORING GP STATE */
210f29dbc25Smrg/*----------------------------------------------*/
211f29dbc25Smrg
21204007ebaSmrgtypedef struct tagGPSaveRestore {
213f29dbc25Smrg    unsigned long base_offset;
214f29dbc25Smrg    unsigned long cmd_top;
215f29dbc25Smrg    unsigned long cmd_bottom;
216f29dbc25Smrg    unsigned long cmd_base;
217f29dbc25Smrg    unsigned long cmd_read;
218f29dbc25Smrg
219f29dbc25Smrg} GP_SAVE_RESTORE;
220f29dbc25Smrg
221f29dbc25Smrg/*===================================================*/
222f29dbc25Smrg/*          VG USER PARAMETER DEFINITIONS            */
223f29dbc25Smrg/*===================================================*/
224f29dbc25Smrg
225f29dbc25Smrg/*-------------------------------------------*/
226f29dbc25Smrg/*       SUPPORTED TV ENCODERS               */
227f29dbc25Smrg/*-------------------------------------------*/
228f29dbc25Smrg
229f29dbc25Smrg#define VG_ENCODER_ADV7171                0x0001
230f29dbc25Smrg#define VG_ENCODER_SAA7127                0x0002
231f29dbc25Smrg#define VG_ENCODER_FS454                  0x0003
232f29dbc25Smrg#define VG_ENCODER_ADV7300                0x0004
233f29dbc25Smrg
234f29dbc25Smrg/*-------------------------------------------*/
235f29dbc25Smrg/*       SUPPORTED TV RESOLUTIONS            */
236f29dbc25Smrg/*-------------------------------------------*/
237f29dbc25Smrg
238f29dbc25Smrg#define VG_TVMODE_NTSC                    0x00000000
239f29dbc25Smrg#define VG_TVMODE_PAL                     0x00000001
240f29dbc25Smrg#define VG_TVMODE_480P                    0x00000002
241f29dbc25Smrg#define VG_TVMODE_720P                    0x00000003
242f29dbc25Smrg#define VG_TVMODE_1080I                   0x00000004
243f29dbc25Smrg#define VG_TVMODE_6X4_NTSC                0x00000005
244f29dbc25Smrg#define VG_TVMODE_8X6_NTSC                0x00000006
245f29dbc25Smrg#define VG_TVMODE_10X7_NTSC               0x00000007
246f29dbc25Smrg#define VG_TVMODE_6X4_PAL                 0x00000008
247f29dbc25Smrg#define VG_TVMODE_8X6_PAL                 0x00000009
248f29dbc25Smrg#define VG_TVMODE_10X7_PAL                0x0000000A
249f29dbc25Smrg
250f29dbc25Smrg/*-------------------------------------------*/
251f29dbc25Smrg/* USER STRUCTURE FOR SETTING A DISPLAY MODE */
252f29dbc25Smrg/*-------------------------------------------*/
253f29dbc25Smrg
254f29dbc25Smrg#define VG_SUPPORTFLAG_8BPP               0x00000001
255f29dbc25Smrg#define VG_SUPPORTFLAG_12BPP              0x00000002
256f29dbc25Smrg#define VG_SUPPORTFLAG_15BPP              0x00000004
257f29dbc25Smrg#define VG_SUPPORTFLAG_16BPP              0x00000008
258f29dbc25Smrg#define VG_SUPPORTFLAG_24BPP              0x00000010
259f29dbc25Smrg#define VG_SUPPORTFLAG_32BPP              0x00000020
260f29dbc25Smrg#define VG_SUPPORTFLAG_56HZ               0x00000040
261f29dbc25Smrg#define VG_SUPPORTFLAG_60HZ               0x00000080
262f29dbc25Smrg#define VG_SUPPORTFLAG_70HZ               0x00000100
263f29dbc25Smrg#define VG_SUPPORTFLAG_72HZ               0x00000200
264f29dbc25Smrg#define VG_SUPPORTFLAG_75HZ               0x00000400
265f29dbc25Smrg#define VG_SUPPORTFLAG_85HZ               0x00000800
266f29dbc25Smrg#define VG_SUPPORTFLAG_90HZ               0x00001000
267f29dbc25Smrg#define VG_SUPPORTFLAG_100HZ              0x00002000
268f29dbc25Smrg#define VG_SUPPORTFLAG_HZMASK             0x00003FC0
269f29dbc25Smrg#define VG_SUPPORTFLAG_ADV7171            0x00004000
270f29dbc25Smrg#define VG_SUPPORTFLAG_SAA7127            0x00008000
271f29dbc25Smrg#define VG_SUPPORTFLAG_FS454              0x00010000
272f29dbc25Smrg#define VG_SUPPORTFLAG_ADV7300            0x00020000
273f29dbc25Smrg#define VG_SUPPORTFLAG_ENCODERMASK        0x0003C000
274f29dbc25Smrg#define VG_SUPPORTFLAG_PANEL              0x00040000
275f29dbc25Smrg#define VG_SUPPORTFLAG_TVOUT              0x00080000
276f29dbc25Smrg#define VG_SUPPORTFLAG_NTSC               0x00000000
277f29dbc25Smrg#define VG_SUPPORTFLAG_PAL                0x00100000
278f29dbc25Smrg#define VG_SUPPORTFLAG_480P               0x00200000
279f29dbc25Smrg#define VG_SUPPORTFLAG_720P               0x00300000
280f29dbc25Smrg#define VG_SUPPORTFLAG_1080I              0x00400000
281f29dbc25Smrg#define VG_SUPPORTFLAG_6X4_NTSC           0x00500000
282f29dbc25Smrg#define VG_SUPPORTFLAG_8X6_NTSC           0x00600000
283f29dbc25Smrg#define VG_SUPPORTFLAG_10X7_NTSC          0x00700000
284f29dbc25Smrg#define VG_SUPPORTFLAG_6X4_PAL            0x00800000
285f29dbc25Smrg#define VG_SUPPORTFLAG_8X6_PAL            0x00900000
286f29dbc25Smrg#define VG_SUPPORTFLAG_10X7_PAL           0x00A00000
287f29dbc25Smrg#define VG_SUPPORTFLAG_TVMODEMASK         0x00F00000
288f29dbc25Smrg
289f29dbc25Smrg#define VG_MODEFLAG_NEG_HSYNC             0x00000001
290f29dbc25Smrg#define VG_MODEFLAG_NEG_VSYNC             0x00000002
291f29dbc25Smrg#define VG_MODEFLAG_INTERLACED            0x00000004
292f29dbc25Smrg#define VG_MODEFLAG_PANELOUT              0x00000008
293f29dbc25Smrg#define VG_MODEFLAG_CENTERED              0x00000010
294f29dbc25Smrg#define VG_MODEFLAG_LINEARPITCH           0x00000020
295f29dbc25Smrg#define VG_MODEFLAG_TVOUT                 0x00000040
296f29dbc25Smrg#define VG_MODEFLAG_HALFCLOCK             0x00000080
297f29dbc25Smrg#define VG_MODEFLAG_QVGA                  0x00000100
298f29dbc25Smrg#define VG_MODEFLAG_EXCLUDEPLL            0x00000200
299f29dbc25Smrg#define VG_MODEFLAG_NOPANELTIMINGS        0x00000400
300f29dbc25Smrg#define VG_MODEFLAG_XVGA_TFT              0x00000800
301f29dbc25Smrg#define VG_MODEFLAG_CUSTOM_PANEL          0x00001000
302f29dbc25Smrg#define VG_MODEFLAG_CRT_AND_FP            0x00002000
303f29dbc25Smrg#define VG_MODEFLAG_LOW_BAND              0x00000000
304f29dbc25Smrg#define VG_MODEFLAG_AVG_BAND              0x00004000
305f29dbc25Smrg#define VG_MODEFLAG_HIGH_BAND             0x00008000
306f29dbc25Smrg#define VG_MODEFLAG_LEGACY_BAND           0x0000C000
307f29dbc25Smrg#define VG_MODEFLAG_BANDWIDTHMASK         0x0000C000
308f29dbc25Smrg#define VG_MODEFLAG_OVERRIDE_BAND         0x00010000
309f29dbc25Smrg#define VG_MODEFLAG_INT_ADDRESS           0x00000000
310f29dbc25Smrg#define VG_MODEFLAG_INT_LINEDOUBLE        0x00020000
311f29dbc25Smrg#define VG_MODEFLAG_INT_FLICKER           0x00040000
312f29dbc25Smrg#define VG_MODEFLAG_INT_MASK              0x00060000
313f29dbc25Smrg#define VG_MODEFLAG_INT_OVERRIDE          0x00080000
314f29dbc25Smrg#define VG_MODEFLAG_INVERT_SHFCLK         0x00100000
315f29dbc25Smrg#define VG_MODEFLAG_MANUAL_FREQUENCY      0x00200000
316f29dbc25Smrg#define VG_MODEFLAG_PLL_BYPASS            0x00400000
317f29dbc25Smrg#define VG_MODEFLAG_VIP_TO_DOT_CLOCK      0x00800000
318f29dbc25Smrg
319f29dbc25Smrg#define VG_MODEFLAG_VALIDUSERFLAGS        (VG_MODEFLAG_CRT_AND_FP     | \
320f29dbc25Smrg                                           VG_MODEFLAG_XVGA_TFT       | \
321f29dbc25Smrg                                           VG_MODEFLAG_NOPANELTIMINGS | \
322f29dbc25Smrg                                           VG_MODEFLAG_EXCLUDEPLL     | \
323f29dbc25Smrg                                           VG_MODEFLAG_LINEARPITCH)
324f29dbc25Smrg
32504007ebaSmrgtypedef struct tagVGDisplayMode {
326f29dbc25Smrg    /* DISPLAY MODE FLAGS */
327f29dbc25Smrg    /* Includes BPP, refresh rate information, interlacing, etc. */
328f29dbc25Smrg
329f29dbc25Smrg    unsigned long internal_flags;
330f29dbc25Smrg    unsigned long flags;
331f29dbc25Smrg
332f29dbc25Smrg    /* SOURCE RESOLUTION */
333f29dbc25Smrg    /* The following values reflect the resolution of the data in the frame */
334f29dbc25Smrg    /* buffer.  These values are used to enable scaling and filtering.      */
335f29dbc25Smrg
336f29dbc25Smrg    unsigned long src_width;
337f29dbc25Smrg    unsigned long src_height;
338f29dbc25Smrg
339f29dbc25Smrg    /* PANEL SETTINGS
340f29dbc25Smrg     * These allow a user to set a panel mode through the vg_set_custom_mode
341f29dbc25Smrg     * routine.  These values are only relevant if the VG_MODEFLAG_PANEL is
342f29dbc25Smrg     * also set.
343f29dbc25Smrg     */
344f29dbc25Smrg
345f29dbc25Smrg    unsigned long mode_width;
346f29dbc25Smrg    unsigned long mode_height;
347f29dbc25Smrg    unsigned long panel_width;
348f29dbc25Smrg    unsigned long panel_height;
349f29dbc25Smrg    unsigned long panel_tim1;
350f29dbc25Smrg    unsigned long panel_tim2;
351f29dbc25Smrg    unsigned long panel_dither_ctl;
352f29dbc25Smrg    unsigned long panel_pad_sel_low;
353f29dbc25Smrg    unsigned long panel_pad_sel_high;
354f29dbc25Smrg
355f29dbc25Smrg    /* OUTPUT TIMINGS */
356f29dbc25Smrg    /* If the active width and height do not match the source */
357f29dbc25Smrg    /* dimensions the graphics data will be scaled.           */
358f29dbc25Smrg
359f29dbc25Smrg    unsigned long hactive;
360f29dbc25Smrg    unsigned long hblankstart;
361f29dbc25Smrg    unsigned long hsyncstart;
362f29dbc25Smrg    unsigned long hsyncend;
363f29dbc25Smrg    unsigned long hblankend;
364f29dbc25Smrg    unsigned long htotal;
365f29dbc25Smrg
366f29dbc25Smrg    unsigned long vactive;
367f29dbc25Smrg    unsigned long vblankstart;
368f29dbc25Smrg    unsigned long vsyncstart;
369f29dbc25Smrg    unsigned long vsyncend;
370f29dbc25Smrg    unsigned long vblankend;
371f29dbc25Smrg    unsigned long vtotal;
372f29dbc25Smrg
373f29dbc25Smrg    unsigned long vactive_even;
374f29dbc25Smrg    unsigned long vblankstart_even;
375f29dbc25Smrg    unsigned long vsyncstart_even;
376f29dbc25Smrg    unsigned long vsyncend_even;
377f29dbc25Smrg    unsigned long vblankend_even;
378f29dbc25Smrg    unsigned long vtotal_even;
379f29dbc25Smrg
380f29dbc25Smrg    /* CLOCK FREQUENCY */
381f29dbc25Smrg
382f29dbc25Smrg    unsigned long frequency;
383f29dbc25Smrg
384f29dbc25Smrg} VG_DISPLAY_MODE;
385f29dbc25Smrg
386f29dbc25Smrg/*-------------------------------------------*/
387f29dbc25Smrg/*                PLL FLAGS                  */
388f29dbc25Smrg/*-------------------------------------------*/
389f29dbc25Smrg
390f29dbc25Smrg#define VG_PLL_DIVIDE_BY_2                0x00000001
391f29dbc25Smrg#define VG_PLL_DIVIDE_BY_4                0x00000002
392f29dbc25Smrg#define VG_PLL_BYPASS                     0x00000004
393f29dbc25Smrg#define VG_PLL_MANUAL                     0x00000008
394f29dbc25Smrg#define VG_PLL_VIP_CLOCK                  0x00000010
395f29dbc25Smrg
396f29dbc25Smrg/*-------------------------------------------*/
397f29dbc25Smrg/* USER STRUCTURE FOR QUERYING DISPLAY MODES */
398f29dbc25Smrg/*-------------------------------------------*/
399f29dbc25Smrg
40004007ebaSmrgtypedef struct tagQueryDisplayMode {
401f29dbc25Smrg    int interlaced;
402f29dbc25Smrg    int halfclock;
403f29dbc25Smrg    unsigned long active_width;
404f29dbc25Smrg    unsigned long active_height;
405f29dbc25Smrg    unsigned long panel_width;
406f29dbc25Smrg    unsigned long panel_height;
407f29dbc25Smrg    unsigned long total_width;
408f29dbc25Smrg    unsigned long total_height;
409f29dbc25Smrg    unsigned long bpp;
410f29dbc25Smrg    unsigned long hz;
411f29dbc25Smrg    unsigned long frequency;
412f29dbc25Smrg    unsigned long query_flags;
413f29dbc25Smrg    unsigned long encoder;
414f29dbc25Smrg    unsigned long tvmode;
415f29dbc25Smrg
416f29dbc25Smrg} VG_QUERY_MODE;
417f29dbc25Smrg
418f29dbc25Smrg/*-------------------------------------------*/
419f29dbc25Smrg/* USER STRUCTURE FOR QUERYING CURSOR DATA   */
420f29dbc25Smrg/*-------------------------------------------*/
421f29dbc25Smrg
42204007ebaSmrgtypedef struct tagCursorData {
423f29dbc25Smrg    int enable;
424f29dbc25Smrg    int color_cursor;
425f29dbc25Smrg    unsigned long cursor_offset;
426f29dbc25Smrg    unsigned long cursor_x;
427f29dbc25Smrg    unsigned long cursor_y;
428f29dbc25Smrg    unsigned long clipx;
429f29dbc25Smrg    unsigned long clipy;
430f29dbc25Smrg    unsigned long mono_color0;
431f29dbc25Smrg    unsigned long mono_color1;
432f29dbc25Smrg    unsigned long flags;
433f29dbc25Smrg
434f29dbc25Smrg} VG_CURSOR_DATA;
435f29dbc25Smrg
436f29dbc25Smrg/*------------------------------------------------*/
437f29dbc25Smrg/*          VG INTERRUPT STATUS SOURCES           */
438f29dbc25Smrg/*------------------------------------------------*/
439f29dbc25Smrg
440f29dbc25Smrg#define VG_INT_LINE_MATCH                 0x00010000
441f29dbc25Smrg#define VG_INT_VSYNC_LOSS                 0x00020000
442f29dbc25Smrg
443f29dbc25Smrg/*------------------------------------------------*/
444f29dbc25Smrg/* USER STRUCTURE FOR SETTING COMPRESSION DATA    */
445f29dbc25Smrg/*------------------------------------------------*/
446f29dbc25Smrg
44704007ebaSmrgtypedef struct tagCompressionData {
448f29dbc25Smrg    unsigned long compression_offset;
449f29dbc25Smrg    unsigned long pitch;
450f29dbc25Smrg    unsigned long size;
451f29dbc25Smrg    unsigned long flags;
452f29dbc25Smrg
453f29dbc25Smrg} VG_COMPRESSION_DATA;
454f29dbc25Smrg
455f29dbc25Smrg/*-------------------------------------------------*/
456f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING LINE INTERRUPTS  */
457f29dbc25Smrg/*-------------------------------------------------*/
458f29dbc25Smrg
45904007ebaSmrgtypedef struct tagInterruptInfo {
460f29dbc25Smrg    unsigned long line;
461f29dbc25Smrg    unsigned long flags;
462f29dbc25Smrg    int enable;
463f29dbc25Smrg
464f29dbc25Smrg} VG_INTERRUPT_PARAMS;
465f29dbc25Smrg
466f29dbc25Smrg/*-------------------------------------------------*/
467f29dbc25Smrg/* USER STRUCTURE FOR PANNING THE DESKTOP          */
468f29dbc25Smrg/*-------------------------------------------------*/
469f29dbc25Smrg
47004007ebaSmrgtypedef struct tagPanningInfo {
471f29dbc25Smrg    unsigned long start_x;
472f29dbc25Smrg    unsigned long start_y;
473f29dbc25Smrg    int start_updated;
474f29dbc25Smrg
475f29dbc25Smrg} VG_PANNING_COORDINATES;
476f29dbc25Smrg
477f29dbc25Smrg/*--------------------------------------------------*/
478f29dbc25Smrg/* USER STRUCTURE FOR SAVING/RESTORING THE VG STATE */
479f29dbc25Smrg/*--------------------------------------------------*/
480f29dbc25Smrg
48104007ebaSmrgtypedef struct tagVGSaveRestore {
482f29dbc25Smrg    /* VG REGISTERS */
483f29dbc25Smrg
484f29dbc25Smrg    unsigned long unlock;
485f29dbc25Smrg    unsigned long gcfg;
486f29dbc25Smrg    unsigned long dcfg;
487f29dbc25Smrg    unsigned long arb_cfg;
488f29dbc25Smrg    unsigned long fb_offset;
489f29dbc25Smrg    unsigned long cb_offset;
490f29dbc25Smrg    unsigned long cursor_offset;
491f29dbc25Smrg    unsigned long video_y_offset;
492f29dbc25Smrg    unsigned long video_u_offset;
493f29dbc25Smrg    unsigned long video_v_offset;
494f29dbc25Smrg    unsigned long dv_top;
495f29dbc25Smrg    unsigned long line_size;
496f29dbc25Smrg    unsigned long gfx_pitch;
497f29dbc25Smrg    unsigned long video_yuv_pitch;
498f29dbc25Smrg    unsigned long h_active;
499f29dbc25Smrg    unsigned long h_blank;
500f29dbc25Smrg    unsigned long h_sync;
501f29dbc25Smrg    unsigned long v_active;
502f29dbc25Smrg    unsigned long v_blank;
503f29dbc25Smrg    unsigned long v_sync;
504f29dbc25Smrg    unsigned long fb_active;
505f29dbc25Smrg    unsigned long cursor_x;
506f29dbc25Smrg    unsigned long cursor_y;
507f29dbc25Smrg    unsigned long vid_ds_delta;
508f29dbc25Smrg    unsigned long fb_base;
509f29dbc25Smrg    unsigned long dv_ctl;
510f29dbc25Smrg    unsigned long gfx_scale;
511f29dbc25Smrg    unsigned long irq_ctl;
512f29dbc25Smrg    unsigned long vbi_even_ctl;
513f29dbc25Smrg    unsigned long vbi_odd_ctl;
514f29dbc25Smrg    unsigned long vbi_hor_ctl;
515f29dbc25Smrg    unsigned long vbi_odd_line_enable;
516f29dbc25Smrg    unsigned long vbi_even_line_enable;
517f29dbc25Smrg    unsigned long vbi_pitch;
518f29dbc25Smrg    unsigned long color_key;
519f29dbc25Smrg    unsigned long color_key_mask;
520f29dbc25Smrg    unsigned long color_key_x;
521f29dbc25Smrg    unsigned long color_key_y;
522f29dbc25Smrg    unsigned long irq;
523f29dbc25Smrg    unsigned long genlk_ctl;
524f29dbc25Smrg    unsigned long vid_y_even_offset;
525f29dbc25Smrg    unsigned long vid_u_even_offset;
526f29dbc25Smrg    unsigned long vid_v_even_offset;
527f29dbc25Smrg    unsigned long vactive_even;
528f29dbc25Smrg    unsigned long vblank_even;
529f29dbc25Smrg    unsigned long vsync_even;
530f29dbc25Smrg    unsigned long h_coeff[512];
531f29dbc25Smrg    unsigned long v_coeff[256];
532f29dbc25Smrg    unsigned long palette[261];
533f29dbc25Smrg    unsigned long cursor_data[3072];
534f29dbc25Smrg    unsigned long dot_pll;
535f29dbc25Smrg    unsigned long pll_flags;
536f29dbc25Smrg
537f29dbc25Smrg    /* VG MSRS */
538f29dbc25Smrg
539f29dbc25Smrg    Q_WORD msr_cap;
540f29dbc25Smrg    Q_WORD msr_config;
541f29dbc25Smrg    Q_WORD msr_smi;
542f29dbc25Smrg    Q_WORD msr_error;
543f29dbc25Smrg    Q_WORD msr_pm;
544f29dbc25Smrg    Q_WORD msr_diag;
545f29dbc25Smrg    Q_WORD msr_spare;
546f29dbc25Smrg    Q_WORD msr_ram_ctl;
547f29dbc25Smrg
548f29dbc25Smrg} VG_SAVE_RESTORE;
549f29dbc25Smrg
550f29dbc25Smrg/*-------------------------------------------*/
551f29dbc25Smrg/* VG_GET_DISPLAY_MODE_INDEX PARAMETERS      */
552f29dbc25Smrg/*-------------------------------------------*/
553f29dbc25Smrg
554f29dbc25Smrg#define VG_QUERYFLAG_ACTIVEWIDTH          0x00000001
555f29dbc25Smrg#define VG_QUERYFLAG_ACTIVEHEIGHT         0x00000002
556f29dbc25Smrg#define VG_QUERYFLAG_TOTALWIDTH           0x00000004
557f29dbc25Smrg#define VG_QUERYFLAG_TOTALHEIGHT          0x00000008
558f29dbc25Smrg#define VG_QUERYFLAG_BPP                  0x00000010
559f29dbc25Smrg#define VG_QUERYFLAG_REFRESH              0x00000020
560f29dbc25Smrg#define VG_QUERYFLAG_PIXELCLOCK           0x00000040
561f29dbc25Smrg#define VG_QUERYFLAG_PIXELCLOCK_APPROX    0x00000080
562f29dbc25Smrg#define VG_QUERYFLAG_PANEL                0x00000100
563f29dbc25Smrg#define VG_QUERYFLAG_PANELWIDTH           0x00000200
564f29dbc25Smrg#define VG_QUERYFLAG_PANELHEIGHT          0x00000400
565f29dbc25Smrg#define VG_QUERYFLAG_TVOUT                0x00000800
566f29dbc25Smrg#define VG_QUERYFLAG_INTERLACED           0x00001000
567f29dbc25Smrg#define VG_QUERYFLAG_HALFCLOCK            0x00002000
568f29dbc25Smrg#define VG_QUERYFLAG_ENCODER              0x00004000
569f29dbc25Smrg#define VG_QUERYFLAG_TVMODE               0x00008000
570f29dbc25Smrg
571f29dbc25Smrg/*-----------------------------------------------*/
572f29dbc25Smrg/*         VG FLICKER FILTER SETTINGS            */
573f29dbc25Smrg/*-----------------------------------------------*/
574f29dbc25Smrg
575f29dbc25Smrg#define VG_FLICKER_FILTER_NONE            0x00000000
576f29dbc25Smrg#define VG_FLICKER_FILTER_1_16            0x10000000
577f29dbc25Smrg#define VG_FLICKER_FILTER_1_8             0x20000000
578f29dbc25Smrg#define VG_FLICKER_FILTER_1_4             0x40000000
579f29dbc25Smrg#define VG_FLICKER_FILTER_5_16            0x50000000
580f29dbc25Smrg#define VG_FLICKER_FILTER_MASK            0xF0000000
581f29dbc25Smrg
582f29dbc25Smrg/*-----------------------------------------------*/
583f29dbc25Smrg/*            VG CRC SOURCES                     */
584f29dbc25Smrg/*-----------------------------------------------*/
585f29dbc25Smrg
586f29dbc25Smrg#define VG_CRC_SOURCE_PREFILTER           0x00000000
587f29dbc25Smrg#define VG_CRC_SOURCE_PREFLICKER          0x00000001
588f29dbc25Smrg#define VG_CRC_SOURCE_POSTFLICKER         0x00000002
589f29dbc25Smrg#define VG_CRC_SOURCE_PREFILTER_EVEN      0x00000010
590f29dbc25Smrg#define VG_CRC_SOURCE_PREFLICKER_EVEN     0x00000011
591f29dbc25Smrg#define VG_CRC_SOURCE_POSTFLICKER_EVEN    0x00000012
592f29dbc25Smrg#define VG_CRC_SOURCE_EVEN                0x00000010
593f29dbc25Smrg
594f29dbc25Smrg/*===================================================*/
595f29dbc25Smrg/* DISPLAY FILTER PARAMETERS                         */
596f29dbc25Smrg/*===================================================*/
597f29dbc25Smrg
598f29dbc25Smrg/*-----------------------------------------------*/
599f29dbc25Smrg/*         VIDEO FORMAT DEFINITIONS              */
600f29dbc25Smrg/*-----------------------------------------------*/
601f29dbc25Smrg
602f29dbc25Smrg#define DF_VIDFMT_UYVY                    0x0000
603f29dbc25Smrg#define DF_VIDFMT_Y2YU                    0x0001
604f29dbc25Smrg#define DF_VIDFMT_YUYV                    0x0002
605f29dbc25Smrg#define DF_VIDFMT_YVYU                    0x0003
606f29dbc25Smrg#define DF_VIDFMT_Y0Y1Y2Y3                0x0004
607f29dbc25Smrg#define DF_VIDFMT_Y3Y2Y1Y0                0x0005
608f29dbc25Smrg#define DF_VIDFMT_Y1Y0Y3Y2                0x0006
609f29dbc25Smrg#define DF_VIDFMT_Y1Y2Y3Y0                0x0007
610f29dbc25Smrg#define DF_VIDFMT_RGB                     0x0008
611f29dbc25Smrg#define DF_VIDFMT_P2M_P2L_P1M_P1L         0x0009
612f29dbc25Smrg#define DF_VIDFMT_P1M_P1L_P2M_P2L         0x000A
613f29dbc25Smrg#define DF_VIDFMT_P1M_P2L_P2M_P1L         0x000B
614f29dbc25Smrg
615f29dbc25Smrg/*-----------------------------------------------*/
616f29dbc25Smrg/*             CRT ENABLE STATES                 */
617f29dbc25Smrg/*-----------------------------------------------*/
618f29dbc25Smrg
619f29dbc25Smrg#define DF_CRT_DISABLE                    0x0000
620f29dbc25Smrg#define DF_CRT_ENABLE                     0x0001
621f29dbc25Smrg#define DF_CRT_STANDBY                    0x0002
622f29dbc25Smrg#define DF_CRT_SUSPEND                    0x0003
623f29dbc25Smrg
624f29dbc25Smrg/*-----------------------------------------------*/
625f29dbc25Smrg/*             VIDEO SCALING FLAGS               */
626f29dbc25Smrg/*-----------------------------------------------*/
627f29dbc25Smrg
628f29dbc25Smrg#define DF_SCALEFLAG_CHANGEX              0x0001
629f29dbc25Smrg#define DF_SCALEFLAG_CHANGEY              0x0002
630f29dbc25Smrg
631f29dbc25Smrg/*-----------------------------------------------*/
632f29dbc25Smrg/*       DISPLAY FILTER COLOR SPACES             */
633f29dbc25Smrg/*-----------------------------------------------*/
634f29dbc25Smrg
635f29dbc25Smrg#define DF_OUTPUT_RGB                     0x0001
636f29dbc25Smrg#define DF_OUTPUT_ARGB                    0x0002
637f29dbc25Smrg#define DF_OUTPUT_SDTV                    0x0003
638f29dbc25Smrg#define DF_OUTPUT_HDTV                    0x0004
639f29dbc25Smrg
640f29dbc25Smrg/*-----------------------------------------------*/
641f29dbc25Smrg/*       DISPLAY FILTER OUTPUT PATHS             */
642f29dbc25Smrg/*-----------------------------------------------*/
643f29dbc25Smrg
644f29dbc25Smrg#define DF_DISPLAY_CRT                    0x0001
645f29dbc25Smrg#define DF_DISPLAY_FP                     0x0002
646f29dbc25Smrg#define DF_DISPLAY_CRT_FP                 0x0003
647f29dbc25Smrg#define DF_DISPLAY_VOP                    0x0004
648f29dbc25Smrg#define DF_DISPLAY_DRGB                   0x0005
649f29dbc25Smrg#define DF_DISPLAY_CRT_DRGB               0x0006
650f29dbc25Smrg
651f29dbc25Smrg/*-----------------------------------------------*/
652f29dbc25Smrg/*       WINDOWED CRC DATA SOURCES               */
653f29dbc25Smrg/*-----------------------------------------------*/
654f29dbc25Smrg
655f29dbc25Smrg#define DF_CRC_SOURCE_GFX_DATA            0x0000
656f29dbc25Smrg#define DF_CRC_SOURCE_CRT_RGB             0x0001
657f29dbc25Smrg#define DF_CRC_SOURCE_FP_DATA             0x0002
658f29dbc25Smrg
659f29dbc25Smrg/*-----------------------------------------------*/
660f29dbc25Smrg/*          VIDEO ENABLE FLAGS                   */
661f29dbc25Smrg/*-----------------------------------------------*/
662f29dbc25Smrg
663f29dbc25Smrg#define DF_ENABLEFLAG_NOCOLORKEY          0x0001
664f29dbc25Smrg
665f29dbc25Smrg/*-----------------------------------------------*/
666f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING A VIDEO SOURCE */
667f29dbc25Smrg/*-----------------------------------------------*/
668f29dbc25Smrg
669f29dbc25Smrg#define DF_SOURCEFLAG_HDTVSOURCE          0x0001
670f29dbc25Smrg#define DF_SOURCEFLAG_IMPLICITSCALING     0x0002
671f29dbc25Smrg
67204007ebaSmrgtypedef struct tagVideoSourceInfo {
673f29dbc25Smrg    unsigned long video_format;
674f29dbc25Smrg    unsigned long y_offset;
675f29dbc25Smrg    unsigned long u_offset;
676f29dbc25Smrg    unsigned long v_offset;
677f29dbc25Smrg    unsigned long y_pitch;
678f29dbc25Smrg    unsigned long uv_pitch;
679f29dbc25Smrg    unsigned long width;
680f29dbc25Smrg    unsigned long height;
681f29dbc25Smrg    unsigned long flags;
682f29dbc25Smrg
683f29dbc25Smrg} DF_VIDEO_SOURCE_PARAMS;
684f29dbc25Smrg
685f29dbc25Smrg/*---------------------------------------------------*/
686f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING THE VIDEO POSITION */
687f29dbc25Smrg/*---------------------------------------------------*/
688f29dbc25Smrg
689f29dbc25Smrg#define DF_POSFLAG_DIRECTCLIP             0x0001
690f29dbc25Smrg#define DF_POSFLAG_INCLUDEBORDER          0x0002
691f29dbc25Smrg
69204007ebaSmrgtypedef struct tagVideoPosition {
693f29dbc25Smrg    long x;
694f29dbc25Smrg    long y;
695f29dbc25Smrg    unsigned long width;
696f29dbc25Smrg    unsigned long height;
697f29dbc25Smrg    unsigned long left_clip;
698f29dbc25Smrg    unsigned long dst_clip;
699f29dbc25Smrg    unsigned long flags;
700f29dbc25Smrg
701f29dbc25Smrg} DF_VIDEO_POSITION;
702f29dbc25Smrg
703f29dbc25Smrg/*-------------------------------------------------*/
704f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING THE VIDEO CURSOR */
705f29dbc25Smrg/*-------------------------------------------------*/
706f29dbc25Smrg
70704007ebaSmrgtypedef struct tagVideoCursorInfo {
708f29dbc25Smrg    unsigned long key;
709f29dbc25Smrg    unsigned long mask;
710f29dbc25Smrg    unsigned long color1;
711f29dbc25Smrg    unsigned long color2;
712f29dbc25Smrg    unsigned long select_color2;
713f29dbc25Smrg    unsigned long flags;
714f29dbc25Smrg
715f29dbc25Smrg} DF_VIDEO_CURSOR_PARAMS;
716f29dbc25Smrg
717f29dbc25Smrg/*-------------------------------------------------*/
718f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING AN ALPHA REGION  */
719f29dbc25Smrg/*-------------------------------------------------*/
720f29dbc25Smrg
721f29dbc25Smrg#define DF_ALPHAFLAG_COLORENABLED         0x0001
722f29dbc25Smrg#define DF_ALPHAFLAG_PERPIXELENABLED      0x0002
723f29dbc25Smrg
72404007ebaSmrgtypedef struct tagAlphaRegionInfo {
725f29dbc25Smrg    unsigned long x;
726f29dbc25Smrg    unsigned long y;
727f29dbc25Smrg    unsigned long width;
728f29dbc25Smrg    unsigned long height;
729f29dbc25Smrg    unsigned long alpha_value;
730f29dbc25Smrg    unsigned long priority;
731f29dbc25Smrg    unsigned long color;
732f29dbc25Smrg    unsigned long flags;
733f29dbc25Smrg    long delta;
734f29dbc25Smrg
735f29dbc25Smrg} DF_ALPHA_REGION_PARAMS;
736f29dbc25Smrg
737f29dbc25Smrg/*-------------------------------------------------*/
738f29dbc25Smrg/* USER STRUCTURE FOR SAVING/RESTORING DF DATA     */
739f29dbc25Smrg/*-------------------------------------------------*/
740f29dbc25Smrg
74104007ebaSmrgtypedef struct tagDFSaveRestore {
742f29dbc25Smrg    unsigned long vcfg;
743f29dbc25Smrg    unsigned long dcfg;
744f29dbc25Smrg    unsigned long video_x;
745f29dbc25Smrg    unsigned long video_y;
746f29dbc25Smrg    unsigned long video_scaler;
747f29dbc25Smrg    unsigned long video_color_key;
748f29dbc25Smrg    unsigned long video_color_mask;
749f29dbc25Smrg    unsigned long sat_limit;
750f29dbc25Smrg    unsigned long vid_misc;
751f29dbc25Smrg    unsigned long video_yscale;
752f29dbc25Smrg    unsigned long video_xscale;
753f29dbc25Smrg    unsigned long vid_alpha_control;
754f29dbc25Smrg    unsigned long cursor_key;
755f29dbc25Smrg    unsigned long cursor_mask;
756f29dbc25Smrg    unsigned long cursor_color1;
757f29dbc25Smrg    unsigned long cursor_color2;
758f29dbc25Smrg    unsigned long alpha_xpos1;
759f29dbc25Smrg    unsigned long alpha_ypos1;
760f29dbc25Smrg    unsigned long alpha_color1;
761f29dbc25Smrg    unsigned long alpha_control1;
762f29dbc25Smrg    unsigned long alpha_xpos2;
763f29dbc25Smrg    unsigned long alpha_ypos2;
764f29dbc25Smrg    unsigned long alpha_color2;
765f29dbc25Smrg    unsigned long alpha_control2;
766f29dbc25Smrg    unsigned long alpha_xpos3;
767f29dbc25Smrg    unsigned long alpha_ypos3;
768f29dbc25Smrg    unsigned long alpha_color3;
769f29dbc25Smrg    unsigned long alpha_control3;
770f29dbc25Smrg    unsigned long vid_request;
771f29dbc25Smrg    unsigned long vid_ypos_even;
772f29dbc25Smrg    unsigned long alpha_ypos_even1;
773f29dbc25Smrg    unsigned long alpha_ypos_even2;
774f29dbc25Smrg    unsigned long alpha_ypos_even3;
775f29dbc25Smrg    unsigned long panel_tim1;
776f29dbc25Smrg    unsigned long panel_tim2;
777f29dbc25Smrg    unsigned long panel_pm;
778f29dbc25Smrg    unsigned long panel_dither;
779f29dbc25Smrg
780f29dbc25Smrg    unsigned long palette[256];
781f29dbc25Smrg    unsigned long coefficients[512];
782f29dbc25Smrg
783f29dbc25Smrg    /* DF MSRS */
784f29dbc25Smrg
785f29dbc25Smrg    Q_WORD msr_cap;
786f29dbc25Smrg    Q_WORD msr_config;
787f29dbc25Smrg    Q_WORD msr_smi;
788f29dbc25Smrg    Q_WORD msr_error;
789f29dbc25Smrg    Q_WORD msr_pm;
790f29dbc25Smrg    Q_WORD msr_diag;
791f29dbc25Smrg    Q_WORD msr_df_diag;
792f29dbc25Smrg    Q_WORD msr_pad_sel;
793f29dbc25Smrg
794f29dbc25Smrg} DF_SAVE_RESTORE;
795f29dbc25Smrg
796f29dbc25Smrg/*-----------------------------------------------*/
797f29dbc25Smrg/*            DF CRC SOURCES                     */
798f29dbc25Smrg/*-----------------------------------------------*/
799f29dbc25Smrg
800f29dbc25Smrg#define DF_CRC_SOURCE_ODD_FIELD           0x00000100
801f29dbc25Smrg#define DF_CRC_SOURCE_EVEN_FIELD          0x00001000
802f29dbc25Smrg#define DF_CRC_SOURCE_EVEN                0x00001000
803f29dbc25Smrg
804f29dbc25Smrg/*===================================================*/
805f29dbc25Smrg/*          VIP USER PARAMETER DEFINITIONS           */
806f29dbc25Smrg/*===================================================*/
807f29dbc25Smrg
808f29dbc25Smrg#define VIP_MODEFLAG_VSYNCACTIVEHIGH      0x00000001
809f29dbc25Smrg#define VIP_MODEFLAG_HSYNCACTIVEHIGH      0x00000002
810f29dbc25Smrg
811f29dbc25Smrg/*---------------------------------------------*/
812f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING 601 SETTINGS */
813f29dbc25Smrg/*---------------------------------------------*/
814f29dbc25Smrg
81504007ebaSmrgtypedef struct _TAG_VIP601PARAMS {
816f29dbc25Smrg    unsigned long flags;
817f29dbc25Smrg    unsigned long horz_start;
818f29dbc25Smrg    unsigned long width;
819f29dbc25Smrg    unsigned long vert_start_even;
820f29dbc25Smrg    unsigned long even_height;
821f29dbc25Smrg    unsigned long vert_start_odd;
822f29dbc25Smrg    unsigned long odd_height;
823f29dbc25Smrg    unsigned long vbi_start;
824f29dbc25Smrg    unsigned long vbi_height;
825f29dbc25Smrg    unsigned long odd_detect_start;
826f29dbc25Smrg    unsigned long odd_detect_end;
827f29dbc25Smrg
828f29dbc25Smrg} VIP_601PARAMS;
829f29dbc25Smrg
830f29dbc25Smrg/*-------------------------------------------*/
831f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING A VIP MODE */
832f29dbc25Smrg/*-------------------------------------------*/
833f29dbc25Smrg
834f29dbc25Smrg/* VIP MODE FLAGS */
835f29dbc25Smrg
836f29dbc25Smrg#define VIP_MODEFLAG_PLANARCAPTURE        0x00000001
837f29dbc25Smrg#define VIP_MODEFLAG_INVERTPOLARITY       0x00000002
838f29dbc25Smrg#define VIP_MODEFLAG_PROGRESSIVE          0x00000004
839f29dbc25Smrg#define VIP_MODEFLAG_DISABLEZERODETECT    0x00000008
840f29dbc25Smrg#define VIP_MODEFLAG_ENABLEREPEATFLAG     0x00000010
841f29dbc25Smrg#define VIP_MODEFLAG_10BITANCILLARY       0x00000020
842f29dbc25Smrg#define VIP_MODEFLAG_TOGGLEEACHFIELD      0x00000040
843f29dbc25Smrg#define VIP_MODEFLAG_INVERTTASKPOLARITY   0x00000080
844f29dbc25Smrg#define VIP_MODEFLAG_FLIPMESSAGEWHENFULL  0x00000100
845f29dbc25Smrg
846f29dbc25Smrg/* VIP CAPTURE ENABLE FLAGS */
847f29dbc25Smrg
848f29dbc25Smrg#define VIP_ENABLE_TASKA                  0x00000100
849f29dbc25Smrg#define VIP_ENABLE_TASKA_VBI              0x00000200
850f29dbc25Smrg#define VIP_ENABLE_TASKB                  0x00000400
851f29dbc25Smrg#define VIP_ENABLE_TASKB_VBI              0x00000800
852f29dbc25Smrg#define VIP_ENABLE_ANCILLARY              0x00001000
853f29dbc25Smrg#define VIP_ENABLE_ALL                    0x00001F00
854f29dbc25Smrg
855f29dbc25Smrg/* VIP CAPTURE MODE FLAGS */
856f29dbc25Smrg
857f29dbc25Smrg#define VIP_MODE_IDLE                     0x00000000
858f29dbc25Smrg#define VIP_MODE_VIP2_8BIT                0x00000002
859f29dbc25Smrg#define VIP_MODE_VIP2_16BIT               0x00000004
860f29dbc25Smrg#define VIP_MODE_VIP1_8BIT                0x00000006
861f29dbc25Smrg#define VIP_MODE_MSG                      0x00000008
862f29dbc25Smrg#define VIP_MODE_DATA                     0x0000000A
863f29dbc25Smrg#define VIP_MODE_8BIT601                  0x0000000C
864f29dbc25Smrg#define VIP_MODE_16BIT601                 0x0000000E
865f29dbc25Smrg
866f29dbc25Smrg/* 4:2:0 PLANAR CAPTURE METHODS */
867f29dbc25Smrg
868f29dbc25Smrg#define VIP_420CAPTURE_EVERYLINE          0x00000001
869f29dbc25Smrg#define VIP_420CAPTURE_ALTERNATINGLINES   0x00000002
870f29dbc25Smrg#define VIP_420CAPTURE_ALTERNATINGFIELDS  0x00000003
871f29dbc25Smrg
87204007ebaSmrgtypedef struct _TAG_SETMODEBUFFER {
873f29dbc25Smrg    unsigned long flags;
874f29dbc25Smrg    unsigned long stream_enables;
875f29dbc25Smrg    unsigned long operating_mode;
876f29dbc25Smrg    unsigned long planar_capture;
877f29dbc25Smrg    VIP_601PARAMS vip601_settings;
878f29dbc25Smrg
879f29dbc25Smrg} VIPSETMODEBUFFER;
880f29dbc25Smrg
881f29dbc25Smrg/*-----------------------------------------------*/
882f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VG/VIP GENLOCK */
883f29dbc25Smrg/*-----------------------------------------------*/
884f29dbc25Smrg
885f29dbc25Smrg/* LOSS OF VIDEO DETECTION FLAGS */
886f29dbc25Smrg
887f29dbc25Smrg#define VIP_VDE_RUNAWAY_LINE              0x00800000
888f29dbc25Smrg#define VIP_VDE_VERTICAL_TIMING           0x00400000
889f29dbc25Smrg#define VIP_VDE_CLOCKS_PER_LINE           0x00200000
890f29dbc25Smrg#define VIP_VDE_LOST_CLOCK                0x00100000
891f29dbc25Smrg
892f29dbc25Smrg/* VIP VSYNC SELECT FOR THE VG */
893f29dbc25Smrg
894f29dbc25Smrg#define VIP_VGSYNC_NONE                  0x00000000
895f29dbc25Smrg#define VIP_VGSYNC_START_FRAME           0x00000001
896f29dbc25Smrg#define VIP_VGSYNC_FALLING_EDGE_VBLANK   0x00000002
897f29dbc25Smrg#define VIP_VGSYNC_RISING_EDGE_VBLANK    0x00000003
898f29dbc25Smrg#define VIP_VGSYNC_FALLING_EDGE_FIELD    0x00000004
899f29dbc25Smrg#define VIP_VGSYNC_RISING_EDGE_FIELD     0x00000005
900f29dbc25Smrg#define VIP_VGSYNC_VIP_CURRENT_LINE      0x00000006
901f29dbc25Smrg#define VIP_VGSYNC_MSG_INT               0x00000007
902f29dbc25Smrg
903f29dbc25Smrg/* VIP FIELD SELECT FOR THE VG */
904f29dbc25Smrg
905f29dbc25Smrg#define VIP_VGFIELD_INPUT                0x00000000
906f29dbc25Smrg#define VIP_VGFIELD_INPUT_INV            0x00000008
907f29dbc25Smrg#define VIP_VGFIELD_ACTIVE_PAGE          0x00000010
908f29dbc25Smrg#define VIP_VGFIELD_ACTIVE_PAGE_IN       0x00000018
909f29dbc25Smrg
910f29dbc25Smrg/*--------------------------------------------------------*/
911f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING THE VG VSYNC GENLOCK    */
912f29dbc25Smrg/*--------------------------------------------------------*/
913f29dbc25Smrg
91404007ebaSmrgtypedef struct _TAG_GENLOCKBUFFER {
915f29dbc25Smrg    unsigned long vip_signal_loss;
916f29dbc25Smrg    unsigned long vsync_to_vg;
917f29dbc25Smrg    unsigned long field_to_vg;
918f29dbc25Smrg    unsigned long genlock_skew;
919f29dbc25Smrg    int enable_timeout;
920f29dbc25Smrg
921f29dbc25Smrg} VIPGENLOCKBUFFER;
922f29dbc25Smrg
923f29dbc25Smrg/*------------------------------------------------------*/
924f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP ANCILLARY CAPTURE */
925f29dbc25Smrg/*------------------------------------------------------*/
926f29dbc25Smrg
92704007ebaSmrgtypedef struct _TAG_ANCILLARYBUFFER {
928f29dbc25Smrg    unsigned long msg1_base;
929f29dbc25Smrg    unsigned long msg2_base;
930f29dbc25Smrg    unsigned long msg_size;
931f29dbc25Smrg
932f29dbc25Smrg} VIPANCILLARYBUFFER;
933f29dbc25Smrg
934f29dbc25Smrg/*----------------------------------------------------*/
935f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP CAPTURE BUFFERS */
936f29dbc25Smrg/*----------------------------------------------------*/
937f29dbc25Smrg
938f29dbc25Smrg#define VIP_INPUTFLAG_VBI                 0x00000001
939f29dbc25Smrg#define VIP_INPUTFLAG_INVERTPOLARITY      0x00000002
940f29dbc25Smrg#define VIP_INPUTFLAG_PLANAR              0x00000004
941f29dbc25Smrg
942f29dbc25Smrg#define VIP_MAX_BUFFERS                   10
943f29dbc25Smrg
944f29dbc25Smrg#define VIP_BUFFER_TASK_A                 0x0000
945f29dbc25Smrg#define VIP_BUFFER_TASK_B                 0x0001
946f29dbc25Smrg#define VIP_BUFFER_MAX_TASKS              0x0002
947f29dbc25Smrg
948f29dbc25Smrg#define	VIP_BUFFER_A                      0x0000
949f29dbc25Smrg#define	VIP_BUFFER_B                      0x0001
950f29dbc25Smrg#define	VIP_BUFFER_ANC                    0x0002
951f29dbc25Smrg#define VIP_BUFFER_MSG                    0x0003
952f29dbc25Smrg#define VIP_BUFFER_601                    0x0004
953f29dbc25Smrg#define VIP_BUFFER_A_ODD                  0x0005
954f29dbc25Smrg#define VIP_BUFFER_A_EVEN                 0x0006
955f29dbc25Smrg#define VIP_BUFFER_B_ODD                  0x0007
956f29dbc25Smrg#define VIP_BUFFER_B_EVEN                 0x0008
957f29dbc25Smrg
95804007ebaSmrgtypedef struct _TAG_INPUTBUFFER_ADDR {
959f29dbc25Smrg    unsigned long even_base[VIP_MAX_BUFFERS];
960f29dbc25Smrg    unsigned long odd_base[VIP_MAX_BUFFERS];
961f29dbc25Smrg    unsigned long y_pitch;
962f29dbc25Smrg    unsigned long uv_pitch;
963f29dbc25Smrg    unsigned long odd_uoffset;
964f29dbc25Smrg    unsigned long odd_voffset;
965f29dbc25Smrg    unsigned long even_uoffset;
966f29dbc25Smrg    unsigned long even_voffset;
967f29dbc25Smrg    unsigned long vbi_even_base;
968f29dbc25Smrg    unsigned long vbi_odd_base;
969f29dbc25Smrg
970f29dbc25Smrg} VIPINPUTBUFFER_ADDR;
971f29dbc25Smrg
97204007ebaSmrgtypedef struct _TAG_SETINPUTBUFFER {
973f29dbc25Smrg    unsigned long flags;
974f29dbc25Smrg    VIPINPUTBUFFER_ADDR offsets[VIP_BUFFER_MAX_TASKS];
975f29dbc25Smrg    unsigned long current_buffer;
976f29dbc25Smrg
977f29dbc25Smrg    VIPANCILLARYBUFFER ancillaryData;
978f29dbc25Smrg
979f29dbc25Smrg} VIPINPUTBUFFER;
980f29dbc25Smrg
981f29dbc25Smrg/*------------------------------------------------------*/
982f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP SUBWINDOW CAPTURE */
983f29dbc25Smrg/*------------------------------------------------------*/
984f29dbc25Smrg
98504007ebaSmrgtypedef struct _TAG_SUBWINDOWBUFFER {
986f29dbc25Smrg    int enable;
987f29dbc25Smrg    unsigned long start;
988f29dbc25Smrg    unsigned long stop;
989f29dbc25Smrg
990f29dbc25Smrg} VIPSUBWINDOWBUFFER;
991f29dbc25Smrg
992f29dbc25Smrg/*--------------------------------------------------------*/
993f29dbc25Smrg/* USER STRUCTURE FOR SAVING/RESTORING VIP REGISTERS      */
994f29dbc25Smrg/*--------------------------------------------------------*/
995f29dbc25Smrg
99604007ebaSmrgtypedef struct _TAG_VIPSTATEBUFFER {
997f29dbc25Smrg    unsigned long control1;
998f29dbc25Smrg    unsigned long control2;
999f29dbc25Smrg    unsigned long vip_int;
1000f29dbc25Smrg    unsigned long current_target;
1001f29dbc25Smrg    unsigned long max_address;
1002f29dbc25Smrg    unsigned long taska_evenbase;
1003f29dbc25Smrg    unsigned long taska_oddbase;
1004f29dbc25Smrg    unsigned long taska_vbi_evenbase;
1005f29dbc25Smrg    unsigned long taska_vbi_oddbase;
1006f29dbc25Smrg    unsigned long taska_data_pitch;
1007f29dbc25Smrg    unsigned long control3;
1008f29dbc25Smrg    unsigned long taska_v_oddoffset;
1009f29dbc25Smrg    unsigned long taska_u_oddoffset;
1010f29dbc25Smrg    unsigned long taskb_evenbase;
1011f29dbc25Smrg    unsigned long taskb_oddbase;
1012f29dbc25Smrg    unsigned long taskb_vbi_evenbase;
1013f29dbc25Smrg    unsigned long taskb_vbi_oddbase;
1014f29dbc25Smrg    unsigned long taskb_pitch;
1015f29dbc25Smrg    unsigned long taskb_voffset;
1016f29dbc25Smrg    unsigned long taskb_uoffset;
1017f29dbc25Smrg    unsigned long msg1_base;
1018f29dbc25Smrg    unsigned long msg2_base;
1019f29dbc25Smrg    unsigned long msg_size;
1020f29dbc25Smrg    unsigned long page_offset;
1021f29dbc25Smrg    unsigned long vert_start_stop;
1022f29dbc25Smrg    unsigned long vsync_err_count;
1023f29dbc25Smrg    unsigned long taska_u_evenoffset;
1024f29dbc25Smrg    unsigned long taska_v_evenoffset;
1025f29dbc25Smrg
1026f29dbc25Smrg    Q_WORD msr_config;
1027f29dbc25Smrg    Q_WORD msr_smi;
1028f29dbc25Smrg    Q_WORD msr_pm;
1029f29dbc25Smrg    Q_WORD msr_diag;
1030f29dbc25Smrg
1031f29dbc25Smrg} VIPSTATEBUFFER;
1032f29dbc25Smrg
1033f29dbc25Smrg/*--------------------------------------------------------*/
1034f29dbc25Smrg/* VIP_SET_CAPTURE_STATE USER PARAMETERS                  */
1035f29dbc25Smrg/*--------------------------------------------------------*/
1036f29dbc25Smrg
1037f29dbc25Smrg#define VIP_STOPCAPTURE                   0x0000
1038f29dbc25Smrg#define VIP_STOPCAPTUREATLINEEND          0x0001
1039f29dbc25Smrg#define VIP_STOPCAPTUREATFIELDEND         0x0002
1040f29dbc25Smrg#define VIP_STOPCAPTUREATFRAMEEND         0x0003
1041f29dbc25Smrg#define VIP_STARTCAPTUREATNEXTLINE        0x0004
1042f29dbc25Smrg#define VIP_STARTCAPTUREATNEXTFIELD       0x0005
1043f29dbc25Smrg#define VIP_STARTCAPTUREATNEXTFRAME       0x0006
1044f29dbc25Smrg#define VIP_STARTCAPTURE                  0x0007
1045f29dbc25Smrg
1046f29dbc25Smrg/*--------------------------------------------------------*/
1047f29dbc25Smrg/* VIP_CONFIGURE_FIFO USER PARAMETERS                     */
1048f29dbc25Smrg/*--------------------------------------------------------*/
1049f29dbc25Smrg
1050f29dbc25Smrg#define VIP_VIDEOTHRESHOLD                0x3000
1051f29dbc25Smrg#define	VIP_ANCILLARYTHRESHOLD            0x3001
1052f29dbc25Smrg#define	VIP_VIDEOFLUSH                    0x3002
1053f29dbc25Smrg#define VIP_ANCILLARYFLUSH                0x3003
1054f29dbc25Smrg
1055f29dbc25Smrg/*--------------------------------------------------------*/
1056f29dbc25Smrg/* VIP_SET_INTERRUPT_ENABLE USER DEFINITIONS              */
1057f29dbc25Smrg/*--------------------------------------------------------*/
1058f29dbc25Smrg
1059f29dbc25Smrg#define VIP_INT_FIFO_ERROR                0x80000000
1060f29dbc25Smrg#define VIP_INT_FIFO_WRAP                 0x40000000
1061f29dbc25Smrg#define VIP_INT_FIFO_OVERFLOW             0x20000000
1062f29dbc25Smrg#define VIP_INT_FIFO_THRESHOLD            0x10000000
1063f29dbc25Smrg#define VIP_INT_LONGLINE                  0x08000000
1064f29dbc25Smrg#define VIP_INT_VERTICAL_TIMING           0x04000000
1065f29dbc25Smrg#define VIP_INT_ACTIVE_PIXELS             0x02000000
1066f29dbc25Smrg#define VIP_INT_CLOCK_INPUT	              0x01000000
1067f29dbc25Smrg#define VIP_INT_ANC_CHECKSUM_PARITY       0x00800000
1068f29dbc25Smrg#define VIP_INT_MSG_BUFFER_FULL           0x00400000
1069f29dbc25Smrg#define VIP_INT_END_VBLANK                0x00200000
1070f29dbc25Smrg#define VIP_INT_START_VBLANK              0x00100000
1071f29dbc25Smrg#define VIP_INT_START_EVEN                0x00080000
1072f29dbc25Smrg#define VIP_INT_START_ODD                 0x00040000
1073f29dbc25Smrg#define VIP_INT_LINE_MATCH_TARGET         0x00020000
1074f29dbc25Smrg#define VIP_ALL_INTERRUPTS                0xFFFE0000
1075f29dbc25Smrg
1076f29dbc25Smrg/*--------------------------------------------------------*/
1077f29dbc25Smrg/* VIP_GET_CURRENT_FIELD RETURN VALUES                    */
1078f29dbc25Smrg/*--------------------------------------------------------*/
1079f29dbc25Smrg
1080f29dbc25Smrg#define VIP_ODD_FIELD                     1
1081f29dbc25Smrg#define VIP_EVEN_FIELD                    0
1082f29dbc25Smrg
1083f29dbc25Smrg/*-------------------------------------------------*/
1084f29dbc25Smrg/* USER STRUCTURE FOR QUERYING VIP CAPABILITIES    */
1085f29dbc25Smrg/*-------------------------------------------------*/
1086f29dbc25Smrg
108704007ebaSmrgtypedef struct _TAG_CAPABILITIESBUFFER {
1088f29dbc25Smrg    unsigned long revision_id;
1089f29dbc25Smrg    unsigned long device_id;
1090f29dbc25Smrg    unsigned long n_clock_domains;
1091f29dbc25Smrg    unsigned long n_smi_registers;
1092f29dbc25Smrg
1093f29dbc25Smrg} VIPCAPABILITIESBUFFER;
1094f29dbc25Smrg
1095f29dbc25Smrg/*-------------------------------------------------*/
1096f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP POWER        */
1097f29dbc25Smrg/*-------------------------------------------------*/
1098f29dbc25Smrg
109904007ebaSmrgtypedef struct _TAG_POWERBUFFER {
1100f29dbc25Smrg    int glink_clock_mode;
1101f29dbc25Smrg    int vip_clock_mode;
1102f29dbc25Smrg
1103f29dbc25Smrg} VIPPOWERBUFFER;
1104f29dbc25Smrg
1105f29dbc25Smrg/*-------------------------------------------------*/
1106f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP PRIORITIES   */
1107f29dbc25Smrg/*-------------------------------------------------*/
1108f29dbc25Smrg
110904007ebaSmrgtypedef struct _TAG_PRIORITYBUFFER {
1110f29dbc25Smrg    unsigned long secondary;
1111f29dbc25Smrg    unsigned long primary;
1112f29dbc25Smrg    unsigned long pid;
1113f29dbc25Smrg
1114f29dbc25Smrg} VIPPRIORITYBUFFER;
1115f29dbc25Smrg
1116f29dbc25Smrg/*--------------------------------------------------*/
1117f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VIP DEBUG OUTPUTS */
1118f29dbc25Smrg/*--------------------------------------------------*/
1119f29dbc25Smrg
1120f29dbc25Smrg#define VIP_DIAG_UPPER_GLINK_MASTER       0x00010000
1121f29dbc25Smrg#define VIP_DIAG_UPPER_GLINK_SLAVE        0x00020000
1122f29dbc25Smrg#define VIP_DIAG_UPPER_GLINK_SLAVE_MMREG  0x00040000
1123f29dbc25Smrg#define VIP_DIAG_UPPER_Y_BUFFER           0x00080000
1124f29dbc25Smrg#define VIP_DIAG_UPPER_A_BUFFER           0x00100000
1125f29dbc25Smrg#define VIP_DIAG_UPPER_FIFO_OUTPUT        0x00200000
1126f29dbc25Smrg#define VIP_DIAG_UPPER_FIFO_INPUT         0x01000000
1127f29dbc25Smrg#define VIP_DIAG_UPPER_FORMATTER          0x02000000
1128f29dbc25Smrg#define VIP_DIAG_UPPER_INPUT_CONTROL      0x04000000
1129f29dbc25Smrg
1130f29dbc25Smrg#define VIP_DIAG_LOWER_GLINK_MASTER       0x00000001
1131f29dbc25Smrg#define VIP_DIAG_LOWER_GLINK_SLAVE        0x00000002
1132f29dbc25Smrg#define VIP_DIAG_LOWER_GLINK_SLAVE_MMREG  0x00000004
1133f29dbc25Smrg#define VIP_DIAG_LOWER_Y_BUFFER           0x00000008
1134f29dbc25Smrg#define VIP_DIAG_LOWER_A_BUFFER           0x00000010
1135f29dbc25Smrg#define VIP_DIAG_LOWER_FIFO_OUTPUT        0x00000020
1136f29dbc25Smrg#define VIP_DIAG_LOWER_FIFO_INPUT         0x00000100
1137f29dbc25Smrg#define VIP_DIAG_LOWER_FORMATTER          0x00000200
1138f29dbc25Smrg#define VIP_DIAG_LOWER_INPUT_CONTROL      0x00000400
1139f29dbc25Smrg
114004007ebaSmrgtypedef struct _TAG_DEBUGBUFFER {
1141f29dbc25Smrg    unsigned long bist;
1142f29dbc25Smrg    unsigned long enable_upper;
1143f29dbc25Smrg    unsigned long select_upper;
1144f29dbc25Smrg    unsigned long enable_lower;
1145f29dbc25Smrg    unsigned long select_lower;
1146f29dbc25Smrg
1147f29dbc25Smrg} VIPDEBUGBUFFER;
1148f29dbc25Smrg
1149f29dbc25Smrg/*===================================================*/
1150f29dbc25Smrg/*          VOP USER PARAMETER DEFINITIONS           */
1151f29dbc25Smrg/*===================================================*/
1152f29dbc25Smrg
1153f29dbc25Smrg/*------------------------------------------------------*/
1154f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VBI CAPTURE           */
1155f29dbc25Smrg/*------------------------------------------------------*/
1156f29dbc25Smrg
115704007ebaSmrgtypedef struct _TAG_VBIWINDOWBUFFER {
1158f29dbc25Smrg    long horz_start;
1159f29dbc25Smrg    unsigned long vbi_width;
1160f29dbc25Smrg    unsigned long odd_line_capture_mask;
1161f29dbc25Smrg    unsigned long even_line_capture_mask;
1162f29dbc25Smrg    unsigned long odd_line_offset;
1163f29dbc25Smrg    unsigned long even_line_offset;
1164f29dbc25Smrg    unsigned long even_address_offset;
1165f29dbc25Smrg    unsigned long odd_address_offset;
1166f29dbc25Smrg    unsigned long data_size;
1167f29dbc25Smrg    unsigned long data_pitch;
1168f29dbc25Smrg    int enable_upscale;
1169f29dbc25Smrg    int horz_from_hsync;
1170f29dbc25Smrg
1171f29dbc25Smrg} VOPVBIWINDOWBUFFER;
1172f29dbc25Smrg
1173f29dbc25Smrg/*------------------------------------------------------*/
1174f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING 601 FOR VOP           */
1175f29dbc25Smrg/*------------------------------------------------------*/
1176f29dbc25Smrg
1177f29dbc25Smrg#define VOP_601_INVERT_DISPE              0x00080000
1178f29dbc25Smrg#define VOP_601_INVERT_VSYNC              0x00040000
1179f29dbc25Smrg#define VOP_601_INVERT_HSYNC              0x00020000
1180f29dbc25Smrg
1181f29dbc25Smrg#define VOP_VSYNC_EARLIER_BY4             0x00000000
1182f29dbc25Smrg#define VOP_VSYNC_EARLIER_BY2             0x00004000
1183f29dbc25Smrg#define VOP_VSYNC_NOSHIFT                 0x00008000
1184f29dbc25Smrg#define VOP_VSYNC_LATER_BY_X              0x0000C000
1185f29dbc25Smrg
1186f29dbc25Smrg#define VOP_601_YUV_8BIT                  0x00000000
1187f29dbc25Smrg#define VOP_601_YUV_16BIT                 0x00000001
1188f29dbc25Smrg#define VOP_601_RGB_8_8_8                 0x00000002
1189f29dbc25Smrg#define VOP_601_YUV_4_4_4                 0x00000003
1190f29dbc25Smrg
119104007ebaSmrgtypedef struct _TAG_VOP601 {
1192f29dbc25Smrg    unsigned long flags;
1193f29dbc25Smrg    unsigned long vsync_shift;
1194f29dbc25Smrg    unsigned long vsync_shift_count;
1195f29dbc25Smrg    unsigned long output_mode;
1196f29dbc25Smrg
1197f29dbc25Smrg} VOP_601DATA;
1198f29dbc25Smrg
1199f29dbc25Smrg/*------------------------------------------------------*/
1200f29dbc25Smrg/* USER STRUCTURE FOR CONFIGURING VOP OUTPUT            */
1201f29dbc25Smrg/*------------------------------------------------------*/
1202f29dbc25Smrg
1203f29dbc25Smrg/* VOP FLAGS */
1204f29dbc25Smrg
1205f29dbc25Smrg#define VOP_FLAG_SINGLECHIPCOMPAT         0x00000001
1206f29dbc25Smrg#define VOP_FLAG_EXTENDEDSAV              0x00000002
1207f29dbc25Smrg#define VOP_FLAG_VBI                      0x00000008
1208f29dbc25Smrg#define VOP_FLAG_TASK                     0x00000010
1209f29dbc25Smrg#define VOP_FLAG_SWAP_UV                  0x00000020
1210f29dbc25Smrg#define VOP_FLAG_SWAP_VBI                 0x00000040
1211f29dbc25Smrg
1212f29dbc25Smrg/* 4:4:2 TO 4:2:2 DECIMATION */
1213f29dbc25Smrg
1214f29dbc25Smrg#define VOP_422MODE_COSITED               0x00000000
1215f29dbc25Smrg#define VOP_422MODE_INTERSPERSED          0x00000010
1216f29dbc25Smrg#define VOP_422MODE_ALTERNATING           0x00000020
1217f29dbc25Smrg
1218f29dbc25Smrg/* VOP OPERATING MODES */
1219f29dbc25Smrg
1220f29dbc25Smrg#define VOP_MODE_DISABLED                 0x00000000
1221f29dbc25Smrg#define VOP_MODE_VIP11                    0x00000001
1222f29dbc25Smrg#define VOP_MODE_CCIR656                  0x00000002
1223f29dbc25Smrg#define VOP_MODE_VIP20_8BIT               0x00000003
1224f29dbc25Smrg#define VOP_MODE_VIP20_16BIT              0x00000004
1225f29dbc25Smrg#define VOP_MODE_601                      0x00000005
1226f29dbc25Smrg
1227f29dbc25Smrg/* VSYNC OUT SELECT FLAGS */
1228f29dbc25Smrg
1229f29dbc25Smrg#define VOP_MB_SYNCSEL_DISABLED           0x00000000
1230f29dbc25Smrg#define VOP_MB_SYNCSEL_VG                 0x00000020
1231f29dbc25Smrg#define VOP_MB_SYNCSEL_VG_INV             0x00000040
1232f29dbc25Smrg#define VOP_MB_SYNCSEL_STATREG17          0x00000060
1233f29dbc25Smrg#define VOP_MB_SYNCSEL_STATREG17_INV      0x00000080
1234f29dbc25Smrg
123504007ebaSmrgtypedef struct _TAG_VOPMODECONFIGURATIONBUFFER {
1236f29dbc25Smrg    unsigned long flags;
1237f29dbc25Smrg    unsigned long mode;
1238f29dbc25Smrg    unsigned long conversion_mode;
1239f29dbc25Smrg    unsigned long vsync_out;
1240f29dbc25Smrg    VOP_601DATA vop601;
1241f29dbc25Smrg
1242f29dbc25Smrg} VOPCONFIGURATIONBUFFER;
1243f29dbc25Smrg
1244f29dbc25Smrg/*--------------------------------------------------------*/
1245f29dbc25Smrg/* USER STRUCTURE FOR SAVING/RESTORING VOP REGISTERS      */
1246f29dbc25Smrg/*--------------------------------------------------------*/
1247f29dbc25Smrg
124804007ebaSmrgtypedef struct _TAG_VOPSTATEBUFFER {
1249f29dbc25Smrg    unsigned long config;
1250f29dbc25Smrg} VOPSTATEBUFFER;
1251f29dbc25Smrg
1252f29dbc25Smrg#endif
1253