1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file drvVIF.h 98*53ee8cc1Swenshuai.xi /// @brief MStar VIF Utopia interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /// @version 1.0 101*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi /*! \defgroup VIF VIF interface 104*53ee8cc1Swenshuai.xi \ingroup VIF 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi \brief 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi VIF, in other words, is ATV demodulator. VIF is composed of analog and digital parts. 109*53ee8cc1Swenshuai.xi Analog part includes Programmable Gain Amplifier(PGA), mixer and LPF. 110*53ee8cc1Swenshuai.xi After ADC sampling, low IF signal is digitally processed. 111*53ee8cc1Swenshuai.xi First, low IF signal is down-converted to baseband. 112*53ee8cc1Swenshuai.xi Second, baseband filter pass video content and reject audio carrier. 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi <b>Features</b> 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi - PGA provides 25~35dB gain (depending on chips), 1dB gain per step. 117*53ee8cc1Swenshuai.xi - Mixer down-converts video IF frequency (38.9MHz) to low IF frequency (9.548MHz) 118*53ee8cc1Swenshuai.xi - There are separate internal control lines to provide 10 gain steps for PGA1 and 15 gain steps for PGA2. 119*53ee8cc1Swenshuai.xi Each gain step is 1 dB increment. The minimum PGA1 gain is 6dB and the minimum PGA2 gain is 0dB. 120*53ee8cc1Swenshuai.xi - Gain adjustment 121*53ee8cc1Swenshuai.xi RF signal strong -> weak: Once tuner gain reaches maximum, PGA gain start increasing. 122*53ee8cc1Swenshuai.xi RF signal weak -> strong: Decreasing tuner gain first and then decreasing PGA gain for maintaining tuner voltage operating above GAIN_DISTRINUTION_THR. Once PGA gain is minimum, tuner gain start decreasing until minimum. 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi <b> VIF Block Diagram: </b> \n 125*53ee8cc1Swenshuai.xi \image html drvVIF_pic01.png 126*53ee8cc1Swenshuai.xi \image html drvVIF_pic02.png 127*53ee8cc1Swenshuai.xi \image html drvVIF_pic03.png 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi <b> Operation Code Flow: </b> \n 130*53ee8cc1Swenshuai.xi -# Prepare VIF setting for each operation 131*53ee8cc1Swenshuai.xi -# Set and start VIF in command handle 132*53ee8cc1Swenshuai.xi -# Get Tuner IF output signal 133*53ee8cc1Swenshuai.xi -# Set setting 134*53ee8cc1Swenshuai.xi -# Monitor VIF status (FOE, Lock status...etc) 135*53ee8cc1Swenshuai.xi -# VIF done by polling 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi \defgroup VIF VIF modules 138*53ee8cc1Swenshuai.xi \ingroup VIF 139*53ee8cc1Swenshuai.xi \defgroup VIF_Basic VIF Basic 140*53ee8cc1Swenshuai.xi \ingroup VIF 141*53ee8cc1Swenshuai.xi \defgroup VIF_Task VIF Task 142*53ee8cc1Swenshuai.xi \ingroup VIF 143*53ee8cc1Swenshuai.xi */ 144*53ee8cc1Swenshuai.xi 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi #ifndef _DRVVIF_H_ 147*53ee8cc1Swenshuai.xi #define _DRVVIF_H_ 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi #ifdef __cplusplus 150*53ee8cc1Swenshuai.xi extern "C" 151*53ee8cc1Swenshuai.xi { 152*53ee8cc1Swenshuai.xi #endif 153*53ee8cc1Swenshuai.xi 154*53ee8cc1Swenshuai.xi #include "MsCommon.h" 155*53ee8cc1Swenshuai.xi #include "MsIRQ.h" 156*53ee8cc1Swenshuai.xi #include "MsOS.h" 157*53ee8cc1Swenshuai.xi #include "MsTypes.h" 158*53ee8cc1Swenshuai.xi #if 0 // move to drvvif.c 159*53ee8cc1Swenshuai.xi //**************************************************************************** 160*53ee8cc1Swenshuai.xi // VIF lib Changelist 161*53ee8cc1Swenshuai.xi //**************************************************************************** 162*53ee8cc1Swenshuai.xi #define MSIF_VIF_LIB_CODE {'V','I','F','_'} 163*53ee8cc1Swenshuai.xi #define MSIF_VIF_LIBVER {'1','7'} 164*53ee8cc1Swenshuai.xi #define MSIF_VIF_BUILDNUM {'0','5'} 165*53ee8cc1Swenshuai.xi #define MSIF_VIF_CHANGELIST {'0','0','6','1','8','0','0','4'} 166*53ee8cc1Swenshuai.xi #define MSIF_VIF_DASH {'_'} 167*53ee8cc1Swenshuai.xi #define MSIF_VIF_DATE {'1','3','0','8','1','4'} // yymmdd 168*53ee8cc1Swenshuai.xi 169*53ee8cc1Swenshuai.xi #define VIF_DRV_VERSION /* Character String for DRV/API version */ \ 170*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 171*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 172*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 173*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 174*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 175*53ee8cc1Swenshuai.xi MSIF_CPU, \ 176*53ee8cc1Swenshuai.xi MSIF_VIF_LIB_CODE, /* IP__ */ \ 177*53ee8cc1Swenshuai.xi MSIF_VIF_LIBVER, /* 0.0 ~ Z.Z */ \ 178*53ee8cc1Swenshuai.xi MSIF_VIF_BUILDNUM, /* 00 ~ 99 */ \ 179*53ee8cc1Swenshuai.xi MSIF_VIF_CHANGELIST, /* CL# */ \ 180*53ee8cc1Swenshuai.xi MSIF_OS 181*53ee8cc1Swenshuai.xi #endif 182*53ee8cc1Swenshuai.xi //**************************************************************************** 183*53ee8cc1Swenshuai.xi // Public attributes. 184*53ee8cc1Swenshuai.xi //**************************************************************************** 185*53ee8cc1Swenshuai.xi 186*53ee8cc1Swenshuai.xi #ifdef _DRVVIF_C_ 187*53ee8cc1Swenshuai.xi #define INTERFACE 188*53ee8cc1Swenshuai.xi #else 189*53ee8cc1Swenshuai.xi #define INTERFACE extern 190*53ee8cc1Swenshuai.xi #endif 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi #ifndef BOOL 193*53ee8cc1Swenshuai.xi #define BOOL MS_BOOL 194*53ee8cc1Swenshuai.xi #endif 195*53ee8cc1Swenshuai.xi #ifndef BYTE 196*53ee8cc1Swenshuai.xi #define BYTE MS_U8 197*53ee8cc1Swenshuai.xi #endif 198*53ee8cc1Swenshuai.xi #ifndef WORD 199*53ee8cc1Swenshuai.xi #define WORD MS_U16 200*53ee8cc1Swenshuai.xi #endif 201*53ee8cc1Swenshuai.xi #ifndef DWORD 202*53ee8cc1Swenshuai.xi #define DWORD MS_U32 203*53ee8cc1Swenshuai.xi #endif 204*53ee8cc1Swenshuai.xi #ifndef U8 205*53ee8cc1Swenshuai.xi #define U8 MS_U8 206*53ee8cc1Swenshuai.xi #endif 207*53ee8cc1Swenshuai.xi #ifndef U16 208*53ee8cc1Swenshuai.xi #define U16 MS_U16 209*53ee8cc1Swenshuai.xi #endif 210*53ee8cc1Swenshuai.xi #ifndef U32 211*53ee8cc1Swenshuai.xi #define U32 MS_U32 212*53ee8cc1Swenshuai.xi #endif 213*53ee8cc1Swenshuai.xi #ifndef VIRT 214*53ee8cc1Swenshuai.xi #define VIRT MS_VIRT 215*53ee8cc1Swenshuai.xi #endif 216*53ee8cc1Swenshuai.xi 217*53ee8cc1Swenshuai.xi typedef enum 218*53ee8cc1Swenshuai.xi { 219*53ee8cc1Swenshuai.xi afcBELOW_MINUS_187p5KHz = 0x07, 220*53ee8cc1Swenshuai.xi afcMINUS_162p5KHz = 0x06, 221*53ee8cc1Swenshuai.xi afcMINUS_137p5KHz = 0x05, 222*53ee8cc1Swenshuai.xi afcMINUS_112p5KHz = 0x04, 223*53ee8cc1Swenshuai.xi afcMINUS_87p5KHz = 0x03, 224*53ee8cc1Swenshuai.xi afcMINUS_62p5KHz = 0x02, 225*53ee8cc1Swenshuai.xi afcMINUS_37p5KHz = 0x01, 226*53ee8cc1Swenshuai.xi afcMINUS_12p5KHz = 0x00, 227*53ee8cc1Swenshuai.xi afcPLUS_12p5KHz = 0x0F, 228*53ee8cc1Swenshuai.xi afcPLUS_37p5KHz = 0x0E, 229*53ee8cc1Swenshuai.xi afcPLUS_62p5KHz = 0x0D, 230*53ee8cc1Swenshuai.xi afcPLUS_87p5KHz = 0x0C, 231*53ee8cc1Swenshuai.xi afcPLUS_112p5KHz = 0x0B, 232*53ee8cc1Swenshuai.xi afcPLUS_137p5KHz = 0x0A, 233*53ee8cc1Swenshuai.xi afcPLUS_162p5KHz = 0x09, 234*53ee8cc1Swenshuai.xi afcABOVE_PLUS_187p5KHz = 0x08 //<NHK_070630_eAFC> 235*53ee8cc1Swenshuai.xi } eAFC; 236*53ee8cc1Swenshuai.xi 237*53ee8cc1Swenshuai.xi 238*53ee8cc1Swenshuai.xi typedef enum 239*53ee8cc1Swenshuai.xi { 240*53ee8cc1Swenshuai.xi E_AFC_BELOW_MINUS_187p5KHz = 0x07, 241*53ee8cc1Swenshuai.xi E_AFC_MINUS_162p5KHz = 0x06, 242*53ee8cc1Swenshuai.xi E_AFC_MINUS_137p5KHz = 0x05, 243*53ee8cc1Swenshuai.xi E_AFC_MINUS_112p5KHz = 0x04, 244*53ee8cc1Swenshuai.xi E_AFC_MINUS_87p5KHz = 0x03, 245*53ee8cc1Swenshuai.xi E_AFC_MINUS_62p5KHz = 0x02, 246*53ee8cc1Swenshuai.xi E_AFC_MINUS_37p5KHz = 0x01, 247*53ee8cc1Swenshuai.xi E_AFC_MINUS_12p5KHz = 0x00, 248*53ee8cc1Swenshuai.xi E_AFC_PLUS_12p5KHz = 0x0F, 249*53ee8cc1Swenshuai.xi E_AFC_PLUS_37p5KHz = 0x0E, 250*53ee8cc1Swenshuai.xi E_AFC_PLUS_62p5KHz = 0x0D, 251*53ee8cc1Swenshuai.xi E_AFC_PLUS_87p5KHz = 0x0C, 252*53ee8cc1Swenshuai.xi E_AFC_PLUS_112p5KHz = 0x0B, 253*53ee8cc1Swenshuai.xi E_AFC_PLUS_137p5KHz = 0x0A, 254*53ee8cc1Swenshuai.xi E_AFC_PLUS_162p5KHz = 0x09, 255*53ee8cc1Swenshuai.xi E_AFC_ABOVE_PLUS_187p5KHz = 0x08, 256*53ee8cc1Swenshuai.xi E_AFC_OUT_OF_AFCWIN = 0x10, 257*53ee8cc1Swenshuai.xi } AFC; 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi typedef enum 260*53ee8cc1Swenshuai.xi { 261*53ee8cc1Swenshuai.xi VIF_IF_FREQ_INVALID, 262*53ee8cc1Swenshuai.xi VIF_IF_FREQ_B, // 38.90 MHz 263*53ee8cc1Swenshuai.xi VIF_IF_FREQ_G, // 38.90 MHz 264*53ee8cc1Swenshuai.xi VIF_IF_FREQ_I, // 38.90 MHz 265*53ee8cc1Swenshuai.xi VIF_IF_FREQ_DK, // 38.90 MHz 266*53ee8cc1Swenshuai.xi VIF_IF_FREQ_L, // 38.90 MHz 267*53ee8cc1Swenshuai.xi VIF_IF_FREQ_L_PRIME, // 33.90 MHz 268*53ee8cc1Swenshuai.xi VIF_IF_FREQ_MN, // 45.75 MHz 269*53ee8cc1Swenshuai.xi VIF_IF_FREQ_J, // 58.75 MHz 270*53ee8cc1Swenshuai.xi VIF_IF_FREQ_PAL_38, // 38.00 MHz 271*53ee8cc1Swenshuai.xi VIF_IF_FREQ_MAX_IF_FREQ, 272*53ee8cc1Swenshuai.xi VIF_IF_DIGITAL_MODE 273*53ee8cc1Swenshuai.xi } VIF_IF_FREQ; 274*53ee8cc1Swenshuai.xi 275*53ee8cc1Swenshuai.xi typedef enum 276*53ee8cc1Swenshuai.xi { 277*53ee8cc1Swenshuai.xi VIF_SOUND_B, // B_STEREO_A2 278*53ee8cc1Swenshuai.xi VIF_SOUND_B_NICAM, // B_MONO_NICAM 279*53ee8cc1Swenshuai.xi VIF_SOUND_GH, //GH_STEREO_A2 280*53ee8cc1Swenshuai.xi VIF_SOUND_GH_NICAM, // GH_MONO_NICAM 281*53ee8cc1Swenshuai.xi VIF_SOUND_I, 282*53ee8cc1Swenshuai.xi VIF_SOUND_DK1, // DK1_STEREO_A2 283*53ee8cc1Swenshuai.xi VIF_SOUND_DK2, // DK2_STEREO_A2 284*53ee8cc1Swenshuai.xi VIF_SOUND_DK3, // DK3_STEREO_A2 285*53ee8cc1Swenshuai.xi VIF_SOUND_DK_NICAM, // DK_MONO_NICAM 286*53ee8cc1Swenshuai.xi VIF_SOUND_L, 287*53ee8cc1Swenshuai.xi VIF_SOUND_LL, 288*53ee8cc1Swenshuai.xi VIF_SOUND_MN, 289*53ee8cc1Swenshuai.xi VIF_SOUND_NUMS 290*53ee8cc1Swenshuai.xi }VIFSoundSystem; 291*53ee8cc1Swenshuai.xi 292*53ee8cc1Swenshuai.xi typedef enum 293*53ee8cc1Swenshuai.xi { 294*53ee8cc1Swenshuai.xi IF_FREQ_3395, // SECAM-L' 295*53ee8cc1Swenshuai.xi IF_FREQ_3800, // PAL 296*53ee8cc1Swenshuai.xi IF_FREQ_3890, // PAL 297*53ee8cc1Swenshuai.xi IF_FREQ_3950, // only for PAL-I 298*53ee8cc1Swenshuai.xi IF_FREQ_4575, // NTSC-M/N 299*53ee8cc1Swenshuai.xi IF_FREQ_5875, // NTSC-M/N 300*53ee8cc1Swenshuai.xi IF_FREQ_NUMS 301*53ee8cc1Swenshuai.xi }IfFrequencyType; 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi typedef enum 304*53ee8cc1Swenshuai.xi { 305*53ee8cc1Swenshuai.xi FREQ_VHF_L, 306*53ee8cc1Swenshuai.xi FREQ_VHF_H, 307*53ee8cc1Swenshuai.xi FREQ_UHF, 308*53ee8cc1Swenshuai.xi FREQ_RANGE_NUMS 309*53ee8cc1Swenshuai.xi }FrequencyBand; 310*53ee8cc1Swenshuai.xi 311*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _VIFInitialIn 312*53ee8cc1Swenshuai.xi { 313*53ee8cc1Swenshuai.xi BYTE VifTop; 314*53ee8cc1Swenshuai.xi BYTE VifIfBaseFreq; 315*53ee8cc1Swenshuai.xi BYTE VifTunerStepSize; 316*53ee8cc1Swenshuai.xi BYTE VifSawArch; 317*53ee8cc1Swenshuai.xi WORD VifVgaMaximum; 318*53ee8cc1Swenshuai.xi WORD VifVgaMinimum; 319*53ee8cc1Swenshuai.xi WORD GainDistributionThr; 320*53ee8cc1Swenshuai.xi BYTE VifAgcVgaBase; 321*53ee8cc1Swenshuai.xi BYTE VifAgcVgaOffs; 322*53ee8cc1Swenshuai.xi BYTE VifAgcRefNegative; 323*53ee8cc1Swenshuai.xi BYTE VifAgcRefPositive; 324*53ee8cc1Swenshuai.xi BYTE VifDagc1Ref; 325*53ee8cc1Swenshuai.xi BYTE VifDagc2Ref; 326*53ee8cc1Swenshuai.xi WORD VifDagc1GainOv; 327*53ee8cc1Swenshuai.xi WORD VifDagc2GainOv; 328*53ee8cc1Swenshuai.xi BYTE VifCrKf1; 329*53ee8cc1Swenshuai.xi BYTE VifCrKp1; 330*53ee8cc1Swenshuai.xi BYTE VifCrKi1; 331*53ee8cc1Swenshuai.xi BYTE VifCrKp2; 332*53ee8cc1Swenshuai.xi BYTE VifCrKi2; 333*53ee8cc1Swenshuai.xi BYTE VifCrKp; 334*53ee8cc1Swenshuai.xi BYTE VifCrKi; 335*53ee8cc1Swenshuai.xi WORD VifCrLockThr; 336*53ee8cc1Swenshuai.xi WORD VifCrThr; 337*53ee8cc1Swenshuai.xi DWORD VifCrLockNum; 338*53ee8cc1Swenshuai.xi DWORD VifCrUnlockNum; 339*53ee8cc1Swenshuai.xi WORD VifCrPdErrMax; 340*53ee8cc1Swenshuai.xi BOOL VifCrLockLeakySel; 341*53ee8cc1Swenshuai.xi BOOL VifCrPdX2; 342*53ee8cc1Swenshuai.xi BOOL VifCrLpfSel; 343*53ee8cc1Swenshuai.xi BOOL VifCrPdModeSel; 344*53ee8cc1Swenshuai.xi BOOL VifCrKpKiAdjust; 345*53ee8cc1Swenshuai.xi BYTE VifCrKpKiAdjustGear; 346*53ee8cc1Swenshuai.xi BYTE VifCrKpKiAdjustThr1; 347*53ee8cc1Swenshuai.xi BYTE VifCrKpKiAdjustThr2; 348*53ee8cc1Swenshuai.xi BYTE VifCrKpKiAdjustThr3; 349*53ee8cc1Swenshuai.xi BOOL VifDynamicTopAdjust; 350*53ee8cc1Swenshuai.xi BYTE VifDynamicTopMin; 351*53ee8cc1Swenshuai.xi BOOL VifAmHumDetection; 352*53ee8cc1Swenshuai.xi BOOL VifClampgainClampSel; 353*53ee8cc1Swenshuai.xi BYTE VifClampgainSyncbottRef; 354*53ee8cc1Swenshuai.xi BYTE VifClampgainSyncheightRef; 355*53ee8cc1Swenshuai.xi BYTE VifClampgainKc; 356*53ee8cc1Swenshuai.xi BYTE VifClampgainKg; 357*53ee8cc1Swenshuai.xi BOOL VifClampgainClampOren; 358*53ee8cc1Swenshuai.xi BOOL VifClampgainGainOren; 359*53ee8cc1Swenshuai.xi WORD VifClampgainClampOvNegative; 360*53ee8cc1Swenshuai.xi WORD VifClampgainGainOvNegative; 361*53ee8cc1Swenshuai.xi WORD VifClampgainClampOvPositive; 362*53ee8cc1Swenshuai.xi WORD VifClampgainGainOvPositive; 363*53ee8cc1Swenshuai.xi BYTE VifClampgainClampMin; 364*53ee8cc1Swenshuai.xi BYTE VifClampgainClampMax; 365*53ee8cc1Swenshuai.xi BYTE VifClampgainGainMin; 366*53ee8cc1Swenshuai.xi BYTE VifClampgainGainMax; 367*53ee8cc1Swenshuai.xi WORD VifClampgainPorchCnt; 368*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterB_VHF_L; 369*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterB_VHF_L; 370*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterB_VHF_L; 371*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterGH_VHF_L; 372*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterGH_VHF_L; 373*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterGH_VHF_L; 374*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterDK_VHF_L; 375*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterDK_VHF_L; 376*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterDK_VHF_L; 377*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterI_VHF_L; 378*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterI_VHF_L; 379*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterI_VHF_L; 380*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterL_VHF_L; 381*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterL_VHF_L; 382*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterL_VHF_L; 383*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterLL_VHF_L; 384*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterLL_VHF_L; 385*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterLL_VHF_L; 386*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterMN_VHF_L; 387*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterMN_VHF_L; 388*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterMN_VHF_L; 389*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterB_VHF_H; 390*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterB_VHF_H; 391*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterB_VHF_H; 392*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterGH_VHF_H; 393*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterGH_VHF_H; 394*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterGH_VHF_H; 395*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterDK_VHF_H; 396*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterDK_VHF_H; 397*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterDK_VHF_H; 398*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterI_VHF_H; 399*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterI_VHF_H; 400*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterI_VHF_H; 401*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterL_VHF_H; 402*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterL_VHF_H; 403*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterL_VHF_H; 404*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterLL_VHF_H; 405*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterLL_VHF_H; 406*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterLL_VHF_H; 407*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterMN_VHF_H; 408*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterMN_VHF_H; 409*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterMN_VHF_H; 410*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterB_UHF; 411*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterB_UHF; 412*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterB_UHF; 413*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterGH_UHF; 414*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterGH_UHF; 415*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterGH_UHF; 416*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterDK_UHF; 417*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterDK_UHF; 418*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterDK_UHF; 419*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterI_UHF; 420*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterI_UHF; 421*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterI_UHF; 422*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterL_UHF; 423*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterL_UHF; 424*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterL_UHF; 425*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterLL_UHF; 426*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterLL_UHF; 427*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterLL_UHF; 428*53ee8cc1Swenshuai.xi BYTE VifPeakingFilterMN_UHF; 429*53ee8cc1Swenshuai.xi BYTE VifYcDelayFilterMN_UHF; 430*53ee8cc1Swenshuai.xi BYTE VifGroupDelayFilterMN_UHF; 431*53ee8cc1Swenshuai.xi BYTE ChinaDescramblerBox; 432*53ee8cc1Swenshuai.xi BYTE VifDelayReduce; 433*53ee8cc1Swenshuai.xi BOOL VifOverModulation; 434*53ee8cc1Swenshuai.xi BOOL VifOverModulationDetect; 435*53ee8cc1Swenshuai.xi BOOL VifACIDetect; 436*53ee8cc1Swenshuai.xi BOOL VifSeriousACIDetect; 437*53ee8cc1Swenshuai.xi BYTE VifACIAGCREF; 438*53ee8cc1Swenshuai.xi BYTE VifADCOverflowAGCREF; 439*53ee8cc1Swenshuai.xi BYTE VifChanelScanAGCREF; 440*53ee8cc1Swenshuai.xi BYTE VifACIDetTHR1; 441*53ee8cc1Swenshuai.xi BYTE VifACIDetTHR2; 442*53ee8cc1Swenshuai.xi BYTE VifACIDetTHR3; 443*53ee8cc1Swenshuai.xi BYTE VifACIDetTHR4; 444*53ee8cc1Swenshuai.xi BYTE VifFreqBand; 445*53ee8cc1Swenshuai.xi WORD VifSos21FilterC0; 446*53ee8cc1Swenshuai.xi WORD VifSos21FilterC1; 447*53ee8cc1Swenshuai.xi WORD VifSos21FilterC2; 448*53ee8cc1Swenshuai.xi WORD VifSos21FilterC3; 449*53ee8cc1Swenshuai.xi WORD VifSos21FilterC4; 450*53ee8cc1Swenshuai.xi WORD VifSos22FilterC0; 451*53ee8cc1Swenshuai.xi WORD VifSos22FilterC1; 452*53ee8cc1Swenshuai.xi WORD VifSos22FilterC2; 453*53ee8cc1Swenshuai.xi WORD VifSos22FilterC3; 454*53ee8cc1Swenshuai.xi WORD VifSos22FilterC4; 455*53ee8cc1Swenshuai.xi WORD VifSos31FilterC0; 456*53ee8cc1Swenshuai.xi WORD VifSos31FilterC1; 457*53ee8cc1Swenshuai.xi WORD VifSos31FilterC2; 458*53ee8cc1Swenshuai.xi WORD VifSos31FilterC3; 459*53ee8cc1Swenshuai.xi WORD VifSos31FilterC4; 460*53ee8cc1Swenshuai.xi WORD VifSos32FilterC0; 461*53ee8cc1Swenshuai.xi WORD VifSos32FilterC1; 462*53ee8cc1Swenshuai.xi WORD VifSos32FilterC2; 463*53ee8cc1Swenshuai.xi WORD VifSos32FilterC3; 464*53ee8cc1Swenshuai.xi WORD VifSos32FilterC4; 465*53ee8cc1Swenshuai.xi BYTE VifTunerType; 466*53ee8cc1Swenshuai.xi DWORD VifCrRate_B; 467*53ee8cc1Swenshuai.xi BOOL VifCrInvert_B; 468*53ee8cc1Swenshuai.xi DWORD VifCrRate_GH; 469*53ee8cc1Swenshuai.xi BOOL VifCrInvert_GH; 470*53ee8cc1Swenshuai.xi DWORD VifCrRate_DK; 471*53ee8cc1Swenshuai.xi BOOL VifCrInvert_DK; 472*53ee8cc1Swenshuai.xi DWORD VifCrRate_I; 473*53ee8cc1Swenshuai.xi BOOL VifCrInvert_I; 474*53ee8cc1Swenshuai.xi DWORD VifCrRate_L; 475*53ee8cc1Swenshuai.xi BOOL VifCrInvert_L; 476*53ee8cc1Swenshuai.xi DWORD VifCrRate_LL; 477*53ee8cc1Swenshuai.xi BOOL VifCrInvert_LL; 478*53ee8cc1Swenshuai.xi DWORD VifCrRate_MN; 479*53ee8cc1Swenshuai.xi BOOL VifCrInvert_MN; 480*53ee8cc1Swenshuai.xi BYTE VifReserve; 481*53ee8cc1Swenshuai.xi }VIFInitialIn; 482*53ee8cc1Swenshuai.xi 483*53ee8cc1Swenshuai.xi typedef enum 484*53ee8cc1Swenshuai.xi { 485*53ee8cc1Swenshuai.xi VIF_PARA_USER_FILTER, // VIFUserFilter 486*53ee8cc1Swenshuai.xi VIF_PARA_TOP, // DWORD 487*53ee8cc1Swenshuai.xi VIF_PARA_LEAKY_SEL, // DWORD 488*53ee8cc1Swenshuai.xi VIF_PARA_K_SEL, // DWORD 489*53ee8cc1Swenshuai.xi VIF_PARA_GET_VERSION, // U8[30] return 490*53ee8cc1Swenshuai.xi VIF_PARA_SET_BYPASS_PEAKING_SOS21, // DWORD 491*53ee8cc1Swenshuai.xi VIF_PARA_GET_PGA2_LEVEL, // BYTE return 492*53ee8cc1Swenshuai.xi VIF_PARA_GET_IF, // WORD return 493*53ee8cc1Swenshuai.xi VIF_PARA_GET_K_SEL, // BYTE return 494*53ee8cc1Swenshuai.xi VIF_PARA_SET_HW_KPKI, // DWORD 495*53ee8cc1Swenshuai.xi VIF_PARA_SET_TAGC_ODMODE, // DWORD 496*53ee8cc1Swenshuai.xi VIF_PARA_SET_NOTCH_A1A2, // VIFNotchA1A2: please set user notch after setting sound system to overwrite default values 497*53ee8cc1Swenshuai.xi VIF_PARA_SET_SOS_1112, // VIFSOS1112: please set user SOS after setting sound system to overwrite default values 498*53ee8cc1Swenshuai.xi VIF_PARA_GET_PD_INV, // BYTE return 499*53ee8cc1Swenshuai.xi VIF_PARA_SET_PD_INV, // DWORD 500*53ee8cc1Swenshuai.xi VIF_PARA_GET_VGA, //WORD return 501*53ee8cc1Swenshuai.xi VIF_PARA_SET_CLAMPGAIN_GAIN_OV_POS, // DWORD 502*53ee8cc1Swenshuai.xi VIF_PARA_SET_CLAMPGAIN_GAIN_OV_NEG, // DWORD 503*53ee8cc1Swenshuai.xi VIF_PARA_SET_AGC_K, //DWORD; B3[0]: enable user steady agc_k, B2[2~0]: user steady agc_value, B1[0]: enable user non steady agc_k, B0[2~0]: user non steady agc_value 504*53ee8cc1Swenshuai.xi VIF_PARA_SET_AGC_REF, //DWORD 505*53ee8cc1Swenshuai.xi VIF_PARA_SET_IF_RATE_FM, //DWORD 506*53ee8cc1Swenshuai.xi VIF_PARA_SET_CR_RATE_FM, //DWORD 507*53ee8cc1Swenshuai.xi VIF_PARA_SET_DESCRAMBLERBOX_DELAY, //DWORD 508*53ee8cc1Swenshuai.xi VIF_PARA_SET_SSC_ENABLE, //DWORD 509*53ee8cc1Swenshuai.xi VIF_PARA_SET_DISABLE_ADAGC, 510*53ee8cc1Swenshuai.xi VIF_PARA_SET_ENABLE_SOS33, 511*53ee8cc1Swenshuai.xi VIF_PARA_GROUP_NUMS 512*53ee8cc1Swenshuai.xi }VIF_PARA_GROUP; 513*53ee8cc1Swenshuai.xi 514*53ee8cc1Swenshuai.xi 515*53ee8cc1Swenshuai.xi typedef enum 516*53ee8cc1Swenshuai.xi { 517*53ee8cc1Swenshuai.xi PK_START=1, 518*53ee8cc1Swenshuai.xi PK_B_VHF_L=PK_START, //PeakingFilterB_VHF_L, 519*53ee8cc1Swenshuai.xi PK_GH_VHF_L, //PeakingFilterGH_VHF_L, 520*53ee8cc1Swenshuai.xi PK_DK_VHF_L, //PeakingFilterDK_VHF_L, 521*53ee8cc1Swenshuai.xi PK_I_VHF_L, //PeakingFilterI_VHF_L, 522*53ee8cc1Swenshuai.xi PK_L_VHF_L, //PeakingFilterL_VHF_L, 523*53ee8cc1Swenshuai.xi PK_LL_VHF_L, //PeakingFilterLL_VHF_L, 524*53ee8cc1Swenshuai.xi PK_MN_VHF_L, //PeakingFilterMN_VHF_L, 525*53ee8cc1Swenshuai.xi PK_B_VHF_H, //PeakingFilterB_VHF_H, 526*53ee8cc1Swenshuai.xi PK_GH_VHF_H, //PeakingFilterGH_VHF_H, 527*53ee8cc1Swenshuai.xi PK_DK_VHF_H, //PeakingFilterDK_VHF_H, 528*53ee8cc1Swenshuai.xi PK_I_VHF_H, //PeakingFilterI_VHF_H, 529*53ee8cc1Swenshuai.xi PK_L_VHF_H, //PeakingFilterL_VHF_H, 530*53ee8cc1Swenshuai.xi PK_LL_VHF_H, //PeakingFilterLL_VHF_H, 531*53ee8cc1Swenshuai.xi PK_MN_VHF_H, //PeakingFilterMN_VHF_H, 532*53ee8cc1Swenshuai.xi PK_B_UHF, //PeakingFilterB_UHF, 533*53ee8cc1Swenshuai.xi PK_GH_UHF, //PeakingFilterGH_UHF, 534*53ee8cc1Swenshuai.xi PK_DK_UHF, //PeakingFilterDK_UHF, 535*53ee8cc1Swenshuai.xi PK_I_UHF, //PeakingFilterI_UHF, 536*53ee8cc1Swenshuai.xi PK_L_UHF, //PeakingFilterL_UHF, 537*53ee8cc1Swenshuai.xi PK_LL_UHF, //PeakingFilterLL_UHF, 538*53ee8cc1Swenshuai.xi PK_MN_UHF, //PeakingFilterMN_UHF, 539*53ee8cc1Swenshuai.xi PK_END=PK_MN_UHF, 540*53ee8cc1Swenshuai.xi 541*53ee8cc1Swenshuai.xi YC_START, 542*53ee8cc1Swenshuai.xi YC_B_VHF_L=YC_START, //YcDelayFilterB_VHF_L, 543*53ee8cc1Swenshuai.xi YC_GH_VHF_L, //YcDelayFilterGH_VHF_L, 544*53ee8cc1Swenshuai.xi YC_DK_VHF_L, //YcDelayFilterDK_VHF_L, 545*53ee8cc1Swenshuai.xi YC_I_VHF_L, //YcDelayFilterI_VHF_L, 546*53ee8cc1Swenshuai.xi YC_L_VHF_L, //YcDelayFilterL_VHF_L, 547*53ee8cc1Swenshuai.xi YC_LL_VHF_L, //YcDelayFilterLL_VHF_L, 548*53ee8cc1Swenshuai.xi YC_MN_VHF_L, //YcDelayFilterMN_VHF_L, 549*53ee8cc1Swenshuai.xi YC_B_VHF_H, //YcDelayFilterB_VHF_H, 550*53ee8cc1Swenshuai.xi YC_GH_VHF_H, //YcDelayFilterGH_VHF_H, 551*53ee8cc1Swenshuai.xi YC_DK_VHF_H, //YcDelayFilterDK_VHF_H, 552*53ee8cc1Swenshuai.xi YC_I_VHF_H, //YcDelayFilterI_VHF_H, 553*53ee8cc1Swenshuai.xi YC_L_VHF_H, //YcDelayFilterL_VHF_H, 554*53ee8cc1Swenshuai.xi YC_LL_VHF_H, //YcDelayFilterLL_VHF_H, 555*53ee8cc1Swenshuai.xi YC_MN_VHF_H, //YcDelayFilterMN_VHF_H, 556*53ee8cc1Swenshuai.xi YC_B_UHF, //YcDelayFilterB_UHF, 557*53ee8cc1Swenshuai.xi YC_GH_UHF, //YcDelayFilterGH_UHF, 558*53ee8cc1Swenshuai.xi YC_DK_UHF, //YcDelayFilterDK_UHF, 559*53ee8cc1Swenshuai.xi YC_I_UHF, //YcDelayFilterI_UHF, 560*53ee8cc1Swenshuai.xi YC_L_UHF, //YcDelayFilterL_UHF, 561*53ee8cc1Swenshuai.xi YC_LL_UHF, //YcDelayFilterLL_UHF, 562*53ee8cc1Swenshuai.xi YC_MN_UHF, //YcDelayFilterMN_UHF, 563*53ee8cc1Swenshuai.xi YC_END=YC_MN_UHF, 564*53ee8cc1Swenshuai.xi 565*53ee8cc1Swenshuai.xi GP_START, 566*53ee8cc1Swenshuai.xi GP_B_VHF_L=GP_START, //GroupDelayFilterB_VHF_L, 567*53ee8cc1Swenshuai.xi GP_GH_VHF_L, //GroupDelayFilterGH_VHF_L, 568*53ee8cc1Swenshuai.xi GP_DK_VHF_L, //GroupDelayFilterDK_VHF_L, 569*53ee8cc1Swenshuai.xi GP_I_VHF_L, //GroupDelayFilterI_VHF_L, 570*53ee8cc1Swenshuai.xi GP_L_VHF_L, //GroupDelayFilterL_VHF_L, 571*53ee8cc1Swenshuai.xi GP_LL_VHF_L, //GroupDelayFilterLL_VHF_L, 572*53ee8cc1Swenshuai.xi GP_MN_VHF_L, //GroupDelayFilterMN_VHF_L, 573*53ee8cc1Swenshuai.xi GP_B_VHF_H, //GroupDelayFilterB_VHF_H, 574*53ee8cc1Swenshuai.xi GP_GH_VHF_H, //GroupDelayFilterGH_VHF_H, 575*53ee8cc1Swenshuai.xi GP_DK_VHF_H, //GroupDelayFilterDK_VHF_H, 576*53ee8cc1Swenshuai.xi GP_I_VHF_H, //GroupDelayFilterI_VHF_H, 577*53ee8cc1Swenshuai.xi GP_L_VHF_H, //GroupDelayFilterL_VHF_H, 578*53ee8cc1Swenshuai.xi GP_LL_VHF_H, //GroupDelayFilterLL_VHF_H, 579*53ee8cc1Swenshuai.xi GP_MN_VHF_H, //GroupDelayFilterMN_VHF_H, 580*53ee8cc1Swenshuai.xi GP_B_UHF, //GroupDelayFilterB_UHF, 581*53ee8cc1Swenshuai.xi GP_GH_UHF, //GroupDelayFilterGH_UHF, 582*53ee8cc1Swenshuai.xi GP_DK_UHF, //GroupDelayFilterDK_UHF, 583*53ee8cc1Swenshuai.xi GP_I_UHF, //GroupDelayFilterI_UHF, 584*53ee8cc1Swenshuai.xi GP_L_UHF, //GroupDelayFilterL_UHF, 585*53ee8cc1Swenshuai.xi GP_LL_UHF, //GroupDelayFilterLL_UHF, 586*53ee8cc1Swenshuai.xi GP_MN_UHF, //GroupDelayFilterMN_UHF, 587*53ee8cc1Swenshuai.xi GP_END=GP_MN_UHF, 588*53ee8cc1Swenshuai.xi 589*53ee8cc1Swenshuai.xi VIF_USER_FILTER_SELECT_NUMS 590*53ee8cc1Swenshuai.xi }VIF_USER_FILTER_SELECT; 591*53ee8cc1Swenshuai.xi 592*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _VIFUserFilter 593*53ee8cc1Swenshuai.xi { 594*53ee8cc1Swenshuai.xi WORD VifSos21FilterC0; 595*53ee8cc1Swenshuai.xi WORD VifSos21FilterC1; 596*53ee8cc1Swenshuai.xi WORD VifSos21FilterC2; 597*53ee8cc1Swenshuai.xi WORD VifSos21FilterC3; 598*53ee8cc1Swenshuai.xi WORD VifSos21FilterC4; 599*53ee8cc1Swenshuai.xi WORD VifSos22FilterC0; 600*53ee8cc1Swenshuai.xi WORD VifSos22FilterC1; 601*53ee8cc1Swenshuai.xi WORD VifSos22FilterC2; 602*53ee8cc1Swenshuai.xi WORD VifSos22FilterC3; 603*53ee8cc1Swenshuai.xi WORD VifSos22FilterC4; 604*53ee8cc1Swenshuai.xi WORD VifSos31FilterC0; 605*53ee8cc1Swenshuai.xi WORD VifSos31FilterC1; 606*53ee8cc1Swenshuai.xi WORD VifSos31FilterC2; 607*53ee8cc1Swenshuai.xi WORD VifSos31FilterC3; 608*53ee8cc1Swenshuai.xi WORD VifSos31FilterC4; 609*53ee8cc1Swenshuai.xi WORD VifSos32FilterC0; 610*53ee8cc1Swenshuai.xi WORD VifSos32FilterC1; 611*53ee8cc1Swenshuai.xi WORD VifSos32FilterC2; 612*53ee8cc1Swenshuai.xi WORD VifSos32FilterC3; 613*53ee8cc1Swenshuai.xi WORD VifSos32FilterC4; 614*53ee8cc1Swenshuai.xi //WORD VifSos33FilterC0; 615*53ee8cc1Swenshuai.xi //WORD VifSos33FilterC1; 616*53ee8cc1Swenshuai.xi //WORD VifSos33FilterC2; 617*53ee8cc1Swenshuai.xi //WORD VifSos33FilterC3; 618*53ee8cc1Swenshuai.xi //WORD VifSos33FilterC4; 619*53ee8cc1Swenshuai.xi BYTE VifUserPeakingFilterSelect; 620*53ee8cc1Swenshuai.xi BYTE VifUserYcDelayFilterSelect; 621*53ee8cc1Swenshuai.xi BYTE VifUserGroupDelayFilterSelect; 622*53ee8cc1Swenshuai.xi }VIFUserFilter; 623*53ee8cc1Swenshuai.xi 624*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _VIFNotchA1A2 625*53ee8cc1Swenshuai.xi { 626*53ee8cc1Swenshuai.xi WORD Vif_N_A1_C0; 627*53ee8cc1Swenshuai.xi WORD Vif_N_A1_C1; 628*53ee8cc1Swenshuai.xi WORD Vif_N_A1_C2; 629*53ee8cc1Swenshuai.xi WORD Vif_N_A2_C0; 630*53ee8cc1Swenshuai.xi WORD Vif_N_A2_C1; 631*53ee8cc1Swenshuai.xi WORD Vif_N_A2_C2; 632*53ee8cc1Swenshuai.xi }VIFNotchA1A2; 633*53ee8cc1Swenshuai.xi 634*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _VIFSOS1112 635*53ee8cc1Swenshuai.xi { 636*53ee8cc1Swenshuai.xi WORD Vif_SOS_11_C0; 637*53ee8cc1Swenshuai.xi WORD Vif_SOS_11_C1; 638*53ee8cc1Swenshuai.xi WORD Vif_SOS_11_C2; 639*53ee8cc1Swenshuai.xi WORD Vif_SOS_11_C3; 640*53ee8cc1Swenshuai.xi WORD Vif_SOS_11_C4; 641*53ee8cc1Swenshuai.xi WORD Vif_SOS_12_C0; 642*53ee8cc1Swenshuai.xi WORD Vif_SOS_12_C1; 643*53ee8cc1Swenshuai.xi WORD Vif_SOS_12_C2; 644*53ee8cc1Swenshuai.xi WORD Vif_SOS_12_C3; 645*53ee8cc1Swenshuai.xi WORD Vif_SOS_12_C4; 646*53ee8cc1Swenshuai.xi }VIFSOS1112; 647*53ee8cc1Swenshuai.xi 648*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _VIFSOS33 649*53ee8cc1Swenshuai.xi { 650*53ee8cc1Swenshuai.xi WORD Vif_SOS_33_C0; 651*53ee8cc1Swenshuai.xi WORD Vif_SOS_33_C1; 652*53ee8cc1Swenshuai.xi WORD Vif_SOS_33_C2; 653*53ee8cc1Swenshuai.xi WORD Vif_SOS_33_C3; 654*53ee8cc1Swenshuai.xi WORD Vif_SOS_33_C4; 655*53ee8cc1Swenshuai.xi }VIFSOS33; 656*53ee8cc1Swenshuai.xi 657*53ee8cc1Swenshuai.xi //**************************************************************************** 658*53ee8cc1Swenshuai.xi // Public functions. 659*53ee8cc1Swenshuai.xi //**************************************************************************** 660*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 661*53ee8cc1Swenshuai.xi /// Check VIF version 662*53ee8cc1Swenshuai.xi /// @ingroup VIF_BASIC 663*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 664*53ee8cc1Swenshuai.xi /// @return FALSE : fail 665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 666*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_Version(void); 667*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 668*53ee8cc1Swenshuai.xi /// VIF Set Clock 669*53ee8cc1Swenshuai.xi /// @ingroup VIF_BASIC 670*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: 0:means enable 671*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 672*53ee8cc1Swenshuai.xi /// @return FALSE : fail 673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 674*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_SetClock(BOOL bEnable); 675*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 676*53ee8cc1Swenshuai.xi /// Initialize VIF setting (any register access should be after this function) 677*53ee8cc1Swenshuai.xi /// @ingroup VIF_BASIC 678*53ee8cc1Swenshuai.xi /// @param pVIF_InitData \b IN: init data 679*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: init data size 680*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 681*53ee8cc1Swenshuai.xi /// @return FALSE : fail 682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 683*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_Init(VIFInitialIn * pVIF_InitData, DWORD u32InitDataLen); 684*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 685*53ee8cc1Swenshuai.xi /// VIF Software Reset 686*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 687*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 688*53ee8cc1Swenshuai.xi /// @return FALSE : fail 689*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 690*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_Reset(void); 691*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 692*53ee8cc1Swenshuai.xi /// VIF Software Exit 693*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 694*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 695*53ee8cc1Swenshuai.xi /// @return FALSE : fail 696*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 697*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_Exit(void); 698*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 699*53ee8cc1Swenshuai.xi /// VIF Handler (monitor all VIF functions) 700*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 701*53ee8cc1Swenshuai.xi /// @param bAutoScan \b IN: init data 702*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 703*53ee8cc1Swenshuai.xi /// @return FALSE : fail 704*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 705*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_Handler(BOOL bAutoScan); 706*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 707*53ee8cc1Swenshuai.xi /// VIF Set Sound System 708*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 709*53ee8cc1Swenshuai.xi /// @param ucSoundSystem \b IN: VIFSoundSystems 710*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 711*53ee8cc1Swenshuai.xi /// @return FALSE : fail 712*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 713*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_SetSoundSystem(VIFSoundSystem ucSoundSystem); 714*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 715*53ee8cc1Swenshuai.xi /// VIF Set IF Frequnecy 716*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 717*53ee8cc1Swenshuai.xi /// @param u16IfFreq \b IN: IF Frequency 718*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 719*53ee8cc1Swenshuai.xi /// @return FALSE : fail 720*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 721*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_SetIfFreq(IfFrequencyType u16IfFreq); 722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 723*53ee8cc1Swenshuai.xi /// VIF Read CR FOE 724*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 725*53ee8cc1Swenshuai.xi /// @return TRUE : CR_FOE 726*53ee8cc1Swenshuai.xi /// @return FALSE : 0, fail 727*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 728*53ee8cc1Swenshuai.xi INTERFACE U8 DRV_VIF_Read_CR_FOE(void); 729*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 730*53ee8cc1Swenshuai.xi /// VIF Read CR Lock Status 731*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 732*53ee8cc1Swenshuai.xi /// @return TRUE : CR_LOCK_STATUS 733*53ee8cc1Swenshuai.xi /// @return FALSE : 0, fail 734*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 735*53ee8cc1Swenshuai.xi INTERFACE U8 DRV_VIF_Read_CR_LOCK_STATUS(void); 736*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 737*53ee8cc1Swenshuai.xi /// VIF Bypass DBB Audio Filter (A_DAGC_SEL) 738*53ee8cc1Swenshuai.xi /// @ingroup VIF_Task 739*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable 740*53ee8cc1Swenshuai.xi /// @return TRUE : 1, input from a_lpf_up 741*53ee8cc1Swenshuai.xi /// @return FALSE : 0, input from a_sos 742*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 743*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_BypassDBBAudioFilter(BOOL bEnable); 744*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 745*53ee8cc1Swenshuai.xi /// VIF Set Frquency Band 746*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 747*53ee8cc1Swenshuai.xi /// @param u8FreqBand \b IN: frequency band 748*53ee8cc1Swenshuai.xi /// @return TRUE : VifFreqBand 749*53ee8cc1Swenshuai.xi /// @return FALSE : 0 750*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 751*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_SetFreqBand(FrequencyBand u8FreqBand); 752*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 753*53ee8cc1Swenshuai.xi /// VIF Get Input Level Indicator 754*53ee8cc1Swenshuai.xi /// @ingroup VIF_Task 755*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 756*53ee8cc1Swenshuai.xi /// @return FALSE : fail 757*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 758*53ee8cc1Swenshuai.xi INTERFACE BOOL DRV_VIF_GetInputLevelIndicator(void); 759*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 760*53ee8cc1Swenshuai.xi /// VIF Set Parameters 761*53ee8cc1Swenshuai.xi /// @ingroup VIF_Task 762*53ee8cc1Swenshuai.xi /// @param paraGroup \b IN: Parameters Group 763*53ee8cc1Swenshuai.xi /// @param pVIF_Para \b IN: Parameters 764*53ee8cc1Swenshuai.xi /// @param u32DataLen \b IN: Data Length 765*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 766*53ee8cc1Swenshuai.xi /// @return FALSE : fail 767*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 768*53ee8cc1Swenshuai.xi INTERFACE BOOL DRV_VIF_SetParameter(VIF_PARA_GROUP paraGroup, void * pVIF_Para, DWORD u32DataLen); 769*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 770*53ee8cc1Swenshuai.xi /// VIF Set Shift Clock 771*53ee8cc1Swenshuai.xi /// @ingroup VIF_Task 772*53ee8cc1Swenshuai.xi /// @param VifShiftClk \b IN: 0 (42MHz, 140MHz), 1(44.4MHz, 148MHz), 2(43.2MHz, 142MHz) 773*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 774*53ee8cc1Swenshuai.xi /// @return FALSE : fail 775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 776*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_ShiftClk(BYTE VifShiftClk); 777*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 778*53ee8cc1Swenshuai.xi /// VIF Set Power State 779*53ee8cc1Swenshuai.xi /// @ingroup VIF_Task 780*53ee8cc1Swenshuai.xi /// @param u16PowerState \b IN: Power State 781*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 782*53ee8cc1Swenshuai.xi /// @return FALSE : fail 783*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 784*53ee8cc1Swenshuai.xi INTERFACE MS_U32 MDrv_VIF_SetPowerState(EN_POWER_MODE u16PowerState); 785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 786*53ee8cc1Swenshuai.xi /// VIF Write Byte 787*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 788*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: Register address 789*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: Value 790*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 791*53ee8cc1Swenshuai.xi /// @return FALSE : fail 792*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 793*53ee8cc1Swenshuai.xi INTERFACE void DRV_VIF_WriteByte(U32 u32Reg, U8 u8Val ); 794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 795*53ee8cc1Swenshuai.xi /// VIF Read Byte 796*53ee8cc1Swenshuai.xi /// @ingroup VIF_Basic 797*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: Register address 798*53ee8cc1Swenshuai.xi /// @return TRUE : succeed 799*53ee8cc1Swenshuai.xi /// @return FALSE : fail 800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 801*53ee8cc1Swenshuai.xi INTERFACE U8 DRV_VIF_ReadByte(U32 u32Reg ); 802*53ee8cc1Swenshuai.xi #undef INTERFACE 803*53ee8cc1Swenshuai.xi 804*53ee8cc1Swenshuai.xi #ifdef __cplusplus 805*53ee8cc1Swenshuai.xi } 806*53ee8cc1Swenshuai.xi #endif 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi #endif //_DRVVIF_H_ 809