Home | History | Annotate | Line # | Download | only in cim
      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 
    104 typedef 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 
    115 typedef struct tagQ_WORD {
    116     unsigned long high;
    117     unsigned long low;
    118 
    119 } Q_WORD;
    120 
    121 /*===================================================*/
    122 /*       INITIALIZATION USER PARAMETERS              */
    123 /*===================================================*/
    124 
    125 typedef 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 
    212 typedef 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 
    325 typedef 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 
    400 typedef 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 
    422 typedef 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 
    447 typedef 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 
    459 typedef 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 
    470 typedef 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 
    481 typedef 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 
    672 typedef 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 
    692 typedef 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 
    707 typedef 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 
    724 typedef 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 
    741 typedef 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 
    815 typedef 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 
    872 typedef 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 
    914 typedef 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 
    927 typedef 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 
    958 typedef 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 
    972 typedef 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 
    985 typedef 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 
    996 typedef 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 
   1087 typedef 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 
   1099 typedef 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 
   1109 typedef 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 
   1140 typedef 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 
   1157 typedef 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 
   1191 typedef 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 
   1235 typedef 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 
   1248 typedef struct _TAG_VOPSTATEBUFFER {
   1249     unsigned long config;
   1250 } VOPSTATEBUFFER;
   1251 
   1252 #endif
   1253