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 apiXC_Adc.h 98*53ee8cc1Swenshuai.xi /// @brief MStar ADC API 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi /*! \defgroup Video Video modules 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi * \defgroup XC_SRC XC_SRC modules 106*53ee8cc1Swenshuai.xi * \ingroup Video 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi ADC is used to control ADC relative setting for YPbPr, VGA, SCART, AV, SV, ATV.\n 109*53ee8cc1Swenshuai.xi For more information,see \link ADC ADC interface (apiXC_ADC.h) \endlink 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi * \defgroup ADC ADC interface (apiXC_ADC.h) 112*53ee8cc1Swenshuai.xi * \ingroup XC_SRC 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi ADC is used to control ADC relative setting for YPbPr, VGA, SCART, AV, SV, ATV, including 115*53ee8cc1Swenshuai.xi - CVBS out setting 116*53ee8cc1Swenshuai.xi - Control ADC PC clock 117*53ee8cc1Swenshuai.xi - Control ADC phase 118*53ee8cc1Swenshuai.xi - Control SoG level 119*53ee8cc1Swenshuai.xi - Control ADC gain and offset 120*53ee8cc1Swenshuai.xi - ADC efuse setting( bandgap and iDac) 121*53ee8cc1Swenshuai.xi - ADC calibration 122*53ee8cc1Swenshuai.xi - Control PIPE delay 123*53ee8cc1Swenshuai.xi - Control ADC clamp delay 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi <b> Operation Code Flow: </b> \n 126*53ee8cc1Swenshuai.xi check flow chart directly. 127*53ee8cc1Swenshuai.xi \image html ADC.png 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi * \defgroup ADC_FEATURE ADC feature operation 130*53ee8cc1Swenshuai.xi * \ingroup ADC 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xi *! \defgroup ADC_INFO ADC Infomation pool 133*53ee8cc1Swenshuai.xi * \ingroup ADC 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi *! \defgroup ADC_ToBeModified ADC api to be modified 136*53ee8cc1Swenshuai.xi * \ingroup ADC 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi *! \defgroup ADC_ToBeRemove ADC api to be removed 139*53ee8cc1Swenshuai.xi * \ingroup ADC 140*53ee8cc1Swenshuai.xi */ 141*53ee8cc1Swenshuai.xi 142*53ee8cc1Swenshuai.xi #ifndef _API_XC_ADC_H_ 143*53ee8cc1Swenshuai.xi #define _API_XC_ADC_H_ 144*53ee8cc1Swenshuai.xi 145*53ee8cc1Swenshuai.xi #ifdef __cplusplus 146*53ee8cc1Swenshuai.xi extern "C" 147*53ee8cc1Swenshuai.xi { 148*53ee8cc1Swenshuai.xi #endif 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 151*53ee8cc1Swenshuai.xi // Macro and Define 152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 153*53ee8cc1Swenshuai.xi 154*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 155*53ee8cc1Swenshuai.xi // Type and Structure 156*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi /// Struct for store ADC Gain and Offset 159*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 160*53ee8cc1Swenshuai.xi { 161*53ee8cc1Swenshuai.xi MS_U16 u16RedGain; ///< ADC red gain 162*53ee8cc1Swenshuai.xi MS_U16 u16GreenGain; ///< ADC green gain 163*53ee8cc1Swenshuai.xi MS_U16 u16BlueGain; ///< ADC blue gain 164*53ee8cc1Swenshuai.xi MS_U16 u16RedOffset; ///< ADC red offset 165*53ee8cc1Swenshuai.xi MS_U16 u16GreenOffset; ///< ADC green offset 166*53ee8cc1Swenshuai.xi MS_U16 u16BlueOffset; ///< ADC blue offset 167*53ee8cc1Swenshuai.xi } APIXC_AdcGainOffsetSetting; 168*53ee8cc1Swenshuai.xi 169*53ee8cc1Swenshuai.xi /// ADC output internal voltage type 170*53ee8cc1Swenshuai.xi typedef enum 171*53ee8cc1Swenshuai.xi { 172*53ee8cc1Swenshuai.xi E_ADC_Internal_0V, ///< Output 0V 173*53ee8cc1Swenshuai.xi E_ADC_Internal_0_1V, ///< Output 0.1V 174*53ee8cc1Swenshuai.xi E_ADC_Internal_0_6V, ///< Output 0.6V 175*53ee8cc1Swenshuai.xi E_ADC_Internal_None, ///< OFF 176*53ee8cc1Swenshuai.xi }ADC_Internal_Voltage; 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi /// ADC output Clock type 179*53ee8cc1Swenshuai.xi typedef enum 180*53ee8cc1Swenshuai.xi { 181*53ee8cc1Swenshuai.xi E_ADC_Gen_480P_Clk, ///< ADC output 480P 182*53ee8cc1Swenshuai.xi E_ADC_Gen_720P_Clk, ///< ADC output 720P 183*53ee8cc1Swenshuai.xi E_ADC_Gen_1080P_Clk, ///< ADC output 1080P 184*53ee8cc1Swenshuai.xi }ADC_Gen_Clock_Type; 185*53ee8cc1Swenshuai.xi 186*53ee8cc1Swenshuai.xi /// ADC V Clamping type 187*53ee8cc1Swenshuai.xi typedef enum 188*53ee8cc1Swenshuai.xi { 189*53ee8cc1Swenshuai.xi E_ADC_VClamp_0_85V, ///< Clamp to 0.85V 190*53ee8cc1Swenshuai.xi E_ADC_VClamp_0_9V, ///< Clamp to 0.9V 191*53ee8cc1Swenshuai.xi E_ADC_VClamp_0_95V, ///< Clamp to 0.95V 192*53ee8cc1Swenshuai.xi E_ADC_VClamp_1_0V, ///< Clamp to 1.0V 193*53ee8cc1Swenshuai.xi E_ADC_VClamp_1_05V, ///< Clamp to 1.05V 194*53ee8cc1Swenshuai.xi E_ADC_VClamp_1_2V, ///< Clamp to 1.2V 195*53ee8cc1Swenshuai.xi E_ADC_VClamp_1_5V, ///< Clamp to 1.5V 196*53ee8cc1Swenshuai.xi }ADC_VClamp_Level_Type; 197*53ee8cc1Swenshuai.xi 198*53ee8cc1Swenshuai.xi /// Update Gain / Offset for specific channel. This is used in MApi_XC_ADC_SetGain or MApi_XC_ADC_SetOffset 199*53ee8cc1Swenshuai.xi typedef enum 200*53ee8cc1Swenshuai.xi { 201*53ee8cc1Swenshuai.xi ADC_CHR = 0, ///< Channel R 202*53ee8cc1Swenshuai.xi ADC_CHG, ///< Channel G 203*53ee8cc1Swenshuai.xi ADC_CHB, ///< Channel B 204*53ee8cc1Swenshuai.xi ADC_ALL, ///< All Channel 205*53ee8cc1Swenshuai.xi }ADC_CHANNEL_t; 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi /// Software reset for ADCDVIPLL block 208*53ee8cc1Swenshuai.xi typedef enum 209*53ee8cc1Swenshuai.xi { 210*53ee8cc1Swenshuai.xi REST_ATOP = _BIT(7), ///< Reset ATOP 211*53ee8cc1Swenshuai.xi REST_HDMI = _BIT(6), 212*53ee8cc1Swenshuai.xi REST_HDCP = _BIT(5), 213*53ee8cc1Swenshuai.xi REST_DVI = _BIT(4), 214*53ee8cc1Swenshuai.xi REST_PLL_DIG_B = _BIT(3), 215*53ee8cc1Swenshuai.xi REST_ADC_DIG_B = _BIT(2), 216*53ee8cc1Swenshuai.xi REST_PLL_DIG_A = _BIT(1), 217*53ee8cc1Swenshuai.xi REST_ADC_DIG_A = _BIT(0), 218*53ee8cc1Swenshuai.xi REST_PLL = ( REST_PLL_DIG_B | REST_PLL_DIG_A ), ///< Reset PLL 219*53ee8cc1Swenshuai.xi REST_ADC = ( REST_ADC_DIG_B | REST_ADC_DIG_A ), ///< Reset All ADC 220*53ee8cc1Swenshuai.xi } ADC_RESET; 221*53ee8cc1Swenshuai.xi 222*53ee8cc1Swenshuai.xi typedef enum 223*53ee8cc1Swenshuai.xi { 224*53ee8cc1Swenshuai.xi E_ADC_IDAC_FULL_MODE, 225*53ee8cc1Swenshuai.xi E_ADC_IDAC_HALF_MODE, 226*53ee8cc1Swenshuai.xi E_ADC_IDAC_QUART_MODE, 227*53ee8cc1Swenshuai.xi E_ADC_IDAC_MODE_MAX, 228*53ee8cc1Swenshuai.xi } ADC_DacCurrentMode_t; 229*53ee8cc1Swenshuai.xi 230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 231*53ee8cc1Swenshuai.xi // Function and Variable 232*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 233*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 234*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 235*53ee8cc1Swenshuai.xi /// Enable and Disable CVBS out. This will setup ADC part for CVBS out (monitor out). 236*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 237*53ee8cc1Swenshuai.xi /// @param bEnable \b IN Enable CVBS Out 238*53ee8cc1Swenshuai.xi /// @param enInputPortType \b IN The source need to monitor out. 239*53ee8cc1Swenshuai.xi /// @param isDigitalSource \b IN Tell the driver current source is digital source or not. (ex. If internal VIF used in ATV, it will be digital source) 240*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 241*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetCVBSOut(MS_BOOL bEnable, E_DEST_TYPE enOutputType , INPUT_SOURCE_TYPE_t enInputPortType, MS_BOOL isDigitalSource); 242*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 243*53ee8cc1Swenshuai.xi /// Check the CVBS out enable status. 244*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 245*53ee8cc1Swenshuai.xi /// @param bEnable \b IN Enable CVBS Out 246*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 247*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 248*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsCVBSOutEnabled(E_DEST_TYPE enOutputType); 249*53ee8cc1Swenshuai.xi 250*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 251*53ee8cc1Swenshuai.xi /// Set ADC Sample clock 252*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 253*53ee8cc1Swenshuai.xi /// @param u16Value \b IN value need to be set. 254*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 255*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPcClock(MS_U16 u16Clock); 256*53ee8cc1Swenshuai.xi 257*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 258*53ee8cc1Swenshuai.xi /// Set ADC Phase, pls use MApi_XC_ADC_SetPhaseEx instead 259*53ee8cc1Swenshuai.xi /// @ingroup ADC_ToBeRemove 260*53ee8cc1Swenshuai.xi /// @param u8Value \b IN The adc phase need to be update 261*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 262*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhase(MS_U8 u8Value); 263*53ee8cc1Swenshuai.xi 264*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 265*53ee8cc1Swenshuai.xi /// Set ADC Phase for extend bit 266*53ee8cc1Swenshuai.xi /// @ingroup ADC_ToBeModified 267*53ee8cc1Swenshuai.xi /// @param u16Value \b IN The adc phase need to be update 268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 269*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhaseEx(MS_U16 u16Value); 270*53ee8cc1Swenshuai.xi 271*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 272*53ee8cc1Swenshuai.xi /// Get current ADC Phase set 273*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 274*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 \b Current Phase 275*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 276*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseRange( void ); 277*53ee8cc1Swenshuai.xi 278*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 279*53ee8cc1Swenshuai.xi /// Get current ADC Phase set 280*53ee8cc1Swenshuai.xi /// @ingroup ADC_ToBeRemove 281*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 \b Current Phase 282*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 283*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ADC_GetPhase( void ); 284*53ee8cc1Swenshuai.xi 285*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 286*53ee8cc1Swenshuai.xi /// Get current ADC Phase set for extend bit 287*53ee8cc1Swenshuai.xi /// @ingroup ADC_ToBeModified 288*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 \b Current Phase 289*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 290*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseEx( void ); 291*53ee8cc1Swenshuai.xi 292*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 293*53ee8cc1Swenshuai.xi /// Get the status for Scart RGB 294*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 295*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 296*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 297*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsScartRGB(void); 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 300*53ee8cc1Swenshuai.xi /// Get the status for PC clock 301*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 302*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 303*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 304*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPcClock(void ); 305*53ee8cc1Swenshuai.xi 306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 307*53ee8cc1Swenshuai.xi ///Get SOG level range 308*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 309*53ee8cc1Swenshuai.xi ///@param u32Min \b OUT: min of SOG level 310*53ee8cc1Swenshuai.xi ///@param u32Max \b OUT: max of SOG level 311*53ee8cc1Swenshuai.xi ///@param u32Recommend_value \b OUT: recommend value 312*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 313*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetSoGLevelRange(MS_U32 *u32min, MS_U32 *u32max, MS_U32 *u32Recommend_value); 314*53ee8cc1Swenshuai.xi 315*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 316*53ee8cc1Swenshuai.xi ///Set SOG level 317*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 318*53ee8cc1Swenshuai.xi ///@param u32Min \b IN: set SOG level 319*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 320*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGLevel(MS_U32 u32Value); 321*53ee8cc1Swenshuai.xi 322*53ee8cc1Swenshuai.xi // power 323*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 324*53ee8cc1Swenshuai.xi /// Turn off ADC 325*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 326*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 327*53ee8cc1Swenshuai.xi void MApi_XC_ADC_PowerOff(void); 328*53ee8cc1Swenshuai.xi 329*53ee8cc1Swenshuai.xi // ADC calibration 330*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 331*53ee8cc1Swenshuai.xi /// Get ADC Default gain / offset by referring input structure. 332*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 333*53ee8cc1Swenshuai.xi /// @param eSource \b IN The input source 334*53ee8cc1Swenshuai.xi /// @param pstADCSetting \b IN gain / offset need to be set 335*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 336*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetDefaultGainOffset(INPUT_SOURCE_TYPE_t eSource , APIXC_AdcGainOffsetSetting* pstADCSetting); 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 339*53ee8cc1Swenshuai.xi /// get maximal value of offset 340*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 341*53ee8cc1Swenshuai.xi /// @param 342*53ee8cc1Swenshuai.xi /// @return maximal value of offset 343*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 344*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalOffsetValue(void); 345*53ee8cc1Swenshuai.xi 346*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 347*53ee8cc1Swenshuai.xi /// get maximal value of gain 348*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 349*53ee8cc1Swenshuai.xi /// @param 350*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 \b maximal value of gain 351*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 352*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalGainValue(void); 353*53ee8cc1Swenshuai.xi 354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 355*53ee8cc1Swenshuai.xi /// get center value of gain 356*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 357*53ee8cc1Swenshuai.xi /// @param 358*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 \b return center value of gain 359*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 360*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterGain(void); 361*53ee8cc1Swenshuai.xi 362*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 363*53ee8cc1Swenshuai.xi /// get center value of offset 364*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 365*53ee8cc1Swenshuai.xi /// @param 366*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 \b return center value of offset 367*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 368*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterOffset(void); 369*53ee8cc1Swenshuai.xi 370*53ee8cc1Swenshuai.xi // Set Gain & Offset 371*53ee8cc1Swenshuai.xi // u8Color is one of ADC_CHANNEL_t. 372*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 373*53ee8cc1Swenshuai.xi /// Set Gain value 374*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 375*53ee8cc1Swenshuai.xi /// @param u8color \b IN The channel type need to be set 376*53ee8cc1Swenshuai.xi /// @param u16value \b IN The value need to be set. 377*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 378*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetGain(MS_U8 u8Color, MS_U16 u16Value); 379*53ee8cc1Swenshuai.xi 380*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 381*53ee8cc1Swenshuai.xi /// Set offset value 382*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 383*53ee8cc1Swenshuai.xi /// @param u8color \b IN The channel type need to be set 384*53ee8cc1Swenshuai.xi /// @param u16value \b IN The value need to be set. 385*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 386*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetOffset(MS_U8 u8Color, MS_U16 u16Value); 387*53ee8cc1Swenshuai.xi 388*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 389*53ee8cc1Swenshuai.xi /// Set ADC gain / offset by referring input structure. 390*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 391*53ee8cc1Swenshuai.xi /// @param pstADCSetting \b IN gain / offset need to be set 392*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 393*53ee8cc1Swenshuai.xi void MApi_XC_ADC_AdjustGainOffset(APIXC_AdcGainOffsetSetting* pstADCSetting); 394*53ee8cc1Swenshuai.xi 395*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 396*53ee8cc1Swenshuai.xi /// Set ADC Internal calibration. (need to be set during set mode) 397*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 398*53ee8cc1Swenshuai.xi /// @param enInputSourceType \b IN current input source. 399*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 400*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Source_Calibrate(INPUT_SOURCE_TYPE_t enInputSourceType); 401*53ee8cc1Swenshuai.xi 402*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 403*53ee8cc1Swenshuai.xi ///Set SOG level 404*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 405*53ee8cc1Swenshuai.xi ///@param u32Min \b IN: set SOG calibration 406*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 407*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGCal(void); 408*53ee8cc1Swenshuai.xi 409*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 410*53ee8cc1Swenshuai.xi //Set SCART RGB PIPE Delay 411*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 412*53ee8cc1Swenshuai.xi ///@param u8Value \b IN: set PIP Delay 413*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 414*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetRGB_PIPE_Delay(MS_U8 u8Value); 415*53ee8cc1Swenshuai.xi 416*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 417*53ee8cc1Swenshuai.xi //Set Scart RGB Sync on green clamp delay and duration value 418*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 419*53ee8cc1Swenshuai.xi ///@param u16Clpdly \b IN: set clamp Delay 420*53ee8cc1Swenshuai.xi ///@param u16Caldur \b IN: set clamp duration 421*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 422*53ee8cc1Swenshuai.xi void MApi_XC_ADC_ScartRGB_SOG_ClampDelay(MS_U16 u16Clpdly, MS_U16 u16Caldur); 423*53ee8cc1Swenshuai.xi 424*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 425*53ee8cc1Swenshuai.xi //Enable Loose LPF 426*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 427*53ee8cc1Swenshuai.xi ///@param benable \b IN: Enable Loose LPF 428*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 429*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_YPbPrLooseLPF(MS_BOOL benable); 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 432*53ee8cc1Swenshuai.xi ///Set SOG BW 433*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 434*53ee8cc1Swenshuai.xi ///@param u16value \b IN: set SOG BW 435*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 436*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_SOGBW(MS_U16 u16value); 437*53ee8cc1Swenshuai.xi 438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 439*53ee8cc1Swenshuai.xi // Set Clamp Duration 440*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 441*53ee8cc1Swenshuai.xi ///@param u16Caldur \b IN: set clamp duration 442*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 443*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetClampDuration(MS_U16 u16Value); 444*53ee8cc1Swenshuai.xi 445*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 446*53ee8cc1Swenshuai.xi ///Enable HW calibration, will load hw adc table when changing source 447*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 448*53ee8cc1Swenshuai.xi ///@param bEnable \b IN: enable hw calibration 449*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL \b return the status 450*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 451*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_EnableHWCalibration(MS_BOOL bEnable); 452*53ee8cc1Swenshuai.xi 453*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 454*53ee8cc1Swenshuai.xi ///This function set CVBS Out IDAC curret mode. 455*53ee8cc1Swenshuai.xi /// @ingroup ADC_FEATURE 456*53ee8cc1Swenshuai.xi ///@param stMode \b IDAC current mode. 457*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL \b return the status 458*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 459*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_SetIdacCurrentMode(ADC_DacCurrentMode_t eMode); 460*53ee8cc1Swenshuai.xi 461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 462*53ee8cc1Swenshuai.xi ///This function get CVBS Out IDAC current mode. 463*53ee8cc1Swenshuai.xi /// @ingroup ADC_INFO 464*53ee8cc1Swenshuai.xi ///@return IDAC current mode. 465*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 466*53ee8cc1Swenshuai.xi ADC_DacCurrentMode_t MApi_XC_ADC_GetIdacCurrentMode(void); 467*53ee8cc1Swenshuai.xi 468*53ee8cc1Swenshuai.xi #ifdef __cplusplus 469*53ee8cc1Swenshuai.xi } 470*53ee8cc1Swenshuai.xi #endif 471*53ee8cc1Swenshuai.xi 472*53ee8cc1Swenshuai.xi #endif // _API_XC_ADC_H_ 473*53ee8cc1Swenshuai.xi 474