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