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