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