/* * Copyright (c) 2006 Advanced Micro Devices, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * Neither the name of the Advanced Micro Devices, Inc. nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. */ /* * Cimarron user definitions. */ #ifndef _cim_parm_h #define _cim_parm_h /*===================================================*/ /* CIMARRON RETURN VALUE DEFINITIONS */ /*===================================================*/ #define CIM_STATUS_OK 0x00000000 #define CIM_STATUS_ERROR 0x00000001 #define CIM_STATUS_INVALIDPARAMS 0x00000002 #define CIM_STATUS_DEVNOTFOUND 0x00000004 #define CIM_STATUS_INVALIDSCALE 0x00000008 #define CIM_STATUS_INEXACTMATCH 0x00000010 #define CIM_STATUS_NOLOCK 0x00000020 #define CIM_STATUS_CPUNOTFOUND 0x00000040 #define CIM_STATUS_DISPLAYUNAVAILABLE 0x00000080 #define CIM_STATUS_NOTFOUND 0x00000100 /*===================================================*/ /* CIMARRON CPU DEFINITIONS */ /*===================================================*/ #define CIM_CPU_GEODEGX 0x00000001 #define CIM_CPU_GEODELX 0x00000002 #define CIM_SB_5535 0x00000001 #define CIM_SB_5536 0x00000002 /*===================================================*/ /* MSR PARAMETERS */ /*===================================================*/ /*-------------------------------------------------------------*/ /* GEODELINK DEVICE IDS */ /* These values uniquely identify all known GeodeLink devices */ /* in GeodeLX and its companion, 5535/6. For multiple devices */ /* of the same class (GLIU, USB, etc.) the table order is used */ /* to to identify the expected device order, in terms of on */ /* which GLIU the device is found, and on which port. */ /*-------------------------------------------------------------*/ #define MSR_DEVICE_GEODELX_GLIU0 0x00 #define MSR_DEVICE_GEODELX_GLIU1 0x01 #define MSR_DEVICE_5535_GLIU 0x02 #define MSR_DEVICE_GEODELX_GLCP 0x03 #define MSR_DEVICE_5535_GLCP 0x04 #define MSR_DEVICE_GEODELX_MPCI 0x05 #define MSR_DEVICE_5535_MPCI 0x06 #define MSR_DEVICE_GEODELX_MC 0x07 #define MSR_DEVICE_GEODELX_GP 0x08 #define MSR_DEVICE_GEODELX_VG 0x09 #define MSR_DEVICE_GEODELX_VIP 0x0A #define MSR_DEVICE_GEODELX_AES 0x0B #define MSR_DEVICE_GEODELX_DF 0x0C #define MSR_DEVICE_GEODELX_FG 0x0D #define MSR_DEVICE_GEODELX_VAIL 0x0E #define MSR_DEVICE_5536_USB_2_0 0x0F #define MSR_DEVICE_5535_USB2 0x10 #define MSR_DEVICE_5535_USB1 0x11 #define MSR_DEVICE_5535_ATAC 0x12 #define MSR_DEVICE_5535_MDD 0x13 #define MSR_DEVICE_5535_ACC 0x14 #define MSR_DEVICE_EMPTY 0x15 #define MSR_DEVICE_REFLECTIVE 0x16 #define MSR_DEVICE_PRESENT 0x17 #define MSR_DEVICE_NOTFOUND 0x18 /*---------------------------------------------*/ /* GEODELINK TABLE ENTRY */ /* The following structure represents one port */ /* on a GeodeLink Interface Unit (GLIU) */ /*---------------------------------------------*/ typedef struct tagGeodeLinkNode { unsigned long address_from_cpu; unsigned long device_id; } GEODELINK_NODE; /*---------------------------------------------*/ /* QWORD DATA STRUCTURE */ /* 64-bit data structure for MSR access. */ /*---------------------------------------------*/ typedef struct tagQ_WORD { unsigned long high; unsigned long low; } Q_WORD; /*===================================================*/ /* INITIALIZATION USER PARAMETERS */ /*===================================================*/ typedef struct tagInitBaseAddresses { unsigned long framebuffer_base; unsigned long gp_register_base; unsigned long vg_register_base; unsigned long df_register_base; unsigned long vip_register_base; unsigned long framebuffer_size; } INIT_BASE_ADDRESSES; /*===================================================*/ /* GP USER PARAMETER DEFINITIONS */ /*===================================================*/ /*---------------------------*/ /* GP_DECLARE_BLT PARAMETERS */ /*---------------------------*/ #define CIMGP_BLTFLAGS_PRES_LUT 0x0001 #define CIMGP_BLTFLAGS_PRES_COLOR_PAT 0x0002 #define CIMGP_ENABLE_PREFETCH 0x0004 #define CIMGP_BLTFLAGS_HAZARD 0x0008 #define CIMGP_BLTFLAGS_INVERTMONO 0x0010 #define CIMGP_BLTFLAGS_LIMITBUFFER 0x0020 /*-----------------------------------*/ /* GP_SET_ALPHA_OPERATION PARAMETERS */ /*-----------------------------------*/ #define CIMGP_APPLY_BLEND_TO_RGB 1 #define CIMGP_APPLY_BLEND_TO_ALPHA 2 #define CIMGP_APPLY_BLEND_TO_ALL 3 #define CIMGP_ALPHA_TIMES_A 0 #define CIMGP_BETA_TIMES_B 1 #define CIMGP_A_PLUS_BETA_B 2 #define CIMGP_ALPHA_A_PLUS_BETA_B 3 #define CIMGP_CHANNEL_A_ALPHA 0 #define CIMGP_CHANNEL_B_ALPHA 1 #define CIMGP_CONSTANT_ALPHA 2 #define CIMGP_ALPHA_EQUALS_ONE 3 #define CIMGP_ALPHA_FROM_RGB_A 4 #define CIMGP_ALPHA_FROM_RGB_B 5 #define CIMGP_CONVERTED_ALPHA 6 #define CIMGP_CHANNEL_A_SOURCE 0 #define CIMGP_CHANNEL_A_DEST 1 /*---------------------------------*/ /* GP_SET_SOURCE_FORMAT PARAMETERS */ /*---------------------------------*/ #define CIMGP_SOURCE_FMT_3_3_2 0x00 #define CIMGP_SOURCE_FMT_8BPP_INDEXED 0x01 #define CIMGP_SOURCE_FMT_4_4_4_4 0x04 #define CIMGP_SOURCE_FMT_12BPP_BGR 0x14 #define CIMGP_SOURCE_FMT_1_5_5_5 0x05 #define CIMGP_SOURCE_FMT_15BPP_BGR 0x15 #define CIMGP_SOURCE_FMT_0_5_6_5 0x06 #define CIMGP_SOURCE_FMT_16BPP_BGR 0x16 #define CIMGP_SOURCE_FMT_YUYV 0x07 #define CIMGP_SOURCE_FMT_UYVY 0x17 #define CIMGP_SOURCE_FMT_8_8_8_8 0x08 #define CIMGP_SOURCE_FMT_32BPP_BGR 0x18 #define CIMGP_SOURCE_FMT_24BPP 0x0B #define CIMGP_SOURCE_FMT_4BPP_INDEXED 0x0D /*------------------------------------*/ /* GP_SCREEN_TO_SCREEN_BLT PARAMETERS */ /*------------------------------------*/ #define CIMGP_NEGXDIR 1 #define CIMGP_NEGYDIR 2 /*------------------------------------*/ /* GP_BRESENHAM_LINE PARAMETERS */ /*------------------------------------*/ #define CIMGP_YMAJOR 1 #define CIMGP_POSMAJOR 2 #define CIMGP_POSMINOR 4 /*----------------------------------------------*/ /* USER STRUCTURE FOR SAVING/RESTORING GP STATE */ /*----------------------------------------------*/ typedef struct tagGPSaveRestore { unsigned long base_offset; unsigned long cmd_top; unsigned long cmd_bottom; unsigned long cmd_base; unsigned long cmd_read; } GP_SAVE_RESTORE; /*===================================================*/ /* VG USER PARAMETER DEFINITIONS */ /*===================================================*/ /*-------------------------------------------*/ /* SUPPORTED TV ENCODERS */ /*-------------------------------------------*/ #define VG_ENCODER_ADV7171 0x0001 #define VG_ENCODER_SAA7127 0x0002 #define VG_ENCODER_FS454 0x0003 #define VG_ENCODER_ADV7300 0x0004 /*-------------------------------------------*/ /* SUPPORTED TV RESOLUTIONS */ /*-------------------------------------------*/ #define VG_TVMODE_NTSC 0x00000000 #define VG_TVMODE_PAL 0x00000001 #define VG_TVMODE_480P 0x00000002 #define VG_TVMODE_720P 0x00000003 #define VG_TVMODE_1080I 0x00000004 #define VG_TVMODE_6X4_NTSC 0x00000005 #define VG_TVMODE_8X6_NTSC 0x00000006 #define VG_TVMODE_10X7_NTSC 0x00000007 #define VG_TVMODE_6X4_PAL 0x00000008 #define VG_TVMODE_8X6_PAL 0x00000009 #define VG_TVMODE_10X7_PAL 0x0000000A /*-------------------------------------------*/ /* USER STRUCTURE FOR SETTING A DISPLAY MODE */ /*-------------------------------------------*/ #define VG_SUPPORTFLAG_8BPP 0x00000001 #define VG_SUPPORTFLAG_12BPP 0x00000002 #define VG_SUPPORTFLAG_15BPP 0x00000004 #define VG_SUPPORTFLAG_16BPP 0x00000008 #define VG_SUPPORTFLAG_24BPP 0x00000010 #define VG_SUPPORTFLAG_32BPP 0x00000020 #define VG_SUPPORTFLAG_56HZ 0x00000040 #define VG_SUPPORTFLAG_60HZ 0x00000080 #define VG_SUPPORTFLAG_70HZ 0x00000100 #define VG_SUPPORTFLAG_72HZ 0x00000200 #define VG_SUPPORTFLAG_75HZ 0x00000400 #define VG_SUPPORTFLAG_85HZ 0x00000800 #define VG_SUPPORTFLAG_90HZ 0x00001000 #define VG_SUPPORTFLAG_100HZ 0x00002000 #define VG_SUPPORTFLAG_HZMASK 0x00003FC0 #define VG_SUPPORTFLAG_ADV7171 0x00004000 #define VG_SUPPORTFLAG_SAA7127 0x00008000 #define VG_SUPPORTFLAG_FS454 0x00010000 #define VG_SUPPORTFLAG_ADV7300 0x00020000 #define VG_SUPPORTFLAG_ENCODERMASK 0x0003C000 #define VG_SUPPORTFLAG_PANEL 0x00040000 #define VG_SUPPORTFLAG_TVOUT 0x00080000 #define VG_SUPPORTFLAG_NTSC 0x00000000 #define VG_SUPPORTFLAG_PAL 0x00100000 #define VG_SUPPORTFLAG_480P 0x00200000 #define VG_SUPPORTFLAG_720P 0x00300000 #define VG_SUPPORTFLAG_1080I 0x00400000 #define VG_SUPPORTFLAG_6X4_NTSC 0x00500000 #define VG_SUPPORTFLAG_8X6_NTSC 0x00600000 #define VG_SUPPORTFLAG_10X7_NTSC 0x00700000 #define VG_SUPPORTFLAG_6X4_PAL 0x00800000 #define VG_SUPPORTFLAG_8X6_PAL 0x00900000 #define VG_SUPPORTFLAG_10X7_PAL 0x00A00000 #define VG_SUPPORTFLAG_TVMODEMASK 0x00F00000 #define VG_MODEFLAG_NEG_HSYNC 0x00000001 #define VG_MODEFLAG_NEG_VSYNC 0x00000002 #define VG_MODEFLAG_INTERLACED 0x00000004 #define VG_MODEFLAG_PANELOUT 0x00000008 #define VG_MODEFLAG_CENTERED 0x00000010 #define VG_MODEFLAG_LINEARPITCH 0x00000020 #define VG_MODEFLAG_TVOUT 0x00000040 #define VG_MODEFLAG_HALFCLOCK 0x00000080 #define VG_MODEFLAG_QVGA 0x00000100 #define VG_MODEFLAG_EXCLUDEPLL 0x00000200 #define VG_MODEFLAG_NOPANELTIMINGS 0x00000400 #define VG_MODEFLAG_XVGA_TFT 0x00000800 #define VG_MODEFLAG_CUSTOM_PANEL 0x00001000 #define VG_MODEFLAG_CRT_AND_FP 0x00002000 #define VG_MODEFLAG_LOW_BAND 0x00000000 #define VG_MODEFLAG_AVG_BAND 0x00004000 #define VG_MODEFLAG_HIGH_BAND 0x00008000 #define VG_MODEFLAG_LEGACY_BAND 0x0000C000 #define VG_MODEFLAG_BANDWIDTHMASK 0x0000C000 #define VG_MODEFLAG_OVERRIDE_BAND 0x00010000 #define VG_MODEFLAG_INT_ADDRESS 0x00000000 #define VG_MODEFLAG_INT_LINEDOUBLE 0x00020000 #define VG_MODEFLAG_INT_FLICKER 0x00040000 #define VG_MODEFLAG_INT_MASK 0x00060000 #define VG_MODEFLAG_INT_OVERRIDE 0x00080000 #define VG_MODEFLAG_INVERT_SHFCLK 0x00100000 #define VG_MODEFLAG_MANUAL_FREQUENCY 0x00200000 #define VG_MODEFLAG_PLL_BYPASS 0x00400000 #define VG_MODEFLAG_VIP_TO_DOT_CLOCK 0x00800000 #define VG_MODEFLAG_VALIDUSERFLAGS (VG_MODEFLAG_CRT_AND_FP | \ VG_MODEFLAG_XVGA_TFT | \ VG_MODEFLAG_NOPANELTIMINGS | \ VG_MODEFLAG_EXCLUDEPLL | \ VG_MODEFLAG_LINEARPITCH) typedef struct tagVGDisplayMode { /* DISPLAY MODE FLAGS */ /* Includes BPP, refresh rate information, interlacing, etc. */ unsigned long internal_flags; unsigned long flags; /* SOURCE RESOLUTION */ /* The following values reflect the resolution of the data in the frame */ /* buffer. These values are used to enable scaling and filtering. */ unsigned long src_width; unsigned long src_height; /* PANEL SETTINGS * These allow a user to set a panel mode through the vg_set_custom_mode * routine. These values are only relevant if the VG_MODEFLAG_PANEL is * also set. */ unsigned long mode_width; unsigned long mode_height; unsigned long panel_width; unsigned long panel_height; unsigned long panel_tim1; unsigned long panel_tim2; unsigned long panel_dither_ctl; unsigned long panel_pad_sel_low; unsigned long panel_pad_sel_high; /* OUTPUT TIMINGS */ /* If the active width and height do not match the source */ /* dimensions the graphics data will be scaled. */ unsigned long hactive; unsigned long hblankstart; unsigned long hsyncstart; unsigned long hsyncend; unsigned long hblankend; unsigned long htotal; unsigned long vactive; unsigned long vblankstart; unsigned long vsyncstart; unsigned long vsyncend; unsigned long vblankend; unsigned long vtotal; unsigned long vactive_even; unsigned long vblankstart_even; unsigned long vsyncstart_even; unsigned long vsyncend_even; unsigned long vblankend_even; unsigned long vtotal_even; /* CLOCK FREQUENCY */ unsigned long frequency; } VG_DISPLAY_MODE; /*-------------------------------------------*/ /* PLL FLAGS */ /*-------------------------------------------*/ #define VG_PLL_DIVIDE_BY_2 0x00000001 #define VG_PLL_DIVIDE_BY_4 0x00000002 #define VG_PLL_BYPASS 0x00000004 #define VG_PLL_MANUAL 0x00000008 #define VG_PLL_VIP_CLOCK 0x00000010 /*-------------------------------------------*/ /* USER STRUCTURE FOR QUERYING DISPLAY MODES */ /*-------------------------------------------*/ typedef struct tagQueryDisplayMode { int interlaced; int halfclock; unsigned long active_width; unsigned long active_height; unsigned long panel_width; unsigned long panel_height; unsigned long total_width; unsigned long total_height; unsigned long bpp; unsigned long hz; unsigned long frequency; unsigned long query_flags; unsigned long encoder; unsigned long tvmode; } VG_QUERY_MODE; /*-------------------------------------------*/ /* USER STRUCTURE FOR QUERYING CURSOR DATA */ /*-------------------------------------------*/ typedef struct tagCursorData { int enable; int color_cursor; unsigned long cursor_offset; unsigned long cursor_x; unsigned long cursor_y; unsigned long clipx; unsigned long clipy; unsigned long mono_color0; unsigned long mono_color1; unsigned long flags; } VG_CURSOR_DATA; /*------------------------------------------------*/ /* VG INTERRUPT STATUS SOURCES */ /*------------------------------------------------*/ #define VG_INT_LINE_MATCH 0x00010000 #define VG_INT_VSYNC_LOSS 0x00020000 /*------------------------------------------------*/ /* USER STRUCTURE FOR SETTING COMPRESSION DATA */ /*------------------------------------------------*/ typedef struct tagCompressionData { unsigned long compression_offset; unsigned long pitch; unsigned long size; unsigned long flags; } VG_COMPRESSION_DATA; /*-------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING LINE INTERRUPTS */ /*-------------------------------------------------*/ typedef struct tagInterruptInfo { unsigned long line; unsigned long flags; int enable; } VG_INTERRUPT_PARAMS; /*-------------------------------------------------*/ /* USER STRUCTURE FOR PANNING THE DESKTOP */ /*-------------------------------------------------*/ typedef struct tagPanningInfo { unsigned long start_x; unsigned long start_y; int start_updated; } VG_PANNING_COORDINATES; /*--------------------------------------------------*/ /* USER STRUCTURE FOR SAVING/RESTORING THE VG STATE */ /*--------------------------------------------------*/ typedef struct tagVGSaveRestore { /* VG REGISTERS */ unsigned long unlock; unsigned long gcfg; unsigned long dcfg; unsigned long arb_cfg; unsigned long fb_offset; unsigned long cb_offset; unsigned long cursor_offset; unsigned long video_y_offset; unsigned long video_u_offset; unsigned long video_v_offset; unsigned long dv_top; unsigned long line_size; unsigned long gfx_pitch; unsigned long video_yuv_pitch; unsigned long h_active; unsigned long h_blank; unsigned long h_sync; unsigned long v_active; unsigned long v_blank; unsigned long v_sync; unsigned long fb_active; unsigned long cursor_x; unsigned long cursor_y; unsigned long vid_ds_delta; unsigned long fb_base; unsigned long dv_ctl; unsigned long gfx_scale; unsigned long irq_ctl; unsigned long vbi_even_ctl; unsigned long vbi_odd_ctl; unsigned long vbi_hor_ctl; unsigned long vbi_odd_line_enable; unsigned long vbi_even_line_enable; unsigned long vbi_pitch; unsigned long color_key; unsigned long color_key_mask; unsigned long color_key_x; unsigned long color_key_y; unsigned long irq; unsigned long genlk_ctl; unsigned long vid_y_even_offset; unsigned long vid_u_even_offset; unsigned long vid_v_even_offset; unsigned long vactive_even; unsigned long vblank_even; unsigned long vsync_even; unsigned long h_coeff[512]; unsigned long v_coeff[256]; unsigned long palette[261]; unsigned long cursor_data[3072]; unsigned long dot_pll; unsigned long pll_flags; /* VG MSRS */ Q_WORD msr_cap; Q_WORD msr_config; Q_WORD msr_smi; Q_WORD msr_error; Q_WORD msr_pm; Q_WORD msr_diag; Q_WORD msr_spare; Q_WORD msr_ram_ctl; } VG_SAVE_RESTORE; /*-------------------------------------------*/ /* VG_GET_DISPLAY_MODE_INDEX PARAMETERS */ /*-------------------------------------------*/ #define VG_QUERYFLAG_ACTIVEWIDTH 0x00000001 #define VG_QUERYFLAG_ACTIVEHEIGHT 0x00000002 #define VG_QUERYFLAG_TOTALWIDTH 0x00000004 #define VG_QUERYFLAG_TOTALHEIGHT 0x00000008 #define VG_QUERYFLAG_BPP 0x00000010 #define VG_QUERYFLAG_REFRESH 0x00000020 #define VG_QUERYFLAG_PIXELCLOCK 0x00000040 #define VG_QUERYFLAG_PIXELCLOCK_APPROX 0x00000080 #define VG_QUERYFLAG_PANEL 0x00000100 #define VG_QUERYFLAG_PANELWIDTH 0x00000200 #define VG_QUERYFLAG_PANELHEIGHT 0x00000400 #define VG_QUERYFLAG_TVOUT 0x00000800 #define VG_QUERYFLAG_INTERLACED 0x00001000 #define VG_QUERYFLAG_HALFCLOCK 0x00002000 #define VG_QUERYFLAG_ENCODER 0x00004000 #define VG_QUERYFLAG_TVMODE 0x00008000 /*-----------------------------------------------*/ /* VG FLICKER FILTER SETTINGS */ /*-----------------------------------------------*/ #define VG_FLICKER_FILTER_NONE 0x00000000 #define VG_FLICKER_FILTER_1_16 0x10000000 #define VG_FLICKER_FILTER_1_8 0x20000000 #define VG_FLICKER_FILTER_1_4 0x40000000 #define VG_FLICKER_FILTER_5_16 0x50000000 #define VG_FLICKER_FILTER_MASK 0xF0000000 /*-----------------------------------------------*/ /* VG CRC SOURCES */ /*-----------------------------------------------*/ #define VG_CRC_SOURCE_PREFILTER 0x00000000 #define VG_CRC_SOURCE_PREFLICKER 0x00000001 #define VG_CRC_SOURCE_POSTFLICKER 0x00000002 #define VG_CRC_SOURCE_PREFILTER_EVEN 0x00000010 #define VG_CRC_SOURCE_PREFLICKER_EVEN 0x00000011 #define VG_CRC_SOURCE_POSTFLICKER_EVEN 0x00000012 #define VG_CRC_SOURCE_EVEN 0x00000010 /*===================================================*/ /* DISPLAY FILTER PARAMETERS */ /*===================================================*/ /*-----------------------------------------------*/ /* VIDEO FORMAT DEFINITIONS */ /*-----------------------------------------------*/ #define DF_VIDFMT_UYVY 0x0000 #define DF_VIDFMT_Y2YU 0x0001 #define DF_VIDFMT_YUYV 0x0002 #define DF_VIDFMT_YVYU 0x0003 #define DF_VIDFMT_Y0Y1Y2Y3 0x0004 #define DF_VIDFMT_Y3Y2Y1Y0 0x0005 #define DF_VIDFMT_Y1Y0Y3Y2 0x0006 #define DF_VIDFMT_Y1Y2Y3Y0 0x0007 #define DF_VIDFMT_RGB 0x0008 #define DF_VIDFMT_P2M_P2L_P1M_P1L 0x0009 #define DF_VIDFMT_P1M_P1L_P2M_P2L 0x000A #define DF_VIDFMT_P1M_P2L_P2M_P1L 0x000B /*-----------------------------------------------*/ /* CRT ENABLE STATES */ /*-----------------------------------------------*/ #define DF_CRT_DISABLE 0x0000 #define DF_CRT_ENABLE 0x0001 #define DF_CRT_STANDBY 0x0002 #define DF_CRT_SUSPEND 0x0003 /*-----------------------------------------------*/ /* VIDEO SCALING FLAGS */ /*-----------------------------------------------*/ #define DF_SCALEFLAG_CHANGEX 0x0001 #define DF_SCALEFLAG_CHANGEY 0x0002 /*-----------------------------------------------*/ /* DISPLAY FILTER COLOR SPACES */ /*-----------------------------------------------*/ #define DF_OUTPUT_RGB 0x0001 #define DF_OUTPUT_ARGB 0x0002 #define DF_OUTPUT_SDTV 0x0003 #define DF_OUTPUT_HDTV 0x0004 /*-----------------------------------------------*/ /* DISPLAY FILTER OUTPUT PATHS */ /*-----------------------------------------------*/ #define DF_DISPLAY_CRT 0x0001 #define DF_DISPLAY_FP 0x0002 #define DF_DISPLAY_CRT_FP 0x0003 #define DF_DISPLAY_VOP 0x0004 #define DF_DISPLAY_DRGB 0x0005 #define DF_DISPLAY_CRT_DRGB 0x0006 /*-----------------------------------------------*/ /* WINDOWED CRC DATA SOURCES */ /*-----------------------------------------------*/ #define DF_CRC_SOURCE_GFX_DATA 0x0000 #define DF_CRC_SOURCE_CRT_RGB 0x0001 #define DF_CRC_SOURCE_FP_DATA 0x0002 /*-----------------------------------------------*/ /* VIDEO ENABLE FLAGS */ /*-----------------------------------------------*/ #define DF_ENABLEFLAG_NOCOLORKEY 0x0001 /*-----------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING A VIDEO SOURCE */ /*-----------------------------------------------*/ #define DF_SOURCEFLAG_HDTVSOURCE 0x0001 #define DF_SOURCEFLAG_IMPLICITSCALING 0x0002 typedef struct tagVideoSourceInfo { unsigned long video_format; unsigned long y_offset; unsigned long u_offset; unsigned long v_offset; unsigned long y_pitch; unsigned long uv_pitch; unsigned long width; unsigned long height; unsigned long flags; } DF_VIDEO_SOURCE_PARAMS; /*---------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING THE VIDEO POSITION */ /*---------------------------------------------------*/ #define DF_POSFLAG_DIRECTCLIP 0x0001 #define DF_POSFLAG_INCLUDEBORDER 0x0002 typedef struct tagVideoPosition { long x; long y; unsigned long width; unsigned long height; unsigned long left_clip; unsigned long dst_clip; unsigned long flags; } DF_VIDEO_POSITION; /*-------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING THE VIDEO CURSOR */ /*-------------------------------------------------*/ typedef struct tagVideoCursorInfo { unsigned long key; unsigned long mask; unsigned long color1; unsigned long color2; unsigned long select_color2; unsigned long flags; } DF_VIDEO_CURSOR_PARAMS; /*-------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING AN ALPHA REGION */ /*-------------------------------------------------*/ #define DF_ALPHAFLAG_COLORENABLED 0x0001 #define DF_ALPHAFLAG_PERPIXELENABLED 0x0002 typedef struct tagAlphaRegionInfo { unsigned long x; unsigned long y; unsigned long width; unsigned long height; unsigned long alpha_value; unsigned long priority; unsigned long color; unsigned long flags; long delta; } DF_ALPHA_REGION_PARAMS; /*-------------------------------------------------*/ /* USER STRUCTURE FOR SAVING/RESTORING DF DATA */ /*-------------------------------------------------*/ typedef struct tagDFSaveRestore { unsigned long vcfg; unsigned long dcfg; unsigned long video_x; unsigned long video_y; unsigned long video_scaler; unsigned long video_color_key; unsigned long video_color_mask; unsigned long sat_limit; unsigned long vid_misc; unsigned long video_yscale; unsigned long video_xscale; unsigned long vid_alpha_control; unsigned long cursor_key; unsigned long cursor_mask; unsigned long cursor_color1; unsigned long cursor_color2; unsigned long alpha_xpos1; unsigned long alpha_ypos1; unsigned long alpha_color1; unsigned long alpha_control1; unsigned long alpha_xpos2; unsigned long alpha_ypos2; unsigned long alpha_color2; unsigned long alpha_control2; unsigned long alpha_xpos3; unsigned long alpha_ypos3; unsigned long alpha_color3; unsigned long alpha_control3; unsigned long vid_request; unsigned long vid_ypos_even; unsigned long alpha_ypos_even1; unsigned long alpha_ypos_even2; unsigned long alpha_ypos_even3; unsigned long panel_tim1; unsigned long panel_tim2; unsigned long panel_pm; unsigned long panel_dither; unsigned long palette[256]; unsigned long coefficients[512]; /* DF MSRS */ Q_WORD msr_cap; Q_WORD msr_config; Q_WORD msr_smi; Q_WORD msr_error; Q_WORD msr_pm; Q_WORD msr_diag; Q_WORD msr_df_diag; Q_WORD msr_pad_sel; } DF_SAVE_RESTORE; /*-----------------------------------------------*/ /* DF CRC SOURCES */ /*-----------------------------------------------*/ #define DF_CRC_SOURCE_ODD_FIELD 0x00000100 #define DF_CRC_SOURCE_EVEN_FIELD 0x00001000 #define DF_CRC_SOURCE_EVEN 0x00001000 /*===================================================*/ /* VIP USER PARAMETER DEFINITIONS */ /*===================================================*/ #define VIP_MODEFLAG_VSYNCACTIVEHIGH 0x00000001 #define VIP_MODEFLAG_HSYNCACTIVEHIGH 0x00000002 /*---------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING 601 SETTINGS */ /*---------------------------------------------*/ typedef struct _TAG_VIP601PARAMS { unsigned long flags; unsigned long horz_start; unsigned long width; unsigned long vert_start_even; unsigned long even_height; unsigned long vert_start_odd; unsigned long odd_height; unsigned long vbi_start; unsigned long vbi_height; unsigned long odd_detect_start; unsigned long odd_detect_end; } VIP_601PARAMS; /*-------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING A VIP MODE */ /*-------------------------------------------*/ /* VIP MODE FLAGS */ #define VIP_MODEFLAG_PLANARCAPTURE 0x00000001 #define VIP_MODEFLAG_INVERTPOLARITY 0x00000002 #define VIP_MODEFLAG_PROGRESSIVE 0x00000004 #define VIP_MODEFLAG_DISABLEZERODETECT 0x00000008 #define VIP_MODEFLAG_ENABLEREPEATFLAG 0x00000010 #define VIP_MODEFLAG_10BITANCILLARY 0x00000020 #define VIP_MODEFLAG_TOGGLEEACHFIELD 0x00000040 #define VIP_MODEFLAG_INVERTTASKPOLARITY 0x00000080 #define VIP_MODEFLAG_FLIPMESSAGEWHENFULL 0x00000100 /* VIP CAPTURE ENABLE FLAGS */ #define VIP_ENABLE_TASKA 0x00000100 #define VIP_ENABLE_TASKA_VBI 0x00000200 #define VIP_ENABLE_TASKB 0x00000400 #define VIP_ENABLE_TASKB_VBI 0x00000800 #define VIP_ENABLE_ANCILLARY 0x00001000 #define VIP_ENABLE_ALL 0x00001F00 /* VIP CAPTURE MODE FLAGS */ #define VIP_MODE_IDLE 0x00000000 #define VIP_MODE_VIP2_8BIT 0x00000002 #define VIP_MODE_VIP2_16BIT 0x00000004 #define VIP_MODE_VIP1_8BIT 0x00000006 #define VIP_MODE_MSG 0x00000008 #define VIP_MODE_DATA 0x0000000A #define VIP_MODE_8BIT601 0x0000000C #define VIP_MODE_16BIT601 0x0000000E /* 4:2:0 PLANAR CAPTURE METHODS */ #define VIP_420CAPTURE_EVERYLINE 0x00000001 #define VIP_420CAPTURE_ALTERNATINGLINES 0x00000002 #define VIP_420CAPTURE_ALTERNATINGFIELDS 0x00000003 typedef struct _TAG_SETMODEBUFFER { unsigned long flags; unsigned long stream_enables; unsigned long operating_mode; unsigned long planar_capture; VIP_601PARAMS vip601_settings; } VIPSETMODEBUFFER; /*-----------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VG/VIP GENLOCK */ /*-----------------------------------------------*/ /* LOSS OF VIDEO DETECTION FLAGS */ #define VIP_VDE_RUNAWAY_LINE 0x00800000 #define VIP_VDE_VERTICAL_TIMING 0x00400000 #define VIP_VDE_CLOCKS_PER_LINE 0x00200000 #define VIP_VDE_LOST_CLOCK 0x00100000 /* VIP VSYNC SELECT FOR THE VG */ #define VIP_VGSYNC_NONE 0x00000000 #define VIP_VGSYNC_START_FRAME 0x00000001 #define VIP_VGSYNC_FALLING_EDGE_VBLANK 0x00000002 #define VIP_VGSYNC_RISING_EDGE_VBLANK 0x00000003 #define VIP_VGSYNC_FALLING_EDGE_FIELD 0x00000004 #define VIP_VGSYNC_RISING_EDGE_FIELD 0x00000005 #define VIP_VGSYNC_VIP_CURRENT_LINE 0x00000006 #define VIP_VGSYNC_MSG_INT 0x00000007 /* VIP FIELD SELECT FOR THE VG */ #define VIP_VGFIELD_INPUT 0x00000000 #define VIP_VGFIELD_INPUT_INV 0x00000008 #define VIP_VGFIELD_ACTIVE_PAGE 0x00000010 #define VIP_VGFIELD_ACTIVE_PAGE_IN 0x00000018 /*--------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING THE VG VSYNC GENLOCK */ /*--------------------------------------------------------*/ typedef struct _TAG_GENLOCKBUFFER { unsigned long vip_signal_loss; unsigned long vsync_to_vg; unsigned long field_to_vg; unsigned long genlock_skew; int enable_timeout; } VIPGENLOCKBUFFER; /*------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP ANCILLARY CAPTURE */ /*------------------------------------------------------*/ typedef struct _TAG_ANCILLARYBUFFER { unsigned long msg1_base; unsigned long msg2_base; unsigned long msg_size; } VIPANCILLARYBUFFER; /*----------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP CAPTURE BUFFERS */ /*----------------------------------------------------*/ #define VIP_INPUTFLAG_VBI 0x00000001 #define VIP_INPUTFLAG_INVERTPOLARITY 0x00000002 #define VIP_INPUTFLAG_PLANAR 0x00000004 #define VIP_MAX_BUFFERS 10 #define VIP_BUFFER_TASK_A 0x0000 #define VIP_BUFFER_TASK_B 0x0001 #define VIP_BUFFER_MAX_TASKS 0x0002 #define VIP_BUFFER_A 0x0000 #define VIP_BUFFER_B 0x0001 #define VIP_BUFFER_ANC 0x0002 #define VIP_BUFFER_MSG 0x0003 #define VIP_BUFFER_601 0x0004 #define VIP_BUFFER_A_ODD 0x0005 #define VIP_BUFFER_A_EVEN 0x0006 #define VIP_BUFFER_B_ODD 0x0007 #define VIP_BUFFER_B_EVEN 0x0008 typedef struct _TAG_INPUTBUFFER_ADDR { unsigned long even_base[VIP_MAX_BUFFERS]; unsigned long odd_base[VIP_MAX_BUFFERS]; unsigned long y_pitch; unsigned long uv_pitch; unsigned long odd_uoffset; unsigned long odd_voffset; unsigned long even_uoffset; unsigned long even_voffset; unsigned long vbi_even_base; unsigned long vbi_odd_base; } VIPINPUTBUFFER_ADDR; typedef struct _TAG_SETINPUTBUFFER { unsigned long flags; VIPINPUTBUFFER_ADDR offsets[VIP_BUFFER_MAX_TASKS]; unsigned long current_buffer; VIPANCILLARYBUFFER ancillaryData; } VIPINPUTBUFFER; /*------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP SUBWINDOW CAPTURE */ /*------------------------------------------------------*/ typedef struct _TAG_SUBWINDOWBUFFER { int enable; unsigned long start; unsigned long stop; } VIPSUBWINDOWBUFFER; /*--------------------------------------------------------*/ /* USER STRUCTURE FOR SAVING/RESTORING VIP REGISTERS */ /*--------------------------------------------------------*/ typedef struct _TAG_VIPSTATEBUFFER { unsigned long control1; unsigned long control2; unsigned long vip_int; unsigned long current_target; unsigned long max_address; unsigned long taska_evenbase; unsigned long taska_oddbase; unsigned long taska_vbi_evenbase; unsigned long taska_vbi_oddbase; unsigned long taska_data_pitch; unsigned long control3; unsigned long taska_v_oddoffset; unsigned long taska_u_oddoffset; unsigned long taskb_evenbase; unsigned long taskb_oddbase; unsigned long taskb_vbi_evenbase; unsigned long taskb_vbi_oddbase; unsigned long taskb_pitch; unsigned long taskb_voffset; unsigned long taskb_uoffset; unsigned long msg1_base; unsigned long msg2_base; unsigned long msg_size; unsigned long page_offset; unsigned long vert_start_stop; unsigned long vsync_err_count; unsigned long taska_u_evenoffset; unsigned long taska_v_evenoffset; Q_WORD msr_config; Q_WORD msr_smi; Q_WORD msr_pm; Q_WORD msr_diag; } VIPSTATEBUFFER; /*--------------------------------------------------------*/ /* VIP_SET_CAPTURE_STATE USER PARAMETERS */ /*--------------------------------------------------------*/ #define VIP_STOPCAPTURE 0x0000 #define VIP_STOPCAPTUREATLINEEND 0x0001 #define VIP_STOPCAPTUREATFIELDEND 0x0002 #define VIP_STOPCAPTUREATFRAMEEND 0x0003 #define VIP_STARTCAPTUREATNEXTLINE 0x0004 #define VIP_STARTCAPTUREATNEXTFIELD 0x0005 #define VIP_STARTCAPTUREATNEXTFRAME 0x0006 #define VIP_STARTCAPTURE 0x0007 /*--------------------------------------------------------*/ /* VIP_CONFIGURE_FIFO USER PARAMETERS */ /*--------------------------------------------------------*/ #define VIP_VIDEOTHRESHOLD 0x3000 #define VIP_ANCILLARYTHRESHOLD 0x3001 #define VIP_VIDEOFLUSH 0x3002 #define VIP_ANCILLARYFLUSH 0x3003 /*--------------------------------------------------------*/ /* VIP_SET_INTERRUPT_ENABLE USER DEFINITIONS */ /*--------------------------------------------------------*/ #define VIP_INT_FIFO_ERROR 0x80000000 #define VIP_INT_FIFO_WRAP 0x40000000 #define VIP_INT_FIFO_OVERFLOW 0x20000000 #define VIP_INT_FIFO_THRESHOLD 0x10000000 #define VIP_INT_LONGLINE 0x08000000 #define VIP_INT_VERTICAL_TIMING 0x04000000 #define VIP_INT_ACTIVE_PIXELS 0x02000000 #define VIP_INT_CLOCK_INPUT 0x01000000 #define VIP_INT_ANC_CHECKSUM_PARITY 0x00800000 #define VIP_INT_MSG_BUFFER_FULL 0x00400000 #define VIP_INT_END_VBLANK 0x00200000 #define VIP_INT_START_VBLANK 0x00100000 #define VIP_INT_START_EVEN 0x00080000 #define VIP_INT_START_ODD 0x00040000 #define VIP_INT_LINE_MATCH_TARGET 0x00020000 #define VIP_ALL_INTERRUPTS 0xFFFE0000 /*--------------------------------------------------------*/ /* VIP_GET_CURRENT_FIELD RETURN VALUES */ /*--------------------------------------------------------*/ #define VIP_ODD_FIELD 1 #define VIP_EVEN_FIELD 0 /*-------------------------------------------------*/ /* USER STRUCTURE FOR QUERYING VIP CAPABILITIES */ /*-------------------------------------------------*/ typedef struct _TAG_CAPABILITIESBUFFER { unsigned long revision_id; unsigned long device_id; unsigned long n_clock_domains; unsigned long n_smi_registers; } VIPCAPABILITIESBUFFER; /*-------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP POWER */ /*-------------------------------------------------*/ typedef struct _TAG_POWERBUFFER { int glink_clock_mode; int vip_clock_mode; } VIPPOWERBUFFER; /*-------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP PRIORITIES */ /*-------------------------------------------------*/ typedef struct _TAG_PRIORITYBUFFER { unsigned long secondary; unsigned long primary; unsigned long pid; } VIPPRIORITYBUFFER; /*--------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VIP DEBUG OUTPUTS */ /*--------------------------------------------------*/ #define VIP_DIAG_UPPER_GLINK_MASTER 0x00010000 #define VIP_DIAG_UPPER_GLINK_SLAVE 0x00020000 #define VIP_DIAG_UPPER_GLINK_SLAVE_MMREG 0x00040000 #define VIP_DIAG_UPPER_Y_BUFFER 0x00080000 #define VIP_DIAG_UPPER_A_BUFFER 0x00100000 #define VIP_DIAG_UPPER_FIFO_OUTPUT 0x00200000 #define VIP_DIAG_UPPER_FIFO_INPUT 0x01000000 #define VIP_DIAG_UPPER_FORMATTER 0x02000000 #define VIP_DIAG_UPPER_INPUT_CONTROL 0x04000000 #define VIP_DIAG_LOWER_GLINK_MASTER 0x00000001 #define VIP_DIAG_LOWER_GLINK_SLAVE 0x00000002 #define VIP_DIAG_LOWER_GLINK_SLAVE_MMREG 0x00000004 #define VIP_DIAG_LOWER_Y_BUFFER 0x00000008 #define VIP_DIAG_LOWER_A_BUFFER 0x00000010 #define VIP_DIAG_LOWER_FIFO_OUTPUT 0x00000020 #define VIP_DIAG_LOWER_FIFO_INPUT 0x00000100 #define VIP_DIAG_LOWER_FORMATTER 0x00000200 #define VIP_DIAG_LOWER_INPUT_CONTROL 0x00000400 typedef struct _TAG_DEBUGBUFFER { unsigned long bist; unsigned long enable_upper; unsigned long select_upper; unsigned long enable_lower; unsigned long select_lower; } VIPDEBUGBUFFER; /*===================================================*/ /* VOP USER PARAMETER DEFINITIONS */ /*===================================================*/ /*------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VBI CAPTURE */ /*------------------------------------------------------*/ typedef struct _TAG_VBIWINDOWBUFFER { long horz_start; unsigned long vbi_width; unsigned long odd_line_capture_mask; unsigned long even_line_capture_mask; unsigned long odd_line_offset; unsigned long even_line_offset; unsigned long even_address_offset; unsigned long odd_address_offset; unsigned long data_size; unsigned long data_pitch; int enable_upscale; int horz_from_hsync; } VOPVBIWINDOWBUFFER; /*------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING 601 FOR VOP */ /*------------------------------------------------------*/ #define VOP_601_INVERT_DISPE 0x00080000 #define VOP_601_INVERT_VSYNC 0x00040000 #define VOP_601_INVERT_HSYNC 0x00020000 #define VOP_VSYNC_EARLIER_BY4 0x00000000 #define VOP_VSYNC_EARLIER_BY2 0x00004000 #define VOP_VSYNC_NOSHIFT 0x00008000 #define VOP_VSYNC_LATER_BY_X 0x0000C000 #define VOP_601_YUV_8BIT 0x00000000 #define VOP_601_YUV_16BIT 0x00000001 #define VOP_601_RGB_8_8_8 0x00000002 #define VOP_601_YUV_4_4_4 0x00000003 typedef struct _TAG_VOP601 { unsigned long flags; unsigned long vsync_shift; unsigned long vsync_shift_count; unsigned long output_mode; } VOP_601DATA; /*------------------------------------------------------*/ /* USER STRUCTURE FOR CONFIGURING VOP OUTPUT */ /*------------------------------------------------------*/ /* VOP FLAGS */ #define VOP_FLAG_SINGLECHIPCOMPAT 0x00000001 #define VOP_FLAG_EXTENDEDSAV 0x00000002 #define VOP_FLAG_VBI 0x00000008 #define VOP_FLAG_TASK 0x00000010 #define VOP_FLAG_SWAP_UV 0x00000020 #define VOP_FLAG_SWAP_VBI 0x00000040 /* 4:4:2 TO 4:2:2 DECIMATION */ #define VOP_422MODE_COSITED 0x00000000 #define VOP_422MODE_INTERSPERSED 0x00000010 #define VOP_422MODE_ALTERNATING 0x00000020 /* VOP OPERATING MODES */ #define VOP_MODE_DISABLED 0x00000000 #define VOP_MODE_VIP11 0x00000001 #define VOP_MODE_CCIR656 0x00000002 #define VOP_MODE_VIP20_8BIT 0x00000003 #define VOP_MODE_VIP20_16BIT 0x00000004 #define VOP_MODE_601 0x00000005 /* VSYNC OUT SELECT FLAGS */ #define VOP_MB_SYNCSEL_DISABLED 0x00000000 #define VOP_MB_SYNCSEL_VG 0x00000020 #define VOP_MB_SYNCSEL_VG_INV 0x00000040 #define VOP_MB_SYNCSEL_STATREG17 0x00000060 #define VOP_MB_SYNCSEL_STATREG17_INV 0x00000080 typedef struct _TAG_VOPMODECONFIGURATIONBUFFER { unsigned long flags; unsigned long mode; unsigned long conversion_mode; unsigned long vsync_out; VOP_601DATA vop601; } VOPCONFIGURATIONBUFFER; /*--------------------------------------------------------*/ /* USER STRUCTURE FOR SAVING/RESTORING VOP REGISTERS */ /*--------------------------------------------------------*/ typedef struct _TAG_VOPSTATEBUFFER { unsigned long config; } VOPSTATEBUFFER; #endif