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