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