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