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.h 98*53ee8cc1Swenshuai.xi /// @brief XC Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup Video Video modules 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi XC is used for \n 105*53ee8cc1Swenshuai.xi 1. video display \n 106*53ee8cc1Swenshuai.xi 2. 3D support \n 107*53ee8cc1Swenshuai.xi 3. mirror mode spoort \n 108*53ee8cc1Swenshuai.xi 4. frame rate convert and output timing control \n 109*53ee8cc1Swenshuai.xi 5. OSDC timing control \n 110*53ee8cc1Swenshuai.xi For more information,see \link XC_CORE XC_CORE modules \endlink \n 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi There are three parts as follow,\n 113*53ee8cc1Swenshuai.xi ACE is used for \n 114*53ee8cc1Swenshuai.xi 1. control the picture quality,include brightness, contrast, CSC ,etc.\n 115*53ee8cc1Swenshuai.xi 2. MWE function.\n 116*53ee8cc1Swenshuai.xi DBC is used for\n 117*53ee8cc1Swenshuai.xi 1. Dynamic Backlight Curve : Calculate the DBC base on average value.\n 118*53ee8cc1Swenshuai.xi DLC is used for\n 119*53ee8cc1Swenshuai.xi 1. Dynamic Luma Curve : Calculate the DLC curve base on histogram and average value.\n 120*53ee8cc1Swenshuai.xi For more information,see \link XC_BE XC_BE modules \endlink \n 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi ADC is used to control ADC relative setting for YPbPr, VGA, SCART, AV, SV, ATV.\n 123*53ee8cc1Swenshuai.xi For more information,see \link XC_SRC XC_SRC modules \endlink \n 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi There are three parts as follow,\n 126*53ee8cc1Swenshuai.xi Auto is used to implement auto adjust and auto calibration.\n 127*53ee8cc1Swenshuai.xi Mode Parse mechanism is a fast and easy way to look up input timing according to different timing characteristics.\n 128*53ee8cc1Swenshuai.xi PC monitor is used to detect signal information.\n 129*53ee8cc1Swenshuai.xi For more information,see \link XC_FE XC_FE modules \endlink \n 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi DIP is a video capture function ,the whole function block separate four part,source select, clip window, HV scaling down , output window.\n 132*53ee8cc1Swenshuai.xi For more information,see \link XC_DWIN XC_DWIN modules \endlink 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi * \defgroup XC_CORE XC_CORE modules 135*53ee8cc1Swenshuai.xi * \ingroup Video 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi XC is used for \n 138*53ee8cc1Swenshuai.xi 1. video display \n 139*53ee8cc1Swenshuai.xi 2. 3D support \n 140*53ee8cc1Swenshuai.xi 3. mirror mode spoort \n 141*53ee8cc1Swenshuai.xi 4. frame rate convert and output timing control \n 142*53ee8cc1Swenshuai.xi 5. OSDC timing control \n 143*53ee8cc1Swenshuai.xi For more information,see \link XC XC interface (apiXC.h) \endlink 144*53ee8cc1Swenshuai.xi 145*53ee8cc1Swenshuai.xi * \defgroup XC XC interface (apiXC.h) 146*53ee8cc1Swenshuai.xi * \ingroup XC_CORE 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi XC is used for: 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi - 1. video display 151*53ee8cc1Swenshuai.xi - support input source as VGA, ATV, CVBS, S-video, YPbPr, SCART, HDMI, DTV, MM 152*53ee8cc1Swenshuai.xi - support output as main window, sub window, CVBS out 153*53ee8cc1Swenshuai.xi - suoport crop, scaling video to any size and position for display 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi - 2. 3D support 156*53ee8cc1Swenshuai.xi - support 3D input format as frame packing, field alternative, line alternative, side by side, top bottom, checker board, frame alternative 157*53ee8cc1Swenshuai.xi - support 3D output format as line alternative, top bottom, side by side, frame alternative, checker board, pixel alternative, only L frame, only R frame 158*53ee8cc1Swenshuai.xi - support normal 2D convert to 3D 159*53ee8cc1Swenshuai.xi 160*53ee8cc1Swenshuai.xi - 3. mirror mode spoort 161*53ee8cc1Swenshuai.xi - support H mirror, V mirror, and H+V mirror 162*53ee8cc1Swenshuai.xi 163*53ee8cc1Swenshuai.xi - 4. frame rate convert and output timing control 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi - 5. OSDC timing control 166*53ee8cc1Swenshuai.xi - support for video and OSD seperate transfer with VB1 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi <b> Operation Code Flow: </b> \n 169*53ee8cc1Swenshuai.xi check flow chart directly. 170*53ee8cc1Swenshuai.xi \image html apiXC_code_follow.png 171*53ee8cc1Swenshuai.xi 172*53ee8cc1Swenshuai.xi * \defgroup XC_INIT XC init control 173*53ee8cc1Swenshuai.xi * \ingroup XC 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi *! \defgroup XC_INFO XC Infomation pool 176*53ee8cc1Swenshuai.xi * \ingroup XC 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi *! \defgroup XC_TIMING_DETECT XC Timing detect 179*53ee8cc1Swenshuai.xi * \ingroup XC 180*53ee8cc1Swenshuai.xi 181*53ee8cc1Swenshuai.xi *! \defgroup XC_MUX XC mux and path setting 182*53ee8cc1Swenshuai.xi * \ingroup XC 183*53ee8cc1Swenshuai.xi 184*53ee8cc1Swenshuai.xi *! \defgroup XC_SCALER XC scaler function 185*53ee8cc1Swenshuai.xi * \ingroup XC 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi *! \defgroup XC_FRC XC embedded FRC function 188*53ee8cc1Swenshuai.xi * \ingroup XC 189*53ee8cc1Swenshuai.xi 190*53ee8cc1Swenshuai.xi *! \defgroup XC_3D XC 3D function 191*53ee8cc1Swenshuai.xi * \ingroup XC 192*53ee8cc1Swenshuai.xi 193*53ee8cc1Swenshuai.xi *! \defgroup XC_DS XC DS function 194*53ee8cc1Swenshuai.xi * \ingroup XC 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi *! \defgroup XC_PQ XC PQ related function 197*53ee8cc1Swenshuai.xi * \ingroup XC 198*53ee8cc1Swenshuai.xi 199*53ee8cc1Swenshuai.xi *! \defgroup XC_LD XC Local Dimming function 200*53ee8cc1Swenshuai.xi * \ingroup XC 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi *! \defgroup XC_OSD XC OSD related function 203*53ee8cc1Swenshuai.xi * \ingroup XC 204*53ee8cc1Swenshuai.xi 205*53ee8cc1Swenshuai.xi *! \defgroup XC_VE XC VE function 206*53ee8cc1Swenshuai.xi * \ingroup XC 207*53ee8cc1Swenshuai.xi 208*53ee8cc1Swenshuai.xi *! \defgroup XC_DISPLAY XC display function 209*53ee8cc1Swenshuai.xi * \ingroup XC 210*53ee8cc1Swenshuai.xi 211*53ee8cc1Swenshuai.xi *! \defgroup XC_GAMMA XC gamma function 212*53ee8cc1Swenshuai.xi * \ingroup XC 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi *! \defgroup XC_TEST_PATTERN XC test pattern 215*53ee8cc1Swenshuai.xi * \ingroup XC 216*53ee8cc1Swenshuai.xi 217*53ee8cc1Swenshuai.xi *! \defgroup XC_UTILITY XC utility function 218*53ee8cc1Swenshuai.xi * \ingroup XC 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xi *! \defgroup XC_ToBeModified XC api to be modified 221*53ee8cc1Swenshuai.xi * \ingroup XC 222*53ee8cc1Swenshuai.xi 223*53ee8cc1Swenshuai.xi *! \defgroup XC_ToBeRemove XC api to be removed 224*53ee8cc1Swenshuai.xi * \ingroup XC 225*53ee8cc1Swenshuai.xi */ 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi #ifndef _API_XC_H_ 228*53ee8cc1Swenshuai.xi #define _API_XC_H_ 229*53ee8cc1Swenshuai.xi 230*53ee8cc1Swenshuai.xi #include "MsDevice.h" 231*53ee8cc1Swenshuai.xi // Driver 232*53ee8cc1Swenshuai.xi #include "drvXC_IOPort.h" 233*53ee8cc1Swenshuai.xi #include "UFO.h" 234*53ee8cc1Swenshuai.xi //? SYMBOL_WEAK defined here , but cause SN compile error 235*53ee8cc1Swenshuai.xi //#include "MsCommon.h" 236*53ee8cc1Swenshuai.xi #ifdef __cplusplus 237*53ee8cc1Swenshuai.xi extern "C" 238*53ee8cc1Swenshuai.xi { 239*53ee8cc1Swenshuai.xi #endif 240*53ee8cc1Swenshuai.xi 241*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 242*53ee8cc1Swenshuai.xi // Macro and Define 243*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 244*53ee8cc1Swenshuai.xi 245*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 246*53ee8cc1Swenshuai.xi // This macro defined in mscommon.h originally, here just for avoid SN compile error 247*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 248*53ee8cc1Swenshuai.xi #ifndef SYMBOL_WEAK 249*53ee8cc1Swenshuai.xi #define SYMBOL_WEAK __attribute__((weak)) 250*53ee8cc1Swenshuai.xi #endif 251*53ee8cc1Swenshuai.xi 252*53ee8cc1Swenshuai.xi // library information 253*53ee8cc1Swenshuai.xi #define MSIF_XC_LIB_CODE {'X','C','_','_'} 254*53ee8cc1Swenshuai.xi #define MSIF_XC_LIBVER {'0','9'} 255*53ee8cc1Swenshuai.xi #define MSIF_XC_BUILDNUM {'1','0'} 256*53ee8cc1Swenshuai.xi #define MSIF_XC_CHANGELIST {'0','0','7','0','9','8','0','1'} 257*53ee8cc1Swenshuai.xi #define XC_API_VERSION /* Character String for DRV/API version */ \ 258*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 259*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 260*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 261*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 262*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 263*53ee8cc1Swenshuai.xi MSIF_CPU, \ 264*53ee8cc1Swenshuai.xi MSIF_XC_LIB_CODE , /* IP__ */ \ 265*53ee8cc1Swenshuai.xi MSIF_XC_LIBVER , /* 0.0 ~ Z.Z */ \ 266*53ee8cc1Swenshuai.xi MSIF_XC_BUILDNUM , /* 00 ~ 99 */ \ 267*53ee8cc1Swenshuai.xi MSIF_XC_CHANGELIST, /* CL# */ \ 268*53ee8cc1Swenshuai.xi MSIF_OS 269*53ee8cc1Swenshuai.xi 270*53ee8cc1Swenshuai.xi #define XC_INITDATA_VERSION 1 271*53ee8cc1Swenshuai.xi #define XC_OUTPUT_TIMING_ADJUST_VERSION 1 272*53ee8cc1Swenshuai.xi /// PANEL_INFO_EX version of current XC lib 273*53ee8cc1Swenshuai.xi #define PANEL_INFO_EX_VERSION 2 274*53ee8cc1Swenshuai.xi /// hw 2d to 3d para version 275*53ee8cc1Swenshuai.xi #define HW2DTO3DPARA_VERSION 2 276*53ee8cc1Swenshuai.xi /// 3d detect format para version 277*53ee8cc1Swenshuai.xi #define DETECT3DFORMATPARA_VERSION 1 278*53ee8cc1Swenshuai.xi 279*53ee8cc1Swenshuai.xi /// ApiStatusEX version of current XC lib 280*53ee8cc1Swenshuai.xi /// Define below to distinguish from API_PNLSTATUS_EX_VERSION 281*53ee8cc1Swenshuai.xi #define API_XCSTATUS_EX_VERSION 5 282*53ee8cc1Swenshuai.xi #define API_STATUS_EX_VERSION API_XCSTATUS_EX_VERSION 283*53ee8cc1Swenshuai.xi 284*53ee8cc1Swenshuai.xi /// 3d fp info version of current XC lib 285*53ee8cc1Swenshuai.xi #define XC_3D_FPINFOPARA_VERSION 1 286*53ee8cc1Swenshuai.xi /// report pixel info version of current XC lib 287*53ee8cc1Swenshuai.xi #define XC_REPORT_PIXELINFO_VERSION 1 288*53ee8cc1Swenshuai.xi 289*53ee8cc1Swenshuai.xi #define API_XCDS_INFO_VERSION 1 290*53ee8cc1Swenshuai.xi #define API_DS_INFO_VERSION API_XCDS_INFO_VERSION 291*53ee8cc1Swenshuai.xi 292*53ee8cc1Swenshuai.xi /// osdc disp info version of current XC lib 293*53ee8cc1Swenshuai.xi #define ODSC_DISPINFO_VERSIN 1 294*53ee8cc1Swenshuai.xi 295*53ee8cc1Swenshuai.xi #define XC_INVALID_HEAP_ID 0xFFFFFFFF 296*53ee8cc1Swenshuai.xi 297*53ee8cc1Swenshuai.xi #define _BIT(_bit_) (1 << (_bit_)) 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi //---------------------------- 300*53ee8cc1Swenshuai.xi // Return value 301*53ee8cc1Swenshuai.xi //---------------------------- 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi /// XC Return Value 304*53ee8cc1Swenshuai.xi typedef enum 305*53ee8cc1Swenshuai.xi { 306*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL = 0, ///<Fail 307*53ee8cc1Swenshuai.xi E_APIXC_RET_OK, ///<OK 308*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_FUN_NOT_SUPPORT, ///<Fail 309*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_ENUM_NOT_SUPPORT, ///<Fail 310*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_INVALID_PARAMETER, ///<Fail 311*53ee8cc1Swenshuai.xi } E_APIXC_ReturnValue; 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi //---------------------------- 314*53ee8cc1Swenshuai.xi // Debug Switch 315*53ee8cc1Swenshuai.xi //---------------------------- 316*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_OFF (0x0000) ///< Turn off 317*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETWINDOW (0x0001) ///< Set Window 318*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETTIMING (0x0002) ///< LPLL / SetPanelTiming 319*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SYNCDETECT (0x0004) ///< Sync detection ======>Not using it by now 320*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_MUX (0x0008) ///< Mux / Path Creation 321*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_MODEPARSE (0x0010) ///< Mode Parse ======>Not using it by now 322*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_HDMIMONITOR (0x0020) ///< HDMI and Package Monitor ===>Not using it by now 323*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_AUTOGEOMETRY (0x0040) ///< Auto Geometry / Auto Calibration 324*53ee8cc1Swenshuai.xi #define XC_DGBLEVEL_CROPCALC (0x0080) ///< Crop Window / Memory / OPM / IPM calculation 325*53ee8cc1Swenshuai.xi 326*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETTIMING_ISR (0x0100) ///< ISR / SetPanelTiming 327*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_DWIN_SETWINDOW (0x0200) ///< DWIN / Set Window 328*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_FUNCTION_TRACE (0x0400) ///< Trace XC function using status 329*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_PARAMETER_TRACE (0x0800) ///< Trace XC function parameter 330*53ee8cc1Swenshuai.xi 331*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SEAMLESSZAP (0x1000) ///< Seamless Zapping 332*53ee8cc1Swenshuai.xi //---------------------------- 333*53ee8cc1Swenshuai.xi // Input signal detect 334*53ee8cc1Swenshuai.xi //---------------------------- 335*53ee8cc1Swenshuai.xi 336*53ee8cc1Swenshuai.xi #define XC_MD_VSYNC_POR_BIT _BIT(0) ///< VSnc polarity bit(0/1 = positive/negative) 337*53ee8cc1Swenshuai.xi #define XC_MD_HSYNC_POR_BIT _BIT(1) ///< HSync polarity bit(0/1 = positive/negative) 338*53ee8cc1Swenshuai.xi #define XC_MD_HSYNC_LOSS_BIT _BIT(2) ///< HSync loss bit 339*53ee8cc1Swenshuai.xi #define XC_MD_VSYNC_LOSS_BIT _BIT(3) ///< VSync loss bit 340*53ee8cc1Swenshuai.xi #define XC_MD_INTERLACE_BIT _BIT(4) ///< Interlace mode 341*53ee8cc1Swenshuai.xi #define XC_MD_USER_MODE_BIT _BIT(7) ///< User new mode (Not found in mode table) 342*53ee8cc1Swenshuai.xi #define XC_MD_SYNC_LOSS (XC_MD_HSYNC_LOSS_BIT | XC_MD_VSYNC_LOSS_BIT) ///< VSync & HSync loss bit 343*53ee8cc1Swenshuai.xi 344*53ee8cc1Swenshuai.xi //---------------------------- 345*53ee8cc1Swenshuai.xi // 3D macros 346*53ee8cc1Swenshuai.xi //---------------------------- 347*53ee8cc1Swenshuai.xi #define DOUBLEHD_PRESCALE_VONEHDSIZE (540) 348*53ee8cc1Swenshuai.xi 349*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_FRAME_VSIZE (1080) 350*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_FIELD_VSIZE (540) 351*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_HSIZE (1920) 352*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VACT_SPACE1 (23) 353*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VACT_SPACE2 (22) 354*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VSIZE (DOUBLEHD_1080X2I_FRAME_VSIZE*2+DOUBLEHD_1080X2I_VACT_SPACE1*2+DOUBLEHD_1080X2I_VACT_SPACE2) 355*53ee8cc1Swenshuai.xi 356*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_VSIZE (2205) 357*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_FRAME_VSIZE (1080) 358*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_HSIZE (1920) 359*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_GARBAGE_VSIZE (45) 360*53ee8cc1Swenshuai.xi 361*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_VSIZE (1470) 362*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_FRAME_VSIZE (720) 363*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_HSIZE (1280) 364*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_GARBAGE_VSIZE (30) 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_VSIZE (1201) 367*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_FRAME_VSIZE (576) 368*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_HSIZE (720) 369*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_GARBAGE_VSIZE (49) 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xi //720X480p 372*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_VSIZE (1005) 373*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_FRAME_VSIZE (480) 374*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_HSIZE (720) 375*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_GARBAGE_VSIZE (45) 376*53ee8cc1Swenshuai.xi 377*53ee8cc1Swenshuai.xi //640X480p 378*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_VSIZE (1005) 379*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_FRAME_VSIZE (480) 380*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_HSIZE (640) 381*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_GARBAGE_VSIZE (45) 382*53ee8cc1Swenshuai.xi 383*53ee8cc1Swenshuai.xi // Field Interleave 384*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE (1080) 385*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_FIELD_VISZE (540) 386*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_HISZE (1920) 387*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_VACT_SPACE (23) 388*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_VISZE (FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE+FIELD_INTERLEAVE_1080X2I_VACT_SPACE) 389*53ee8cc1Swenshuai.xi 390*53ee8cc1Swenshuai.xi 391*53ee8cc1Swenshuai.xi ///< When disable panel_info_ex, this means disable all valid panel info 392*53ee8cc1Swenshuai.xi #define PANEL_INFO_EX_INVALID_ALL 0xFFFF 393*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 394*53ee8cc1Swenshuai.xi // Type and Structure 395*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 396*53ee8cc1Swenshuai.xi 397*53ee8cc1Swenshuai.xi //---------------------------- 398*53ee8cc1Swenshuai.xi // Common 399*53ee8cc1Swenshuai.xi //---------------------------- 400*53ee8cc1Swenshuai.xi 401*53ee8cc1Swenshuai.xi /// Define mute type 402*53ee8cc1Swenshuai.xi typedef enum 403*53ee8cc1Swenshuai.xi { 404*53ee8cc1Swenshuai.xi E_MAIN_WINDOW_MUTE =0, ///< main window mute 405*53ee8cc1Swenshuai.xi E_SUB_WINDOW_MUTE =1, ///< sub window mute 406*53ee8cc1Swenshuai.xi E_PANEL_MUTE = 2 ///< panel mute 407*53ee8cc1Swenshuai.xi }EN_MUTE_TYPE; 408*53ee8cc1Swenshuai.xi 409*53ee8cc1Swenshuai.xi 410*53ee8cc1Swenshuai.xi /// Define window type 411*53ee8cc1Swenshuai.xi typedef enum 412*53ee8cc1Swenshuai.xi { 413*53ee8cc1Swenshuai.xi MAIN_WINDOW=0, ///< main window if with PIP or without PIP 414*53ee8cc1Swenshuai.xi SUB_WINDOW=1, ///< sub window if PIP 415*53ee8cc1Swenshuai.xi MAX_WINDOW /// The max support window 416*53ee8cc1Swenshuai.xi }SCALER_WIN; 417*53ee8cc1Swenshuai.xi 418*53ee8cc1Swenshuai.xi #define PIP_WINDOWS MAX_WINDOW 419*53ee8cc1Swenshuai.xi 420*53ee8cc1Swenshuai.xi /// Define Window position and size attribute 421*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 422*53ee8cc1Swenshuai.xi { 423*53ee8cc1Swenshuai.xi MS_U16 x; ///<start x of the window 424*53ee8cc1Swenshuai.xi MS_U16 y; ///<start y of the window 425*53ee8cc1Swenshuai.xi MS_U16 width; ///<width of the window 426*53ee8cc1Swenshuai.xi MS_U16 height; ///<height of the window 427*53ee8cc1Swenshuai.xi } MS_WINDOW_TYPE; 428*53ee8cc1Swenshuai.xi 429*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 430*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 431*53ee8cc1Swenshuai.xi // This is abstract input source for XC library. If you want to add another one. 432*53ee8cc1Swenshuai.xi // Please contace with XC member 433*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 434*53ee8cc1Swenshuai.xi 435*53ee8cc1Swenshuai.xi /// Define Input type 436*53ee8cc1Swenshuai.xi typedef enum 437*53ee8cc1Swenshuai.xi { 438*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA, ///<0 VGA input 439*53ee8cc1Swenshuai.xi INPUT_SOURCE_TV, ///<1 TV input 440*53ee8cc1Swenshuai.xi 441*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS, ///<2 AV 1 442*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS2, ///<3 AV 2 443*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS3, ///<4 AV 3 444*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS4, ///<5 AV 4 445*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS5, ///<6 AV 5 446*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS6, ///<7 AV 6 447*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS7, ///<8 AV 7 448*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS8, ///<9 AV 8 449*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS_MAX, ///<10 AV max 450*53ee8cc1Swenshuai.xi 451*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO, ///<11 S-video 1 452*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO2, ///<12 S-video 2 453*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO3, ///<13 S-video 3 454*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO4, ///<14 S-video 4 455*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO_MAX, ///<15 S-video max 456*53ee8cc1Swenshuai.xi 457*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR, ///<16 Component 1 458*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR2, ///<17 Component 2 459*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR3, ///<18 Component 3 460*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR_MAX, ///<19 Component max 461*53ee8cc1Swenshuai.xi 462*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART, ///<20 Scart 1 463*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART2, ///<21 Scart 2 464*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART_MAX, ///<22 Scart max 465*53ee8cc1Swenshuai.xi 466*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI, ///<23 HDMI 1 467*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI2, ///<24 HDMI 2 468*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI3, ///<25 HDMI 3 469*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI4, ///<26 HDMI 4 470*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI_MAX, ///<27 HDMI max 471*53ee8cc1Swenshuai.xi 472*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV, ///<28 DTV 473*53ee8cc1Swenshuai.xi 474*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI, ///<29 DVI 1 475*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI2, ///<30 DVI 2 476*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI3, ///<31 DVI 2 477*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI4, ///<32 DVI 4 478*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI_MAX, ///<33 DVI max 479*53ee8cc1Swenshuai.xi 480*53ee8cc1Swenshuai.xi // Application source 481*53ee8cc1Swenshuai.xi INPUT_SOURCE_STORAGE, ///<34 Storage 482*53ee8cc1Swenshuai.xi INPUT_SOURCE_KTV, ///<35 KTV 483*53ee8cc1Swenshuai.xi INPUT_SOURCE_JPEG, ///<36 JPEG 484*53ee8cc1Swenshuai.xi 485*53ee8cc1Swenshuai.xi //Support Dual MVOP port 486*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV2, ///<37 DTV 487*53ee8cc1Swenshuai.xi INPUT_SOURCE_STORAGE2, ///<38 Storage 488*53ee8cc1Swenshuai.xi 489*53ee8cc1Swenshuai.xi //Support Third MVOP port 490*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV3, ///<39 DTV 491*53ee8cc1Swenshuai.xi 492*53ee8cc1Swenshuai.xi // Support OP capture 493*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCALER_OP, ///<40 scaler OP 494*53ee8cc1Swenshuai.xi 495*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA2, /// <41 VGA2 496*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA3, /// <42 VGA3 497*53ee8cc1Swenshuai.xi 498*53ee8cc1Swenshuai.xi INPUT_SOURCE_NUM, ///<43 number of the source 499*53ee8cc1Swenshuai.xi INPUT_SOURCE_NONE = INPUT_SOURCE_NUM, ///<NULL input 500*53ee8cc1Swenshuai.xi } INPUT_SOURCE_TYPE_t; 501*53ee8cc1Swenshuai.xi 502*53ee8cc1Swenshuai.xi #define IsSrcTypeAV(x) (((x)>=INPUT_SOURCE_CVBS)&&((x)<=INPUT_SOURCE_CVBS_MAX))/// x is AV 503*53ee8cc1Swenshuai.xi #define IsSrcTypeSV(x) (((x)>=INPUT_SOURCE_SVIDEO)&&((x)<=INPUT_SOURCE_SVIDEO_MAX))///< x is SV 504*53ee8cc1Swenshuai.xi #define IsSrcTypeATV(x) ((x)==INPUT_SOURCE_TV)///< x is ATV 505*53ee8cc1Swenshuai.xi #define IsSrcTypeScart(x) (((x)>=INPUT_SOURCE_SCART)&&((x)<=INPUT_SOURCE_SCART_MAX))///< x is Scart 506*53ee8cc1Swenshuai.xi #define IsSrcTypeHDMI(x) (((x)>=INPUT_SOURCE_HDMI)&&((x)<=INPUT_SOURCE_HDMI_MAX))///< x is HDMI 507*53ee8cc1Swenshuai.xi #define IsSrcTypeVga(x) (((x)==INPUT_SOURCE_VGA) || ((x)==INPUT_SOURCE_VGA2) || ((x)==INPUT_SOURCE_VGA3))///< x is VGA 508*53ee8cc1Swenshuai.xi #define IsSrcTypeYPbPr(x) (((x)>=INPUT_SOURCE_YPBPR)&&((x)<=INPUT_SOURCE_YPBPR_MAX))///< x is YPbPr 509*53ee8cc1Swenshuai.xi #define IsSrcTypeDTV(x) (((x)==INPUT_SOURCE_DTV) || ((x)==INPUT_SOURCE_DTV2) || ((x)==INPUT_SOURCE_DTV3))///< x is DTV 510*53ee8cc1Swenshuai.xi #define IsSrcTypeDVI(x) (((x)>=INPUT_SOURCE_DVI)&&((x)<=INPUT_SOURCE_DVI_MAX))///< x is DVI 511*53ee8cc1Swenshuai.xi #define IsSrcTypeJpeg(x) ((x)==INPUT_SOURCE_JPEG)///< x is JPEG 512*53ee8cc1Swenshuai.xi #define IsSrcTypeStorage(x) (((x)==INPUT_SOURCE_STORAGE) || ((x)==INPUT_SOURCE_STORAGE2) ||IsSrcTypeJpeg(x))///< x is Storage 513*53ee8cc1Swenshuai.xi #define IsSrcTypeDigitalVD(x) ( IsSrcTypeAV(x)||IsSrcTypeSV(x)||IsSrcTypeATV(x)||IsSrcTypeScart(x))///< x is VD 514*53ee8cc1Swenshuai.xi #define IsSrcTypeAnalog(x) ( IsSrcTypeVga(x)|| IsSrcTypeYPbPr(x))///< x is Analog 515*53ee8cc1Swenshuai.xi #define IsSrcTypeVideo(x) ( IsSrcTypeYPbPr(x) || IsSrcTypeATV(x) || IsSrcTypeAV(x) || IsSrcTypeSV(x) || IsSrcTypeScart(x) || IsSrcTypeDTV(x) ) ///< x is Video 516*53ee8cc1Swenshuai.xi #define IsSrcTypeCapture(x) ((x)==INPUT_SOURCE_SCALER_OP)///< x is scaler OP 517*53ee8cc1Swenshuai.xi 518*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 519*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 520*53ee8cc1Swenshuai.xi // This is abstract output source for XC library. If you want to add another one. 521*53ee8cc1Swenshuai.xi // Please contace with XC member 522*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi /// Define output type 525*53ee8cc1Swenshuai.xi typedef enum 526*53ee8cc1Swenshuai.xi { 527*53ee8cc1Swenshuai.xi OUTPUT_NONE = 0, ///<NULL output 528*53ee8cc1Swenshuai.xi OUTPUT_SCALER_MAIN_WINDOW = 1, ///<output to Scaler main window 529*53ee8cc1Swenshuai.xi OUTPUT_SCALER2_MAIN_WINDOW = 2, 530*53ee8cc1Swenshuai.xi 531*53ee8cc1Swenshuai.xi OUTPUT_SCALER_SUB_WINDOW = 10, ///<output to Scaler sub window 532*53ee8cc1Swenshuai.xi OUTPUT_SCALER2_SUB_WINDOW = 11, 533*53ee8cc1Swenshuai.xi 534*53ee8cc1Swenshuai.xi OUTPUT_CVBS1 = 20, ///<output to CVBS1 535*53ee8cc1Swenshuai.xi OUTPUT_CVBS2, ///<output to CVBS2 536*53ee8cc1Swenshuai.xi // Reserved area 537*53ee8cc1Swenshuai.xi 538*53ee8cc1Swenshuai.xi OUTPUT_YPBPR0 = 40, ///<output to YPBPR0 539*53ee8cc1Swenshuai.xi OUTPUT_YPBPR1, ///<output to YPBPR1 540*53ee8cc1Swenshuai.xi // Reserved area 541*53ee8cc1Swenshuai.xi 542*53ee8cc1Swenshuai.xi OUTPUT_HDMI1 = 60, ///<output to HDMI1 543*53ee8cc1Swenshuai.xi OUTPUT_HDMI2, ///<output to HDMI2 544*53ee8cc1Swenshuai.xi 545*53ee8cc1Swenshuai.xi OUTPUT_OFFLINE_DETECT = 80, ///<output to OFFLINE detect 546*53ee8cc1Swenshuai.xi 547*53ee8cc1Swenshuai.xi OUTPUT_SCALER_DWIN = 100, ///<output to Dwin 548*53ee8cc1Swenshuai.xi 549*53ee8cc1Swenshuai.xi OUTPUT_NUM, ///<number of outputs 550*53ee8cc1Swenshuai.xi }E_DEST_TYPE; 551*53ee8cc1Swenshuai.xi 552*53ee8cc1Swenshuai.xi 553*53ee8cc1Swenshuai.xi /// Define DeInterlace mode 554*53ee8cc1Swenshuai.xi typedef enum 555*53ee8cc1Swenshuai.xi { 556*53ee8cc1Swenshuai.xi 557*53ee8cc1Swenshuai.xi MS_DEINT_OFF=0, ///<deinterlace mode off 558*53ee8cc1Swenshuai.xi MS_DEINT_2DDI_BOB, ///<deinterlace mode: BOB 559*53ee8cc1Swenshuai.xi MS_DEINT_2DDI_AVG, ///<deinterlace mode: AVG 560*53ee8cc1Swenshuai.xi MS_DEINT_3DDI_HISTORY, ///<deinterlace mode: HISTORY // 24 bit 561*53ee8cc1Swenshuai.xi MS_DEINT_3DDI, ///<deinterlace mode:3DDI// 16 bit 562*53ee8cc1Swenshuai.xi } MS_DEINTERLACE_MODE; 563*53ee8cc1Swenshuai.xi 564*53ee8cc1Swenshuai.xi 565*53ee8cc1Swenshuai.xi /// Define the members of IP Sync Status 566*53ee8cc1Swenshuai.xi typedef struct 567*53ee8cc1Swenshuai.xi { 568*53ee8cc1Swenshuai.xi MS_U8 u8SyncStatus; ///< IP Sync status: refer to MD_VSYNC_POR_BIT, etc 569*53ee8cc1Swenshuai.xi MS_U16 u16Hperiod; ///<H Period 570*53ee8cc1Swenshuai.xi MS_U16 u16Vtotal; ///<Vertcal total 571*53ee8cc1Swenshuai.xi } XC_IP_SYNC_STATUS; 572*53ee8cc1Swenshuai.xi 573*53ee8cc1Swenshuai.xi typedef enum 574*53ee8cc1Swenshuai.xi { 575*53ee8cc1Swenshuai.xi CMA_XC_SELF_MEM = 0, 576*53ee8cc1Swenshuai.xi CMA_XC_COBUFF_MEM = 1, 577*53ee8cc1Swenshuai.xi CMA_XC_MEM_NUM = 2, 578*53ee8cc1Swenshuai.xi } XC_CMA_CLIENT; 579*53ee8cc1Swenshuai.xi 580*53ee8cc1Swenshuai.xi typedef struct 581*53ee8cc1Swenshuai.xi { 582*53ee8cc1Swenshuai.xi MS_U32 u32HeapID; 583*53ee8cc1Swenshuai.xi MS_U64 u64AddrHeapOffset; 584*53ee8cc1Swenshuai.xi } XC_CMA_CONFIG; 585*53ee8cc1Swenshuai.xi 586*53ee8cc1Swenshuai.xi /// Define Freerun color 587*53ee8cc1Swenshuai.xi typedef enum 588*53ee8cc1Swenshuai.xi { 589*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_BLACK, 590*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_WHITE, 591*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_BLUE, 592*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_RED, 593*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_GREEN, 594*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_MAX, 595*53ee8cc1Swenshuai.xi } XC_FREERUN_COLOR; 596*53ee8cc1Swenshuai.xi 597*53ee8cc1Swenshuai.xi /// Define which panel output timing change mode is used to change VFreq for same panel 598*53ee8cc1Swenshuai.xi typedef enum 599*53ee8cc1Swenshuai.xi { 600*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_DCLK = 0, ///<change output DClk to change Vfreq. 601*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_HTOTAL = 1, ///<change H total to change Vfreq. 602*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_VTOTAL = 2, ///<change V total to change Vfreq. 603*53ee8cc1Swenshuai.xi } E_XC_PNL_OUT_TIMING_MODE; 604*53ee8cc1Swenshuai.xi 605*53ee8cc1Swenshuai.xi typedef enum 606*53ee8cc1Swenshuai.xi { 607*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TTL, ///< TTL type 608*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_LVDS, ///< LVDS type 609*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_RSDS, ///< RSDS type 610*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS, ///< TCON //E_XC_PNL_LPLL_MINILVDS_6P_2Link 611*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_ANALOG_MINILVDS, ///< Analog TCON 612*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DIGITAL_MINILVDS, ///< Digital TCON 613*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MFC, ///< Ursa (TTL output to Ursa) 614*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DAC_I, ///< DAC output 615*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DAC_P, ///< DAC output 616*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_PDPLVDS, ///< For PDP(Vsync use Manually MODE) 617*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EXT, 618*53ee8cc1Swenshuai.xi }E_XC_PNL_LPLL_TYPE; 619*53ee8cc1Swenshuai.xi 620*53ee8cc1Swenshuai.xi 621*53ee8cc1Swenshuai.xi typedef enum 622*53ee8cc1Swenshuai.xi { 623*53ee8cc1Swenshuai.xi 624*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_8P = E_XC_PNL_LPLL_EXT, 625*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_8P, 626*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_6P, 627*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_6P, 628*53ee8cc1Swenshuai.xi 629*53ee8cc1Swenshuai.xi ///< replace this with E_XC_PNL_LPLL_MINILVD 630*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_5P_2L, 631*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_4P_2L, 632*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_3P_2L, 633*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_6P_1L, 634*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_5P_1L, 635*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_4P_1L, 636*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_3P_1L, 637*53ee8cc1Swenshuai.xi 638*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HS_LVDS, ///< High speed LVDS 639*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HF_LVDS, ///< High Freqquency LVDS 640*53ee8cc1Swenshuai.xi 641*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TTL_TCON, 642*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_3P_8BIT, ///< 2 channel, 3 pair, 8 bits 643*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_4P_8BIT, ///< 2 channel, 4 pair, 8 bits 644*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_5P_8BIT, ///< 2 channel, 5 pair, 8 bits 645*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_6P_8BIT, ///< 2 channel, 6 pair, 8 bits 646*53ee8cc1Swenshuai.xi 647*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_3P_8BIT, ///< 1 channel, 3 pair, 8 bits 648*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_4P_8BIT, ///< 1 channel, 4 pair, 8 bits 649*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_5P_8BIT, ///< 1 channel, 5 pair, 8 bits 650*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_6P_8BIT, ///< 1 channel, 6 pair, 8 bits 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_3P_6BIT, ///< 2 channel, 3 pari, 6 bits 653*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_4P_6BIT, ///< 2 channel, 4 pari, 6 bits 654*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_5P_6BIT, ///< 2 channel, 5 pari, 6 bits 655*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_6P_6BIT, ///< 2 channel, 6 pari, 6 bits 656*53ee8cc1Swenshuai.xi 657*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_3P_6BIT, ///< 1 channel, 3 pair, 6 bits 658*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_4P_6BIT, ///< 1 channel, 4 pair, 6 bits 659*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_5P_6BIT, ///< 1 channel, 5 pair, 6 bits 660*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_6P_6BIT, ///< 1 channel, 6 pair, 6 bits 661*53ee8cc1Swenshuai.xi 662*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HDMI_BYPASS_MODE, //40 // HDMI Bypass Mode 663*53ee8cc1Swenshuai.xi 664*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_2P, /// 41 665*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_4P, /// 42 666*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_2P, /// 43 667*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_4P, /// 44 668*53ee8cc1Swenshuai.xi 669*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_4LANE, ///45 670*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_2LANE, ///46 671*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_1LANE, ///47 672*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_4LANE, ///48 673*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_2LANE, ///49 674*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_1LANE, ///50 675*53ee8cc1Swenshuai.xi 676*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_8LANE, ///51 677*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_8LANE, ///52 678*53ee8cc1Swenshuai.xi 679*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_12P, /// 53 680*53ee8cc1Swenshuai.xi 681*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HS_LVDS_BYPASS_MODE, ///54 682*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE, ///55 683*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE, ///56 684*53ee8cc1Swenshuai.xi 685*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TYPE_MAX, 686*53ee8cc1Swenshuai.xi }E_XC_PNL_LPLL_EXT_TYPE; 687*53ee8cc1Swenshuai.xi 688*53ee8cc1Swenshuai.xi typedef enum 689*53ee8cc1Swenshuai.xi { 690*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_SINGLE = 0, ///< single channel 691*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_DUAL = 1, ///< dual channel 692*53ee8cc1Swenshuai.xi 693*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_QUAD = 2, ///< quad channel 694*53ee8cc1Swenshuai.xi 695*53ee8cc1Swenshuai.xi } E_XC_OUTPUT_MODE; 696*53ee8cc1Swenshuai.xi 697*53ee8cc1Swenshuai.xi typedef enum 698*53ee8cc1Swenshuai.xi { 699*53ee8cc1Swenshuai.xi VFREQ_50HZ = 0x00, 700*53ee8cc1Swenshuai.xi VFREQ_60HZ = 0x01, 701*53ee8cc1Swenshuai.xi VFREQ_FROM_SRC = 0x02, 702*53ee8cc1Swenshuai.xi VFREQ_FROM_PANEL = 0x03, 703*53ee8cc1Swenshuai.xi } E_VFREQ_SEL; 704*53ee8cc1Swenshuai.xi 705*53ee8cc1Swenshuai.xi /// Sources to VE 706*53ee8cc1Swenshuai.xi typedef enum 707*53ee8cc1Swenshuai.xi { 708*53ee8cc1Swenshuai.xi E_XC_NONE =0x00, 709*53ee8cc1Swenshuai.xi E_XC_IP = 0x01, ///< Scaler IP 710*53ee8cc1Swenshuai.xi E_XC_VOP2 = 0x02, ///< Scaler VOP2 711*53ee8cc1Swenshuai.xi E_XC_BRI = 0x04, ///< Scaler BRI 712*53ee8cc1Swenshuai.xi 713*53ee8cc1Swenshuai.xi /// Please use this for OSD OP video capture!!! 714*53ee8cc1Swenshuai.xi E_XC_OP2 = 0x08, ///< Scaler OP2 - After Blending with OSD 715*53ee8cc1Swenshuai.xi E_XC_GAM = 0x10, ///< Scaler Gamma - Without Blending with OSD 716*53ee8cc1Swenshuai.xi E_XC_DITHER = 0x20, ///< Scaler noise dither - Without Blending with OSD 717*53ee8cc1Swenshuai.xi 718*53ee8cc1Swenshuai.xi /// Please use this for non-OSD OP video capture!!! 719*53ee8cc1Swenshuai.xi E_XC_OVERLAP = 0x40, ///< Scaler color overlap - Without Blending with OSD 720*53ee8cc1Swenshuai.xi E_XC_IP_SUB = 0x80, ///< Scaler IP of sub window 721*53ee8cc1Swenshuai.xi }E_XC_SOURCE_TO_VE; 722*53ee8cc1Swenshuai.xi 723*53ee8cc1Swenshuai.xi ///Port connect to pin 8 of SCART 724*53ee8cc1Swenshuai.xi typedef enum 725*53ee8cc1Swenshuai.xi { 726*53ee8cc1Swenshuai.xi E_XC_SCARTID_NONE = 0x00, ///< No connection 727*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC0 = 0x01, ///< Pin 8 of SCART connects to Hsync 0 728*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC1 = 0x02, ///< Pin 8 of SCART connects to Hsync 1 729*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC2 = 0x04, ///< Pin 8 of SCART connects to Hsync 2 730*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG0 = 0x08, ///< Pin 8 of SCART connects to SOG0 731*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG1 = 0x10, ///< Pin 8 of SCART connects to SOG1 732*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG2 = 0x20, ///< Pin 8 of SCART connects to SOG2 733*53ee8cc1Swenshuai.xi }E_XC_SCART_ID_PORT; 734*53ee8cc1Swenshuai.xi 735*53ee8cc1Swenshuai.xi /// Items for query driver or H/W capability. 736*53ee8cc1Swenshuai.xi typedef enum 737*53ee8cc1Swenshuai.xi { 738*53ee8cc1Swenshuai.xi E_XC_SUPPORT_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 739*53ee8cc1Swenshuai.xi 740*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DVI_AUTO_EQ = 0x00000005, ///< return true if driver support Auto EQ. 741*53ee8cc1Swenshuai.xi 742*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FRC_INSIDE = 0x00000100, ///< return true if scaler driver support FRC (MFC) function. 743*53ee8cc1Swenshuai.xi 744*53ee8cc1Swenshuai.xi }E_XC_CAPABILITY; 745*53ee8cc1Swenshuai.xi 746*53ee8cc1Swenshuai.xi typedef enum 747*53ee8cc1Swenshuai.xi { 748*53ee8cc1Swenshuai.xi E_XC_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi E_XC_DVI_AUTO_EQ = 0x00000002, ///< return true if driver support Auto EQ. 751*53ee8cc1Swenshuai.xi 752*53ee8cc1Swenshuai.xi E_XC_FRC_INSIDE = 0x00000004, ///< return true if scaler driver support FRC (MFC) function. 753*53ee8cc1Swenshuai.xi 754*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_CAPS = 0x00000008, ///< return dip chip caps. 755*53ee8cc1Swenshuai.xi 756*53ee8cc1Swenshuai.xi E_XC_3D_FBL_CAPS = 0x00000010, ///< return true if chip support fbl 3d.attention:fbl 3d only support sbs to lbl and sbs to sbs 757*53ee8cc1Swenshuai.xi 758*53ee8cc1Swenshuai.xi E_XC_HW_SEAMLESS_ZAPPING = 0x00000020, ///< return true if H/W support seamless zapping 759*53ee8cc1Swenshuai.xi 760*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DEVICE1 = 0x00000040, ///< return true if H/W support scaler device1 761*53ee8cc1Swenshuai.xi 762*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DETECT3D_IN3DMODE = 0x00000080, ///< return true if H/W support detecting 3d when already in 3d mode 763*53ee8cc1Swenshuai.xi 764*53ee8cc1Swenshuai.xi E_XC_2DTO3D_VERSION = 0x00000100, ///< return value 2D-to-3D version 765*53ee8cc1Swenshuai.xi 766*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FORCE_VSP_IN_DS_MODE = 0x00000200, ///< return if H/W support force post-Vscalin-down in DS mode 767*53ee8cc1Swenshuai.xi 768*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FRCM_MODE = 0x00000400, ///< return if H/W support frcm 769*53ee8cc1Swenshuai.xi 770*53ee8cc1Swenshuai.xi E_XC_SUPPORT_INTERLACE_OUT = 0x00000800, ///< return if H/W supports interlace output timing 771*53ee8cc1Swenshuai.xi 772*53ee8cc1Swenshuai.xi E_XC_SUPPORT_4K2K_WITH_PIP = 0x00001000, ///< return if H/W supports output is 4k2k and open pip 773*53ee8cc1Swenshuai.xi 774*53ee8cc1Swenshuai.xi E_XC_SUPPORT_4K2K_60P = 0x00002000, ///< return if H/W supports output is 4k2k_60P timing 775*53ee8cc1Swenshuai.xi 776*53ee8cc1Swenshuai.xi E_XC_SUPPORT_PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB = 0x00004000,///<return if sc1 suport PIP 777*53ee8cc1Swenshuai.xi 778*53ee8cc1Swenshuai.xi E_XC_HW_4K2K_VIP_PEAKING_LIMITATION = 0x00008000, ///return if H/W has vip peaking limitation 779*53ee8cc1Swenshuai.xi }E_XC_CAPS; 780*53ee8cc1Swenshuai.xi 781*53ee8cc1Swenshuai.xi typedef enum 782*53ee8cc1Swenshuai.xi { 783*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_MVOP, 784*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_SCALER, 785*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_MAX, 786*53ee8cc1Swenshuai.xi }E_XC_DS_INDEX_SOURCE; 787*53ee8cc1Swenshuai.xi 788*53ee8cc1Swenshuai.xi typedef enum 789*53ee8cc1Swenshuai.xi { 790*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_2K1K, 791*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_4K2K, 792*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_MAX, 793*53ee8cc1Swenshuai.xi }E_XC_FRC_InputTiming; 794*53ee8cc1Swenshuai.xi 795*53ee8cc1Swenshuai.xi typedef enum 796*53ee8cc1Swenshuai.xi { 797*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_MAIN_WINDOW = 0x0001, 798*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_SUB_WINDOW = 0x0002, 799*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_REPORT_WINDOW = 0x0004, 800*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_OSD_LAYER = 0x0008, 801*53ee8cc1Swenshuai.xi PIXEL_SHIFT_DO_OVERSCAN = 0x0010, 802*53ee8cc1Swenshuai.xi } PIXEL_SHIFT_FEATURE; 803*53ee8cc1Swenshuai.xi /// Define panel information 804*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 805*53ee8cc1Swenshuai.xi { 806*53ee8cc1Swenshuai.xi // XC need below information do to frame lock 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi MS_U16 u16HStart; ///<DE H start 809*53ee8cc1Swenshuai.xi 810*53ee8cc1Swenshuai.xi MS_U16 u16VStart; ///<DE V start 811*53ee8cc1Swenshuai.xi 812*53ee8cc1Swenshuai.xi MS_U16 u16Width; ///<DE H width 813*53ee8cc1Swenshuai.xi 814*53ee8cc1Swenshuai.xi MS_U16 u16Height; ///< DE V height 815*53ee8cc1Swenshuai.xi 816*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total 817*53ee8cc1Swenshuai.xi 818*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total 819*53ee8cc1Swenshuai.xi 820*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq; ///<Panel output Vfreq., used in free run 821*53ee8cc1Swenshuai.xi 822*53ee8cc1Swenshuai.xi MS_U8 u8LPLL_Mode; ///<0: single mode, 1: dual mode 823*53ee8cc1Swenshuai.xi E_XC_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode; ///<Define which panel output timing change mode is used to change VFreq for same panel 824*53ee8cc1Swenshuai.xi 825*53ee8cc1Swenshuai.xi // Later need to refine to use Min/Max SET for PDP panel, but for LCD, it maybe no need to check the Min/Max SET 826*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHTotal; ///<default H total 827*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVTotal; ///<default V total 828*53ee8cc1Swenshuai.xi 829*53ee8cc1Swenshuai.xi MS_U32 u32MinSET; 830*53ee8cc1Swenshuai.xi MS_U32 u32MaxSET; 831*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TYPE eLPLL_Type; /// 832*53ee8cc1Swenshuai.xi } XC_PANEL_INFO; 833*53ee8cc1Swenshuai.xi 834*53ee8cc1Swenshuai.xi 835*53ee8cc1Swenshuai.xi /// Define the extern special panel information for FPLL or other usage 836*53ee8cc1Swenshuai.xi /// Usage: 837*53ee8cc1Swenshuai.xi /// The first 3 members of below structure must be set as their corresponding description 838*53ee8cc1Swenshuai.xi /// The other members are set according to your request, none used members should be cleared to zero 839*53ee8cc1Swenshuai.xi /// Example code of set VTT slowly: 840*53ee8cc1Swenshuai.xi /// XC_PANEL_INFO_EX stPanelInfoEx; 841*53ee8cc1Swenshuai.xi /// memset(&stPanelInfoEx, 0, sizeof(XC_PANEL_INFO_EX)); 842*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u32PanelInfoEx_Version = PANEL_INFO_EX_VERSION; 843*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16PanelInfoEX_Length = sizeof(XC_PANEL_INFO_EX); 844*53ee8cc1Swenshuai.xi /// 845*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttStepsValid = TRUE; 846*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttDelayValid = TRUE; 847*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttSteps = xx; //set how many steps u want to set the vtt 848*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttDelay = xx;// set the delay between steps of setting vtt 849*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 500; //this step setting info is only for 50hz 850*53ee8cc1Swenshuai.xi /// if(MApi_XC_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 851*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 600; //set same steps info for 60 hz 852*53ee8cc1Swenshuai.xi /// if(MApi_XC_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 853*53ee8cc1Swenshuai.xi /// 854*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 855*53ee8cc1Swenshuai.xi { 856*53ee8cc1Swenshuai.xi MS_U32 u32PanelInfoEx_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 857*53ee8cc1Swenshuai.xi MS_U16 u16PanelInfoEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 858*53ee8cc1Swenshuai.xi MS_U16 u16VFreq; ///<Output Vfreq, unit: (1Hz/10), range 0~PANEL_INFO_EX_INVALID_ALL 859*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 0xFFFF means disable all valid ex panel info 860*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 600 means disable the valid ex panel info for 60 hz 861*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total of output "u16VFreq" 862*53ee8cc1Swenshuai.xi MS_BOOL bHTotalValid; ///H total setting is valid in this structure 863*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total of output "u16VFreq" 864*53ee8cc1Swenshuai.xi MS_BOOL bVTotalValid; ///V total setting is valid in this structure 865*53ee8cc1Swenshuai.xi MS_U32 u32DClk; ///<DCLK of output "u16VFreq", unit: KHz 866*53ee8cc1Swenshuai.xi MS_BOOL bDClkValid; ///DCLK, unit: KHz 867*53ee8cc1Swenshuai.xi MS_U16 u16MinHTotal; ///<Min H total 868*53ee8cc1Swenshuai.xi MS_BOOL bMinHTotalValid; ///Min H total 869*53ee8cc1Swenshuai.xi MS_U16 u16MinVTotal; ///<Min V total 870*53ee8cc1Swenshuai.xi MS_BOOL bMinVTotalValid; ///Min V total 871*53ee8cc1Swenshuai.xi MS_U32 u32MinDClk; ///<Min DCLK, unit: KHz 872*53ee8cc1Swenshuai.xi MS_BOOL bMinDClkValid; ///Min DCLK, unit: KHz 873*53ee8cc1Swenshuai.xi MS_U16 u16MaxHTotal; ///<Max H total 874*53ee8cc1Swenshuai.xi MS_BOOL bMaxHTotalValid; ///Max H total 875*53ee8cc1Swenshuai.xi MS_U16 u16MaxVTotal; ///<Max V total 876*53ee8cc1Swenshuai.xi MS_BOOL bMaxVTotalValid; ///Max V total 877*53ee8cc1Swenshuai.xi MS_U32 u32MaxDClk; ///<Min DCLK, unit: KHz 878*53ee8cc1Swenshuai.xi MS_BOOL bMaxDClkValid; ///Min DCLK, unit: KHz 879*53ee8cc1Swenshuai.xi // sync related 880*53ee8cc1Swenshuai.xi MS_U16 u16HSyncWidth; ///<VOP_01[7:0], PANEL_HSYNC_WIDTH 881*53ee8cc1Swenshuai.xi MS_BOOL bHSyncWidthValid; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 882*53ee8cc1Swenshuai.xi MS_U16 u16HSyncBackPorch; ///<PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 883*53ee8cc1Swenshuai.xi ///<not support Manuel VSync Start/End now 884*53ee8cc1Swenshuai.xi ///<VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 885*53ee8cc1Swenshuai.xi ///<VOP_03[10:0] VSync end = Vtt - VBackPorch 886*53ee8cc1Swenshuai.xi MS_BOOL bHSyncBackPorchValid; 887*53ee8cc1Swenshuai.xi MS_U16 u16VSyncWidth; ///<define PANEL_VSYNC_WIDTH 888*53ee8cc1Swenshuai.xi MS_BOOL bVSyncWidthValid; 889*53ee8cc1Swenshuai.xi MS_U16 u16VSyncBackPorch; ///<define PANEL_VSYNC_BACK_PORCH 890*53ee8cc1Swenshuai.xi MS_BOOL bVSyncBackPorchValid; 891*53ee8cc1Swenshuai.xi //step by step adjustment when 50/60 HZ Output switch 892*53ee8cc1Swenshuai.xi MS_U16 u16HttSteps; ///<Number of adjusting step from Old Htt to new htt 893*53ee8cc1Swenshuai.xi MS_BOOL bHttStepsValid; 894*53ee8cc1Swenshuai.xi MS_U16 u16HttDelay; ///<Delay time in two steps 895*53ee8cc1Swenshuai.xi MS_BOOL bHttDelayValid; 896*53ee8cc1Swenshuai.xi MS_U16 u16VttSteps; ///<Number of adjusting step from Old Htt to new htt 897*53ee8cc1Swenshuai.xi MS_BOOL bVttStepsValid; 898*53ee8cc1Swenshuai.xi MS_U16 u16VttDelay; ///<Delay time in two steps 899*53ee8cc1Swenshuai.xi MS_BOOL bVttDelayValid; 900*53ee8cc1Swenshuai.xi MS_U16 u16DclkSteps; ///<Number of adjusting step from Old Htt to new htt 901*53ee8cc1Swenshuai.xi MS_BOOL bDclkStepsValid; 902*53ee8cc1Swenshuai.xi MS_U16 u16DclkDelay; ///<Delay time in two steps 903*53ee8cc1Swenshuai.xi MS_BOOL bDclkDelayValid; ///<DclkDelay setting is valid in this structure 904*53ee8cc1Swenshuai.xi }XC_PANEL_INFO_EX; 905*53ee8cc1Swenshuai.xi 906*53ee8cc1Swenshuai.xi /// Define new panel information 907*53ee8cc1Swenshuai.xi typedef struct 908*53ee8cc1Swenshuai.xi { 909*53ee8cc1Swenshuai.xi MS_U32 u32TimingAdjustSetting_version; ///<Version of current structure. Please always set this value as XC_OUTPUT_TIMING_ADJUST_VERSION 910*53ee8cc1Swenshuai.xi 911*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Step; ///<Number of adjusting step from Old Htt to new htt 912*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Delay; ///<Delay time in two steps 913*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Ratio; ///<Ratio of Htt for change to specific framerate (X10). 914*53ee8cc1Swenshuai.xi 915*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Step; ///<Number of adjusting step from Old Vtt to new Vtt 916*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Delay; ///<Delay time in two steps 917*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Ratio; ///<Ratio of Vtt for change to specific framerate (X10). 918*53ee8cc1Swenshuai.xi 919*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Step; ///<Number of adjusting step from Old Dclk to new Dclk 920*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Delay; ///<Delay time in two steps 921*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Ratio; ///<Ratio of Dclk for change to specific framerate (X10). 922*53ee8cc1Swenshuai.xi 923*53ee8cc1Swenshuai.xi }XC_OUTPUT_TIMING_ADJUST_SETTING; 924*53ee8cc1Swenshuai.xi 925*53ee8cc1Swenshuai.xi /// Define the initial data for XC 926*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 927*53ee8cc1Swenshuai.xi { 928*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 929*53ee8cc1Swenshuai.xi // system related 930*53ee8cc1Swenshuai.xi MS_U32 u32XTAL_Clock; ///<Crystal clock in Hz 931*53ee8cc1Swenshuai.xi 932*53ee8cc1Swenshuai.xi // frame buffer related 933*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Start_Addr; ///<scaler main window frame buffer start address, absolute without any alignment 934*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Size; ///<scaler main window frame buffer size, the unit is BYTES 935*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Start_Addr; ///<scaler sub window frame buffer start address, absolute without any alignment 936*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Size; ///<scaler sub window frame buffer size, the unit is BYTES 937*53ee8cc1Swenshuai.xi 938*53ee8cc1Swenshuai.xi // HDMI related, will be moved to HDMI module 939*53ee8cc1Swenshuai.xi MS_BOOL bCEC_Use_Interrupt; ///<CEC use interrupt or not, if not, will use polling 940*53ee8cc1Swenshuai.xi 941*53ee8cc1Swenshuai.xi // This is related to chip package. ( Share Ground / Non-Share Ground ) 942*53ee8cc1Swenshuai.xi MS_BOOL bIsShareGround; 943*53ee8cc1Swenshuai.xi 944*53ee8cc1Swenshuai.xi // function related 945*53ee8cc1Swenshuai.xi MS_BOOL bEnableIPAutoCoast; ///<Enable IP auto coast 946*53ee8cc1Swenshuai.xi 947*53ee8cc1Swenshuai.xi MS_BOOL bMirror; ///<mirror mode 948*53ee8cc1Swenshuai.xi 949*53ee8cc1Swenshuai.xi // panel related 950*53ee8cc1Swenshuai.xi XC_PANEL_INFO stPanelInfo; ///<panel infomation 951*53ee8cc1Swenshuai.xi 952*53ee8cc1Swenshuai.xi // DLC 953*53ee8cc1Swenshuai.xi MS_BOOL bDLC_Histogram_From_VBlank; ///<If set to TRUE, the Y max/min report value is read from V blanking area 954*53ee8cc1Swenshuai.xi 955*53ee8cc1Swenshuai.xi // This is related to layout 956*53ee8cc1Swenshuai.xi MS_U16 eScartIDPort_Sel; ///<This is port selection (E_XC_SCART_ID_PORT) of Scart ID pin 8 957*53ee8cc1Swenshuai.xi 958*53ee8cc1Swenshuai.xi // frcm frame buffer related 959*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Start_Addr; ///<scaler main window frcm frame buffer start address, absolute without any alignment 960*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Size; ///<scaler main window frcm frame buffer size, the unit is BYTES 961*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Start_Addr; ///<scaler sub window frcm frame buffer start address, absolute without any alignment 962*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Size; ///<scaler sub window frcm frame buffer size, the unit is BYTES 963*53ee8cc1Swenshuai.xi } XC_INITDATA; 964*53ee8cc1Swenshuai.xi 965*53ee8cc1Swenshuai.xi /// define generic API infomation 966*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 967*53ee8cc1Swenshuai.xi { 968*53ee8cc1Swenshuai.xi MS_U8 u8MaxWindowNum; ///<max window number that XC driver supports such as MAIN/SUB window 969*53ee8cc1Swenshuai.xi MS_U8 u8NumOfDigitalDDCRam; ///<indicate how many Digital DDCRam that use can use without external EDID EEPROM 970*53ee8cc1Swenshuai.xi MS_U8 u8MaxFrameNumInMem; ///<indicate maximal number of frames (Progressive mode) supported by scaler simultaneously 971*53ee8cc1Swenshuai.xi MS_U8 u8MaxFieldNumInMem; ///<indicate maximal number of fields (Interlace mode) supported by scaler simultaneously 972*53ee8cc1Swenshuai.xi } XC_ApiInfo; 973*53ee8cc1Swenshuai.xi 974*53ee8cc1Swenshuai.xi /// define the information of set window 975*53ee8cc1Swenshuai.xi typedef struct 976*53ee8cc1Swenshuai.xi { 977*53ee8cc1Swenshuai.xi //------------- 978*53ee8cc1Swenshuai.xi // Input 979*53ee8cc1Swenshuai.xi //------------- 980*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///<Input source 981*53ee8cc1Swenshuai.xi 982*53ee8cc1Swenshuai.xi //------------- 983*53ee8cc1Swenshuai.xi // Window 984*53ee8cc1Swenshuai.xi //------------- 985*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 986*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 987*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 988*53ee8cc1Swenshuai.xi 989*53ee8cc1Swenshuai.xi //------------- 990*53ee8cc1Swenshuai.xi // Timing 991*53ee8cc1Swenshuai.xi //------------- 992*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 993*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 994*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 995*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 996*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 997*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete 998*53ee8cc1Swenshuai.xi 999*53ee8cc1Swenshuai.xi //------------------------- 1000*53ee8cc1Swenshuai.xi // customized post scaling 1001*53ee8cc1Swenshuai.xi //------------------------- 1002*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign post H customized scaling instead of using XC scaling 1003*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<post H customized scaling src width 1004*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<post H customized scaling dst width 1005*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign post V manuel scaling instead of using XC scaling 1006*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<post V customized scaling src height 1007*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<post V customized scaling dst height 1008*53ee8cc1Swenshuai.xi 1009*53ee8cc1Swenshuai.xi //-------------- 1010*53ee8cc1Swenshuai.xi // 9 lattice 1011*53ee8cc1Swenshuai.xi //-------------- 1012*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1013*53ee8cc1Swenshuai.xi 1014*53ee8cc1Swenshuai.xi //------------------------- 1015*53ee8cc1Swenshuai.xi // customized pre scaling 1016*53ee8cc1Swenshuai.xi //------------------------- 1017*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign pre H customized scaling instead of using XC scaling 1018*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<pre H customized scaling src width 1019*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<pre H customized scaling dst width 1020*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign pre V manuel scaling instead of using XC scaling 1021*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<pre V customized scaling src height 1022*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<pre V customized scaling dst height 1023*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 1024*53ee8cc1Swenshuai.xi } XC_SETWIN_INFO; 1025*53ee8cc1Swenshuai.xi 1026*53ee8cc1Swenshuai.xi typedef struct 1027*53ee8cc1Swenshuai.xi { //mastering color display: color volumne of a display 1028*53ee8cc1Swenshuai.xi MS_U32 u32MaxLuminance; 1029*53ee8cc1Swenshuai.xi MS_U32 u32MinLuminance; 1030*53ee8cc1Swenshuai.xi MS_U16 u16DisplayPrimaries[3][2]; 1031*53ee8cc1Swenshuai.xi MS_U16 u16WhitePoint[2]; 1032*53ee8cc1Swenshuai.xi } XC_DS_MasterColorDisplay; 1033*53ee8cc1Swenshuai.xi 1034*53ee8cc1Swenshuai.xi typedef struct 1035*53ee8cc1Swenshuai.xi { 1036*53ee8cc1Swenshuai.xi //color_description: indicates the chromaticity/opto-electronic coordinates of the source primaries 1037*53ee8cc1Swenshuai.xi MS_U8 u8ColorPrimaries; 1038*53ee8cc1Swenshuai.xi MS_U8 u8TransferCharacteristics; 1039*53ee8cc1Swenshuai.xi // matrix coefficients in deriving YUV signal from RGB 1040*53ee8cc1Swenshuai.xi MS_U8 u8MatrixCoefficients; 1041*53ee8cc1Swenshuai.xi } XC_DS_ColorDescription; 1042*53ee8cc1Swenshuai.xi 1043*53ee8cc1Swenshuai.xi typedef struct 1044*53ee8cc1Swenshuai.xi { 1045*53ee8cc1Swenshuai.xi // bit[0]: MS_ColorDescription present or valid, bit[1]: MS_MasterColorDisplay present or valid 1046*53ee8cc1Swenshuai.xi MS_U32 u32FrmInfoExtAvail; 1047*53ee8cc1Swenshuai.xi // mastering color display: color volumne of a display 1048*53ee8cc1Swenshuai.xi XC_DS_ColorDescription stColorDescription; 1049*53ee8cc1Swenshuai.xi XC_DS_MasterColorDisplay stMasterColorDisplay; 1050*53ee8cc1Swenshuai.xi } XC_DS_HDRInfo; 1051*53ee8cc1Swenshuai.xi 1052*53ee8cc1Swenshuai.xi typedef struct{ 1053*53ee8cc1Swenshuai.xi //MVOP 1054*53ee8cc1Swenshuai.xi MS_U32 u32ApiDSInfo_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 1055*53ee8cc1Swenshuai.xi MS_U16 u16ApiDSInfo_Length; 1056*53ee8cc1Swenshuai.xi MS_U32 u32MFCodecInfo; 1057*53ee8cc1Swenshuai.xi XC_DS_HDRInfo stHDRInfo; 1058*53ee8cc1Swenshuai.xi }XC_DS_INFO; 1059*53ee8cc1Swenshuai.xi 1060*53ee8cc1Swenshuai.xi 1061*53ee8cc1Swenshuai.xi /// define the information for dynamic scaling (DS) 1062*53ee8cc1Swenshuai.xi /// one entry of DS is: 1063*53ee8cc1Swenshuai.xi /// 1064*53ee8cc1Swenshuai.xi /// 8 bit alignment 1065*53ee8cc1Swenshuai.xi /// LSB ----> MSB 1066*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) 1067*53ee8cc1Swenshuai.xi /// [7:0] [15:8] [23:16] [31:24] 1068*53ee8cc1Swenshuai.xi /// Data_L Data_H Reg_Addr(16bit) Reg_Bank 1069*53ee8cc1Swenshuai.xi /// 1070*53ee8cc1Swenshuai.xi /// 16 bit alignment 1071*53ee8cc1Swenshuai.xi /// LSB ----> MSB 1072*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) -> 0xFFFFFFFF, 0xFFFFFFFF (dummy) 1073*53ee8cc1Swenshuai.xi /// 1074*53ee8cc1Swenshuai.xi /// If bIP_DS_On == FALSE, the DS will ignore the IP information 1075*53ee8cc1Swenshuai.xi /// If bOP_DS_On == FALSE, the DS will ignore the OP information 1076*53ee8cc1Swenshuai.xi typedef struct 1077*53ee8cc1Swenshuai.xi { 1078*53ee8cc1Swenshuai.xi MS_PHY u32DS_Info_BaseAddr; ///< The memory base address to update IP/OP dynamic scaling registers. Absolute without any alignment. 1079*53ee8cc1Swenshuai.xi MS_U8 u8MIU_Select; ///< 0: MIU0, 1: MIU1, etc. 1080*53ee8cc1Swenshuai.xi MS_U8 u8DS_Index_Depth; ///< The index depth (how many entries to fire per MVOP Vsync falling) of DS 1081*53ee8cc1Swenshuai.xi MS_BOOL bOP_DS_On; ///< OP dynamic scaling on/off 1082*53ee8cc1Swenshuai.xi MS_BOOL bIPS_DS_On; ///< IPS dynamic scaling on/off 1083*53ee8cc1Swenshuai.xi MS_BOOL bIPM_DS_On; ///< IPM dynamic scaling on/off 1084*53ee8cc1Swenshuai.xi } XC_DynamicScaling_Info; 1085*53ee8cc1Swenshuai.xi 1086*53ee8cc1Swenshuai.xi /// Define source type for DIP 1087*53ee8cc1Swenshuai.xi typedef enum 1088*53ee8cc1Swenshuai.xi { 1089*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SUB2 = 0, ///< DIP from SUB2(IP_F3) 1090*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MAIN = 1, ///< DIP from MAIN(IP_MAIN) 1091*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SUB = 2, ///< DIP from SUB (IP_SUB) 1092*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_MAIN = 3, ///< HVSP MAIN 1093*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_SUB = 4, ///< HVSP SUB 1094*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_DRAM = 5, ///< DIP from DRAM 1095*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_CAPTURE = 6, ///< DIP from OP capture 1096*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OSD = 7, ///< DIP from OSD capture 1097*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SC2_OP_CAPTURE = 8, ///< DIP from SC2 OP capture 1098*53ee8cc1Swenshuai.xi MAX_SCALER_DIP_SOURCE_NUM ///< The max support window 1099*53ee8cc1Swenshuai.xi }SCALER_DIP_SOURCE_TYPE; 1100*53ee8cc1Swenshuai.xi 1101*53ee8cc1Swenshuai.xi /// Define the path type 1102*53ee8cc1Swenshuai.xi typedef enum 1103*53ee8cc1Swenshuai.xi { 1104*53ee8cc1Swenshuai.xi PATH_TYPE_SYNCHRONOUS, ///<synchronous path type 1105*53ee8cc1Swenshuai.xi PATH_TYPE_ASYNCHRONOUS, ///<asynchronous path type 1106*53ee8cc1Swenshuai.xi }E_PATH_TYPE; 1107*53ee8cc1Swenshuai.xi 1108*53ee8cc1Swenshuai.xi /// Define the mux path information 1109*53ee8cc1Swenshuai.xi typedef struct 1110*53ee8cc1Swenshuai.xi { 1111*53ee8cc1Swenshuai.xi E_PATH_TYPE Path_Type; ///<path type 1112*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t src; ///<source input type 1113*53ee8cc1Swenshuai.xi E_DEST_TYPE dest; ///<destination type of output 1114*53ee8cc1Swenshuai.xi 1115*53ee8cc1Swenshuai.xi void (* path_thread)(INPUT_SOURCE_TYPE_t src, MS_BOOL bRealTimeMonitorOnly); ///<path read 1116*53ee8cc1Swenshuai.xi void (* SyncEventHandler )(INPUT_SOURCE_TYPE_t src, void* para); ///<sync event handler 1117*53ee8cc1Swenshuai.xi void (* DestOnOff_Event_Handler )(INPUT_SOURCE_TYPE_t src, void* para); ///<destination on off event handler 1118*53ee8cc1Swenshuai.xi void (* dest_periodic_handler )(INPUT_SOURCE_TYPE_t src, MS_BOOL bRealTimeMonitorOnly) ; ///<destination periodic handler 1119*53ee8cc1Swenshuai.xi } XC_MUX_PATH_INFO; 1120*53ee8cc1Swenshuai.xi 1121*53ee8cc1Swenshuai.xi /// Image store format in XC 1122*53ee8cc1Swenshuai.xi typedef enum 1123*53ee8cc1Swenshuai.xi { 1124*53ee8cc1Swenshuai.xi IMAGE_STORE_444_24BIT, ///< (8+8+8) Y Cb Cr / B G R 1125*53ee8cc1Swenshuai.xi IMAGE_STORE_422_16BIT, ///< (8+8) Y Cb Y Cr / G B G R 1126*53ee8cc1Swenshuai.xi IMAGE_STORE_422_24BIT, ///< (10+10+4) Y Cb Y Cr / G B G R -- Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 - C5 C4 C3 C2 C1 C0 Y9 Y8 - xx xx xx xx C9 C8 C7 C6 1127*53ee8cc1Swenshuai.xi } MS_IMAGE_STORE_FMT; 1128*53ee8cc1Swenshuai.xi 1129*53ee8cc1Swenshuai.xi /// XC API status 1130*53ee8cc1Swenshuai.xi typedef struct 1131*53ee8cc1Swenshuai.xi { 1132*53ee8cc1Swenshuai.xi //---------------------- 1133*53ee8cc1Swenshuai.xi // Customer setting 1134*53ee8cc1Swenshuai.xi //---------------------- 1135*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///< Input source type 1136*53ee8cc1Swenshuai.xi 1137*53ee8cc1Swenshuai.xi //---------------------- 1138*53ee8cc1Swenshuai.xi // Window 1139*53ee8cc1Swenshuai.xi //---------------------- 1140*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 1141*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1142*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 1143*53ee8cc1Swenshuai.xi 1144*53ee8cc1Swenshuai.xi //---------------------- 1145*53ee8cc1Swenshuai.xi // Timing 1146*53ee8cc1Swenshuai.xi //---------------------- 1147*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1148*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1149*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1150*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1151*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1152*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 1153*53ee8cc1Swenshuai.xi 1154*53ee8cc1Swenshuai.xi //---------------------- 1155*53ee8cc1Swenshuai.xi // customized scaling 1156*53ee8cc1Swenshuai.xi //---------------------- 1157*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 1158*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 1159*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 1160*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1161*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 1162*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 1163*53ee8cc1Swenshuai.xi 1164*53ee8cc1Swenshuai.xi //-------------- 1165*53ee8cc1Swenshuai.xi // 9 lattice 1166*53ee8cc1Swenshuai.xi //-------------- 1167*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1168*53ee8cc1Swenshuai.xi 1169*53ee8cc1Swenshuai.xi //---------------------- 1170*53ee8cc1Swenshuai.xi // XC internal setting 1171*53ee8cc1Swenshuai.xi //---------------------- 1172*53ee8cc1Swenshuai.xi 1173*53ee8cc1Swenshuai.xi /* scaling ratio */ 1174*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 1175*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 1176*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 1177*53ee8cc1Swenshuai.xi 1178*53ee8cc1Swenshuai.xi /* real crop win in memory */ 1179*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE ScaledCropWin; 1180*53ee8cc1Swenshuai.xi 1181*53ee8cc1Swenshuai.xi /* others */ 1182*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 1183*53ee8cc1Swenshuai.xi 1184*53ee8cc1Swenshuai.xi /* Video screen status */ 1185*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 1186*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 1187*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 1188*53ee8cc1Swenshuai.xi 1189*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 1190*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 1191*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 1192*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 1193*53ee8cc1Swenshuai.xi MS_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 1194*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 1195*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 1196*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 1197*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 1198*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1199*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1200*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1201*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1202*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1203*53ee8cc1Swenshuai.xi 1204*53ee8cc1Swenshuai.xi // frame lock related 1205*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1206*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1207*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1208*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1209*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1210*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1211*53ee8cc1Swenshuai.xi 1212*53ee8cc1Swenshuai.xi // Capture_Memory 1213*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1214*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1215*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1216*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1217*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1218*53ee8cc1Swenshuai.xi }XC_ApiStatus; 1219*53ee8cc1Swenshuai.xi 1220*53ee8cc1Swenshuai.xi /// XC API status 1221*53ee8cc1Swenshuai.xi typedef struct 1222*53ee8cc1Swenshuai.xi { 1223*53ee8cc1Swenshuai.xi MS_U32 u32ApiStatusEx_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 1224*53ee8cc1Swenshuai.xi MS_U16 u16ApiStatusEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 1225*53ee8cc1Swenshuai.xi 1226*53ee8cc1Swenshuai.xi //---------------------- 1227*53ee8cc1Swenshuai.xi // Customer setting 1228*53ee8cc1Swenshuai.xi //---------------------- 1229*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///< Input source type 1230*53ee8cc1Swenshuai.xi 1231*53ee8cc1Swenshuai.xi //---------------------- 1232*53ee8cc1Swenshuai.xi // Window 1233*53ee8cc1Swenshuai.xi //---------------------- 1234*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 1235*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1236*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 1237*53ee8cc1Swenshuai.xi 1238*53ee8cc1Swenshuai.xi //---------------------- 1239*53ee8cc1Swenshuai.xi // Timing 1240*53ee8cc1Swenshuai.xi //---------------------- 1241*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1242*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1243*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1244*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1245*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1246*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 1247*53ee8cc1Swenshuai.xi 1248*53ee8cc1Swenshuai.xi //---------------------- 1249*53ee8cc1Swenshuai.xi // Post customized scaling 1250*53ee8cc1Swenshuai.xi //---------------------- 1251*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 1252*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 1253*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 1254*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1255*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 1256*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 1257*53ee8cc1Swenshuai.xi 1258*53ee8cc1Swenshuai.xi //-------------- 1259*53ee8cc1Swenshuai.xi // 9 lattice 1260*53ee8cc1Swenshuai.xi //-------------- 1261*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1262*53ee8cc1Swenshuai.xi 1263*53ee8cc1Swenshuai.xi //---------------------- 1264*53ee8cc1Swenshuai.xi // XC internal setting 1265*53ee8cc1Swenshuai.xi //---------------------- 1266*53ee8cc1Swenshuai.xi 1267*53ee8cc1Swenshuai.xi /* scaling ratio */ 1268*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 1269*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 1270*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 1271*53ee8cc1Swenshuai.xi 1272*53ee8cc1Swenshuai.xi /* real crop win in memory */ 1273*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE ScaledCropWin; 1274*53ee8cc1Swenshuai.xi 1275*53ee8cc1Swenshuai.xi /* others */ 1276*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 1277*53ee8cc1Swenshuai.xi 1278*53ee8cc1Swenshuai.xi /* Video screen status */ 1279*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 1280*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 1281*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 1282*53ee8cc1Swenshuai.xi 1283*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 1284*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 1285*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 1286*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 1287*53ee8cc1Swenshuai.xi MS_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 1288*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 1289*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 1290*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 1291*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 1292*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1293*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1294*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1295*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1296*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1297*53ee8cc1Swenshuai.xi 1298*53ee8cc1Swenshuai.xi // frame lock related 1299*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1300*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1301*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1302*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1303*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1304*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1305*53ee8cc1Swenshuai.xi 1306*53ee8cc1Swenshuai.xi // Capture_Memory 1307*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1308*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1309*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1310*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1311*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1312*53ee8cc1Swenshuai.xi 1313*53ee8cc1Swenshuai.xi //---------------------- 1314*53ee8cc1Swenshuai.xi // Pre customized scaling 1315*53ee8cc1Swenshuai.xi //---------------------- 1316*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign H customized scaling instead of using XC scaling 1317*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<H customized scaling src width 1318*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<H customized scaling dst width 1319*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1320*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<V customized scaling src height 1321*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<V customized scaling dst height 1322*53ee8cc1Swenshuai.xi 1323*53ee8cc1Swenshuai.xi MS_BOOL bPQSetHSD;///<H_SizeAfterPreScaling is changed manually, which will skip PQ HSD sampling and filter 1324*53ee8cc1Swenshuai.xi 1325*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 1326*53ee8cc1Swenshuai.xi MS_BOOL bIsHWDepthAdjSupported; ///<Is hw depth adjustment for real 3d supported or not 1327*53ee8cc1Swenshuai.xi MS_BOOL bIs2LineMode; ///<Is 2 line mode or not 1328*53ee8cc1Swenshuai.xi MS_BOOL bIsPNLYUVOutput; ///<Is Scaler YUV output 1329*53ee8cc1Swenshuai.xi 1330*53ee8cc1Swenshuai.xi MS_U8 u8HDMIPixelRepetition; ///<the HDMI pixel repetition info 1331*53ee8cc1Swenshuai.xi 1332*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase0; ///<FRCM base 0 1333*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase1; ///<FRCM base 1 1334*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase2; ///<FRCM base 2 1335*53ee8cc1Swenshuai.xi }XC_ApiStatusEx; 1336*53ee8cc1Swenshuai.xi 1337*53ee8cc1Swenshuai.xi /// Define the set timing information 1338*53ee8cc1Swenshuai.xi typedef struct 1339*53ee8cc1Swenshuai.xi { 1340*53ee8cc1Swenshuai.xi MS_U32 u32HighAccurateInputVFreq; ///<high accurate input V frequency 1341*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<input V frequency 1342*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<input vertical total 1343*53ee8cc1Swenshuai.xi MS_BOOL bMVOPSrc; ///<MVOP source 1344*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether it's fast frame lock case 1345*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 1346*53ee8cc1Swenshuai.xi }XC_SetTiming_Info; 1347*53ee8cc1Swenshuai.xi 1348*53ee8cc1Swenshuai.xi //------------------------------ 1349*53ee8cc1Swenshuai.xi // XC Auto 1350*53ee8cc1Swenshuai.xi //------------------------------ 1351*53ee8cc1Swenshuai.xi 1352*53ee8cc1Swenshuai.xi /// internal calibration 1353*53ee8cc1Swenshuai.xi typedef struct 1354*53ee8cc1Swenshuai.xi { 1355*53ee8cc1Swenshuai.xi MS_U16 u16CH_AVG[3]; 1356*53ee8cc1Swenshuai.xi } MS_AUTOADC_TYPE; 1357*53ee8cc1Swenshuai.xi 1358*53ee8cc1Swenshuai.xi /// get IP1 report min/max R/G/B 1359*53ee8cc1Swenshuai.xi typedef enum 1360*53ee8cc1Swenshuai.xi { 1361*53ee8cc1Swenshuai.xi AUTO_MIN_R , 1362*53ee8cc1Swenshuai.xi AUTO_MIN_G , 1363*53ee8cc1Swenshuai.xi AUTO_MIN_B , 1364*53ee8cc1Swenshuai.xi AUTO_MAX_R , 1365*53ee8cc1Swenshuai.xi AUTO_MAX_G , 1366*53ee8cc1Swenshuai.xi AUTO_MAX_B , 1367*53ee8cc1Swenshuai.xi }AUTO_GAIN_TYPE; 1368*53ee8cc1Swenshuai.xi 1369*53ee8cc1Swenshuai.xi /// the tming types for internal calibration 1370*53ee8cc1Swenshuai.xi typedef enum 1371*53ee8cc1Swenshuai.xi { 1372*53ee8cc1Swenshuai.xi E_XC_OFF, 1373*53ee8cc1Swenshuai.xi E_XC_480P, 1374*53ee8cc1Swenshuai.xi E_XC_576P, 1375*53ee8cc1Swenshuai.xi E_XC_720P, 1376*53ee8cc1Swenshuai.xi E_XC_1080P, 1377*53ee8cc1Swenshuai.xi E_XC_480I, 1378*53ee8cc1Swenshuai.xi E_XC_576I, 1379*53ee8cc1Swenshuai.xi E_XC_720I, 1380*53ee8cc1Swenshuai.xi E_XC_1080I, 1381*53ee8cc1Swenshuai.xi }XC_Internal_TimingType; 1382*53ee8cc1Swenshuai.xi 1383*53ee8cc1Swenshuai.xi //------------------------------ 1384*53ee8cc1Swenshuai.xi // Software Reset 1385*53ee8cc1Swenshuai.xi //------------------------------ 1386*53ee8cc1Swenshuai.xi /// software reset type 1387*53ee8cc1Swenshuai.xi typedef enum 1388*53ee8cc1Swenshuai.xi { 1389*53ee8cc1Swenshuai.xi REST_SCALER_ALL = _BIT(0), 1390*53ee8cc1Swenshuai.xi REST_IP_F1 = _BIT(1), 1391*53ee8cc1Swenshuai.xi REST_IP_F2 = _BIT(2), 1392*53ee8cc1Swenshuai.xi REST_OP = _BIT(3), 1393*53ee8cc1Swenshuai.xi REST_IP_ALL = _BIT(4), 1394*53ee8cc1Swenshuai.xi REST_CLK = (_BIT(6)|_BIT(3)), 1395*53ee8cc1Swenshuai.xi }SOFTWARE_REST_TYPE_t; 1396*53ee8cc1Swenshuai.xi 1397*53ee8cc1Swenshuai.xi /// Detect Europe HDTV status type 1398*53ee8cc1Swenshuai.xi typedef enum 1399*53ee8cc1Swenshuai.xi { 1400*53ee8cc1Swenshuai.xi EURO_AUS_HDTV_NORMAL = 0, ///<not detected Euro or Aus HDTV 1401*53ee8cc1Swenshuai.xi EURO_HDTV_DETECTED, ///<Euro HDTV detected 1402*53ee8cc1Swenshuai.xi AUSTRALIA_HDTV_DETECTED, ///<Aus HDTV detected 1403*53ee8cc1Swenshuai.xi }MS_DETECT_EURO_HDTV_STATUS_TYPE; 1404*53ee8cc1Swenshuai.xi 1405*53ee8cc1Swenshuai.xi 1406*53ee8cc1Swenshuai.xi //Capture_Memory 1407*53ee8cc1Swenshuai.xi 1408*53ee8cc1Swenshuai.xi /// Define the rectangle information 1409*53ee8cc1Swenshuai.xi typedef struct 1410*53ee8cc1Swenshuai.xi { 1411*53ee8cc1Swenshuai.xi MS_S16 s16X_Start; ///<rectangle start x 1412*53ee8cc1Swenshuai.xi MS_S16 s16Y_Start; ///<rectangle start x 1413*53ee8cc1Swenshuai.xi MS_S16 s16X_Size; ///<rectangle horizontal size 1414*53ee8cc1Swenshuai.xi MS_S16 s16Y_Size; ///<rectangle vertical size 1415*53ee8cc1Swenshuai.xi 1416*53ee8cc1Swenshuai.xi MS_U8 *pRect; ///<the buffer address for the rectangle 1417*53ee8cc1Swenshuai.xi MS_U32 u32RectPitch; ///<rectangle pitch 1418*53ee8cc1Swenshuai.xi MS_U16 u16PointSize; ///<point size, consider the memory size 1419*53ee8cc1Swenshuai.xi } MS_RECT_INFO; 1420*53ee8cc1Swenshuai.xi 1421*53ee8cc1Swenshuai.xi /// Define for format of pixel 24 bit 1422*53ee8cc1Swenshuai.xi typedef struct 1423*53ee8cc1Swenshuai.xi { 1424*53ee8cc1Swenshuai.xi MS_U8 R_Cr; 1425*53ee8cc1Swenshuai.xi MS_U8 G_Y; 1426*53ee8cc1Swenshuai.xi MS_U8 B_Cb; 1427*53ee8cc1Swenshuai.xi } MS_PIXEL_24BIT; 1428*53ee8cc1Swenshuai.xi 1429*53ee8cc1Swenshuai.xi /// Define for format of pixel 32 bit 1430*53ee8cc1Swenshuai.xi typedef struct 1431*53ee8cc1Swenshuai.xi { 1432*53ee8cc1Swenshuai.xi MS_U32 B_Cb :10; 1433*53ee8cc1Swenshuai.xi MS_U32 G_Y :10; 1434*53ee8cc1Swenshuai.xi MS_U32 R_Cr :10; 1435*53ee8cc1Swenshuai.xi MS_U32 u8Dummy:2; 1436*53ee8cc1Swenshuai.xi }MS_PIXEL_32BIT; 1437*53ee8cc1Swenshuai.xi 1438*53ee8cc1Swenshuai.xi /// Define for format of pixel 16 bit 1439*53ee8cc1Swenshuai.xi typedef struct 1440*53ee8cc1Swenshuai.xi { 1441*53ee8cc1Swenshuai.xi MS_U8 u8G_Y; 1442*53ee8cc1Swenshuai.xi MS_U8 u8BR_CbCr; 1443*53ee8cc1Swenshuai.xi } MS_PIXEL_422_8BIT; 1444*53ee8cc1Swenshuai.xi 1445*53ee8cc1Swenshuai.xi typedef enum 1446*53ee8cc1Swenshuai.xi { 1447*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1448*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1449*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1450*53ee8cc1Swenshuai.xi 1451*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_RGB10BITS = 0x04, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1452*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_RGB8BITS = 0x05, ///< R[23:16] G[15:8] B[7:0] 1453*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_4228BITS = 0x06, ///< CbCr[15:8] Y[7:0] 1454*53ee8cc1Swenshuai.xi }E_XC_OUTPUTDATA_TYPE; 1455*53ee8cc1Swenshuai.xi 1456*53ee8cc1Swenshuai.xi typedef enum 1457*53ee8cc1Swenshuai.xi { 1458*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1459*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1460*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1461*53ee8cc1Swenshuai.xi }E_XC_INPUTDATA_TYPE; 1462*53ee8cc1Swenshuai.xi 1463*53ee8cc1Swenshuai.xi 1464*53ee8cc1Swenshuai.xi /// define for the auto calbration window type 1465*53ee8cc1Swenshuai.xi typedef struct 1466*53ee8cc1Swenshuai.xi { 1467*53ee8cc1Swenshuai.xi MS_U16 u16X; ///<window start x 1468*53ee8cc1Swenshuai.xi MS_U16 u16Xsize; ///<window horizontal size 1469*53ee8cc1Swenshuai.xi MS_U16 u16Y; ///<window start y 1470*53ee8cc1Swenshuai.xi MS_U16 u16Ysize; ///<window vertical size 1471*53ee8cc1Swenshuai.xi }MS_AUTO_CAL_WINDOW_t; 1472*53ee8cc1Swenshuai.xi 1473*53ee8cc1Swenshuai.xi typedef struct 1474*53ee8cc1Swenshuai.xi { 1475*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eStoreFmt; ///<image store format 1476*53ee8cc1Swenshuai.xi MS_AUTO_CAL_WINDOW_t eCal_Win_Size; ///<auto calbration window type 1477*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelMax; ///<maximum value among the pixels 1478*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelMin; ///<minimum value among the pixels 1479*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelAverage; ///<average value among the pixels 1480*53ee8cc1Swenshuai.xi } MS_IMAGE_MEM_INFO; 1481*53ee8cc1Swenshuai.xi 1482*53ee8cc1Swenshuai.xi /// defined channel select for contrast adjusting. 1483*53ee8cc1Swenshuai.xi typedef enum 1484*53ee8cc1Swenshuai.xi { 1485*53ee8cc1Swenshuai.xi XC_VOP_CHR = 0, ///< Channel R 1486*53ee8cc1Swenshuai.xi XC_VOP_CHG, ///< Channel G 1487*53ee8cc1Swenshuai.xi XC_VOP_CHB, ///< Channel B 1488*53ee8cc1Swenshuai.xi XC_VOP_ALL, ///< All Channel 1489*53ee8cc1Swenshuai.xi }MS_XC_VOP_CHANNEL_t; 1490*53ee8cc1Swenshuai.xi 1491*53ee8cc1Swenshuai.xi /// Define Scaler GOP IP setting. 1492*53ee8cc1Swenshuai.xi typedef enum 1493*53ee8cc1Swenshuai.xi { 1494*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP0, 1495*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP1, 1496*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP2, 1497*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP0, 1498*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP1, 1499*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP2, 1500*53ee8cc1Swenshuai.xi MS_MVOP_SEL, 1501*53ee8cc1Swenshuai.xi }MS_XC_IPSEL_GOP; 1502*53ee8cc1Swenshuai.xi 1503*53ee8cc1Swenshuai.xi /// Define Scaler memory format 1504*53ee8cc1Swenshuai.xi typedef enum 1505*53ee8cc1Swenshuai.xi { 1506*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_AUTO = 0, 1507*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_444 = 1, 1508*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_422 = 2, 1509*53ee8cc1Swenshuai.xi }MS_XC_MEM_FMT; 1510*53ee8cc1Swenshuai.xi 1511*53ee8cc1Swenshuai.xi /// Define the PQ path information 1512*53ee8cc1Swenshuai.xi /** 1513*53ee8cc1Swenshuai.xi * The active Window for PQ function to takes place. 1514*53ee8cc1Swenshuai.xi */ 1515*53ee8cc1Swenshuai.xi typedef enum 1516*53ee8cc1Swenshuai.xi { 1517*53ee8cc1Swenshuai.xi /// Main window 1518*53ee8cc1Swenshuai.xi PQ_MAIN_WINDOW=0, 1519*53ee8cc1Swenshuai.xi /// Sub window 1520*53ee8cc1Swenshuai.xi PQ_SUB_WINDOW=1, 1521*53ee8cc1Swenshuai.xi /// The max support window of PQ 1522*53ee8cc1Swenshuai.xi PQ_MAX_WINDOW 1523*53ee8cc1Swenshuai.xi }PQ_WIN; 1524*53ee8cc1Swenshuai.xi 1525*53ee8cc1Swenshuai.xi typedef enum 1526*53ee8cc1Swenshuai.xi { 1527*53ee8cc1Swenshuai.xi PQ_XC_ID_0, 1528*53ee8cc1Swenshuai.xi PQ_XC_ID_1, 1529*53ee8cc1Swenshuai.xi PQ_XC_ID_NUM, 1530*53ee8cc1Swenshuai.xi }PQ_XC_ID; 1531*53ee8cc1Swenshuai.xi 1532*53ee8cc1Swenshuai.xi /** 1533*53ee8cc1Swenshuai.xi * FOURCE COLOR FMT 1534*53ee8cc1Swenshuai.xi */ 1535*53ee8cc1Swenshuai.xi typedef enum 1536*53ee8cc1Swenshuai.xi { 1537*53ee8cc1Swenshuai.xi /// Default 1538*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_DEFAULT, 1539*53ee8cc1Swenshuai.xi /// RGB 1540*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_RGB, 1541*53ee8cc1Swenshuai.xi /// YUV 1542*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_YUV, 1543*53ee8cc1Swenshuai.xi }PQ_FOURCE_COLOR_FMT; 1544*53ee8cc1Swenshuai.xi 1545*53ee8cc1Swenshuai.xi /** 1546*53ee8cc1Swenshuai.xi * PQ DEINTERLACE MODE 1547*53ee8cc1Swenshuai.xi */ 1548*53ee8cc1Swenshuai.xi typedef enum 1549*53ee8cc1Swenshuai.xi { 1550*53ee8cc1Swenshuai.xi /// off 1551*53ee8cc1Swenshuai.xi PQ_DEINT_OFF=0, 1552*53ee8cc1Swenshuai.xi /// 2DDI BOB 1553*53ee8cc1Swenshuai.xi PQ_DEINT_2DDI_BOB, 1554*53ee8cc1Swenshuai.xi /// 2DDI AVG 1555*53ee8cc1Swenshuai.xi PQ_DEINT_2DDI_AVG, 1556*53ee8cc1Swenshuai.xi /// 3DDI History(24 bit) 1557*53ee8cc1Swenshuai.xi PQ_DEINT_3DDI_HISTORY, 1558*53ee8cc1Swenshuai.xi /// 3DDI(16 bit) 1559*53ee8cc1Swenshuai.xi PQ_DEINT_3DDI, 1560*53ee8cc1Swenshuai.xi } PQ_DEINTERLACE_MODE; 1561*53ee8cc1Swenshuai.xi /** 1562*53ee8cc1Swenshuai.xi * Video data information to supply when in PQ mode. 1563*53ee8cc1Swenshuai.xi */ 1564*53ee8cc1Swenshuai.xi typedef struct 1565*53ee8cc1Swenshuai.xi { 1566*53ee8cc1Swenshuai.xi /// is FBL or not 1567*53ee8cc1Swenshuai.xi MS_BOOL bFBL; 1568*53ee8cc1Swenshuai.xi /// is interlace mode or not 1569*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; 1570*53ee8cc1Swenshuai.xi /// input Horizontal size 1571*53ee8cc1Swenshuai.xi MS_U16 u16input_hsize; 1572*53ee8cc1Swenshuai.xi /// input Vertical size 1573*53ee8cc1Swenshuai.xi MS_U16 u16input_vsize; 1574*53ee8cc1Swenshuai.xi /// input Vertical total 1575*53ee8cc1Swenshuai.xi MS_U16 u16input_vtotal; 1576*53ee8cc1Swenshuai.xi /// input Vertical frequency 1577*53ee8cc1Swenshuai.xi MS_U16 u16input_vfreq; 1578*53ee8cc1Swenshuai.xi /// output Vertical frequency 1579*53ee8cc1Swenshuai.xi MS_U16 u16ouput_vfreq; 1580*53ee8cc1Swenshuai.xi /// Display Horizontal size 1581*53ee8cc1Swenshuai.xi MS_U16 u16display_hsize; 1582*53ee8cc1Swenshuai.xi /// Display Vertical size 1583*53ee8cc1Swenshuai.xi MS_U16 u16display_vsize; 1584*53ee8cc1Swenshuai.xi }MS_PQ_Mode_Info; 1585*53ee8cc1Swenshuai.xi /** 1586*53ee8cc1Swenshuai.xi * INPUT SOURCE TYPE 1587*53ee8cc1Swenshuai.xi */ 1588*53ee8cc1Swenshuai.xi typedef enum 1589*53ee8cc1Swenshuai.xi { 1590*53ee8cc1Swenshuai.xi /// VGA 1591*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_VGA, 1592*53ee8cc1Swenshuai.xi /// TV 1593*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_TV, 1594*53ee8cc1Swenshuai.xi 1595*53ee8cc1Swenshuai.xi /// CVBS 1596*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_CVBS, 1597*53ee8cc1Swenshuai.xi 1598*53ee8cc1Swenshuai.xi /// S-video 1599*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_SVIDEO, 1600*53ee8cc1Swenshuai.xi 1601*53ee8cc1Swenshuai.xi /// Component 1602*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_YPBPR, 1603*53ee8cc1Swenshuai.xi /// Scart 1604*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_SCART, 1605*53ee8cc1Swenshuai.xi 1606*53ee8cc1Swenshuai.xi 1607*53ee8cc1Swenshuai.xi /// HDMI 1608*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_HDMI, 1609*53ee8cc1Swenshuai.xi 1610*53ee8cc1Swenshuai.xi /// DTV 1611*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_DTV, 1612*53ee8cc1Swenshuai.xi 1613*53ee8cc1Swenshuai.xi /// DVI 1614*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_DVI, 1615*53ee8cc1Swenshuai.xi 1616*53ee8cc1Swenshuai.xi // Application source 1617*53ee8cc1Swenshuai.xi /// Storage 1618*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_STORAGE, 1619*53ee8cc1Swenshuai.xi /// KTV 1620*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_KTV, 1621*53ee8cc1Swenshuai.xi /// JPEG 1622*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_JPEG, 1623*53ee8cc1Swenshuai.xi 1624*53ee8cc1Swenshuai.xi /// The max support number of PQ input source 1625*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_NUM, 1626*53ee8cc1Swenshuai.xi /// None 1627*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_NONE = PQ_INPUT_SOURCE_NUM, 1628*53ee8cc1Swenshuai.xi } PQ_INPUT_SOURCE_TYPE; 1629*53ee8cc1Swenshuai.xi 1630*53ee8cc1Swenshuai.xi 1631*53ee8cc1Swenshuai.xi // PQ Function 1632*53ee8cc1Swenshuai.xi typedef enum 1633*53ee8cc1Swenshuai.xi { 1634*53ee8cc1Swenshuai.xi E_PQ_IOCTL_NONE = 0x00000000, 1635*53ee8cc1Swenshuai.xi E_PQ_IOCTL_HSD_SAMPLING = 0x00000001, 1636*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PREVSD_BILINEAR = 0x00000002, 1637*53ee8cc1Swenshuai.xi E_PQ_IOCTL_ADC_SAMPLING = 0x00000003, 1638*53ee8cc1Swenshuai.xi E_PQ_IOCTL_RFBL_CTRL = 0x00000004, 1639*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PQ_SUGGESTED_FRAMENUM = 0x00000008, 1640*53ee8cc1Swenshuai.xi E_PQ_IOCTL_SET_UCFEATURE = 0x00000010, 1641*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PQ_SUGGESTED_FRCMFRAMENUM = 0x00000020, 1642*53ee8cc1Swenshuai.xi 1643*53ee8cc1Swenshuai.xi E_PQ_IOCTL_NUM, 1644*53ee8cc1Swenshuai.xi }PQ_IOCTL_FLAG_TYPE; 1645*53ee8cc1Swenshuai.xi 1646*53ee8cc1Swenshuai.xi typedef struct s_PQ_Function 1647*53ee8cc1Swenshuai.xi { 1648*53ee8cc1Swenshuai.xi 1649*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode)(PQ_WIN eWindow, MS_BOOL bOn); 1650*53ee8cc1Swenshuai.xi 1651*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable)(PQ_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1652*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1653*53ee8cc1Swenshuai.xi 1654*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc)(PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1655*53ee8cc1Swenshuai.xi 1656*53ee8cc1Swenshuai.xi PQ_DEINTERLACE_MODE (* pq_set_memformat)(PQ_WIN eWindow, MS_BOOL bMemFmt422, MS_BOOL bFBL, MS_U8 *u8BitsPerPixel); 1657*53ee8cc1Swenshuai.xi 1658*53ee8cc1Swenshuai.xi void (* pq_set_420upsampling)(PQ_WIN eWindow, MS_BOOL bFBL, MS_BOOL bPreV_ScalingDown, MS_U16 u16V_CropStart); 1659*53ee8cc1Swenshuai.xi 1660*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo)(PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_Mode_Info *pstPQModeInfo); 1661*53ee8cc1Swenshuai.xi 1662*53ee8cc1Swenshuai.xi void (* pq_deside_srctype)(PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType); 1663*53ee8cc1Swenshuai.xi 1664*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt)(PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1665*53ee8cc1Swenshuai.xi 1666*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl)(PQ_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1667*53ee8cc1Swenshuai.xi 1668*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_BOOL bOn); 1669*53ee8cc1Swenshuai.xi 1670*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1671*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1672*53ee8cc1Swenshuai.xi 1673*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1674*53ee8cc1Swenshuai.xi 1675*53ee8cc1Swenshuai.xi PQ_DEINTERLACE_MODE (* pq_set_memformat_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_BOOL bMemFmt422, MS_BOOL bFBL, MS_U8 *u8BitsPerPixel); 1676*53ee8cc1Swenshuai.xi 1677*53ee8cc1Swenshuai.xi void (* pq_set_420upsampling_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_BOOL bFBL, MS_BOOL bPreV_ScalingDown, MS_U16 u16V_CropStart); 1678*53ee8cc1Swenshuai.xi 1679*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_Mode_Info *pstPQModeInfo); 1680*53ee8cc1Swenshuai.xi 1681*53ee8cc1Swenshuai.xi void (* pq_deside_srctype_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType); 1682*53ee8cc1Swenshuai.xi 1683*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1684*53ee8cc1Swenshuai.xi 1685*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1686*53ee8cc1Swenshuai.xi }PQ_Function_Info; 1687*53ee8cc1Swenshuai.xi 1688*53ee8cc1Swenshuai.xi typedef struct 1689*53ee8cc1Swenshuai.xi { 1690*53ee8cc1Swenshuai.xi MS_U32 u32ratio; 1691*53ee8cc1Swenshuai.xi MS_BOOL bADVMode; 1692*53ee8cc1Swenshuai.xi }PQ_HSD_SAMPLING_INFO; 1693*53ee8cc1Swenshuai.xi 1694*53ee8cc1Swenshuai.xi typedef struct 1695*53ee8cc1Swenshuai.xi { 1696*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_TYPE enPQSourceType; 1697*53ee8cc1Swenshuai.xi MS_PQ_Mode_Info stPQModeInfo; 1698*53ee8cc1Swenshuai.xi MS_U16 u16ratio; 1699*53ee8cc1Swenshuai.xi }PQ_ADC_SAMPLING_INFO; 1700*53ee8cc1Swenshuai.xi 1701*53ee8cc1Swenshuai.xi //Display information 1702*53ee8cc1Swenshuai.xi typedef struct 1703*53ee8cc1Swenshuai.xi { 1704*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 1705*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE vertical start 1706*53ee8cc1Swenshuai.xi MS_U32 DEVEND;//Output DE Vertical end 1707*53ee8cc1Swenshuai.xi MS_U32 HDTOT;// Output horizontal total 1708*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 1709*53ee8cc1Swenshuai.xi MS_U32 DEHEND;// Output DE horizontal end 1710*53ee8cc1Swenshuai.xi MS_BOOL bInterlaceMode; 1711*53ee8cc1Swenshuai.xi MS_BOOL bYUVInput; 1712*53ee8cc1Swenshuai.xi } MS_XC_DST_DispInfo; 1713*53ee8cc1Swenshuai.xi 1714*53ee8cc1Swenshuai.xi typedef enum 1715*53ee8cc1Swenshuai.xi { 1716*53ee8cc1Swenshuai.xi ///IP2 path. 1717*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP2=0, 1718*53ee8cc1Swenshuai.xi 1719*53ee8cc1Swenshuai.xi /// IP man path. 1720*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP1_MAIN=1, 1721*53ee8cc1Swenshuai.xi 1722*53ee8cc1Swenshuai.xi ///IP sub path. 1723*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP1_SUB=2, 1724*53ee8cc1Swenshuai.xi 1725*53ee8cc1Swenshuai.xi /// op1 main path. 1726*53ee8cc1Swenshuai.xi E_GOP_XCDST_OP1_MAIN=3, 1727*53ee8cc1Swenshuai.xi 1728*53ee8cc1Swenshuai.xi MAX_GOP_XCDST_SUPPORT 1729*53ee8cc1Swenshuai.xi 1730*53ee8cc1Swenshuai.xi } EN_GOP_XCDST_TYPE; 1731*53ee8cc1Swenshuai.xi 1732*53ee8cc1Swenshuai.xi /// Set data mux to VE 1733*53ee8cc1Swenshuai.xi typedef enum 1734*53ee8cc1Swenshuai.xi { 1735*53ee8cc1Swenshuai.xi /// GOP mux0 to VE 1736*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND0, 1737*53ee8cc1Swenshuai.xi /// GOP mux1 to VE 1738*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND1, 1739*53ee8cc1Swenshuai.xi /// GOP mux2 to VE 1740*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND2, 1741*53ee8cc1Swenshuai.xi /// mux from XC MACE 1742*53ee8cc1Swenshuai.xi E_VOP_SEL_MACE_RGB, 1743*53ee8cc1Swenshuai.xi 1744*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_NONE, 1745*53ee8cc1Swenshuai.xi /// Last GOP mux to VE 1746*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_LAST = 0x80, 1747*53ee8cc1Swenshuai.xi } EN_VOP_SEL_OSD_XC2VE_MUX; 1748*53ee8cc1Swenshuai.xi 1749*53ee8cc1Swenshuai.xi // 3D info 1750*53ee8cc1Swenshuai.xi typedef enum 1751*53ee8cc1Swenshuai.xi { 1752*53ee8cc1Swenshuai.xi //range [0000 ~ 1111] reserved for hdmi 3D spec 1753*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_PACKING = 0x00, //0000 1754*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FIELD_ALTERNATIVE = 0x01, //0001 1755*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_LINE_ALTERNATIVE = 0x02, //0010 1756*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_FULL = 0x03, //0011 1757*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_L_DEPTH = 0x04, //0100 1758*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_L_DEPTH_GRAPHICS_GRAPHICS_DEPTH = 0x05, //0101 1759*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_TOP_BOTTOM = 0x06, //0110 1760*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF = 0x08, //1000 1761*53ee8cc1Swenshuai.xi 1762*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_CHECK_BORAD = 0x09, //1001 1763*53ee8cc1Swenshuai.xi 1764*53ee8cc1Swenshuai.xi //user defined 1765*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE_USER = 0x10, 1766*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE_NONE = E_XC_3D_INPUT_MODE_USER, 1767*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_ALTERNATIVE, 1768*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE, 1769*53ee8cc1Swenshuai.xi // optimize for format: in:E_XC_3D_INPUT_FRAME_PACKING, out:E_XC_3D_OUTPUT_TOP_BOTTOM,E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF 1770*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_PACKING_OPT, 1771*53ee8cc1Swenshuai.xi // optimize for format: in:E_XC_3D_INPUT_TOP_BOTTOM, out:E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF 1772*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_TOP_BOTTOM_OPT, 1773*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D, 1774*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_INTERLACE, 1775*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_INTERLACE_PTP, 1776*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE_OPT, 1777*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_HW, //for hw 2D to 3D use 1778*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_PIXEL_ALTERNATIVE, 1779*53ee8cc1Swenshuai.xi } E_XC_3D_INPUT_MODE; 1780*53ee8cc1Swenshuai.xi 1781*53ee8cc1Swenshuai.xi 1782*53ee8cc1Swenshuai.xi typedef enum 1783*53ee8cc1Swenshuai.xi { 1784*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE_NONE, 1785*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_LINE_ALTERNATIVE , 1786*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_TOP_BOTTOM, 1787*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF, 1788*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE, //25-->50,30-->60,24-->48,50-->100,60-->120----FRC 1:2 1789*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_L, 1790*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_R, 1791*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_NOFRC, //50->50, 60->60-------------------------------FRC 1:1 1792*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_CHECKBOARD_HW, //for hw 2d to 3d use 1793*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_LINE_ALTERNATIVE_HW, //for hw 2d to 3d use 1794*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_PIXEL_ALTERNATIVE_HW, //for hw 2d to 3d use 1795*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_L_HW, //for hw 2d to 3d use 1796*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_R_HW, //for hw 2d to 3d use 1797*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_HW, //for hw 2d to 3d use 1798*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_TOP_BOTTOM_HW, //for hw 2d to 3d use, it based on E_XC_3D_OUTPUT_TOP_BOTTOM implement 1799*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF_HW, //for hw 2d to 3d use, it based on E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF implement 1800*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_PACKING, 1801*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR,//for 4k0.5k@240 3D 1802*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR_HW//for HW 2Dto3D 4k0.5k@240 3D 1803*53ee8cc1Swenshuai.xi } E_XC_3D_OUTPUT_MODE; 1804*53ee8cc1Swenshuai.xi 1805*53ee8cc1Swenshuai.xi typedef enum 1806*53ee8cc1Swenshuai.xi { 1807*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_MODE_NONE , 1808*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1920x1080 , 1809*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_960x1080 , 1810*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1920x540 , 1811*53ee8cc1Swenshuai.xi 1812*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1280x720 , 1813*53ee8cc1Swenshuai.xi } E_XC_3D_OUTPUT_FI_MODE; 1814*53ee8cc1Swenshuai.xi 1815*53ee8cc1Swenshuai.xi typedef enum 1816*53ee8cc1Swenshuai.xi { 1817*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_SW, 1818*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_HW, 1819*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_HW_COMPATIBLE, 1820*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_MAX 1821*53ee8cc1Swenshuai.xi }E_XC_3D_AUTODETECT_METHOD; 1822*53ee8cc1Swenshuai.xi 1823*53ee8cc1Swenshuai.xi typedef enum 1824*53ee8cc1Swenshuai.xi { 1825*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_NONE, 1826*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_SHUTTER, //240hz panel, which can process updown, leftright,vertical or horizontal line weave 1827*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_PELLICLE, //120hz panel, which can only process horizontal line weave 1828*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_4K1K_SHUTTER, //120hz 4K1K panel, which can process updown, leftright,vertical or horizontal line weave 1829*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_MAX, 1830*53ee8cc1Swenshuai.xi } E_XC_3D_PANEL_TYPE; 1831*53ee8cc1Swenshuai.xi 1832*53ee8cc1Swenshuai.xi //hw 2d to 3d para 1833*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1834*53ee8cc1Swenshuai.xi { 1835*53ee8cc1Swenshuai.xi MS_U32 u32Hw2dTo3dPara_Version; 1836*53ee8cc1Swenshuai.xi MS_U16 u16Concave; 1837*53ee8cc1Swenshuai.xi MS_U16 u16Gain; 1838*53ee8cc1Swenshuai.xi MS_U16 u16Offset; 1839*53ee8cc1Swenshuai.xi MS_U16 u16ArtificialGain; 1840*53ee8cc1Swenshuai.xi MS_U16 u16EleSel; 1841*53ee8cc1Swenshuai.xi MS_U16 u16ModSel; 1842*53ee8cc1Swenshuai.xi MS_U16 u16EdgeBlackWidth; 1843*53ee8cc1Swenshuai.xi } MS_XC_3D_HW2DTO3D_PARA; 1844*53ee8cc1Swenshuai.xi 1845*53ee8cc1Swenshuai.xi //detect 3d format para 1846*53ee8cc1Swenshuai.xi typedef struct 1847*53ee8cc1Swenshuai.xi { 1848*53ee8cc1Swenshuai.xi MS_U32 u32Detect3DFormatPara_Version; //version control, back compatible 1849*53ee8cc1Swenshuai.xi //////////////////obsolete field begin/////////////////////////////////////////////////////////////////////////////////////////////////////////// 1850*53ee8cc1Swenshuai.xi MS_U16 u16HorSearchRange; //the horizontal range for find the similar pixel at R image 1851*53ee8cc1Swenshuai.xi MS_U16 u16VerSearchRange; //the vertical range for find the similar pixel at R image 1852*53ee8cc1Swenshuai.xi MS_U16 u16GYPixelThreshold; //g/y pixel threshold for define the similar pixel 1853*53ee8cc1Swenshuai.xi MS_U16 u16RCrPixelThreshold; //r/cr pixel threshold for define the similar pixel 1854*53ee8cc1Swenshuai.xi MS_U16 u16BCbPixelThreshold; //b/cb pixel threshold for define the similar pixel 1855*53ee8cc1Swenshuai.xi MS_U16 u16HorSampleCount; //the horizontal sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 1856*53ee8cc1Swenshuai.xi MS_U16 u16VerSampleCount; //the vertical sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 1857*53ee8cc1Swenshuai.xi MS_U16 u16MaxCheckingFrameCount; //the max checking frame count 1858*53ee8cc1Swenshuai.xi MS_U16 u16HitPixelPercentage; //the percentage about hit pixel in one frame total checked pixel, for example: 70%, need set as 70 1859*53ee8cc1Swenshuai.xi //////////////////obsolete field end///////////////////////////////////////////////////////////////////////////////////////////////////////////// 1860*53ee8cc1Swenshuai.xi MS_BOOL bEnableOverscan; //detect 3d format for considering overscan shift 1861*53ee8cc1Swenshuai.xi } MS_XC_3D_DETECT3DFORMAT_PARA; 1862*53ee8cc1Swenshuai.xi 1863*53ee8cc1Swenshuai.xi //define 3d fp info para 1864*53ee8cc1Swenshuai.xi typedef struct 1865*53ee8cc1Swenshuai.xi { 1866*53ee8cc1Swenshuai.xi MS_U32 u32FPInfoPara_Version; //version control, back compatible 1867*53ee8cc1Swenshuai.xi MS_U16 u16HBlank; //horizontal blank 1868*53ee8cc1Swenshuai.xi MS_BOOL bEnableUserSetting; //enable user setting 1869*53ee8cc1Swenshuai.xi } MS_XC_3D_FPINFO_PARA; 1870*53ee8cc1Swenshuai.xi 1871*53ee8cc1Swenshuai.xi typedef enum 1872*53ee8cc1Swenshuai.xi { 1873*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_DISABLE_ALL = 0, 1874*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_DISABLE = 1, 1875*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_ENABLE = 2, 1876*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_MAX, 1877*53ee8cc1Swenshuai.xi }EN_FPLL_DBG_MODE;//For debug purpose only! 1878*53ee8cc1Swenshuai.xi 1879*53ee8cc1Swenshuai.xi typedef enum 1880*53ee8cc1Swenshuai.xi { 1881*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_PHASELIMIT = 0, 1882*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_D5D6D7 = 1, 1883*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_IGAIN = 2, 1884*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_PGAIN = 3, 1885*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_INITSETSTEP = 4, 1886*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_INITSETDELAY= 5, 1887*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_MAX, 1888*53ee8cc1Swenshuai.xi }EN_FPLL_DBG_FLAG;//For debug purpose only! 1889*53ee8cc1Swenshuai.xi 1890*53ee8cc1Swenshuai.xi typedef enum 1891*53ee8cc1Swenshuai.xi { 1892*53ee8cc1Swenshuai.xi E_FPLL_MODE_DISABLE_ALL = 0, /// Disable all current FPLL customer setting(then scaler will auto decide it) 1893*53ee8cc1Swenshuai.xi E_FPLL_MODE_DISABLE = 1, /// Disable the specified(by other function parameter) FPLL customer setting 1894*53ee8cc1Swenshuai.xi E_FPLL_MODE_ENABLE = 2, /// Enable the specified(by other function parameter) FPLL customer setting 1895*53ee8cc1Swenshuai.xi E_FPLL_MODE_MAX, 1896*53ee8cc1Swenshuai.xi }EN_FPLL_MODE; 1897*53ee8cc1Swenshuai.xi 1898*53ee8cc1Swenshuai.xi typedef enum 1899*53ee8cc1Swenshuai.xi { 1900*53ee8cc1Swenshuai.xi E_FPLL_FLAG_PHASELIMIT = 0, ///Set customer setting of PHASE limit 1901*53ee8cc1Swenshuai.xi E_FPLL_FLAG_D5D6D7 = 1,///Set customer setting of D5D6D7 limit 1902*53ee8cc1Swenshuai.xi E_FPLL_FLAG_IGAIN = 2,///Set customer setting of IGAIN 1903*53ee8cc1Swenshuai.xi E_FPLL_FLAG_PGAIN = 3,///Set customer setting of PGAIN 1904*53ee8cc1Swenshuai.xi E_FPLL_FLAG_INITSETSTEP = 4, ///steps to set DCLK 1905*53ee8cc1Swenshuai.xi E_FPLL_FLAG_INITSETDELAY= 5, ///delay between steps when setting DCLK 1906*53ee8cc1Swenshuai.xi E_FPLL_FLAG_MAX, 1907*53ee8cc1Swenshuai.xi }EN_FPLL_FLAG; 1908*53ee8cc1Swenshuai.xi 1909*53ee8cc1Swenshuai.xi typedef enum 1910*53ee8cc1Swenshuai.xi { 1911*53ee8cc1Swenshuai.xi E_MLOAD_UNSUPPORTED = 0, 1912*53ee8cc1Swenshuai.xi E_MLOAD_DISABLED = 1, 1913*53ee8cc1Swenshuai.xi E_MLOAD_ENABLED = 2, 1914*53ee8cc1Swenshuai.xi }MLOAD_TYPE; 1915*53ee8cc1Swenshuai.xi 1916*53ee8cc1Swenshuai.xi typedef enum 1917*53ee8cc1Swenshuai.xi { 1918*53ee8cc1Swenshuai.xi E_MLG_UNSUPPORTED = 0, 1919*53ee8cc1Swenshuai.xi E_MLG_DISABLED = 1, 1920*53ee8cc1Swenshuai.xi E_MLG_ENABLED = 2, 1921*53ee8cc1Swenshuai.xi }MLG_TYPE; 1922*53ee8cc1Swenshuai.xi 1923*53ee8cc1Swenshuai.xi typedef enum 1924*53ee8cc1Swenshuai.xi { 1925*53ee8cc1Swenshuai.xi HDMI_SYNC_DE, 1926*53ee8cc1Swenshuai.xi HDMI_SYNC_HV, 1927*53ee8cc1Swenshuai.xi } E_HDMI_SYNC_TYPE; 1928*53ee8cc1Swenshuai.xi 1929*53ee8cc1Swenshuai.xi typedef enum 1930*53ee8cc1Swenshuai.xi { 1931*53ee8cc1Swenshuai.xi MS_FRC_1_1 = 0, 1932*53ee8cc1Swenshuai.xi MS_FRC_1_2 = 1, 1933*53ee8cc1Swenshuai.xi MS_FRC_5_12 = 2, 1934*53ee8cc1Swenshuai.xi MS_FRC_2_5 = 3, 1935*53ee8cc1Swenshuai.xi MS_FRC_1_4 = 4, 1936*53ee8cc1Swenshuai.xi 1937*53ee8cc1Swenshuai.xi MS_FRC_2_1 = 8, 1938*53ee8cc1Swenshuai.xi } MS_FRC_TYPE; 1939*53ee8cc1Swenshuai.xi 1940*53ee8cc1Swenshuai.xi // scaler FRC table 1941*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1942*53ee8cc1Swenshuai.xi { 1943*53ee8cc1Swenshuai.xi MS_U16 u16LowerBound; 1944*53ee8cc1Swenshuai.xi MS_U16 u16HigherBound; 1945*53ee8cc1Swenshuai.xi MS_U8 u8Padding; 1946*53ee8cc1Swenshuai.xi MS_U8 u8FRC_In; // ivs 1947*53ee8cc1Swenshuai.xi MS_U8 u8FRC_Out; // ovs 1948*53ee8cc1Swenshuai.xi MS_FRC_TYPE eFRC_Type; 1949*53ee8cc1Swenshuai.xi } SC_FRC_SETTING; 1950*53ee8cc1Swenshuai.xi 1951*53ee8cc1Swenshuai.xi typedef enum 1952*53ee8cc1Swenshuai.xi { 1953*53ee8cc1Swenshuai.xi E_PQ_IOCTL_GET_HSD_SAMPLING, 1954*53ee8cc1Swenshuai.xi E_PQ_IOCTL_MAX, 1955*53ee8cc1Swenshuai.xi }E_PQ_IOCTL_FLAG; 1956*53ee8cc1Swenshuai.xi 1957*53ee8cc1Swenshuai.xi 1958*53ee8cc1Swenshuai.xi typedef enum 1959*53ee8cc1Swenshuai.xi { 1960*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_FAIL = 0, ///<Fail 1961*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_OK, ///<OK 1962*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_OUT_OF_RANGE, ///< out of range 1963*53ee8cc1Swenshuai.xi } E_APIXC_GET_PixelRGB_ReturnValue; 1964*53ee8cc1Swenshuai.xi 1965*53ee8cc1Swenshuai.xi 1966*53ee8cc1Swenshuai.xi typedef enum 1967*53ee8cc1Swenshuai.xi { 1968*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_AFTER_DLC = 0x01, 1969*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_PRE_GAMMA = 0x02, 1970*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_AFTER_OSD = 0x03, 1971*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_MAX = 0xFF, 1972*53ee8cc1Swenshuai.xi }EN_XC_GET_PIXEL_RGB_STAGE; 1973*53ee8cc1Swenshuai.xi 1974*53ee8cc1Swenshuai.xi typedef struct 1975*53ee8cc1Swenshuai.xi { 1976*53ee8cc1Swenshuai.xi EN_XC_GET_PIXEL_RGB_STAGE enStage; 1977*53ee8cc1Swenshuai.xi MS_U16 u16x; 1978*53ee8cc1Swenshuai.xi MS_U16 u16y; 1979*53ee8cc1Swenshuai.xi MS_U32 u32r; 1980*53ee8cc1Swenshuai.xi MS_U32 u32g; 1981*53ee8cc1Swenshuai.xi MS_U32 u32b; 1982*53ee8cc1Swenshuai.xi }XC_Get_Pixel_RGB; 1983*53ee8cc1Swenshuai.xi 1984*53ee8cc1Swenshuai.xi typedef struct 1985*53ee8cc1Swenshuai.xi { 1986*53ee8cc1Swenshuai.xi MS_U32 u32ReportPixelInfo_Version; ///<Input: Version of current structure. Please always set to "XC_REPORT_PIXELINFO_VERSION" as input 1987*53ee8cc1Swenshuai.xi MS_U16 u16ReportPixelInfo_Length; ///<Input: Length of this structure, u16ReportPixelInfo_Length=sizeof(MS_XC_REPORT_PIXELINFO) 1988*53ee8cc1Swenshuai.xi EN_XC_GET_PIXEL_RGB_STAGE enStage; ///<Input: Pixel info report stage 1989*53ee8cc1Swenshuai.xi MS_U16 u16RepWinColor; ///<Input:Report window Color 1990*53ee8cc1Swenshuai.xi MS_U16 u16XStart; ///<Input: X start location of report window 1991*53ee8cc1Swenshuai.xi MS_U16 u16XEnd; ///<Input: X end location of report window 1992*53ee8cc1Swenshuai.xi MS_U16 u16YStart; ///<Input: Y start location of report window 1993*53ee8cc1Swenshuai.xi MS_U16 u16YEnd; ///<Input: Y end location of report window 1994*53ee8cc1Swenshuai.xi MS_U16 u16RCrMin; ///<Output:R or Cr min value 1995*53ee8cc1Swenshuai.xi MS_U16 u16RCrMax; ///<Output:R or Cr max value 1996*53ee8cc1Swenshuai.xi MS_U16 u16GYMin; ///<Output:G or Y min value 1997*53ee8cc1Swenshuai.xi MS_U16 u16GYMax; ///<Output:G or Y max value 1998*53ee8cc1Swenshuai.xi MS_U16 u16BCbMin; ///<Output:B or Cb min value 1999*53ee8cc1Swenshuai.xi MS_U16 u16BCbMax; ///<Output:B or Cb max value 2000*53ee8cc1Swenshuai.xi MS_U32 u32RCrSum; ///<Output:R or Cr sum value 2001*53ee8cc1Swenshuai.xi MS_U32 u32GYSum; ///<Output:G or Y sum value 2002*53ee8cc1Swenshuai.xi MS_U32 u32BCbSum; ///<Output:B or Cb sum value 2003*53ee8cc1Swenshuai.xi MS_BOOL bShowRepWin; ///<Input: Show report window or not 2004*53ee8cc1Swenshuai.xi }MS_XC_REPORT_PIXELINFO; 2005*53ee8cc1Swenshuai.xi 2006*53ee8cc1Swenshuai.xi // scaler interrupt sources 2007*53ee8cc1Swenshuai.xi typedef enum 2008*53ee8cc1Swenshuai.xi { 2009*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 2010*53ee8cc1Swenshuai.xi SC_INT_DIPW = 1, //DIPW write one frame done interrupt 2011*53ee8cc1Swenshuai.xi SC_INT_START = 4, 2012*53ee8cc1Swenshuai.xi SC_INT_RESERVED1 = SC_INT_START, // before is SC_INT_TUNE_FAIL_P, FBL line buffer overrun/underrun 2013*53ee8cc1Swenshuai.xi // scaler dosen't have this interrupt now, 2014*53ee8cc1Swenshuai.xi 2015*53ee8cc1Swenshuai.xi SC_INT_VSINT, // output Vsync interrupt, can select polarity with BK0_04[1] 2016*53ee8cc1Swenshuai.xi SC_INT_F2_VTT_CHG, // main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 2017*53ee8cc1Swenshuai.xi SC_INT_F1_VTT_CHG, 2018*53ee8cc1Swenshuai.xi SC_INT_F2_VS_LOSE, // didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 2019*53ee8cc1Swenshuai.xi SC_INT_F1_VS_LOSE, 2020*53ee8cc1Swenshuai.xi SC_INT_F2_JITTER, // H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 2021*53ee8cc1Swenshuai.xi SC_INT_F1_JITTER, 2022*53ee8cc1Swenshuai.xi SC_INT_F2_IPVS_SB, // input V sync interrupt, can select which edge to trigger this interrupt with BK0_04[0] 2023*53ee8cc1Swenshuai.xi SC_INT_F1_IPVS_SB, 2024*53ee8cc1Swenshuai.xi SC_INT_F2_IPHCS_DET, // input H sync interrupt 2025*53ee8cc1Swenshuai.xi SC_INT_F1_IPHCS_DET, 2026*53ee8cc1Swenshuai.xi 2027*53ee8cc1Swenshuai.xi // 0x10 2028*53ee8cc1Swenshuai.xi SC_INT_PWM_RP_L_INT, // pwm rising edge of left frame 2029*53ee8cc1Swenshuai.xi SC_INT_PWM_FP_L_INT, // pwm falling edge of left frame 2030*53ee8cc1Swenshuai.xi SC_INT_F2_HTT_CHG, // Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 2031*53ee8cc1Swenshuai.xi SC_INT_F1_HTT_CHG, 2032*53ee8cc1Swenshuai.xi SC_INT_F2_HS_LOSE, // didn't received H sync for a while or Hperiod count BK1_20[13:0] exceed max value 2033*53ee8cc1Swenshuai.xi SC_INT_F1_HS_LOSE, 2034*53ee8cc1Swenshuai.xi SC_INT_PWM_RP_R_INT, // pwm rising edge of right frame 2035*53ee8cc1Swenshuai.xi SC_INT_PWM_FP_R_INT, // pwm falling edge of right frame 2036*53ee8cc1Swenshuai.xi SC_INT_F2_CSOG, // composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 2037*53ee8cc1Swenshuai.xi SC_INT_F1_CSOG, 2038*53ee8cc1Swenshuai.xi SC_INT_F2_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATS_READY 2039*53ee8cc1Swenshuai.xi SC_INT_F1_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATS_READY 2040*53ee8cc1Swenshuai.xi SC_INT_F2_ATP_READY, // auto phase ready interrupt 2041*53ee8cc1Swenshuai.xi SC_INT_F1_ATP_READY, 2042*53ee8cc1Swenshuai.xi SC_INT_F2_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATG_READY 2043*53ee8cc1Swenshuai.xi SC_INT_F1_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATG_READY 2044*53ee8cc1Swenshuai.xi 2045*53ee8cc1Swenshuai.xi MAX_SC_INT, 2046*53ee8cc1Swenshuai.xi } SC_INT_SRC; 2047*53ee8cc1Swenshuai.xi 2048*53ee8cc1Swenshuai.xi typedef enum 2049*53ee8cc1Swenshuai.xi { 2050*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 2051*53ee8cc1Swenshuai.xi XC_INT_RESERVED1 = 4, ///< scaler dosen't have this interrupt now 2052*53ee8cc1Swenshuai.xi XC_INT_VSINT, ///< output Vsync interrupt 2053*53ee8cc1Swenshuai.xi XC_INT_F2_VTT_CHG, ///< main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 2054*53ee8cc1Swenshuai.xi XC_INT_F1_VTT_CHG, 2055*53ee8cc1Swenshuai.xi XC_INT_F2_VS_LOSE, ///< didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 2056*53ee8cc1Swenshuai.xi XC_INT_F1_VS_LOSE, 2057*53ee8cc1Swenshuai.xi XC_INT_F2_JITTER, ///< H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 2058*53ee8cc1Swenshuai.xi XC_INT_F1_JITTER, 2059*53ee8cc1Swenshuai.xi XC_INT_F2_IPVS_SB, ///< input V sync interrupt 2060*53ee8cc1Swenshuai.xi XC_INT_F1_IPVS_SB, 2061*53ee8cc1Swenshuai.xi XC_INT_F2_IPHCS_DET, ///< input H sync interrupt 2062*53ee8cc1Swenshuai.xi XC_INT_F1_IPHCS_DET, 2063*53ee8cc1Swenshuai.xi 2064*53ee8cc1Swenshuai.xi // 0x10 2065*53ee8cc1Swenshuai.xi XC_INT_PWM_RP_L_INT, ///< pwm rising edge of left frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 2066*53ee8cc1Swenshuai.xi XC_INT_PWM_FP_L_INT, ///< pwm falling edge of left frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 2067*53ee8cc1Swenshuai.xi XC_INT_F2_HTT_CHG, ///< Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 2068*53ee8cc1Swenshuai.xi XC_INT_F1_HTT_CHG, 2069*53ee8cc1Swenshuai.xi XC_INT_F2_HS_LOSE, ///< didn't received H sync for a while or Hperiod count BK1_20[13:0] exceed max value 2070*53ee8cc1Swenshuai.xi XC_INT_F1_HS_LOSE, 2071*53ee8cc1Swenshuai.xi XC_INT_PWM_RP_R_INT, ///< pwm rising edge of right frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 2072*53ee8cc1Swenshuai.xi XC_INT_PWM_FP_R_INT, ///< pwm falling edge of right frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 2073*53ee8cc1Swenshuai.xi XC_INT_F2_CSOG, ///< composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 2074*53ee8cc1Swenshuai.xi XC_INT_F1_CSOG, 2075*53ee8cc1Swenshuai.xi XC_INT_F2_RESERVED2, ///< scaler dosen't have this interrupt now 2076*53ee8cc1Swenshuai.xi XC_INT_F1_RESERVED2, 2077*53ee8cc1Swenshuai.xi XC_INT_F2_ATP_READY, ///< auto phase ready interrupt 2078*53ee8cc1Swenshuai.xi XC_INT_F1_ATP_READY, 2079*53ee8cc1Swenshuai.xi XC_INT_F2_RESERVED3, ///< scaler dosen't have this interrupt now 2080*53ee8cc1Swenshuai.xi XC_INT_F1_RESERVED3, 2081*53ee8cc1Swenshuai.xi } XC_INT_SRC; 2082*53ee8cc1Swenshuai.xi 2083*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 2084*53ee8cc1Swenshuai.xi typedef enum 2085*53ee8cc1Swenshuai.xi { 2086*53ee8cc1Swenshuai.xi E_VOP_LAYER_VIDEO_MUX1_MUX2 = 0, ///<0: Video->GOP1->GOP2 (GOP2 is one pipe later than GOP1) 2087*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_VIDEO_MUX1_MUX2, ///<1: FrameColor->Video->GOP1->GOP2 (GOP1/GOP2 smae pipe) 2088*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_VIDEO_MUX2_MUX1, ///<2: FrameColor->Video->GOP2->GOP1 (GOP1/GOP2 smae pipe) 2089*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2, ///<3: FrameColor->GOP1->Video->GOP2 (GOP1/GOP2 smae pipe) 2090*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO, ///<4: FrameColor->GOP1->GOP2->Video (GOP1/GOP2 smae pipe) 2091*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX2_VIDEO_MUX1, ///<5: FrameColor->GOP2->Video->GOP1 (GOP1/GOP2 smae pipe) 2092*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX2_MUX1_VIDEO, ///<6: FrameColor->GOP2->GOP1->Video (GOP1/GOP2 smae pipe) 2093*53ee8cc1Swenshuai.xi E_VOP_LAYER_RESERVED, 2094*53ee8cc1Swenshuai.xi } E_VOP_OSD_LAYER_SEL; 2095*53ee8cc1Swenshuai.xi 2096*53ee8cc1Swenshuai.xi /// OP2VOP de select 2097*53ee8cc1Swenshuai.xi typedef enum 2098*53ee8cc1Swenshuai.xi { 2099*53ee8cc1Swenshuai.xi E_OP2VOPDE_MAINWINDOW = 0, ///<0: capture main display window, no osd 2100*53ee8cc1Swenshuai.xi E_OP2VOPDE_SUBWINDOW, ///<1: capture sub display window, no osd 2101*53ee8cc1Swenshuai.xi E_OP2VOPDE_WHOLEFRAME, ///<2: Whole frame of panel DE, no osd 2102*53ee8cc1Swenshuai.xi E_OP2VOPDE_WHOLEFRAME_WITHOSD, ///<3: Whole frame of panel DE, with osd 2103*53ee8cc1Swenshuai.xi } E_OP2VOP_DE_SEL; 2104*53ee8cc1Swenshuai.xi 2105*53ee8cc1Swenshuai.xi typedef void (*SC_InterruptCb) (SC_INT_SRC enIntNum, void *pParam); ///< Interrupt callback function 2106*53ee8cc1Swenshuai.xi 2107*53ee8cc1Swenshuai.xi 2108*53ee8cc1Swenshuai.xi //Define Output Frame control 2109*53ee8cc1Swenshuai.xi typedef struct 2110*53ee8cc1Swenshuai.xi { 2111*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 2112*53ee8cc1Swenshuai.xi MS_U16 u16InVFreq; ///<input V frequency 2113*53ee8cc1Swenshuai.xi MS_U16 u16OutVFreq; ///<output V frequncy 2114*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 2115*53ee8cc1Swenshuai.xi 2116*53ee8cc1Swenshuai.xi }XC_OUTPUTFRAME_Info; 2117*53ee8cc1Swenshuai.xi 2118*53ee8cc1Swenshuai.xi /// Define XC Init MISC 2119*53ee8cc1Swenshuai.xi /// please enum use BIT0 = 1, BIT1 = 2, BIT3 = 4 2120*53ee8cc1Swenshuai.xi typedef enum 2121*53ee8cc1Swenshuai.xi { 2122*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_NULL = 0, 2123*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IMMESWITCH = 1, 2124*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IMMESWITCH_DVI_POWERSAVING = 2, 2125*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_DVI_AUTO_EQ = 4, 2126*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE = 8, 2127*53ee8cc1Swenshuai.xi 2128*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_OSD_TO_HSLVDS = 0x10, 2129*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_60HZ = 0x20, // for 60Hz FRC case 2130*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_240HZ = 0x40, // for 240Hz FRC case 2131*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_4K1K_120HZ = 0x80, // for 4K1K 120Hz FRC case 2132*53ee8cc1Swenshuai.xi 2133*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_ADC_AUTO_SCART_SV = 0x100, // Support S-Video Auto Switch on SCART 2134*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_KEEP_OP_4K2K = 0x200, // always keep OP timing as 4K2K 2135*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_4K_HALFK_240HZ = 0x400, // for 4K 0.5K 240Hz FRC case 2136*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FCLK_DYNAMIC_CONTROL = 0x800, // for Dynamic FCLK control 2137*53ee8cc1Swenshuai.xi 2138*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SKIP_UC_DOWNLOAD = 0x1000, // for iframe case skip UC 2139*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SKIP_VIP_PEAKING_CONTROL = 0x2000, // for skipping VIP peaking control related unnecesary timing change 2140*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FAST_GET_VFREQ = 0x4000,//for get freq fast 2141*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_LEGACY_MODE = 0x8000, // for monaco mode 2142*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SAVE_MEM_MODE = 0x10000, // for muji save memory 2143*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_DUAL_MIU = 0x20000, // for Manhattan FRC MEMC dual-MUU 2144*53ee8cc1Swenshuai.xi } XC_INIT_MISC_A; 2145*53ee8cc1Swenshuai.xi 2146*53ee8cc1Swenshuai.xi typedef enum 2147*53ee8cc1Swenshuai.xi { 2148*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_NULL = 0, 2149*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_PQ_SKIP_PCMODE_NEWFLOW = 1, 2150*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_SKIP_SR = 2, 2151*53ee8cc1Swenshuai.xi } XC_INIT_MISC_B; 2152*53ee8cc1Swenshuai.xi 2153*53ee8cc1Swenshuai.xi typedef enum 2154*53ee8cc1Swenshuai.xi { 2155*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_C_NULL = 0, 2156*53ee8cc1Swenshuai.xi } XC_INIT_MISC_C; 2157*53ee8cc1Swenshuai.xi 2158*53ee8cc1Swenshuai.xi 2159*53ee8cc1Swenshuai.xi typedef enum 2160*53ee8cc1Swenshuai.xi { 2161*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_D_NULL = 0, 2162*53ee8cc1Swenshuai.xi } XC_INIT_MISC_D; 2163*53ee8cc1Swenshuai.xi 2164*53ee8cc1Swenshuai.xi 2165*53ee8cc1Swenshuai.xi /// Define the initial MISC for XC 2166*53ee8cc1Swenshuai.xi typedef struct 2167*53ee8cc1Swenshuai.xi { 2168*53ee8cc1Swenshuai.xi MS_U32 u32XCMISC_version; ///<Version of current structure. 2169*53ee8cc1Swenshuai.xi MS_U32 u32MISC_A; 2170*53ee8cc1Swenshuai.xi MS_U32 u32MISC_B; 2171*53ee8cc1Swenshuai.xi MS_U32 u32MISC_C; 2172*53ee8cc1Swenshuai.xi MS_U32 u32MISC_D; 2173*53ee8cc1Swenshuai.xi } XC_INITMISC; 2174*53ee8cc1Swenshuai.xi 2175*53ee8cc1Swenshuai.xi typedef enum 2176*53ee8cc1Swenshuai.xi { 2177*53ee8cc1Swenshuai.xi E_XC_FLOCK_DIV_OFF = 0, 2178*53ee8cc1Swenshuai.xi E_XC_FLOCK_DIV_ON, 2179*53ee8cc1Swenshuai.xi E_XC_FLOCK_FPLL_ON, 2180*53ee8cc1Swenshuai.xi 2181*53ee8cc1Swenshuai.xi }E_XC_FLOCK_TYPE; 2182*53ee8cc1Swenshuai.xi 2183*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2184*53ee8cc1Swenshuai.xi { 2185*53ee8cc1Swenshuai.xi // memory 2186*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemAddr; 2187*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemSize; 2188*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemAddr; 2189*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemSize; 2190*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemAddr; 2191*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemSize; 2192*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemAddr; 2193*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemSize; 2194*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemAddr; 2195*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemSize; 2196*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemAddr; 2197*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemSize; 2198*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemAddr; 2199*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemSize; 2200*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemAddr; 2201*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemSize; 2202*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemAddr; 2203*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemSize; 2204*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemAddr; 2205*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemSize; 2206*53ee8cc1Swenshuai.xi 2207*53ee8cc1Swenshuai.xi MS_PHY u32FRC_FrameSize; 2208*53ee8cc1Swenshuai.xi 2209*53ee8cc1Swenshuai.xi MS_PHY u16FB_YcountLinePitch; 2210*53ee8cc1Swenshuai.xi MS_U16 u16PanelWidth; 2211*53ee8cc1Swenshuai.xi MS_U16 u16PanelHeigh; 2212*53ee8cc1Swenshuai.xi MS_U8 u8FRC3DPanelType; 2213*53ee8cc1Swenshuai.xi MS_U8 u83Dmode; 2214*53ee8cc1Swenshuai.xi MS_U8 u8IpMode; 2215*53ee8cc1Swenshuai.xi MS_U8 u8MirrorMode; 2216*53ee8cc1Swenshuai.xi MS_U8 u83D_FI_out; 2217*53ee8cc1Swenshuai.xi MS_BOOL bFRC; 2218*53ee8cc1Swenshuai.xi 2219*53ee8cc1Swenshuai.xi } FRC_INFO_t, *PFRC_INFO_t; 2220*53ee8cc1Swenshuai.xi 2221*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2222*53ee8cc1Swenshuai.xi { 2223*53ee8cc1Swenshuai.xi MS_U32 u32XC_PREINIT_version; ///<Version of current structure. 2224*53ee8cc1Swenshuai.xi // FRC control info 2225*53ee8cc1Swenshuai.xi FRC_INFO_t FRCInfo; 2226*53ee8cc1Swenshuai.xi 2227*53ee8cc1Swenshuai.xi MS_U16 u16VTrigX; 2228*53ee8cc1Swenshuai.xi MS_U16 u16VTrigY; 2229*53ee8cc1Swenshuai.xi 2230*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2231*53ee8cc1Swenshuai.xi // panel timing spec. 2232*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2233*53ee8cc1Swenshuai.xi // sync related 2234*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncWidth; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 2235*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncBackPorch; ///< PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 2236*53ee8cc1Swenshuai.xi 2237*53ee8cc1Swenshuai.xi ///< not support Manuel VSync Start/End now 2238*53ee8cc1Swenshuai.xi ///< VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 2239*53ee8cc1Swenshuai.xi ///< VOP_03[10:0] VSync end = Vtt - VBackPorch 2240*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncWidth; ///< define PANEL_VSYNC_WIDTH 2241*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncBackPorch; ///< define PANEL_VSYNC_BACK_PORCH 2242*53ee8cc1Swenshuai.xi 2243*53ee8cc1Swenshuai.xi } XC_PREINIT_INFO_t, *p_XC_PREINIT_INFO_t; 2244*53ee8cc1Swenshuai.xi 2245*53ee8cc1Swenshuai.xi typedef enum 2246*53ee8cc1Swenshuai.xi { 2247*53ee8cc1Swenshuai.xi E_XC_PREINIT_NULL = 0x00, 2248*53ee8cc1Swenshuai.xi E_XC_PREINIT_FRC = 0x01, 2249*53ee8cc1Swenshuai.xi E_XC_PREINIT_FRC_3D_TYPE = 0x02, 2250*53ee8cc1Swenshuai.xi E_XC_PREINIT_NUM, 2251*53ee8cc1Swenshuai.xi 2252*53ee8cc1Swenshuai.xi }E_XC_PREINIT_t; 2253*53ee8cc1Swenshuai.xi 2254*53ee8cc1Swenshuai.xi typedef enum 2255*53ee8cc1Swenshuai.xi { 2256*53ee8cc1Swenshuai.xi MIRROR_NORMAL, 2257*53ee8cc1Swenshuai.xi MIRROR_H_ONLY, 2258*53ee8cc1Swenshuai.xi MIRROR_V_ONLY, 2259*53ee8cc1Swenshuai.xi MIRROR_HV, 2260*53ee8cc1Swenshuai.xi MIRROR_MAX, 2261*53ee8cc1Swenshuai.xi } MirrorMode_t; 2262*53ee8cc1Swenshuai.xi 2263*53ee8cc1Swenshuai.xi typedef enum 2264*53ee8cc1Swenshuai.xi { 2265*53ee8cc1Swenshuai.xi E_XC_MEMORY_IP_READ_REQUEST, ///< memory request for IP read 2266*53ee8cc1Swenshuai.xi E_XC_MEMORY_IP_WRITE_REQUEST, ///< memory request for IP write 2267*53ee8cc1Swenshuai.xi E_XC_MEMORY_OP_READ_REQUEST, ///< memory request for OP read 2268*53ee8cc1Swenshuai.xi E_XC_MEMORY_OP_WRITE_REQUEST, ///< memory request for OP write 2269*53ee8cc1Swenshuai.xi E_XC_MEMORY_REQUEST_MAX, ///< Invalid request 2270*53ee8cc1Swenshuai.xi } E_XC_MEMORY_REQUEST_TYPE; 2271*53ee8cc1Swenshuai.xi 2272*53ee8cc1Swenshuai.xi 2273*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 2274*53ee8cc1Swenshuai.xi typedef enum 2275*53ee8cc1Swenshuai.xi { 2276*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_DEAFULT = 0, ///< video -> osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 -> osd layer 4 2277*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_0 = 1, ///< osd layer 0 -> video -> osd layer 1 -> osd layer 2 -> osd layer 3 -> osd layer 4 2278*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_1 = 2, ///< osd layer 0 -> osd layer 1 -> video -> osd layer 2 -> osd layer 3 -> osd layer 4 2279*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_2 = 3, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> video -> osd layer 3 -> osd layer 4 2280*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_3 = 4, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 -> video -> osd layer 4 2281*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_4 = 5, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 -> osd layer 4 -> video 2282*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_NUM, 2283*53ee8cc1Swenshuai.xi } E_VIDEO_ON_OSD_LAYER; 2284*53ee8cc1Swenshuai.xi 2285*53ee8cc1Swenshuai.xi /// Osd Index 2286*53ee8cc1Swenshuai.xi typedef enum 2287*53ee8cc1Swenshuai.xi { 2288*53ee8cc1Swenshuai.xi E_XC_OSD_0 = 0, ///< osd0 2289*53ee8cc1Swenshuai.xi E_XC_OSD_1 = 1, ///< osd1 2290*53ee8cc1Swenshuai.xi E_XC_OSD_2 = 2, ///< osd2 2291*53ee8cc1Swenshuai.xi E_XC_OSD_3 = 3, ///< osd3 2292*53ee8cc1Swenshuai.xi E_XC_OSD_4 = 4, ///< osd3 2293*53ee8cc1Swenshuai.xi E_XC_OSD_NUM, 2294*53ee8cc1Swenshuai.xi } E_XC_OSD_INDEX; 2295*53ee8cc1Swenshuai.xi 2296*53ee8cc1Swenshuai.xi /// Osd Index 2297*53ee8cc1Swenshuai.xi typedef enum 2298*53ee8cc1Swenshuai.xi { 2299*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_MODE0 = 0, ///< a*OSD + (1-a)*Video 2300*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_MODE1 = 1, ///< OSD + (1-a)*Video 2301*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_TYPE_NUM, 2302*53ee8cc1Swenshuai.xi } E_XC_OSD_BlENDING_TYPE; 2303*53ee8cc1Swenshuai.xi 2304*53ee8cc1Swenshuai.xi /// Scaling type 2305*53ee8cc1Swenshuai.xi typedef enum 2306*53ee8cc1Swenshuai.xi { 2307*53ee8cc1Swenshuai.xi E_XC_PRE_SCALING = 0, 2308*53ee8cc1Swenshuai.xi E_XC_POST_SCALING, 2309*53ee8cc1Swenshuai.xi E_XC_BOTH_SCALING, 2310*53ee8cc1Swenshuai.xi }E_XC_SCALING_TYPE; 2311*53ee8cc1Swenshuai.xi 2312*53ee8cc1Swenshuai.xi /// HV Vector type 2313*53ee8cc1Swenshuai.xi typedef enum 2314*53ee8cc1Swenshuai.xi { 2315*53ee8cc1Swenshuai.xi E_XC_H_VECTOR = 0, 2316*53ee8cc1Swenshuai.xi E_XC_V_VECTOR, 2317*53ee8cc1Swenshuai.xi E_XC_HV_VECTOR, 2318*53ee8cc1Swenshuai.xi }E_XC_VECTOR_TYPE; 2319*53ee8cc1Swenshuai.xi 2320*53ee8cc1Swenshuai.xi /// Define MCDI buffer type 2321*53ee8cc1Swenshuai.xi typedef enum 2322*53ee8cc1Swenshuai.xi { 2323*53ee8cc1Swenshuai.xi E_XC_MCDI_ME1 = 0, ///< Main MDCI ME1 2324*53ee8cc1Swenshuai.xi E_XC_MCDI_ME2 = 1, ///< Main MDCI ME2 2325*53ee8cc1Swenshuai.xi E_XC_MCDI_BOTH, ///< Main MDCI ME1+ME2 2326*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_ME1, ///< Sub MDCI ME1 2327*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_ME2, ///< Sub MDCI ME2 2328*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_BOTH, ///< Sub MDCI ME1+ME2 2329*53ee8cc1Swenshuai.xi E_XC_MCDI_MAX, 2330*53ee8cc1Swenshuai.xi }E_XC_MCDI_TYPE; 2331*53ee8cc1Swenshuai.xi 2332*53ee8cc1Swenshuai.xi typedef struct 2333*53ee8cc1Swenshuai.xi { 2334*53ee8cc1Swenshuai.xi MS_U8 p1; 2335*53ee8cc1Swenshuai.xi MS_U8 p2; 2336*53ee8cc1Swenshuai.xi MS_U8 p3; 2337*53ee8cc1Swenshuai.xi MS_U8 p4; 2338*53ee8cc1Swenshuai.xi MS_U8 p5; 2339*53ee8cc1Swenshuai.xi MS_U8 p6; 2340*53ee8cc1Swenshuai.xi MS_U8 p7; 2341*53ee8cc1Swenshuai.xi MS_U8 p8; 2342*53ee8cc1Swenshuai.xi } FRC_R2_CMD_PARAMETER_t, *p_FRC_R2_CMD_PARAMETER_t; 2343*53ee8cc1Swenshuai.xi 2344*53ee8cc1Swenshuai.xi typedef enum 2345*53ee8cc1Swenshuai.xi { 2346*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_NONE = 0x00, 2347*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_TEST = 0x01, // Print parameter 2348*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_GET_SW_VERSION = 0x02, // ParaCnt=0, return 2 Byte, P0=Main, P1=Minor 2349*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_GET_CMD_VERSION = 0x03, // ParaCnt=0, return 2 Byte, P0=Low byte, P1=High byte 2350*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_INIT = 0x10, // ParaCnt=5, P0 = Panel 3D type(0=2D, 1=passive, 2=active, 3=PDP) 2351*53ee8cc1Swenshuai.xi // P1 = Panel max V Freq, 60/120/240, but 240 Hz is not supported 2352*53ee8cc1Swenshuai.xi // P2 = LocalDimming panel type, (0=LG32inch_LR10, 1=LG37inch_LR10, 2=LG42inch_LR16, 3=LG47inch_LR16, 4=LG55inch_LR16, 2353*53ee8cc1Swenshuai.xi // 5=TOSHIBA_LR16, 6=TOSHIBA_TB16, 8=LG50inchCinema_TB32, 9=LG60inchCinema_TB32, A=LG47inch_Direct72, B=LG55inch_Direct96, C=LG72inch_Direct480) 2354*53ee8cc1Swenshuai.xi // P3 = ChipRevision (0=U01, 1=U02, 2=U03, etc.) 2355*53ee8cc1Swenshuai.xi // P4 = Is60HzPackage (0=FALSE, 1=TRUE) 2356*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_TIMING = 0x11, // ParaCnt=2, P0 = Input V Freq, P1 = Output V Freq 2357*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_INPUT_FRAME_SIZE = 0x12, // ParaCnt=4, P0 = Width[15:8], P1 = width[7:0], P2 = height[15:8], P3 = height[7:0] 2358*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_OUTPUT_FRAME_SIZE = 0x13,// ParaCnt=4, P0 = Width[15:8], P1 = width[7:0], P2 = height[15:8], P3 = height[7:0] 2359*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_INPUT_3D_FORMAT = 0x14, // ParaCnt=2, P0 = input 3D format(0=2D, 1=Side-by-side, 2=Top-Down, 3=Check-Board, 4=Frame-interleave, 6=Line alternative, 7=Frame-packing) 2360*53ee8cc1Swenshuai.xi // P1 = 3DModeConfig(0=Normal, 1=L/R Swap, 2=L-Only, 3=R-Only) 2361*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_3D_DEPTH_OFFSET = 0x15, // ParaCnt=2, P0 = Enable3DDepthOffset(0=Disable, 1=Enable) 2362*53ee8cc1Swenshuai.xi // P1 = 3DDepthOffset(0~255) 2363*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_FPLL_LOCK_DONE = 0x16, // ParaCnt=1, P0 = FPLL lock done(0: free run or not locked yet, 1: Locked) 2364*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_MFC_MDOE = 0x20, // ParaCnt=3, P0 = MFCMode(0=ff, 1=Low, 2=Mid, 3=High, 4=User, 5=55 pull down, 6=64 pull down) 2365*53ee8cc1Swenshuai.xi // P1 = DeJudderLevel(0~10) [for User mode only] 2366*53ee8cc1Swenshuai.xi // P2 = DeBlurLevel(0~10) [for User mode only] 2367*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_MFC_DEMO_MODE = 0x21, // ParaCnt=1, P0 = DemoModeEnable(0=Disable,1=Enable) 2368*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_LOCAL_DIMMING_MODE = 0x30, // ParaCnt=1, P0 = LocalDimmingMode(0=Off, 1=Low, 2=Mid, 3=High, 4=Demo) 2369*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_2D_TO_3D_MODE = 0x40, // ParaCnt=5, P0 = 2D to 3D ConversionMode(0=Disable, 1=Enable) 2370*53ee8cc1Swenshuai.xi // P1 = 2D to 3D Depth Gain(0~31) 2371*53ee8cc1Swenshuai.xi // P2 = 2D to 3D Depth Offset(0~127) 2372*53ee8cc1Swenshuai.xi // P3 = Artificial Gain(0~15) 2373*53ee8cc1Swenshuai.xi // P4 = L/R Swap (0=Normal, 1=L/R Swap) 2374*53ee8cc1Swenshuai.xi ///* the value is not decided yet 2375*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_ENABLE = 0x50, // ParaCnt=1, P0 = PWM Enable(0=Disable, 1=Enable) 2376*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_DUTY_PHASE = 0x51, // ParaCnt=6, P0 = PWM No.(0, 1, 3) 2377*53ee8cc1Swenshuai.xi // P1 P2 = PWMX_DutyPercentX100(0~65536) 2378*53ee8cc1Swenshuai.xi // P3 P4 = PWMX_360DegreeX100(0~65536) 2379*53ee8cc1Swenshuai.xi // P5 = PWMX_Polarity(0=not invert, 1=invert) 2380*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_FREQ = 0x52, // ParaCnt=4, P0 = PWM No.(0, 1, 3) 2381*53ee8cc1Swenshuai.xi // P1 = PWMX_FreqMul 2382*53ee8cc1Swenshuai.xi // P2 = PWMX_FreqDiv 2383*53ee8cc1Swenshuai.xi // P3 = PWMX_VsorHsRST 2384*53ee8cc1Swenshuai.xi // P4 = PWMX_SyncRstCnt 2385*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_FORCE_PWM = 0x53, // ParaCnt=0 2386*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_IR_EMMITER_LR_SHIFT = 0x54, // ParaCnt=3, P0 = Select the CMD(0=Lo, 1=Lc, 2=Ro, 3=Rc) 2387*53ee8cc1Swenshuai.xi // P2 P1= Pulse time shift(0~65536) 2388*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_IR_EMMITER_LR_MODE = 0x55, // ParaCnt=1, P0 = CMD Shift(0=Lo Lc, 1=Lc Ro, 2=Ro Rc, 3=Rc Lo) 2389*53ee8cc1Swenshuai.xi /* 2390*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_IR_EMMITER_LR_MODE = 0x55, // ParaCnt=4, P0 = Action Pattern Selection(0=Action Pattern 1, 1=Action Pattern 2) 2391*53ee8cc1Swenshuai.xi // P1 = L frame CMD(0=Lo Lc, 1=Lc Ro, 2=Ro Rc, 3=Rc Lo for Pattern 1; 0=Lo Rc, 1=Rc Ro, 2=Ro Lc, 3=Lc Lo for Pattern 2) 2392*53ee8cc1Swenshuai.xi // P2 = First CMD shift(0~255) 2393*53ee8cc1Swenshuai.xi // P3 = Second CMD shift(0~255) 2394*53ee8cc1Swenshuai.xi */ 2395*53ee8cc1Swenshuai.xi /* 2396*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_CMD_MODE = 0x56, // ParaCnt=4, P0 = Action Pattern Selection(0=Action Pattern 1, 1=Action Pattern 2) 2397*53ee8cc1Swenshuai.xi // P1 = L frame CMD(0=Lo Lc, 1=Lc Ro, 2=Ro Rc, 3=Rc Lo for Pattern 1; 0=Lo Rc, 1=Rc Ro, 2=Ro Lc, 3=Lc Lo for Pattern 2) 2398*53ee8cc1Swenshuai.xi // P2 = First CMD shift(0~255) 2399*53ee8cc1Swenshuai.xi // P3 = Second CMD shift(0~255) 2400*53ee8cc1Swenshuai.xi */ 2401*53ee8cc1Swenshuai.xi } E_XC_FRC_MAILBOX_CMD; 2402*53ee8cc1Swenshuai.xi 2403*53ee8cc1Swenshuai.xi //LD 2404*53ee8cc1Swenshuai.xi 2405*53ee8cc1Swenshuai.xi typedef enum 2406*53ee8cc1Swenshuai.xi { 2407*53ee8cc1Swenshuai.xi E_LD_PANEL_LG32inch_LR10 = 0x0, 2408*53ee8cc1Swenshuai.xi E_LD_PANEL_LG37inch_LR10 = 0x1, 2409*53ee8cc1Swenshuai.xi E_LD_PANEL_LG42inch_LR16 = 0x2, 2410*53ee8cc1Swenshuai.xi E_LD_PANEL_LG47inch_LR16 = 0x3, 2411*53ee8cc1Swenshuai.xi E_LD_PANEL_LG55inch_LR16 = 0x4, 2412*53ee8cc1Swenshuai.xi E_LD_PANEL_LG55inch_LR12 = 0x5, 2413*53ee8cc1Swenshuai.xi E_LD_PANEL_CMO42inch_LR16 = 0x6, 2414*53ee8cc1Swenshuai.xi E_LD_PANEL_LG50inch_4K2K_VB1 = 0x7, 2415*53ee8cc1Swenshuai.xi E_LD_PANEL_DEFAULT, 2416*53ee8cc1Swenshuai.xi E_LD_PANEL_NUMS, 2417*53ee8cc1Swenshuai.xi }EN_LD_PANEL_TYPE; 2418*53ee8cc1Swenshuai.xi 2419*53ee8cc1Swenshuai.xi typedef enum 2420*53ee8cc1Swenshuai.xi { 2421*53ee8cc1Swenshuai.xi E_LD_MODE_OFF = 0, 2422*53ee8cc1Swenshuai.xi E_LD_MODE_LOW = 1, 2423*53ee8cc1Swenshuai.xi E_LD_MODE_MID = 2, 2424*53ee8cc1Swenshuai.xi E_LD_MODE_HIGH = 3, 2425*53ee8cc1Swenshuai.xi }EN_LD_MODE; 2426*53ee8cc1Swenshuai.xi 2427*53ee8cc1Swenshuai.xi //parameters for detecting nine lattice 2428*53ee8cc1Swenshuai.xi typedef struct 2429*53ee8cc1Swenshuai.xi { 2430*53ee8cc1Swenshuai.xi MS_U16 u16PixelStep; // distance between sample points 2431*53ee8cc1Swenshuai.xi MS_U8 u8ColorThreshold; // max color difference 2432*53ee8cc1Swenshuai.xi MS_U8 u8TryTimes; // max times for detecting 2433*53ee8cc1Swenshuai.xi MS_U16 u16LinearDiff; // difference for every 3 lattice in a line 2434*53ee8cc1Swenshuai.xi }ST_DETECTNL_PARA; 2435*53ee8cc1Swenshuai.xi 2436*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_ALLOFF (0x0000) 2437*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2COLORMATRIX (0x0001) 2438*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2CSCDITHER (0x0002) 2439*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2BRIGHTNESS (0x0004) 2440*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2CONTRAST (0x0008) 2441*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2NOISEROUND (0x0010) 2442*53ee8cc1Swenshuai.xi 2443*53ee8cc1Swenshuai.xi // OSDC TIMING GEN 2444*53ee8cc1Swenshuai.xi typedef struct 2445*53ee8cc1Swenshuai.xi { 2446*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HTotal; 2447*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VTotal; 2448*53ee8cc1Swenshuai.xi 2449*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_Start; 2450*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_End; 2451*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_Start; 2452*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_End; 2453*53ee8cc1Swenshuai.xi 2454*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_Start; 2455*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_End; 2456*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_Start; 2457*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_End; 2458*53ee8cc1Swenshuai.xi }MS_XC_OSDC_TGEN_INFO; 2459*53ee8cc1Swenshuai.xi 2460*53ee8cc1Swenshuai.xi // OSDC MISC Control 2461*53ee8cc1Swenshuai.xi typedef struct 2462*53ee8cc1Swenshuai.xi { 2463*53ee8cc1Swenshuai.xi MS_BOOL bOC_ClK_En; 2464*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Bypass_En; 2465*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_InvAlpha_En; 2466*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hsync_Vfde_Out; // 1:hs_out = hs&vfde 2467*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hfde_Vfde_Out; // 1:hs_out = de(hfde)&vfde 2468*53ee8cc1Swenshuai.xi MS_U16 u16OC_Lpll_type; 2469*53ee8cc1Swenshuai.xi MS_U8 u8OC_OutputFormat; // output bit order 2470*53ee8cc1Swenshuai.xi }MS_XC_OSDC_CTRL_INFO; 2471*53ee8cc1Swenshuai.xi 2472*53ee8cc1Swenshuai.xi typedef enum 2473*53ee8cc1Swenshuai.xi { 2474*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_MANUAL = 0, 2475*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_1366x768, 2476*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_1920x1080, 2477*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_3840x2160, 2478*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_3840x1080, 2479*53ee8cc1Swenshuai.xi 2480*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_MAX, 2481*53ee8cc1Swenshuai.xi }E_XC_OSDC_TGEN_Type; 2482*53ee8cc1Swenshuai.xi 2483*53ee8cc1Swenshuai.xi typedef enum 2484*53ee8cc1Swenshuai.xi { 2485*53ee8cc1Swenshuai.xi E_XC_OSDC_INIT = 0, 2486*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_TGEN, 2487*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_MISC, 2488*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_OUTPUT_FORMAT, 2489*53ee8cc1Swenshuai.xi }E_XC_OSDC_CTRL_TYPE; 2490*53ee8cc1Swenshuai.xi 2491*53ee8cc1Swenshuai.xi //OSDC Display information 2492*53ee8cc1Swenshuai.xi typedef struct 2493*53ee8cc1Swenshuai.xi { 2494*53ee8cc1Swenshuai.xi MS_U32 ODSC_DISPInfo_Version; ///<Version of current structure. Please always set to "u32Osdc_dispinfo_Version" as input 2495*53ee8cc1Swenshuai.xi 2496*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 2497*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE Vertical start 2498*53ee8cc1Swenshuai.xi MS_U32 DEVEND; //Output DE Vertical end 2499*53ee8cc1Swenshuai.xi MS_U32 HDTOT; // Output horizontal total 2500*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 2501*53ee8cc1Swenshuai.xi MS_U32 DEHEND; // Output DE horizontal end 2502*53ee8cc1Swenshuai.xi 2503*53ee8cc1Swenshuai.xi MS_U32 SYNCHST; 2504*53ee8cc1Swenshuai.xi MS_U32 SYNCHEND; 2505*53ee8cc1Swenshuai.xi MS_U32 SYNCVST; 2506*53ee8cc1Swenshuai.xi MS_U32 SYNCVEND; 2507*53ee8cc1Swenshuai.xi 2508*53ee8cc1Swenshuai.xi MS_BOOL bCLK_EN; // OUTPUT ENABLE 2509*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_BYPASS_EN; // MIXER BYPASS ENABLE 2510*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_INVALPHA_EN; 2511*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HSTVFDEOUT_EN;// 1:hs_out = hs&vfde 2512*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HFDEVFDEOUT_EN;// 1:hs_out = de(hfde)&vfde 2513*53ee8cc1Swenshuai.xi 2514*53ee8cc1Swenshuai.xi } MS_OSDC_DST_DispInfo; 2515*53ee8cc1Swenshuai.xi 2516*53ee8cc1Swenshuai.xi //select the input for bypass mode. 2517*53ee8cc1Swenshuai.xi typedef enum 2518*53ee8cc1Swenshuai.xi { 2519*53ee8cc1Swenshuai.xi E_XC_BYPASS_HDMI = 0, 2520*53ee8cc1Swenshuai.xi E_XC_BYPASS_DC_MAIN, 2521*53ee8cc1Swenshuai.xi E_XC_BYPASS_DC_SUB, 2522*53ee8cc1Swenshuai.xi }E_XC_BYPASS_InputSource; 2523*53ee8cc1Swenshuai.xi 2524*53ee8cc1Swenshuai.xi 2525*53ee8cc1Swenshuai.xi // For HW internal test pattern 2526*53ee8cc1Swenshuai.xi typedef enum 2527*53ee8cc1Swenshuai.xi { 2528*53ee8cc1Swenshuai.xi E_XC_OP1_PATGEN_DISP_LB_MODE, // pattern gen on display line buffer, can't support post-sclaing 2529*53ee8cc1Swenshuai.xi E_XC_OP1_PATGEN_OPM_MODE, // pattern gen before post scaling engine, can support post-scaling, but not implement now 2530*53ee8cc1Swenshuai.xi }EN_XC_OP1_PATGEN_MODE; 2531*53ee8cc1Swenshuai.xi 2532*53ee8cc1Swenshuai.xi typedef enum{ 2533*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_OFF = 0, 2534*53ee8cc1Swenshuai.xi E_XC_OP1_WB_PATTERN, // 1: 2535*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_PATTERN, // 2: red 2536*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_PATTERN, // 3: green 2537*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_PATTERN, // 4: blue 2538*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_PATTERN, // 5: white 2539*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLACK_PATTERN, // 6: black 2540*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_PATTERN, // 7: gray 2541*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_COLOR_V_BAR_PATTERN, // 8: vertical color-bar 2542*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_COLOR_H_BAR_PATTERN, // 9: horizontal color-bar 2543*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_16_PATTERN, // 10: 16 vertical gray-bar 2544*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_32_PATTERN, // 11: 32 vertical gray-bar 2545*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_64_PATTERN, // 12: 64 vertical gray-bar 2546*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_RGB_32_PATTERN, // 13: 32 vertical 4 color bar 2547*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN, // 14: 3x3 checkerboard R/B/G 2548*53ee8cc1Swenshuai.xi E_XC_OP1_DOAFADE_GRAY_PATTERN, // 15: dotfade gary 2549*53ee8cc1Swenshuai.xi E_XC_OP1_CALIBRATION_COLOR_DOTFADE_PATTERN, // 16: checkerboard + dotfade gary 2550*53ee8cc1Swenshuai.xi E_XC_OP1_CALIBRATION_PATTERN, // 17: checkerboard 2551*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_1, // 18 2552*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_2, // 19: 2553*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_3, // 20: same as pattern2, but not full screen 2554*53ee8cc1Swenshuai.xi E_XC_OP1_3D_PATTERN, // 21: side-by-side, if enable 3D effect, can see the word "3D" 2555*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_100IRE_PATTERN, // 22: red 2556*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_100IRE_PATTERN, // 23: green 2557*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_100IRE_PATTERN, // 24: blue 2558*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_70IRE_PATTERN, // 25 2559*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_70IRE_PATTERN, // 26 2560*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_70IRE_PATTERN, // 27 2561*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_40IRE_PATTERN, // 28 2562*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_40IRE_PATTERN, // 29 2563*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_40IRE_PATTERN, // 30 2564*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_20IRE_PATTERN, // 31 2565*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_20IRE_PATTERN, // 32 2566*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_20IRE_PATTERN, // 33 2567*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_10IRE_PATTERN, // 34 2568*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_10IRE_PATTERN, // 35 2569*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_10IRE_PATTERN, // 36 2570*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_100IRE_PATTERN, // 37 2571*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_90IRE_PATTERN, // 38 2572*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_80IRE_PATTERN, // 39 2573*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_70IRE_PATTERN, // 40 2574*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_60IRE_PATTERN, // 41 2575*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_50IRE_PATTERN, // 42 2576*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_40IRE_PATTERN, // 43 2577*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_30IRE_PATTERN, // 44 2578*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_20IRE_PATTERN, // 45 2579*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_10IRE_PATTERN, // 46 2580*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GAMMA_GREY1_PATTERN, // 47: gray 2581*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GAMMA_GREY2_PATTERN, // 48: gray 2582*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN_2, // 49: 3x3 checkerboard R/G/B 2583*53ee8cc1Swenshuai.xi }EN_XC_OP1_PATTERN; 2584*53ee8cc1Swenshuai.xi 2585*53ee8cc1Swenshuai.xi //white balance pattern mode 2586*53ee8cc1Swenshuai.xi typedef enum 2587*53ee8cc1Swenshuai.xi { 2588*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_MODE, // OP1 tset Pattern 2589*53ee8cc1Swenshuai.xi E_XC_OP2_PATTERN_MODE, // OP2 tset Pattern 2590*53ee8cc1Swenshuai.xi }EN_XC_WB_PATTERN_MODE; 2591*53ee8cc1Swenshuai.xi 2592*53ee8cc1Swenshuai.xi 2593*53ee8cc1Swenshuai.xi typedef struct 2594*53ee8cc1Swenshuai.xi { 2595*53ee8cc1Swenshuai.xi // Output timing 2596*53ee8cc1Swenshuai.xi MS_U16 u16HStart; ///< DE H start 2597*53ee8cc1Swenshuai.xi MS_U16 u16VStart; ///< DE V start 2598*53ee8cc1Swenshuai.xi MS_U16 u16Width; ///< DE H width 2599*53ee8cc1Swenshuai.xi MS_U16 u16Height; ///< DE V height 2600*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///< H total 2601*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///< V total 2602*53ee8cc1Swenshuai.xi 2603*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq; ///< Panel output Vfreq., used in free run 2604*53ee8cc1Swenshuai.xi 2605*53ee8cc1Swenshuai.xi // sync 2606*53ee8cc1Swenshuai.xi MS_U8 u8HSyncWidth; ///< H sync width 2607*53ee8cc1Swenshuai.xi MS_U16 u16VSyncStart; ///< V sync start = Vtotal - backporch - VSyncWidth 2608*53ee8cc1Swenshuai.xi MS_U8 u8VSyncWidth; ///< V sync width 2609*53ee8cc1Swenshuai.xi MS_BOOL bManuelVSyncCtrl; ///< enable manuel V sync control 2610*53ee8cc1Swenshuai.xi 2611*53ee8cc1Swenshuai.xi // output control 2612*53ee8cc1Swenshuai.xi MS_U16 u16OCTRL; ///< Output control such as Swap port, etc. 2613*53ee8cc1Swenshuai.xi MS_U16 u16OSTRL; ///< Output control sync as Invert sync/DE, etc. 2614*53ee8cc1Swenshuai.xi MS_U16 u16ODRV; ///< Driving current 2615*53ee8cc1Swenshuai.xi MS_U16 u16DITHCTRL; ///< Dither control 2616*53ee8cc1Swenshuai.xi 2617*53ee8cc1Swenshuai.xi } MS_XC_VOP_Data; 2618*53ee8cc1Swenshuai.xi 2619*53ee8cc1Swenshuai.xi 2620*53ee8cc1Swenshuai.xi typedef enum 2621*53ee8cc1Swenshuai.xi { 2622*53ee8cc1Swenshuai.xi /* 2623*53ee8cc1Swenshuai.xi __________________________________________________________________________________________________________________________________________ 2624*53ee8cc1Swenshuai.xi |Vby1 Output Format|D0|D1|D2|D3|D4|D5|D6|D7|D8|D9|D10|D11|D12|D13|D14|D15|D16|D17|D18|D19|D20|D21|D22|D23|D24|D25|D26|D27|D28|D29|D30|D31| 2625*53ee8cc1Swenshuai.xi |------------------|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| 2626*53ee8cc1Swenshuai.xi | ARGB 1 |R0|R1|R2|R3|R4|R5|R6|R7|G0|G1|G2 |G3 |G4 |G5 |G6 |G7 |B0 |B1 |B2 |B3 |B4 |B5 |B6 |B7 |A1 |A0 |A2 |A3 |A4 |A5 |A6 |A7 | 2627*53ee8cc1Swenshuai.xi |------------------|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| 2628*53ee8cc1Swenshuai.xi | ARGB 2 |R2|R3|R4|R5|R6|R7|A6|A7|G2|G3|G4 |G5 |G6 |G7 |A4 |A5 |B2 |B3 |B4 |B5 |B6 |B7 |A2 |A3 |A0 |A1 |B0 |B1 |G0 |G1 |R0 |R1 | 2629*53ee8cc1Swenshuai.xi ------------------------------------------------------------------------------------------------------------------------------------------ 2630*53ee8cc1Swenshuai.xi */ 2631*53ee8cc1Swenshuai.xi E_XC_OSDC_OUTPUT_FORMAT_VBY1_ARGB1, 2632*53ee8cc1Swenshuai.xi E_XC_OSDC_OUTPUT_FORMAT_VBY1_ARGB2, 2633*53ee8cc1Swenshuai.xi } E_XC_OSDC_OUTPUT_FORMAT; 2634*53ee8cc1Swenshuai.xi 2635*53ee8cc1Swenshuai.xi typedef struct 2636*53ee8cc1Swenshuai.xi { 2637*53ee8cc1Swenshuai.xi MS_PHYADDR u32FBSize[2]; 2638*53ee8cc1Swenshuai.xi MS_U16 u16VBox_Htotal[2]; 2639*53ee8cc1Swenshuai.xi MS_U16 u16VBox_Vtotal[2]; 2640*53ee8cc1Swenshuai.xi MS_U16 u16VBox_PanelHsize; 2641*53ee8cc1Swenshuai.xi MS_U16 u16VBox_PanelVsize; 2642*53ee8cc1Swenshuai.xi MS_U16 u16Vfreq[2]; 2643*53ee8cc1Swenshuai.xi MS_BOOL bInterface[2]; 2644*53ee8cc1Swenshuai.xi }XC_VBOX_INFO; 2645*53ee8cc1Swenshuai.xi 2646*53ee8cc1Swenshuai.xi typedef enum 2647*53ee8cc1Swenshuai.xi { 2648*53ee8cc1Swenshuai.xi E_XC_BWD_UPDATE_BWR_CONFIG = 0, // Update bwr configuration 2649*53ee8cc1Swenshuai.xi } E_XC_BWD_CONFIG_TYPE; 2650*53ee8cc1Swenshuai.xi 2651*53ee8cc1Swenshuai.xi #ifdef UFO_XC_TEST_PATTERN 2652*53ee8cc1Swenshuai.xi //xc test pattern type 2653*53ee8cc1Swenshuai.xi typedef enum 2654*53ee8cc1Swenshuai.xi { 2655*53ee8cc1Swenshuai.xi E_XC_ADC_PATTERN_MODE, //adc test pattern 2656*53ee8cc1Swenshuai.xi E_XC_IPMUX_PATTERN_MODE, // ipmux test Pattern 2657*53ee8cc1Swenshuai.xi E_XC_IP1_PATTERN_MODE, // ip test Pattern 2658*53ee8cc1Swenshuai.xi E_XC_OP_PATTERN_MODE, // op test Pattern 2659*53ee8cc1Swenshuai.xi E_XC_VOP_PATTERN_MODE, // vop test Pattern 2660*53ee8cc1Swenshuai.xi E_XC_VOP2_PATTERN_MODE, // vop2 test Pattern 2661*53ee8cc1Swenshuai.xi E_XC_MOD_PATTERN_MODE, // mod test Pattern 2662*53ee8cc1Swenshuai.xi }EN_XC_TEST_PATTERN_MODE; 2663*53ee8cc1Swenshuai.xi 2664*53ee8cc1Swenshuai.xi //adc test pattern 2665*53ee8cc1Swenshuai.xi typedef struct 2666*53ee8cc1Swenshuai.xi { 2667*53ee8cc1Swenshuai.xi MS_U8 u8EnableADCType; 2668*53ee8cc1Swenshuai.xi MS_U16 u16Ramp; 2669*53ee8cc1Swenshuai.xi } XC_SET_ADC_TESTPATTERN_t, *p_XC_SET_ADC_TESTPATTERN_t; 2670*53ee8cc1Swenshuai.xi 2671*53ee8cc1Swenshuai.xi //ipmux test Pattern 2672*53ee8cc1Swenshuai.xi typedef struct 2673*53ee8cc1Swenshuai.xi { 2674*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2675*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 2676*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 2677*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 2678*53ee8cc1Swenshuai.xi } XC_SET_IPMUX_TESTPATTERN_t, *p_XC_SET_IPMUX_TESTPATTERN_t; 2679*53ee8cc1Swenshuai.xi 2680*53ee8cc1Swenshuai.xi //ip test Pattern 2681*53ee8cc1Swenshuai.xi typedef struct 2682*53ee8cc1Swenshuai.xi { 2683*53ee8cc1Swenshuai.xi MS_U16 u16Enable; 2684*53ee8cc1Swenshuai.xi MS_U32 u32Pattern_type; 2685*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 2686*53ee8cc1Swenshuai.xi } XC_SET_IP1_TESTPATTERN_t, *p_XC_SET_IP1_TESTPATTERN_t; 2687*53ee8cc1Swenshuai.xi 2688*53ee8cc1Swenshuai.xi //op test Pattern 2689*53ee8cc1Swenshuai.xi typedef struct 2690*53ee8cc1Swenshuai.xi { 2691*53ee8cc1Swenshuai.xi MS_BOOL bMiuLineBuff; 2692*53ee8cc1Swenshuai.xi MS_BOOL bLineBuffHVSP; 2693*53ee8cc1Swenshuai.xi } XC_SET_OP_TESTPATTERN_t, *p_XC_SET_OP_TESTPATTERN_t; 2694*53ee8cc1Swenshuai.xi 2695*53ee8cc1Swenshuai.xi //vop test Pattern 2696*53ee8cc1Swenshuai.xi typedef struct 2697*53ee8cc1Swenshuai.xi { 2698*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2699*53ee8cc1Swenshuai.xi } XC_SET_VOP_TESTPATTERN_t, *p_XC_SET_VOP_TESTPATTERN_t; 2700*53ee8cc1Swenshuai.xi 2701*53ee8cc1Swenshuai.xi //vop2 test Pattern 2702*53ee8cc1Swenshuai.xi typedef struct 2703*53ee8cc1Swenshuai.xi { 2704*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2705*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 2706*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 2707*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 2708*53ee8cc1Swenshuai.xi } XC_SET_VOP2_TESTPATTERN_t, *p_XC_SET_VOP2_TESTPATTERN_t; 2709*53ee8cc1Swenshuai.xi 2710*53ee8cc1Swenshuai.xi //mod test Pattern 2711*53ee8cc1Swenshuai.xi typedef struct 2712*53ee8cc1Swenshuai.xi { 2713*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2714*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 2715*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 2716*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 2717*53ee8cc1Swenshuai.xi } XC_SET_MOD_TESTPATTERN_t, *p_XC_SET_MOD_TESTPATTERN_t; 2718*53ee8cc1Swenshuai.xi #endif 2719*53ee8cc1Swenshuai.xi 2720*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2721*53ee8cc1Swenshuai.xi //MApi_XC_VideoPlaybackController enum of cmd 2722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2723*53ee8cc1Swenshuai.xi typedef enum 2724*53ee8cc1Swenshuai.xi { 2725*53ee8cc1Swenshuai.xi E_XC_VPC_MULTI_SPEED_PLAYBACK_CTRL, 2726*53ee8cc1Swenshuai.xi }E_XC_VIDEO_PLAYBACK_CTRL_ID; 2727*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2728*53ee8cc1Swenshuai.xi //MApi_XC_VideoPlaybackController struct of cmd 2729*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2730*53ee8cc1Swenshuai.xi typedef struct 2731*53ee8cc1Swenshuai.xi { 2732*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2733*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 2734*53ee8cc1Swenshuai.xi }ST_XC_VPC_MULTI_SPEED_PLAYBACK_CTRL; 2735*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2736*53ee8cc1Swenshuai.xi 2737*53ee8cc1Swenshuai.xi 2738*53ee8cc1Swenshuai.xi //////////////////////////////////////////// 2739*53ee8cc1Swenshuai.xi 2740*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2741*53ee8cc1Swenshuai.xi // Function and Variable 2742*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2743*53ee8cc1Swenshuai.xi 2744*53ee8cc1Swenshuai.xi 2745*53ee8cc1Swenshuai.xi //---------------------------- 2746*53ee8cc1Swenshuai.xi // Must have functions 2747*53ee8cc1Swenshuai.xi //---------------------------- 2748*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2749*53ee8cc1Swenshuai.xi /// Get XC library version 2750*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2751*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: store the version in this member 2752*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue 2753*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2754*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_GetLibVer(const MSIF_Version **ppVersion); 2755*53ee8cc1Swenshuai.xi 2756*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2757*53ee8cc1Swenshuai.xi /// Get XC Information 2758*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 2759*53ee8cc1Swenshuai.xi /// @return @ref XC_ApiInfo returnthe XC information in this member 2760*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2761*53ee8cc1Swenshuai.xi const XC_ApiInfo * MApi_XC_GetInfo(void); 2762*53ee8cc1Swenshuai.xi 2763*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2764*53ee8cc1Swenshuai.xi /// Get XC Status of specific window(Main/Sub) 2765*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 2766*53ee8cc1Swenshuai.xi /// @param pDrvStatus \b OUT: store the status 2767*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 2768*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2769*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2770*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetStatus(XC_ApiStatus *pDrvStatus, SCALER_WIN eWindow); 2771*53ee8cc1Swenshuai.xi 2772*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2773*53ee8cc1Swenshuai.xi /// Extended interface to Get XC Status of specific window(Main/Sub) with version info 2774*53ee8cc1Swenshuai.xi /// usage: 2775*53ee8cc1Swenshuai.xi /// XC_ApiStatusEx stXCStatus; 2776*53ee8cc1Swenshuai.xi /// memset(&stXCStatus, 0, sizeof(XC_ApiStatusEx)); 2777*53ee8cc1Swenshuai.xi /// stXCStatus.u16ApiStatusEX_Length = sizeof(XC_ApiStatusEx); 2778*53ee8cc1Swenshuai.xi /// stXCStatus.u32ApiStatusEx_Version = API_STATUS_EX_VERSION; 2779*53ee8cc1Swenshuai.xi /// if(MApi_XC_GetStatusEx(&stXCStatusEx, MAIN_WINDOW) == sizeof(XC_ApiStatusEx)) 2780*53ee8cc1Swenshuai.xi /// { 2781*53ee8cc1Swenshuai.xi /// ...... 2782*53ee8cc1Swenshuai.xi /// } 2783*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2784*53ee8cc1Swenshuai.xi /// @param pDrvStatusEx \b OUT: store the status 2785*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 2786*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return the copied length of input structure 2787*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2788*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetStatusEx(XC_ApiStatusEx *pDrvStatusEx, SCALER_WIN eWindow); 2789*53ee8cc1Swenshuai.xi 2790*53ee8cc1Swenshuai.xi //------------------------------- 2791*53ee8cc1Swenshuai.xi // Set Debug Level 2792*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2793*53ee8cc1Swenshuai.xi // @para u16DbgSwitch: XC_DBGLEVEL_OFF,XC_DBGLEVEL_SETWINDOW,XC_DBGLEVEL_SETTIMING,XC_DBGLEVEL_SYNCDETECT,XC_DBGLEVEL_MUX 2794*53ee8cc1Swenshuai.xi // currently, only used XC_DBGLEVEL_OFF,XC_DBGLEVEL_SETTIMING 2795*53ee8cc1Swenshuai.xi //------------------------------- 2796*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDbgLevel(MS_U16 u16DbgSwitch); 2797*53ee8cc1Swenshuai.xi 2798*53ee8cc1Swenshuai.xi //For debug purpose only! 2799*53ee8cc1Swenshuai.xi //------------------------------- 2800*53ee8cc1Swenshuai.xi // Set Debug Mode for scaler framelock 2801*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2802*53ee8cc1Swenshuai.xi // @para DbgMode: Disable/Enable debug 2803*53ee8cc1Swenshuai.xi // @para DbgFlag: The debug item 2804*53ee8cc1Swenshuai.xi // @para u32Data: The debug data 2805*53ee8cc1Swenshuai.xi //------------------------------- 2806*53ee8cc1Swenshuai.xi // void MApi_XC_FPLLDbgMode(EN_FPLL_DBG_MODE DbgMode, EN_FPLL_DBG_FLAG DbgFlag, MS_U32 u32Data); 2807*53ee8cc1Swenshuai.xi 2808*53ee8cc1Swenshuai.xi //------------------------------- 2809*53ee8cc1Swenshuai.xi // Set customer mode for scaler framelock 2810*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2811*53ee8cc1Swenshuai.xi // @para eMode: Disable/Enable customer mode 2812*53ee8cc1Swenshuai.xi // @para eFlag: The customer item 2813*53ee8cc1Swenshuai.xi // @para u32Data: The customer data 2814*53ee8cc1Swenshuai.xi //------------------------------- 2815*53ee8cc1Swenshuai.xi void MApi_XC_FPLLCustomerMode(EN_FPLL_MODE eMode, EN_FPLL_FLAG eFlag, MS_U32 u32Data); 2816*53ee8cc1Swenshuai.xi 2817*53ee8cc1Swenshuai.xi //---------------------------- 2818*53ee8cc1Swenshuai.xi // Initialize 2819*53ee8cc1Swenshuai.xi //---------------------------- 2820*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_SetIOMapBase(void); 2821*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2822*53ee8cc1Swenshuai.xi 2823*53ee8cc1Swenshuai.xi /// Initialize the XC 2824*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 2825*53ee8cc1Swenshuai.xi /// @param pXC_InitData \b IN: the Initialized Data 2826*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the initialized data 2827*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2828*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2829*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Init(XC_INITDATA *pXC_InitData, MS_U32 u32InitDataLen); 2830*53ee8cc1Swenshuai.xi 2831*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2832*53ee8cc1Swenshuai.xi /// Initialize the XC MISC 2833*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 2834*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b IN: the Initialized XC MISC 2835*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 2836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2837*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Init_MISC(XC_INITMISC *pXC_Init_Misc, MS_U32 u32InitMiscDataLen); 2838*53ee8cc1Swenshuai.xi 2839*53ee8cc1Swenshuai.xi 2840*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2841*53ee8cc1Swenshuai.xi /// Get XC Init MISC Status 2842*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2843*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b OUT: store the status 2844*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 2845*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2846*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetMISCStatus(XC_INITMISC *pXC_Init_Misc); 2847*53ee8cc1Swenshuai.xi 2848*53ee8cc1Swenshuai.xi 2849*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2850*53ee8cc1Swenshuai.xi /// Get XC Capability 2851*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 2852*53ee8cc1Swenshuai.xi /// @param u32Id (you can get detail from E_XC_CAPABILITY enum) 2853*53ee8cc1Swenshuai.xi /// @return output data for each query item. 2854*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2855*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetCapability(MS_U32 u32Id); 2856*53ee8cc1Swenshuai.xi 2857*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2858*53ee8cc1Swenshuai.xi /// Get XC Capability 2 2859*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 2860*53ee8cc1Swenshuai.xi /// @param eCapType \b IN: u32Id (you can get detail from E_XC_CAPABILITY enum) 2861*53ee8cc1Swenshuai.xi /// @param pRet \b IN: -- 2862*53ee8cc1Swenshuai.xi /// @param ret_size \b IN: -- 2863*53ee8cc1Swenshuai.xi /// @return @E_APIXC_ReturnValue 2864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2865*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetChipCaps(E_XC_CAPS eCapType, MS_U32* pRet, MS_U32 ret_size); 2866*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2867*53ee8cc1Swenshuai.xi /// Exit the XC 2868*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 2869*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2870*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2871*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Exit(void); 2872*53ee8cc1Swenshuai.xi 2873*53ee8cc1Swenshuai.xi //------------------------------- 2874*53ee8cc1Swenshuai.xi // Set Window & Scaling 2875*53ee8cc1Swenshuai.xi //------------------------------- 2876*53ee8cc1Swenshuai.xi 2877*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2878*53ee8cc1Swenshuai.xi /// Set Dynamic Scaling 2879*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 2880*53ee8cc1Swenshuai.xi /// @param pstDSInfo \b IN: the information of Dynamic Scaling 2881*53ee8cc1Swenshuai.xi /// @param u32DSInforLen \b IN: the length of the pstDSInfo 2882*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2883*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2884*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2885*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDynamicScaling(XC_DynamicScaling_Info *pstDSInfo, MS_U32 u32DSInfoLen, SCALER_WIN eWindow); 2886*53ee8cc1Swenshuai.xi 2887*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2888*53ee8cc1Swenshuai.xi /// Set Dynamic Scaling flag 2889*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 2890*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable Dynamic Scaling 2891*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2892*53ee8cc1Swenshuai.xi void MApi_XC_Set_DynamicScalingFlag(MS_BOOL bEnable); 2893*53ee8cc1Swenshuai.xi 2894*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2895*53ee8cc1Swenshuai.xi /// Get Dynamic Scaling Status 2896*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 2897*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: dynamic scaling is enabled; FALSE: dynamic scaling is not enabled. 2898*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2899*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetDynamicScalingStatus(void); 2900*53ee8cc1Swenshuai.xi 2901*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2902*53ee8cc1Swenshuai.xi /// Get DNR Base offset 2903*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2904*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2905*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 return the DNR Base offset 2906*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2907*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_Get_DNRBaseOffset(SCALER_WIN eWindow); 2908*53ee8cc1Swenshuai.xi 2909*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2910*53ee8cc1Swenshuai.xi /// Get the FrameStoreNum's factor number, which is usually to calcuate buffer offset 2911*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2912*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2913*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 return the store frame number factor 2914*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2915*53ee8cc1Swenshuai.xi #define MApi_XC_Get_StoreFrameNum MApi_XC_Get_FrameNumFactor 2916*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_Get_FrameNumFactor(SCALER_WIN eWindow); 2917*53ee8cc1Swenshuai.xi 2918*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2919*53ee8cc1Swenshuai.xi /// Get the FRCM FrameStoreNum's factor number, which is usually to calcuate buffer offset 2920*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2921*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 return the store frame number factor 2922*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2923*53ee8cc1Swenshuai.xi // MS_U8 MApi_XC_Get_FRCMFrameNum(SCALER_WIN eWindow); 2924*53ee8cc1Swenshuai.xi 2925*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2926*53ee8cc1Swenshuai.xi /// Set the specific window 2927*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2928*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 2929*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 2930*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2931*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2932*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2933*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetWindow(XC_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, SCALER_WIN eWindow); 2934*53ee8cc1Swenshuai.xi 2935*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2936*53ee8cc1Swenshuai.xi /// Set main and sub window 2937*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2938*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Main \b IN: the information of the main window setting 2939*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Sub \b IN: the information of the sub window setting 2940*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2941*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2942*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDualWindow(XC_SETWIN_INFO *pstXC_SetWin_Info_Main, XC_SETWIN_INFO *pstXC_SetWin_Info_Sub); 2943*53ee8cc1Swenshuai.xi 2944*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2945*53ee8cc1Swenshuai.xi /// Set the specific window for traveling mode(VE capture function) 2946*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2947*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 2948*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 2949*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2950*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2951*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2952*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetTravelingWindow(XC_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, SCALER_WIN eWindow); 2953*53ee8cc1Swenshuai.xi 2954*53ee8cc1Swenshuai.xi //------------------------------- 2955*53ee8cc1Swenshuai.xi // Mode Related 2956*53ee8cc1Swenshuai.xi //------------------------------- 2957*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2958*53ee8cc1Swenshuai.xi /// Set input source type 2959*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2960*53ee8cc1Swenshuai.xi /// @param enInputSourceType \b IN: which input source typewe are going to set 2961*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2962*53ee8cc1Swenshuai.xi /// @return void 2963*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2964*53ee8cc1Swenshuai.xi void MApi_XC_SetInputSource( INPUT_SOURCE_TYPE_t enInputSourceType, SCALER_WIN eWindow ); 2965*53ee8cc1Swenshuai.xi 2966*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2967*53ee8cc1Swenshuai.xi /// check whether the specific window is YUV space 2968*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2969*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2970*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2971*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2972*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsYUVSpace(SCALER_WIN eWindow); 2973*53ee8cc1Swenshuai.xi 2974*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2975*53ee8cc1Swenshuai.xi /// check whether specific window is memory format 422 2976*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2977*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 2978*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2979*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2980*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsMemoryFormat422(SCALER_WIN eWindow); 2981*53ee8cc1Swenshuai.xi 2982*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2983*53ee8cc1Swenshuai.xi /// Enable/Disable force RGB in 2984*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2985*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 2986*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 2987*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2988*53ee8cc1Swenshuai.xi void MApi_XC_EnableForceRGBin(MS_BOOL bEnable, SCALER_WIN eWindow); 2989*53ee8cc1Swenshuai.xi 2990*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2991*53ee8cc1Swenshuai.xi /// Set XC mirror mode for main or sub window 2992*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 2993*53ee8cc1Swenshuai.xi /// @param eMirrorMode \b IN: enable or disable XC mirror mode 2994*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 2995*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2996*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2997*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_EnableMirrorModeEx( MirrorMode_t eMirrorMode, SCALER_WIN eWindow); 2998*53ee8cc1Swenshuai.xi 2999*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3000*53ee8cc1Swenshuai.xi /// Get XC mirror mode for main or sub window 3001*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3002*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 3003*53ee8cc1Swenshuai.xi /// @return @ref MirrorMode_t 3004*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3005*53ee8cc1Swenshuai.xi MirrorMode_t MApi_XC_GetMirrorModeTypeEx(SCALER_WIN eWindow); 3006*53ee8cc1Swenshuai.xi 3007*53ee8cc1Swenshuai.xi 3008*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3009*53ee8cc1Swenshuai.xi /// Get whether support SWDS or not 3010*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3011*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3012*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3013*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_SupportSWDS(void); 3014*53ee8cc1Swenshuai.xi 3015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3016*53ee8cc1Swenshuai.xi /// Set DS info to XC global variable/// 3017*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3018*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_SetDSInfo(XC_DS_INFO *pstSetDSInfo, MS_U32 u32DSInfoLen, SCALER_WIN eWindow); 3019*53ee8cc1Swenshuai.xi 3020*53ee8cc1Swenshuai.xi //------------------------------- 3021*53ee8cc1Swenshuai.xi // Timing detect 3022*53ee8cc1Swenshuai.xi //------------------------------- 3023*53ee8cc1Swenshuai.xi 3024*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3025*53ee8cc1Swenshuai.xi /// Get the specific window's sync status 3026*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3027*53ee8cc1Swenshuai.xi /// @param eCurrentSrc \b IN: the current input source 3028*53ee8cc1Swenshuai.xi /// @param sXC_Sync_Status \b OUT:store the sync status 3029*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 3030*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3031*53ee8cc1Swenshuai.xi void MApi_XC_GetSyncStatus(INPUT_SOURCE_TYPE_t eCurrentSrc , XC_IP_SYNC_STATUS *sXC_Sync_Status, SCALER_WIN eWindow); 3032*53ee8cc1Swenshuai.xi 3033*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3034*53ee8cc1Swenshuai.xi /// wait for output sync 3035*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3036*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 3037*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 3038*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 3039*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3040*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_WaitOutputVSync(MS_U8 u8NumVSyncs, MS_U16 u16Timeout, SCALER_WIN eWindow); 3041*53ee8cc1Swenshuai.xi 3042*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3043*53ee8cc1Swenshuai.xi /// wait for input sync 3044*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3045*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 3046*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 3047*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 3048*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3049*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_WaitInputVSync(MS_U8 u8NumVSyncs, MS_U16 u16Timeout, SCALER_WIN eWindow); 3050*53ee8cc1Swenshuai.xi 3051*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3052*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 3053*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3054*53ee8cc1Swenshuai.xi /// @param esynctype \b IN: HDMI detect mode 3055*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3056*53ee8cc1Swenshuai.xi void MApi_XC_SetHdmiSyncMode(E_HDMI_SYNC_TYPE esynctype); 3057*53ee8cc1Swenshuai.xi 3058*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3059*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 3060*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3061*53ee8cc1Swenshuai.xi /// @return @ref E_HDMI_SYNC_TYPE Get current HDMI sync type 3062*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3063*53ee8cc1Swenshuai.xi E_HDMI_SYNC_TYPE MApi_XC_GetHdmiSyncMode(void); 3064*53ee8cc1Swenshuai.xi 3065*53ee8cc1Swenshuai.xi //------------------------------- 3066*53ee8cc1Swenshuai.xi // Display control 3067*53ee8cc1Swenshuai.xi //------------------------------- 3068*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3069*53ee8cc1Swenshuai.xi /// Set report window 3070*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3071*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable report window 3072*53ee8cc1Swenshuai.xi /// @param Window \b IN: the window position and size 3073*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: report window's color 3074*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3075*53ee8cc1Swenshuai.xi // void MApi_XC_SetRepWindow(MS_BOOL bEnable,MS_WINDOW_TYPE Window,MS_U8 u8Color); 3076*53ee8cc1Swenshuai.xi 3077*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3078*53ee8cc1Swenshuai.xi /// update the _bSkipDisableOPWriteOffInFPLL variable status 3079*53ee8cc1Swenshuai.xi /// if TRUE, disable OPWriteOff in FPLL will be skipped 3080*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3081*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: disable OPWriteOff in FPLL will be skipped or not. 3082*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3083*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3084*53ee8cc1Swenshuai.xi // void MApi_XC_SetSkipDisableOPWriteOffInFPLL(MS_BOOL bEnable, SCALER_WIN eWindow); 3085*53ee8cc1Swenshuai.xi 3086*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3087*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status instead of direcly modifying the register itself 3088*53ee8cc1Swenshuai.xi /// instead, the state machine will take care of modifying the register by checking this status. 3089*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3090*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 3091*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3092*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3093*53ee8cc1Swenshuai.xi void MApi_XC_Set_OPWriteOffEnable(MS_BOOL bEnable, SCALER_WIN eWindow); 3094*53ee8cc1Swenshuai.xi 3095*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3096*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status, set force flag, and direcly modifying the register 3097*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3098*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 3099*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3100*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3101*53ee8cc1Swenshuai.xi // void MApi_XC_ForceSet_OPWriteOffEnable(MS_BOOL bEnable ,SCALER_WIN eWindow); 3102*53ee8cc1Swenshuai.xi 3103*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3104*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status and also direcly modifying the register itself 3105*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3106*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 3107*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3108*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3109*53ee8cc1Swenshuai.xi void MApi_XC_Set_OPWriteOffEnableToReg(MS_BOOL bEnable, SCALER_WIN eWindow); 3110*53ee8cc1Swenshuai.xi 3111*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3112*53ee8cc1Swenshuai.xi /// get the OPWriteOff variable status 3113*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3114*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3115*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3117*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Get_OPWriteOffEnable(SCALER_WIN eWindow); 3118*53ee8cc1Swenshuai.xi 3119*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3120*53ee8cc1Swenshuai.xi /// skip the opwrite off operation in setwindow 3121*53ee8cc1Swenshuai.xi /// zoom no need to set panel timing, so skip the opwriteoff to save time 3122*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3123*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: skip, FALSE: don's skip 3124*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3126*53ee8cc1Swenshuai.xi void MApi_XC_SkipOPWriteOffInSetWindow(MS_BOOL bEnable, SCALER_WIN eWindow); 3127*53ee8cc1Swenshuai.xi 3128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3129*53ee8cc1Swenshuai.xi /// return the status of skip the opwrite off operation in setwindow 3130*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3131*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3132*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3133*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3134*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_GetSkipOPWriteOffInSetWindow(SCALER_WIN eWindow); 3135*53ee8cc1Swenshuai.xi 3136*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3137*53ee8cc1Swenshuai.xi /// update display window registers with input window 3138*53ee8cc1Swenshuai.xi /// note: 3139*53ee8cc1Swenshuai.xi /// driver will update pstDspwin to hw directly, no any transform 3140*53ee8cc1Swenshuai.xi /// for ap user: should call MApi_XC_Is2K2KToFrcMode first to check whether xc under 2K2K mode or not, 3141*53ee8cc1Swenshuai.xi /// if TURE, need cut pstDspwin's x and width by half(x=x/2; width=width/2), and then pass through to this API 3142*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3143*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 3144*53ee8cc1Swenshuai.xi /// @param pdspwin \b IN: window info that will be setted to registers 3145*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3146*53ee8cc1Swenshuai.xi void MApi_XC_SetDispWinToReg(MS_WINDOW_TYPE *pstDspwin, SCALER_WIN eWindow); 3147*53ee8cc1Swenshuai.xi 3148*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3149*53ee8cc1Swenshuai.xi /// get current display window registers setting 3150*53ee8cc1Swenshuai.xi /// note: 3151*53ee8cc1Swenshuai.xi /// driver will return pstDspwin from hw directly, no any transform 3152*53ee8cc1Swenshuai.xi /// for ap user: should call MApi_XC_Is2K2KToFrcMode first to check whether xc under 2K2K mode or not, 3153*53ee8cc1Swenshuai.xi /// if TURE, need double pstDspwin's x and width(x=x*2; width=width*2) from this API 3154*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3155*53ee8cc1Swenshuai.xi /// @param eWindow \b IN : Main or sub window 3156*53ee8cc1Swenshuai.xi /// @param pdspwin \b OUT: Pointer for ouput disp window register 3157*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3158*53ee8cc1Swenshuai.xi void MApi_XC_GetDispWinFromReg(MS_WINDOW_TYPE *pstDspwin, SCALER_WIN eWindow); 3159*53ee8cc1Swenshuai.xi 3160*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3161*53ee8cc1Swenshuai.xi /// let display video freeze by disable scaler buffer write 3162*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3163*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3164*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 3165*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3166*53ee8cc1Swenshuai.xi void MApi_XC_FreezeImg(MS_BOOL bEnable, SCALER_WIN eWindow); 3167*53ee8cc1Swenshuai.xi 3168*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3169*53ee8cc1Swenshuai.xi /// Query whether the specific window is freeze image status or not 3170*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3171*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 3172*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3173*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3174*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsFreezeImg(SCALER_WIN eWindow); 3175*53ee8cc1Swenshuai.xi 3176*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3177*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 3178*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3179*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3180*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3181*53ee8cc1Swenshuai.xi void MApi_XC_GenerateBlackVideoForBothWin( MS_BOOL bEnable); 3182*53ee8cc1Swenshuai.xi 3183*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3184*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 3185*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3186*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3187*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3188*53ee8cc1Swenshuai.xi void MApi_XC_Set_BLSK(MS_BOOL bEnable); 3189*53ee8cc1Swenshuai.xi 3190*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3191*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 3192*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3193*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3194*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3195*53ee8cc1Swenshuai.xi void MApi_XC_GenerateBlackVideo(MS_BOOL bEnable, SCALER_WIN eWindow); 3196*53ee8cc1Swenshuai.xi 3197*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3198*53ee8cc1Swenshuai.xi /// Query whether current XC is black video enabled or not 3199*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3200*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3201*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3202*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsBlackVideoEnable(SCALER_WIN eWindow); 3203*53ee8cc1Swenshuai.xi 3204*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3205*53ee8cc1Swenshuai.xi /// This function will enable/diable framebufferless mode 3206*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3207*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3208*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3209*53ee8cc1Swenshuai.xi void MApi_XC_EnableFrameBufferLess(MS_BOOL bEnable); 3210*53ee8cc1Swenshuai.xi 3211*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3212*53ee8cc1Swenshuai.xi /// Query whether current XC is framebufferless or not 3213*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3214*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3215*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3216*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsCurrentFrameBufferLessMode(void); 3217*53ee8cc1Swenshuai.xi 3218*53ee8cc1Swenshuai.xi 3219*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3220*53ee8cc1Swenshuai.xi /// This function will enable/diable request framebufferless mode 3221*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3222*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3223*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3224*53ee8cc1Swenshuai.xi void MApi_XC_EnableRequest_FrameBufferLess(MS_BOOL bEnable); 3225*53ee8cc1Swenshuai.xi 3226*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3227*53ee8cc1Swenshuai.xi /// Query whether current XC is request framebufferless or not 3228*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3229*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3231*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsCurrentRequest_FrameBufferLessMode(void); 3232*53ee8cc1Swenshuai.xi 3233*53ee8cc1Swenshuai.xi //------------------------------- 3234*53ee8cc1Swenshuai.xi // 3D control 3235*53ee8cc1Swenshuai.xi //------------------------------- 3236*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3237*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HW_Version 3238*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3239*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or not 3240*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3241*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_Get_3D_HW_Version(void); 3242*53ee8cc1Swenshuai.xi 3243*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3244*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_IsSupportedHW2DTo3D 3245*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3246*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or not 3247*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3248*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_IsSupportedHW2DTo3D(void); 3249*53ee8cc1Swenshuai.xi 3250*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3251*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_Mode 3252*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3253*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: 3d input format 3254*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: 3d output format 3255*53ee8cc1Swenshuai.xi /// @param e3dPanelType \b IN: 3d panel type 3256*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 3257*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3258*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3259*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_Mode(E_XC_3D_INPUT_MODE e3dInputMode, 3260*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE e3dOutputMode, 3261*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_TYPE e3dPanelType, 3262*53ee8cc1Swenshuai.xi SCALER_WIN eWindow); 3263*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3264*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_MainWin_FirstMode 3265*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3266*53ee8cc1Swenshuai.xi /// @param bMainFirst \b IN: main first or not 3267*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3269*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Set_3D_MainWin_FirstMode(MS_BOOL bMainFirst); 3270*53ee8cc1Swenshuai.xi 3271*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3272*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_LR_Frame_Exchg 3273*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3274*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 3275*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 3276*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3277*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_LR_Frame_Exchg(SCALER_WIN eWindow); 3278*53ee8cc1Swenshuai.xi 3279*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3280*53ee8cc1Swenshuai.xi /// MApi_XC_3D_Is_LR_Frame_Exchged 3281*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3282*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 3283*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 3284*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3285*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Is_LR_Frame_Exchged(SCALER_WIN eWindow); 3286*53ee8cc1Swenshuai.xi 3287*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3288*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Input_Mode 3289*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 3290*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 3291*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input mode 3292*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3293*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE MApi_XC_Get_3D_Input_Mode(SCALER_WIN eWindow); 3294*53ee8cc1Swenshuai.xi 3295*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3296*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Output_Mode 3297*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 3298*53ee8cc1Swenshuai.xi /// @return E_XC_3D_OUTPUT_MODE \b OUT: 3D output mode 3299*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3300*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE MApi_XC_Get_3D_Output_Mode(void); 3301*53ee8cc1Swenshuai.xi 3302*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3303*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Panel_Type 3304*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 3305*53ee8cc1Swenshuai.xi /// @return E_XC_3D_PANEL_TYPE \b OUT: 3D panel type 3306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3307*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_TYPE MApi_XC_Get_3D_Panel_Type(void); 3308*53ee8cc1Swenshuai.xi 3309*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3310*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_MainWin_First 3311*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3312*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 3313*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3314*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Get_3D_MainWin_First(void); 3315*53ee8cc1Swenshuai.xi 3316*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3317*53ee8cc1Swenshuai.xi /// MApi_XC_3DMainSub_IPSync 3318*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3319*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 3320*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3321*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3DMainSub_IPSync(void); 3322*53ee8cc1Swenshuai.xi 3323*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3324*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_VerVideoOffset 3325*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3326*53ee8cc1Swenshuai.xi /// @param u163DVerVideoOffset \b IN: 3d offset 3327*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3328*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3329*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Set_3D_VerVideoOffset(MS_U16 u163DVerVideoOffset); 3330*53ee8cc1Swenshuai.xi 3331*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3332*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_VerVideoOffset 3333*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3334*53ee8cc1Swenshuai.xi /// @return MS_U16 \b OUT: H shift value 3335*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3336*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_Get_3D_VerVideoOffset(void); 3337*53ee8cc1Swenshuai.xi 3338*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3339*53ee8cc1Swenshuai.xi /// MApi_XC_Is3DFormatSupported 3340*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3341*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: input format 3342*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: output format 3343*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3344*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3345*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is3DFormatSupported(E_XC_3D_INPUT_MODE e3dInputMode, 3346*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE e3dOutputMode); 3347*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3348*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HShift 3349*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3350*53ee8cc1Swenshuai.xi /// @param u16HShift \b IN: setup H shift value 3351*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3352*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3353*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HShift(MS_U16 u16HShift); 3354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3355*53ee8cc1Swenshuai.xi /// MApi_XC_Enable_3D_LR_Sbs2Line 3356*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3357*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable feature 3358*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3359*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3360*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Enable_3D_LR_Sbs2Line(MS_BOOL bEnable); 3361*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3362*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HShift 3363*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3364*53ee8cc1Swenshuai.xi /// @return MS_U16 \b OUT: H shift value 3365*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3366*53ee8cc1Swenshuai.xi // MS_U16 MApi_XC_Get_3D_HShift(void); 3367*53ee8cc1Swenshuai.xi 3368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3369*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HW2DTo3D_Buffer 3370*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3371*53ee8cc1Swenshuai.xi /// @param u32HW2DTO3D_DD_Buf \b IN: DD physical address for 2D3D 3372*53ee8cc1Swenshuai.xi /// @param u32HW2DTO3D_DR_Buf \b IN: DR physical address for 2D3D 3373*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3374*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3375*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HW2DTo3D_Buffer(MS_PHY u32HW2DTO3D_DD_Buf, MS_PHY u32HW2DTO3D_DR_Buf); 3376*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3377*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HW2DTo3D_Parameters 3378*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 3379*53ee8cc1Swenshuai.xi /// @param st3DHw2DTo3DPara \b IN: 2D3D parameter 3380*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3381*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3382*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HW2DTo3D_Parameters(MS_XC_3D_HW2DTO3D_PARA st3DHw2DTo3DPara); 3383*53ee8cc1Swenshuai.xi 3384*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3385*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HW2DTo3D_Parameters 3386*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 3387*53ee8cc1Swenshuai.xi /// @param st3DHw2DTo3DPara \b IN: 2D3D parameter 3388*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 3389*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3390*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_HW2DTo3D_Parameters(MS_XC_3D_HW2DTO3D_PARA *pst3DHw2DTo3DPara); 3391*53ee8cc1Swenshuai.xi 3392*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3393*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_Detect3DFormat_Parameters 3394*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3395*53ee8cc1Swenshuai.xi /// @param pstDetect3DFormatPara \b IN: 3D format parameter 3396*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 3397*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3398*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_Detect3DFormat_Parameters(MS_XC_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 3399*53ee8cc1Swenshuai.xi 3400*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3401*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Detect3DFormat_Parameters 3402*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 3403*53ee8cc1Swenshuai.xi /// @param pstDetect3DFormatPara \b IN: 3D format parameter 3404*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 3405*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3406*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_Detect3DFormat_Parameters(MS_XC_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 3407*53ee8cc1Swenshuai.xi 3408*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3409*53ee8cc1Swenshuai.xi /// MApi_XC_3D_PostPQSetting 3410*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3411*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 3412*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 3413*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3414*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE MApi_XC_Detect3DFormatByContent(SCALER_WIN eWindow); 3415*53ee8cc1Swenshuai.xi 3416*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3417*53ee8cc1Swenshuai.xi /// MApi_XC_DetectNL 3418*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3419*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 3420*53ee8cc1Swenshuai.xi /// @param pstDetectNLatticePara \b IN: Nine lattice parameter 3421*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3422*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3423*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_DetectNL(SCALER_WIN eWindow, ST_DETECTNL_PARA* pstDetectNLatticePara); 3424*53ee8cc1Swenshuai.xi 3425*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3426*53ee8cc1Swenshuai.xi /// MApi_XC_3D_PostPQSetting 3427*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3428*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 3429*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3430*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3431*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_PostPQSetting(SCALER_WIN eWindow); 3432*53ee8cc1Swenshuai.xi 3433*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3434*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_FPInfo 3435*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3436*53ee8cc1Swenshuai.xi /// @param pstFPInfoPara \b IN: Frame packing info 3437*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3439*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_FPInfo(MS_XC_3D_FPINFO_PARA *pstFPInfoPara); 3440*53ee8cc1Swenshuai.xi 3441*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3442*53ee8cc1Swenshuai.xi /// MApi_XC_EnableAutoDetect3D 3443*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3444*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: disable 3445*53ee8cc1Swenshuai.xi /// @param enDetectMethod \b IN: select auto detect mode 3446*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3447*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3448*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_EnableAutoDetect3D(MS_BOOL bEnable, E_XC_3D_AUTODETECT_METHOD enDetectMethod); 3449*53ee8cc1Swenshuai.xi 3450*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3451*53ee8cc1Swenshuai.xi /// MApi_XC_GetAutoDetect3DFlag 3452*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3453*53ee8cc1Swenshuai.xi /// @param penDetectMethod \b IN: select auto detect mode 3454*53ee8cc1Swenshuai.xi /// @param pbEnable \b IN: TRUE: enable, FALSE: disable 3455*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3457*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetAutoDetect3DFlag(E_XC_3D_AUTODETECT_METHOD *penDetectMethod, MS_BOOL *pbEnable); 3458*53ee8cc1Swenshuai.xi 3459*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3460*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_SubWinClk 3461*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3462*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3463*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3464*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_SubWinClk(void); 3465*53ee8cc1Swenshuai.xi 3466*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3467*53ee8cc1Swenshuai.xi /// Is 3D reg_3dlr_side2line_en enabled or not 3468*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3469*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 3470*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 3471*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Is_LR_Sbs2Line(void); 3472*53ee8cc1Swenshuai.xi 3473*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3474*53ee8cc1Swenshuai.xi /// This function will get the skip status of default flag 3475*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3476*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL return the the skip status of default flag 3477*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3478*53ee8cc1Swenshuai.xi // MS_BOOL MApi_SC_3D_Is_Skip_Default_LR_Flag(void); 3479*53ee8cc1Swenshuai.xi 3480*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3481*53ee8cc1Swenshuai.xi /// This function will enable/diable skip default LR flag 3482*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 3483*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 3484*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 3485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3486*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Enable_Skip_Default_LR_Flag(MS_BOOL bEnable); 3487*53ee8cc1Swenshuai.xi 3488*53ee8cc1Swenshuai.xi //------------------------------- 3489*53ee8cc1Swenshuai.xi // Mux control 3490*53ee8cc1Swenshuai.xi //------------------------------- 3491*53ee8cc1Swenshuai.xi #define MAX_SYNC_DATA_PATH_SUPPORTED (6) // (3),3 is not enough, because Main+SUB+Scart 1+Scart 2 =4, but in order to support off-line det + DWIN, modify to 6 first 3492*53ee8cc1Swenshuai.xi #define MAX_ASYNC_DATA_PATH_SUPPORTED (2) 3493*53ee8cc1Swenshuai.xi #define MAX_DATA_PATH_SUPPORTED (MAX_SYNC_DATA_PATH_SUPPORTED+MAX_ASYNC_DATA_PATH_SUPPORTED) 3494*53ee8cc1Swenshuai.xi 3495*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3496*53ee8cc1Swenshuai.xi /// Initialize Mux before using Mux controller 3497*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3498*53ee8cc1Swenshuai.xi /// @param input_source_to_input_port \b IN: a function to map from input source to input port 3499*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3500*53ee8cc1Swenshuai.xi void MApi_XC_Mux_Init(void (*input_source_to_input_port)(INPUT_SOURCE_TYPE_t src_ids , E_MUX_INPUTPORT* port_ids , MS_U8* u8port_count ) ); 3501*53ee8cc1Swenshuai.xi 3502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3503*53ee8cc1Swenshuai.xi /// Monitor the source of Mux 3504*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3505*53ee8cc1Swenshuai.xi /// @param bRealTimeMonitorOnly \b IN: define whether do the monitor routine only for real time 3506*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3507*53ee8cc1Swenshuai.xi void MApi_XC_Mux_SourceMonitor(MS_BOOL bRealTimeMonitorOnly); 3508*53ee8cc1Swenshuai.xi 3509*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3510*53ee8cc1Swenshuai.xi /// Create a path in Mux Controller. 3511*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3512*53ee8cc1Swenshuai.xi /// @param Path_Info \b IN: the information of the path 3513*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the Path_Info 3514*53ee8cc1Swenshuai.xi /// @return @ref MS_S16 return the path id, or -1 when any error is happened 3515*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3516*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_CreatePath(XC_MUX_PATH_INFO* Path_Info, MS_U32 u32InitDataLen); 3517*53ee8cc1Swenshuai.xi 3518*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3519*53ee8cc1Swenshuai.xi /// delete a path from Mux Controller. 3520*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3521*53ee8cc1Swenshuai.xi /// @param src \b IN: Type of input source of a path you want to delete 3522*53ee8cc1Swenshuai.xi /// @param dest \b IN: Type of destination of a path you want to delete 3523*53ee8cc1Swenshuai.xi /// @return 1 if delete successfuly. Return -1 if delete fail 3524*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3525*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_DeletePath(INPUT_SOURCE_TYPE_t src, E_DEST_TYPE dest); 3526*53ee8cc1Swenshuai.xi 3527*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3528*53ee8cc1Swenshuai.xi /// A path is disabled after creating it (\ref MApi_XC_Mux_CreatePath) 3529*53ee8cc1Swenshuai.xi /// If a path is not enabled, \ref MApi_XC_Mux_SourceMonitor will bypass it. 3530*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3531*53ee8cc1Swenshuai.xi /// @param PathId \b IN: PathId The Path you want to enable 3532*53ee8cc1Swenshuai.xi /// @return 1 if enable successfuly. Return -1 if enable fail 3533*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3534*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_EnablePath(MS_U16 PathId); 3535*53ee8cc1Swenshuai.xi 3536*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3537*53ee8cc1Swenshuai.xi /// Trigger Sync Event on Mux Controller. 3538*53ee8cc1Swenshuai.xi /// The Mux Controller will pass src and *para to each Sync Event Handler (refer synchronous_event_handler of MUX_DATA_PATH also). 3539*53ee8cc1Swenshuai.xi /// ( Delegate Function: 3540*53ee8cc1Swenshuai.xi /// Send necessary parameter to SyncEventHandler of each synchronous_path which source is 'src' ) 3541*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3542*53ee8cc1Swenshuai.xi /// @param src \b IN: The input source which triggers Sync Event 3543*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 3544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3545*53ee8cc1Swenshuai.xi void MApi_XC_Mux_TriggerPathSyncEvent( INPUT_SOURCE_TYPE_t src , void* para); 3546*53ee8cc1Swenshuai.xi 3547*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3548*53ee8cc1Swenshuai.xi /// Set the specific window 3549*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3550*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 3551*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 3552*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3553*53ee8cc1Swenshuai.xi void MApi_XC_Mux_TriggerDestOnOffEvent( INPUT_SOURCE_TYPE_t src , void* para); 3554*53ee8cc1Swenshuai.xi 3555*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3556*53ee8cc1Swenshuai.xi /// This function was used to enable/disable the destination periodic handler 3557*53ee8cc1Swenshuai.xi /// After enabled periodic hander, Mux Controller will pass the parameters to this handler and execute it periodically 3558*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3559*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 3560*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable the priodic handler. 3561*53ee8cc1Swenshuai.xi /// @return 1 if successfuly. Return -1 if failed. 3562*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3563*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_OnOffPeriodicHandler( INPUT_SOURCE_TYPE_t src, MS_BOOL bEnable); 3564*53ee8cc1Swenshuai.xi 3565*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3566*53ee8cc1Swenshuai.xi /// Get Paths in driver. 3567*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3568*53ee8cc1Swenshuai.xi /// @param Paths \b OUT: Path information 3569*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 3570*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3571*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_Mux_GetPathInfo(XC_MUX_PATH_INFO* Paths); // Return current all path info. Max path number is MAX_DATA_PATH_SUPPORTED 3572*53ee8cc1Swenshuai.xi 3573*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3574*53ee8cc1Swenshuai.xi /// Set Support MHL Path Info 3575*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3576*53ee8cc1Swenshuai.xi /// @param u8MhlSupportInfo \b IN: MHL Support Info 3577*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 3578*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3579*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Mux_SetSupportMhlPathInfo(MS_U8 u8MhlSupportInfo); 3580*53ee8cc1Swenshuai.xi 3581*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3582*53ee8cc1Swenshuai.xi /// Set MHL Hot Plug Inverse Info 3583*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3584*53ee8cc1Swenshuai.xi /// @param bIsMhlHotPlugInverse \b IN: MHL Hot Plug Inverse Info 3585*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 3586*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3587*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Mux_SetMhlHotPlugInverseInfo(MS_BOOL bIsMhlHotPlugInverse); 3588*53ee8cc1Swenshuai.xi 3589*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3590*53ee8cc1Swenshuai.xi /// Get input port from input HDMI source type 3591*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3592*53ee8cc1Swenshuai.xi /// @param src \b IN: the query based on the input HDMI type 3593*53ee8cc1Swenshuai.xi /// @return @ref E_MUX_INPUTPORT 3594*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3595*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT MApi_XC_Mux_GetHDMIPort( INPUT_SOURCE_TYPE_t src ); 3596*53ee8cc1Swenshuai.xi 3597*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3598*53ee8cc1Swenshuai.xi /// Map input source to VD Ymux port 3599*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3600*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: input source type 3601*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 3602*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3603*53ee8cc1Swenshuai.xi // MS_U8 MApi_XC_MUX_MapInputSourceToVDYMuxPORT( INPUT_SOURCE_TYPE_t u8InputSourceType ); 3604*53ee8cc1Swenshuai.xi 3605*53ee8cc1Swenshuai.xi //------------------------------ 3606*53ee8cc1Swenshuai.xi /// MApi_XC_Set_NR 3607*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 3608*53ee8cc1Swenshuai.xi /// @param bEn \b IN: enable 3609*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 3610*53ee8cc1Swenshuai.xi //------------------------------ 3611*53ee8cc1Swenshuai.xi void MApi_XC_Set_NR(MS_BOOL bEn, SCALER_WIN eWindow); 3612*53ee8cc1Swenshuai.xi 3613*53ee8cc1Swenshuai.xi //------------------------------ 3614*53ee8cc1Swenshuai.xi /// MApi_XC_FilmMode_P 3615*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 3616*53ee8cc1Swenshuai.xi //------------------------------ 3617*53ee8cc1Swenshuai.xi // void MApi_XC_FilmMode_P(void); 3618*53ee8cc1Swenshuai.xi 3619*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3620*53ee8cc1Swenshuai.xi /// Check if UC is enabled 3621*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 3622*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 3623*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: UC enabled, FALSE: UC disabled 3624*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3625*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetUCEnabled(SCALER_WIN eWindow); 3626*53ee8cc1Swenshuai.xi 3627*53ee8cc1Swenshuai.xi //------------------------------ 3628*53ee8cc1Swenshuai.xi /// MApi_XC_GenSpecificTiming 3629*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 3630*53ee8cc1Swenshuai.xi /// @param timingtype \b IN: internal timing gen 3631*53ee8cc1Swenshuai.xi //------------------------------ 3632*53ee8cc1Swenshuai.xi // void MApi_XC_GenSpecificTiming(XC_Internal_TimingType timingtype); 3633*53ee8cc1Swenshuai.xi 3634*53ee8cc1Swenshuai.xi //------------------------------ 3635*53ee8cc1Swenshuai.xi // Scaler IP Related 3636*53ee8cc1Swenshuai.xi //------------------------------ 3637*53ee8cc1Swenshuai.xi // DE-Bypass Mode 3638*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3639*53ee8cc1Swenshuai.xi /// This function get DE-Bypass Mode 3640*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3641*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 3642*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3643*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3644*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_GetDEBypassMode(SCALER_WIN eWindow); 3645*53ee8cc1Swenshuai.xi 3646*53ee8cc1Swenshuai.xi // Data enable 3647*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3648*53ee8cc1Swenshuai.xi /// This function get DE window 3649*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3650*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 3651*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 3652*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3653*53ee8cc1Swenshuai.xi void MApi_XC_GetDEWindow(MS_WINDOW_TYPE *psWin, SCALER_WIN eWindow); 3654*53ee8cc1Swenshuai.xi 3655*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3656*53ee8cc1Swenshuai.xi /// This function get DE window in DE ByPass Mode. (T12 / T13 can not support HDMI HV mode. So DE window from BK1 can not be retrieved if set to HV mode.) 3657*53ee8cc1Swenshuai.xi /// We Bypass pre-scaling and get H/V size from BK2 MDrv_SC_get_vsd_line_count & MDrv_SC_get_hsd_pixel_count. 3658*53ee8cc1Swenshuai.xi /// Prepare this function for using in the feature. 3659*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 3660*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 3661*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 3662*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3663*53ee8cc1Swenshuai.xi void MApi_XC_GetDEWidthHeightInDEByPassMode(MS_U16* pu16Width,MS_U16* pu16Height ,SCALER_WIN eWindow); 3664*53ee8cc1Swenshuai.xi 3665*53ee8cc1Swenshuai.xi //Get Capture Window 3666*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3667*53ee8cc1Swenshuai.xi /// Get the capture window for specific window 3668*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3669*53ee8cc1Swenshuai.xi /// @param capture_win \b OUT: the window info to get 3670*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 3671*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3672*53ee8cc1Swenshuai.xi void MApi_XC_GetCaptureWindow(MS_WINDOW_TYPE* capture_win, SCALER_WIN eWindow); 3673*53ee8cc1Swenshuai.xi 3674*53ee8cc1Swenshuai.xi 3675*53ee8cc1Swenshuai.xi //Set Capture Window 3676*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3677*53ee8cc1Swenshuai.xi /// Set the Vertical start of capture window for specific window 3678*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3679*53ee8cc1Swenshuai.xi /// @param u16Vstart \b IN: the window info to get 3680*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3681*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3682*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowVstart(MS_U16 u16Vstart , SCALER_WIN eWindow); 3683*53ee8cc1Swenshuai.xi 3684*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3685*53ee8cc1Swenshuai.xi /// Set the horizontal start of capture window for specific window 3686*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3687*53ee8cc1Swenshuai.xi /// @param u16Hstart \b IN: the window info to get 3688*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3689*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3690*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowHstart(MS_U16 u16Hstart , SCALER_WIN eWindow); 3691*53ee8cc1Swenshuai.xi 3692*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3693*53ee8cc1Swenshuai.xi /// Set the Vertical size of capture window for specific window 3694*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3695*53ee8cc1Swenshuai.xi /// @param u16Vsize \b IN: the window info to get 3696*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3697*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3698*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowVsize(MS_U16 u16Vsize , SCALER_WIN eWindow); 3699*53ee8cc1Swenshuai.xi 3700*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3701*53ee8cc1Swenshuai.xi /// Set the Horizontal size of capture window for specific window 3702*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3703*53ee8cc1Swenshuai.xi /// @param u16Hsize \b IN: the window info to get 3704*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3705*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3706*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowHsize(MS_U16 u16Hsize , SCALER_WIN eWindow); 3707*53ee8cc1Swenshuai.xi 3708*53ee8cc1Swenshuai.xi // Utility 3709*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3710*53ee8cc1Swenshuai.xi /// do the software reset for the specific window 3711*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3712*53ee8cc1Swenshuai.xi /// @param u8Reset \b IN: reset IP @ref SOFTWARE_REST_TYPE_t 3713*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 3714*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3715*53ee8cc1Swenshuai.xi void MApi_XC_SoftwareReset(MS_U8 u8Reset, SCALER_WIN eWindow); 3716*53ee8cc1Swenshuai.xi 3717*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3718*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 10 3719*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3720*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 3721*53ee8cc1Swenshuai.xi /// @return MS_U16: H Frequency x 10 3722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3723*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_CalculateHFreqx10(MS_U16 u16HPeriod); 3724*53ee8cc1Swenshuai.xi 3725*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3726*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 1000 3727*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3728*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 3729*53ee8cc1Swenshuai.xi /// @return MS_U32: H Frequency x 1000 3730*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3731*53ee8cc1Swenshuai.xi // MS_U32 MApi_XC_CalculateHFreqx1K(MS_U16 u16HPeriod); 3732*53ee8cc1Swenshuai.xi 3733*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3734*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 10 3735*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3736*53ee8cc1Swenshuai.xi /// @param u16HFreqx10 \b IN: Horizontal frequency x 10 3737*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 3738*53ee8cc1Swenshuai.xi /// @return MS_U16: V Frequency x 10 3739*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3740*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_CalculateVFreqx10(MS_U16 u16HFreqx10, MS_U16 u16VTotal); 3741*53ee8cc1Swenshuai.xi 3742*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3743*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 1000 3744*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3745*53ee8cc1Swenshuai.xi /// @param u32HFreqx1K \b IN: Horizontal frequency x 1000 3746*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 3747*53ee8cc1Swenshuai.xi /// @return MS_U32: V Frequency x 1000 3748*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3749*53ee8cc1Swenshuai.xi // MS_U32 MApi_XC_CalculateVFreqx1K(MS_U32 u32HFreqx1K, MS_U16 u16VTotal); 3750*53ee8cc1Swenshuai.xi 3751*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3752*53ee8cc1Swenshuai.xi /// Attach a Call back function info Interrupt. 3753*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3754*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 3755*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 3756*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 3757*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 3758*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3759*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_InterruptAttach(SC_INT_SRC enIntNum, SC_InterruptCb pIntCb, void * pParam); 3760*53ee8cc1Swenshuai.xi 3761*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3762*53ee8cc1Swenshuai.xi /// DeAttach a Call back function info Interrupt. 3763*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3764*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 3765*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 3766*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 3767*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 3768*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3769*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_InterruptDeAttach(SC_INT_SRC enIntNum, SC_InterruptCb pIntCb, void * pParam); 3770*53ee8cc1Swenshuai.xi 3771*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3772*53ee8cc1Swenshuai.xi /// This function will disable input source 3773*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3774*53ee8cc1Swenshuai.xi /// @param bDisable \b IN: TRUE : Disable; FALSE: Enable 3775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3776*53ee8cc1Swenshuai.xi void MApi_XC_DisableInputSource(MS_BOOL bDisable, SCALER_WIN eWidnow); 3777*53ee8cc1Swenshuai.xi 3778*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3779*53ee8cc1Swenshuai.xi /// This function will check is input source disabled or not 3780*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 3781*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3782*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: inputsource is disabled, False: inputsource is not disabled 3783*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3784*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsInputSourceDisabled(SCALER_WIN eWindow); 3785*53ee8cc1Swenshuai.xi 3786*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3787*53ee8cc1Swenshuai.xi /// This function will change panel type dynamically 3788*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3789*53ee8cc1Swenshuai.xi /// @param pstPanelInfo \b IN: the new panel type 3790*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3791*53ee8cc1Swenshuai.xi void MApi_XC_ChangePanelType(XC_PANEL_INFO *pstPanelInfo); 3792*53ee8cc1Swenshuai.xi 3793*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3794*53ee8cc1Swenshuai.xi /// MApi_XC_GetCurrentReadBank 3795*53ee8cc1Swenshuai.xi /// Attention! This function should only be used in the xc interrupt!!! 3796*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3797*53ee8cc1Swenshuai.xi /// This function will tell the current read bank 3798*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3799*53ee8cc1Swenshuai.xi /// @return MS_U16 Current read bank 3800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3801*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetCurrentReadBank(SCALER_WIN eWindow); 3802*53ee8cc1Swenshuai.xi 3803*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3804*53ee8cc1Swenshuai.xi /// MApi_XC_GetCurrentWriteBank 3805*53ee8cc1Swenshuai.xi /// Attention! This function should only be used in the xc interrupt!!! 3806*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3807*53ee8cc1Swenshuai.xi /// This function will tell the current write bank 3808*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3809*53ee8cc1Swenshuai.xi /// @return MS_U16 Current write bank 3810*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3811*53ee8cc1Swenshuai.xi // MS_U16 MApi_XC_GetCurrentWriteBank(SCALER_WIN eWindow); 3812*53ee8cc1Swenshuai.xi 3813*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3814*53ee8cc1Swenshuai.xi /// 1. calculate H/V pre-scaling down ratio accroding to frame buffer size 3815*53ee8cc1Swenshuai.xi /// 2. must be called after MApi_XC_SetFrameBufferAddress() and before MApi_XC_SetWindow() 3816*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3817*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable auto pre scaling 3818*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3819*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3820*53ee8cc1Swenshuai.xi // void MApi_XC_SetAutoPreScaling(MS_BOOL bEnable, SCALER_WIN eWindow); 3821*53ee8cc1Swenshuai.xi 3822*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3823*53ee8cc1Swenshuai.xi /// Get V sync width of current input source. 3824*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3825*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The Vsync width of specific window. 3826*53ee8cc1Swenshuai.xi /// @return MS_U8 Sync width of input V sync 3827*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3828*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetVSyncWidth(SCALER_WIN eWindow); 3829*53ee8cc1Swenshuai.xi 3830*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3831*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 3832*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 3833*53ee8cc1Swenshuai.xi /// @param MaxGOP \b IN: The mux number. 3834*53ee8cc1Swenshuai.xi /// @param UseNum \b IN: GOP selection. 3835*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 3836*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable GOP 3837*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: Success FALSE: Fail 3838*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3839*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_set_GOP_Enable(MS_U8 MaxGOP, MS_U8 UseNum, MS_U8 u8MuxNum, MS_BOOL bEnable); 3840*53ee8cc1Swenshuai.xi 3841*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3842*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 3843*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 3844*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 3845*53ee8cc1Swenshuai.xi /// @param ipSelGop \b IN: GOP selection. 3846*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3847*53ee8cc1Swenshuai.xi // void MApi_XC_ip_sel_for_gop(MS_U8 u8MuxNum , MS_XC_IPSEL_GOP ipSelGop); 3848*53ee8cc1Swenshuai.xi 3849*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3850*53ee8cc1Swenshuai.xi /// Set Scaler VOP New blending level 3851*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 3852*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3853*53ee8cc1Swenshuai.xi // void MApi_XC_SetVOPNBL(void); 3854*53ee8cc1Swenshuai.xi 3855*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3856*53ee8cc1Swenshuai.xi /// XC IP0 Get Destination Information for GOP mixer 3857*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 3858*53ee8cc1Swenshuai.xi /// @param pDstInfo \b IN: destination info 3859*53ee8cc1Swenshuai.xi /// @param u32SizeofDstInfo \b IN: size of destination info 3860*53ee8cc1Swenshuai.xi /// @param XCDstType \b IN: destination type 3861*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 3862*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3863*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetDstInfo(MS_XC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo, EN_GOP_XCDST_TYPE XCDstType); 3864*53ee8cc1Swenshuai.xi 3865*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3866*53ee8cc1Swenshuai.xi /// Allow decoder to control Field R / W bank status of scaler. 3867*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3868*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: True: Decoder can control the R/W bank status. False: Decoder can not control the R/W bank status 3869*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3870*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3871*53ee8cc1Swenshuai.xi void MApi_XC_set_FD_Mask_byWin(MS_BOOL bEnable, SCALER_WIN eWindow); 3872*53ee8cc1Swenshuai.xi 3873*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3874*53ee8cc1Swenshuai.xi /// Get XC FD_Mask status. 3875*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3876*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3877*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 3878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3879*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FD_Mask_byWin(SCALER_WIN eWindow); 3880*53ee8cc1Swenshuai.xi 3881*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3882*53ee8cc1Swenshuai.xi /// Auto create input timing. To use this feature, the system must provide clock to scaler. 3883*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 3884*53ee8cc1Swenshuai.xi /// @param timingtype \b IN: the timing type. 3885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3886*53ee8cc1Swenshuai.xi // void MApi_XC_InitIPForInternalTiming(XC_Internal_TimingType timingtype); 3887*53ee8cc1Swenshuai.xi 3888*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3889*53ee8cc1Swenshuai.xi /// Set Main window IP mux directly. 3890*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 3891*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The value need to be set into register 3892*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3893*53ee8cc1Swenshuai.xi // void MApi_XC_SetIPMux(MS_U8 u8Val); 3894*53ee8cc1Swenshuai.xi 3895*53ee8cc1Swenshuai.xi /// status of input H/V sync 3896*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3897*53ee8cc1Swenshuai.xi /// Return true if input H sync of scaler is exist. 3898*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 3899*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3900*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 3901*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3902*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_H_Sync_Active(SCALER_WIN eWindow); 3903*53ee8cc1Swenshuai.xi 3904*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3905*53ee8cc1Swenshuai.xi /// Return true if input V sync of scaler is exist. 3906*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 3907*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3908*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 3909*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3910*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_V_Sync_Active(SCALER_WIN eWindow); 3911*53ee8cc1Swenshuai.xi 3912*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3913*53ee8cc1Swenshuai.xi /// get auto position window with the corresponding valid data threshold 3914*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 3915*53ee8cc1Swenshuai.xi /// @param u8ValidData \b IN: valid data threshold 3916*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 3917*53ee8cc1Swenshuai.xi /// @param pstAutoPositionWindow \b OUT: auto position window parameters 3918*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: auto position window is valid FALSE: auto position window is invalid 3919*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3920*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_GetAutoPositionWindow(MS_U8 u8ValidData, SCALER_WIN eWindow, MS_WINDOW_TYPE *pstAutoPositionWindow); 3921*53ee8cc1Swenshuai.xi 3922*53ee8cc1Swenshuai.xi 3923*53ee8cc1Swenshuai.xi //------------------------------ 3924*53ee8cc1Swenshuai.xi // Scaler & Memory 3925*53ee8cc1Swenshuai.xi //------------------------------ 3926*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3927*53ee8cc1Swenshuai.xi /// Set Frame buffer address and size for scaler. 3928*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3929*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: Start address of frame buffer. 3930*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: Frame buffer size for Scaler 3931*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3932*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3933*53ee8cc1Swenshuai.xi void MApi_XC_SetFrameBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, SCALER_WIN eWindow); 3934*53ee8cc1Swenshuai.xi 3935*53ee8cc1Swenshuai.xi //------------------------------ 3936*53ee8cc1Swenshuai.xi // Scaler FRCM Memory // monaco mode 3937*53ee8cc1Swenshuai.xi //------------------------------ 3938*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3939*53ee8cc1Swenshuai.xi /// Set FRCM Frame buffer address and size for scaler. 3940*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3941*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: Start address of frame buffer. 3942*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: Frame buffer size for Scaler 3943*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3944*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3945*53ee8cc1Swenshuai.xi // void MApi_XC_SetFRCMFrameBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, SCALER_WIN eWindow); 3946*53ee8cc1Swenshuai.xi 3947*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3948*53ee8cc1Swenshuai.xi /// Check if the buffer size is enough or not. 3949*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3950*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 3951*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3952*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Buffer size is enough FALSE: Buffer is not enough 3953*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3954*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_IsFrameBufferEnoughForCusScaling(XC_SETWIN_INFO *pstXC_SetWin_Info, SCALER_WIN eWindow); 3955*53ee8cc1Swenshuai.xi 3956*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3957*53ee8cc1Swenshuai.xi /// Enable or disable scaler memory read/write request 3958*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3959*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TURE=Enable memory request of 'eType'; FALSE= Disable memory request of 'eType' 3960*53ee8cc1Swenshuai.xi /// @param eType \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 3961*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3962*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue 3963*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3964*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetScalerMemoryRequest(MS_BOOL bEnable, E_XC_MEMORY_REQUEST_TYPE eType, SCALER_WIN eWindow); 3965*53ee8cc1Swenshuai.xi 3966*53ee8cc1Swenshuai.xi //Capture_Memory 3967*53ee8cc1Swenshuai.xi 3968*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3969*53ee8cc1Swenshuai.xi /// Get pixel data specify by u16CorX and u16CorY. 3970*53ee8cc1Swenshuai.xi /// This pixel data is catured after scaler memory (not after OSD or gamma). And it will latch 20ms for retrieving data. 3971*53ee8cc1Swenshuai.xi /// Also note the x , y coordinate should be small or equel to input source size. (not panel size) 3972*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3973*53ee8cc1Swenshuai.xi /// @param u16CorX \b IN: X coordinate 3974*53ee8cc1Swenshuai.xi /// @param u16CorY \b IN: Y coordinate. 3975*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 3976*53ee8cc1Swenshuai.xi /// @return void 3977*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3978*53ee8cc1Swenshuai.xi void MApi_XC_Get_PixelData(MS_U16 u16CorX, MS_U16 u16CorY, MS_PIXEL_32BIT* pixel); 3979*53ee8cc1Swenshuai.xi 3980*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3981*53ee8cc1Swenshuai.xi /// calc widht or height based on existed dnr buffer and byte/pixel 3982*53ee8cc1Swenshuai.xi /// Fomula : Scaler buffer size / u8FBNum / (byte / pixel) / InputSize 3983*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 3984*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window need to be calc 3985*53ee8cc1Swenshuai.xi /// @param u8FBNum \b IN: frame cout 3986*53ee8cc1Swenshuai.xi /// @param u32InputSize \b IN: The input source size. 3987*53ee8cc1Swenshuai.xi /// @return MS_U32 The size of frames. 3988*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3989*53ee8cc1Swenshuai.xi // MS_U32 MApi_XC_GetAvailableSize(SCALER_WIN eWindow, MS_U8 u8FBNum, MS_U32 u32InputSize); 3990*53ee8cc1Swenshuai.xi 3991*53ee8cc1Swenshuai.xi //------------------------------ 3992*53ee8cc1Swenshuai.xi // Display & Output 3993*53ee8cc1Swenshuai.xi //------------------------------ 3994*53ee8cc1Swenshuai.xi // Display related 3995*53ee8cc1Swenshuai.xi 3996*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3997*53ee8cc1Swenshuai.xi /// Set Scaler Frame color 3998*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 3999*53ee8cc1Swenshuai.xi /// @param u32aRGB \b IN: the 4 bytes in aRGB are "a: no use, R 23:16, G 15:8, B 7:0" (B is in LSB) 4000*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4001*53ee8cc1Swenshuai.xi void MApi_XC_SetFrameColor(MS_U32 u32aRGB); 4002*53ee8cc1Swenshuai.xi 4003*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4004*53ee8cc1Swenshuai.xi /// Set color of main / sub window. This color will be shown when black screen enabled. 4005*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 4006*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: format in a byte => R 7:5, G 4:2, B 1:0 4007*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be set. 4008*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4009*53ee8cc1Swenshuai.xi void MApi_XC_SetDispWindowColor(MS_U8 u8Color, SCALER_WIN eWindow); 4010*53ee8cc1Swenshuai.xi 4011*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4012*53ee8cc1Swenshuai.xi /// Query the capability of scaler about source to Video encoder(VE) 4013*53ee8cc1Swenshuai.xi /// @ingroup XC_VE 4014*53ee8cc1Swenshuai.xi /// @param OutputCapability \b OUT: Which part of scaler can output data to Video Encoder (VE). 4015*53ee8cc1Swenshuai.xi ///Check E_XC_SOURCE_TO_VE for capability bit. Take an example, if bit0 of OutputCapability equal to 1, 4016*53ee8cc1Swenshuai.xi ///Scaler can output data to ve from its E_XC_IP(IP) 4017*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 4018*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4019*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SupportSourceToVE(MS_U16* pOutputCapability); 4020*53ee8cc1Swenshuai.xi 4021*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4022*53ee8cc1Swenshuai.xi /// Enable output capture for output data to VE. Return False if current platform does not support E_XC_SOURCE_TO_VE 4023*53ee8cc1Swenshuai.xi /// Note: this source is not only for VE, but Scaler IP or DIP 4024*53ee8cc1Swenshuai.xi /// @ingroup XC_VE 4025*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable output capture function 4026*53ee8cc1Swenshuai.xi /// @param eSourceToVE \b IN: Specific output source. The source listed in E_XC_SOURCE_TO_VE is a "point" which can be retrieve data. 4027*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4028*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOutputCapture(MS_BOOL bEnable,E_XC_SOURCE_TO_VE eSourceToVE); 4029*53ee8cc1Swenshuai.xi 4030*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4031*53ee8cc1Swenshuai.xi /// Setup Gamma function ON/OFF 4032*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 4033*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 4034*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4035*53ee8cc1Swenshuai.xi void MApi_XC_SetGammaOnOff (MS_BOOL bEnable); 4036*53ee8cc1Swenshuai.xi 4037*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4038*53ee8cc1Swenshuai.xi /// Set VOP Gain for Main Window(after 3x3 before Gamma) 4039*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 4040*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 4041*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 4042*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4043*53ee8cc1Swenshuai.xi void MApi_XC_SetPreGammaGain(SCALER_WIN eWindow, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val); 4044*53ee8cc1Swenshuai.xi 4045*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4046*53ee8cc1Swenshuai.xi /// Set VOP Offset for Main Window(after 3x3 before Gamma) 4047*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 4048*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 4049*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 4050*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4051*53ee8cc1Swenshuai.xi void MApi_XC_SetPreGammaOffset(SCALER_WIN eWindow, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val); 4052*53ee8cc1Swenshuai.xi 4053*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4054*53ee8cc1Swenshuai.xi // Output timing related 4055*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4056*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4057*53ee8cc1Swenshuai.xi /// Setup panel timing (output DCLK)/FRC/FramePLL, and enable input source 4058*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4059*53ee8cc1Swenshuai.xi /// @param pTimingInfo \b IN: the information of the timing to set @ref XC_SetTiming_Info 4060*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4061*53ee8cc1Swenshuai.xi void MApi_XC_SetPanelTiming(XC_SetTiming_Info *pTimingInfo, SCALER_WIN eWindow); 4062*53ee8cc1Swenshuai.xi 4063*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4064*53ee8cc1Swenshuai.xi /// Set current output type. This is set in Panel structure. You can adjust it here. 4065*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4066*53ee8cc1Swenshuai.xi /// @param enPnl_Out_Timing_Mode \b IN: The output type 4067*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4068*53ee8cc1Swenshuai.xi // void MApi_XC_SetOutTimingMode(E_XC_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode); 4069*53ee8cc1Swenshuai.xi 4070*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4071*53ee8cc1Swenshuai.xi /// set free run display window timing 4072*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4073*53ee8cc1Swenshuai.xi /// @return void Output type. 4074*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4075*53ee8cc1Swenshuai.xi void MApi_XC_SetFreeRunTiming(void); 4076*53ee8cc1Swenshuai.xi 4077*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4078*53ee8cc1Swenshuai.xi /// Adjust V sync FrontPorch , Sync Width for specific output frame rate (You can adjust in advance by using MApi_XC_SetExPanelInfo) 4079*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4080*53ee8cc1Swenshuai.xi /// @param u16FrontPorch \b IN: Front porch of output Vsync 4081*53ee8cc1Swenshuai.xi /// @param u16SyncWidth \b IN: Sync width of output Vsync 4082*53ee8cc1Swenshuai.xi /// @param u16OutputVfreq \b IN: The output frame rate you want to adjust. 4083*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success False : Fail 4084*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4085*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Set_CustomerSyncInfo(MS_U16 u16FrontPorch, MS_U16 u16SyncWidth, MS_U16 u16OutputVfreq); 4086*53ee8cc1Swenshuai.xi 4087*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4088*53ee8cc1Swenshuai.xi /// Wait FPLL finished 4089*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4090*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL indicate FPLL finished or not (frame lock finished or not) 4091*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4092*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_WaitFPLLDone(void); 4093*53ee8cc1Swenshuai.xi 4094*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4095*53ee8cc1Swenshuai.xi /// Get scaler output vertical frequency 4096*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4097*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return output vertical frequency x 100 4098*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4099*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetOutputVFreqX100(void); 4100*53ee8cc1Swenshuai.xi 4101*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4102*53ee8cc1Swenshuai.xi /// Get scaler output vertical frequency 4103*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4104*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return output vertical frequency x 100 4105*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4106*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetOP1OutputVFreqX100(void); 4107*53ee8cc1Swenshuai.xi 4108*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4109*53ee8cc1Swenshuai.xi /// Frame Lock Check 4110*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4111*53ee8cc1Swenshuai.xi /// @ref MS_BOOL TURE=Frame Lock ; FALSE= Not Frame Lock 4112*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4113*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_FrameLockCheck(void); 4114*53ee8cc1Swenshuai.xi 4115*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4116*53ee8cc1Swenshuai.xi /// Set a customize FRC table into driver 4117*53ee8cc1Swenshuai.xi /// You can customize frc table in driver. The max number of FRC setting is 5 (Can be changed in driver layer). 4118*53ee8cc1Swenshuai.xi /// 4119*53ee8cc1Swenshuai.xi /// Here is an example of 5 FRC items with 6 maximal number of FRC setting. 4120*53ee8cc1Swenshuai.xi /// Please fill {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} at unused FRC item slot. 4121*53ee8cc1Swenshuai.xi /// 4122*53ee8cc1Swenshuai.xi /// {0, 160, 1, 4, MS_FRC_1_4}, <-- FRC item 0 4123*53ee8cc1Swenshuai.xi /// {160, 245, 2, 5, MS_FRC_2_5}, <-- FRC item 1 4124*53ee8cc1Swenshuai.xi /// {245, 260, 1, 2, MS_FRC_1_2}, <-- FRC item 2 4125*53ee8cc1Swenshuai.xi /// {260, 400, 1, 2, MS_FRC_1_2}, <-- FRC item 3 4126*53ee8cc1Swenshuai.xi /// {400, 0xFFFF, 1, 1, MS_FRC_1_1}, <-- FRC item 4 4127*53ee8cc1Swenshuai.xi /// {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} <-- FRC item 5 (Unused) 4128*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4129*53ee8cc1Swenshuai.xi /// @param stFRCTable \b IN: The pointer which point to a FRC table. You can refer above description. 4130*53ee8cc1Swenshuai.xi /// if pass NULL, driver will use default frc table. 4131*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue Return status. 4132*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4133*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_CustomizeFRCTable(SC_FRC_SETTING* stFRCTable); 4134*53ee8cc1Swenshuai.xi 4135*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4136*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 4137*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4138*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 4139*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 4140*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 4141*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue return type. 4142*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4143*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OutputFrameCtrl(MS_BOOL bEnable,XC_OUTPUTFRAME_Info * stOutFrameInfo,SCALER_WIN eWindow); 4144*53ee8cc1Swenshuai.xi 4145*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4146*53ee8cc1Swenshuai.xi /// Set the FPLL mode: 4147*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4148*53ee8cc1Swenshuai.xi /// @param bTrue \b IN: True: FSM mode, False: Non FSM mode 4149*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4150*53ee8cc1Swenshuai.xi void MApi_SC_Enable_FPLL_FSM(MS_BOOL bTrue); 4151*53ee8cc1Swenshuai.xi 4152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4153*53ee8cc1Swenshuai.xi /// This function will force freerun in MDrv_Scaler_SetPanelTiming(), 4154*53ee8cc1Swenshuai.xi /// otherwise MDrv_Scaler_SetPanelTiming() will decide to do framelock or not by itself. 4155*53ee8cc1Swenshuai.xi /// 4156*53ee8cc1Swenshuai.xi /// Note: this function is difference with MDrv_SC_set_fpll() which is used to 4157*53ee8cc1Swenshuai.xi /// unlock framelock after MDrv_Scaler_SetPanelTiming(). 4158*53ee8cc1Swenshuai.xi /// But this function is used to affect MDrv_Scaler_SetPanelTiming()'s behavior. 4159*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4160*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable force freerun. FALSE: disable force free run. 4161*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4162*53ee8cc1Swenshuai.xi void MApi_SC_ForceFreerun(MS_BOOL bEnable); 4163*53ee8cc1Swenshuai.xi 4164*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4165*53ee8cc1Swenshuai.xi /// Get Force freerun status. 4166*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4167*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL True: Current is in Force freerun mode. False: Current is not in Force Freerun mode 4168*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4169*53ee8cc1Swenshuai.xi MS_BOOL MApi_SC_IsForceFreerun(void); 4170*53ee8cc1Swenshuai.xi 4171*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4172*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 4173*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4174*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 4175*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 4176*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 4177*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue return type. 4178*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4179*53ee8cc1Swenshuai.xi void MApi_SC_SetFreerunVFreq(E_VFREQ_SEL VFreq); 4180*53ee8cc1Swenshuai.xi 4181*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4182*53ee8cc1Swenshuai.xi /// Set external panel info for output 4183*53ee8cc1Swenshuai.xi /// Currently, only support setting of two different vfreqs at same time 4184*53ee8cc1Swenshuai.xi /// The set ExPanelInfo will take effect after running of function MApi_XC_SetPanelTiming 4185*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4186*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable this XC_PANEL_INFO_EX, FALSE: Disable this XC_PANEL_INFO_EX 4187*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The extern panel information to set @ref XC_PANEL_INFO_EX 4188*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 4189*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4190*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetExPanelInfo(MS_BOOL bEnable, XC_PANEL_INFO_EX *pPanelInfoEx); 4191*53ee8cc1Swenshuai.xi 4192*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4193*53ee8cc1Swenshuai.xi /// Set the FPLL thresh mode: 4194*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4195*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Thresh mode, FALSE: Non-Thresh mode 4196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4197*53ee8cc1Swenshuai.xi // void MApi_XC_Enable_FPLL_Thresh_Mode(MS_BOOL bEnable); 4198*53ee8cc1Swenshuai.xi 4199*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4200*53ee8cc1Swenshuai.xi /// Get the FPLL Thresh mode: 4201*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4202*53ee8cc1Swenshuai.xi /// @return TRUE: Thresh mode, FALSE: Non-Thresh mode 4203*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4204*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Get_FPLL_Thresh_Mode(void); 4205*53ee8cc1Swenshuai.xi 4206*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4207*53ee8cc1Swenshuai.xi /// Enable auto no signal mode 4208*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4209*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable auto no signal mode. 4210*53ee8cc1Swenshuai.xi /// @eWindow \b IN: The window (main or sub) which need to be controled. 4211*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 4212*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4213*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_EnableIPAutoNoSignal(MS_BOOL bEnable, SCALER_WIN eWindow ); 4214*53ee8cc1Swenshuai.xi 4215*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4216*53ee8cc1Swenshuai.xi /// Return true is current is in auto nosignal mode. 4217*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4218*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: IP auto nosignal in specific window 4219*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 4220*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4221*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetIPAutoNoSignal(SCALER_WIN eWindow ); 4222*53ee8cc1Swenshuai.xi 4223*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4224*53ee8cc1Swenshuai.xi /// Enable or disable IP auto coast 4225*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4226*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 4227*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4228*53ee8cc1Swenshuai.xi // void MApi_XC_EnableIPAutoCoast(MS_BOOL bEnable); 4229*53ee8cc1Swenshuai.xi 4230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4231*53ee8cc1Swenshuai.xi /// Enable IP auto Coast debounce (the debounce time is 1 (default) in driver) 4232*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4233*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4234*53ee8cc1Swenshuai.xi // void MApi_XC_EnableIPCoastDebounce(void); 4235*53ee8cc1Swenshuai.xi 4236*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4237*53ee8cc1Swenshuai.xi /// Clear IP auto Coast debounce 4238*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4239*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4240*53ee8cc1Swenshuai.xi // void MApi_XC_ClearIPCoastStatus(void); 4241*53ee8cc1Swenshuai.xi 4242*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4243*53ee8cc1Swenshuai.xi /// Enable FPLL related settings not by program but by user's setting from TV tool 4244*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4245*53ee8cc1Swenshuai.xi /// Including PhaseLimit, limitD5D6D7_RK 4246*53ee8cc1Swenshuai.xi /// @param bEnable @ref MS_BOOL \b IN: enable or not 4247*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4248*53ee8cc1Swenshuai.xi // void MApi_XC_EnableFpllManualSetting(MS_BOOL bEnable); // debug purpose 4249*53ee8cc1Swenshuai.xi 4250*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 4251*53ee8cc1Swenshuai.xi /// Test if panel output is ok by changing output DClk, this is to test max range that FPLL can do 4252*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4253*53ee8cc1Swenshuai.xi /// @param u32FpllSetOffset @ref MS_U32 \b IN: the offset to be add/minus the typical DClk output, unit is SET 4254*53ee8cc1Swenshuai.xi /// @param u16TestCnt @ref MS_U16 \b IN: the times to do boundary test 4255*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 4256*53ee8cc1Swenshuai.xi // void MApi_XC_FpllBoundaryTest(MS_U32 u32FpllSetOffset, MS_U16 u16TestCnt); // debug purpose 4257*53ee8cc1Swenshuai.xi 4258*53ee8cc1Swenshuai.xi //------------------------------ 4259*53ee8cc1Swenshuai.xi // Offline signal detection related 4260*53ee8cc1Swenshuai.xi //------------------------------ 4261*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4262*53ee8cc1Swenshuai.xi /// Set the source need to be detect in offline detection. 4263*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4264*53ee8cc1Swenshuai.xi /// @param INPUT_SOURCE_TYPE_t \b IN: The source need to be monitor 4265*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4266*53ee8cc1Swenshuai.xi void MApi_XC_SetOffLineDetection (INPUT_SOURCE_TYPE_t); 4267*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4268*53ee8cc1Swenshuai.xi /// Get Offline detection status to specific input source 4269*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4270*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: the specific input source type to do offline detection 4271*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 TRUE: Success, FALSE: Failed 4272*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4273*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetOffLineDetection( INPUT_SOURCE_TYPE_t); 4274*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4275*53ee8cc1Swenshuai.xi /// Set Offline detection Sog Threshold 4276*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4277*53ee8cc1Swenshuai.xi /// @param u8Threshold \b IN: threshold value t2,u3,u4: 0~31 other chip: 0~255 4278*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 4279*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4280*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_SetOffLineSogThreshold(MS_U8 u8Threshold); //t2,u3,u4: 0~31 other chip: 0~255 4281*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4282*53ee8cc1Swenshuai.xi /// Set Offline Detection Sog filter bandwidth 4283*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4284*53ee8cc1Swenshuai.xi /// @param u8BW \b IN: bandwidth value t2,u3,u4: 0~7 other chip: 0~31 4285*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 4286*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4287*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_SetOffLineSogBW(MS_U8 u8BW); 4288*53ee8cc1Swenshuai.xi 4289*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4290*53ee8cc1Swenshuai.xi /// Initial offline detect procedure. 4291*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4292*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 4293*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4294*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_OffLineInit(void); 4295*53ee8cc1Swenshuai.xi 4296*53ee8cc1Swenshuai.xi //------------------------------ 4297*53ee8cc1Swenshuai.xi // PIP 4298*53ee8cc1Swenshuai.xi //------------------------------ 4299*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4300*53ee8cc1Swenshuai.xi /// Set Extra fetch number. (This setting is usually used in PIP mode. Please set carefully) 4301*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4302*53ee8cc1Swenshuai.xi /// @param u8val \b IN: The extra fetch number. 4303*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4304*53ee8cc1Swenshuai.xi void MApi_XC_Set_Extra_fetch_adv_line(MS_U8 u8val); 4305*53ee8cc1Swenshuai.xi 4306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4307*53ee8cc1Swenshuai.xi /// Set the VGA SOG on or off 4308*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4309*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the VGA SOG; bEnable =0, Turn off the VGA SOG 4310*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4311*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_SetVGASogEn(MS_BOOL bVGASogEn); 4312*53ee8cc1Swenshuai.xi 4313*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4314*53ee8cc1Swenshuai.xi /// Control the output window(Main/Sub) on or off 4315*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4316*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 4317*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: eWindow =0, for MAIN; eWindow =1, for SUB; 4318*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4319*53ee8cc1Swenshuai.xi void MApi_XC_EnableWindow(MS_BOOL bEnable, SCALER_WIN eWindow); 4320*53ee8cc1Swenshuai.xi 4321*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4322*53ee8cc1Swenshuai.xi /// whether sub window is enable 4323*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4324*53ee8cc1Swenshuai.xi /// @param void \b IN: none 4325*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4326*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_SubWindowEanble(void); 4327*53ee8cc1Swenshuai.xi 4328*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4329*53ee8cc1Swenshuai.xi /// Set Border format 4330*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4331*53ee8cc1Swenshuai.xi /// @param u8WidthIn \b IN: In-box width 4332*53ee8cc1Swenshuai.xi /// @param u8WidthOut \b IN: Out-box width 4333*53ee8cc1Swenshuai.xi /// @param u8color \b IN: border color 4334*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4335*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4336*53ee8cc1Swenshuai.xi // void MApi_XC_SetBorderFormat( MS_U8 u8Left, MS_U8 u8Right, MS_U8 u8Up, MS_U8 u8Down, MS_U8 u8color, SCALER_WIN eWindow ); 4337*53ee8cc1Swenshuai.xi 4338*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4339*53ee8cc1Swenshuai.xi /// enable or disable Border 4340*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4341*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 4342*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4343*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4344*53ee8cc1Swenshuai.xi void MApi_XC_EnableBorder(MS_BOOL bEnable, SCALER_WIN eWindow); 4345*53ee8cc1Swenshuai.xi 4346*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4347*53ee8cc1Swenshuai.xi /// Set Z-order main window first or not 4348*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4349*53ee8cc1Swenshuai.xi /// @param bMainFirst \b IN: TRUE: Main window first; FALSE: Sub window first 4350*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4351*53ee8cc1Swenshuai.xi void MApi_XC_ZorderMainWindowFirst(MS_BOOL bMainFirst); 4352*53ee8cc1Swenshuai.xi 4353*53ee8cc1Swenshuai.xi //------------------------------ 4354*53ee8cc1Swenshuai.xi // PQ Load Function 4355*53ee8cc1Swenshuai.xi //------------------------------ 4356*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4357*53ee8cc1Swenshuai.xi /// Create a function for PQ in SC. 4358*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4359*53ee8cc1Swenshuai.xi /// @param PQ_Function_Info \b IN: the information of the function 4360*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 4361*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4362*53ee8cc1Swenshuai.xi void MApi_XC_PQ_LoadFunction(PQ_Function_Info* function_Info , MS_U32 u32InitDataLen); 4363*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4364*53ee8cc1Swenshuai.xi /// Return true if current status is H nonlinear scaling 4365*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4366*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 4367*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 True: Using HNonLinearScaling False: Not in Nonlinear status 4368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4369*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Check_HNonLinearScaling(void); 4370*53ee8cc1Swenshuai.xi 4371*53ee8cc1Swenshuai.xi //------------------------------ 4372*53ee8cc1Swenshuai.xi // EURO Function 4373*53ee8cc1Swenshuai.xi //------------------------------ 4374*53ee8cc1Swenshuai.xi 4375*53ee8cc1Swenshuai.xi // Enable/Disable Euro/Australia Hdtv Detection support in driver 4376*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4377*53ee8cc1Swenshuai.xi /// Enable/Disable Euro/Australia Hdtv Detection support in driver 4378*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4379*53ee8cc1Swenshuai.xi /// @param bEnable: 4380*53ee8cc1Swenshuai.xi /// - ENABLE : enable support 4381*53ee8cc1Swenshuai.xi /// - DISABLE : disable disable 4382*53ee8cc1Swenshuai.xi /// @return None. 4383*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4384*53ee8cc1Swenshuai.xi // void MApi_XC_EnableEuroHdtvSupport(MS_BOOL bEnable); 4385*53ee8cc1Swenshuai.xi 4386*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4387*53ee8cc1Swenshuai.xi /// Enable Euro/Australia Hdtv Detection 4388*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4389*53ee8cc1Swenshuai.xi /// @param bEnable: 4390*53ee8cc1Swenshuai.xi /// - ENABLE : enable detection 4391*53ee8cc1Swenshuai.xi /// - DISABLE : disable detection 4392*53ee8cc1Swenshuai.xi /// @return None. 4393*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 4394*53ee8cc1Swenshuai.xi void MApi_XC_EnableEuroHdtvDetection(MS_BOOL bEnable, SCALER_WIN eWindow); 4395*53ee8cc1Swenshuai.xi 4396*53ee8cc1Swenshuai.xi //------------------------------ 4397*53ee8cc1Swenshuai.xi // Genenal R/W Function 4398*53ee8cc1Swenshuai.xi //------------------------------ 4399*53ee8cc1Swenshuai.xi 4400*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4401*53ee8cc1Swenshuai.xi /// General Read Byte Function 4402*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4403*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 4404*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 4405*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4406*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ReadByte(MS_U32 u32Reg); 4407*53ee8cc1Swenshuai.xi 4408*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4409*53ee8cc1Swenshuai.xi /// General Write Byte Function 4410*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4411*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 4412*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 4413*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4414*53ee8cc1Swenshuai.xi void MApi_XC_WriteByte(MS_U32 u32Reg, MS_U8 u8Val); 4415*53ee8cc1Swenshuai.xi 4416*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4417*53ee8cc1Swenshuai.xi /// General Write Byte Function 4418*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4419*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 4420*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: setting value 4421*53ee8cc1Swenshuai.xi /// @param u8Msk \b IN: setting value 4422*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4423*53ee8cc1Swenshuai.xi void MApi_XC_WriteByteMask(MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk); 4424*53ee8cc1Swenshuai.xi 4425*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4426*53ee8cc1Swenshuai.xi /// General 2 Write Byte Function 4427*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4428*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 4429*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 4430*53ee8cc1Swenshuai.xi /// @param u16Msk \b IN: setting value 4431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4432*53ee8cc1Swenshuai.xi void MApi_XC_Write2ByteMask(MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask); 4433*53ee8cc1Swenshuai.xi 4434*53ee8cc1Swenshuai.xi //------------------------------ 4435*53ee8cc1Swenshuai.xi // XC R/W Function, using mutex to protect 4436*53ee8cc1Swenshuai.xi //------------------------------ 4437*53ee8cc1Swenshuai.xi 4438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4439*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Function, and use mutex to protect while switch bank and write address 4440*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4441*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4442*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 4443*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4444*53ee8cc1Swenshuai.xi void MApi_XC_W2BYTE(MS_U32 u32Reg, MS_U16 u16Val); 4445*53ee8cc1Swenshuai.xi 4446*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4447*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Function, and use mutex to protect while switch bank and write address 4448*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4449*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4450*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 4451*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4452*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_R2BYTE(MS_U32 u32Reg); 4453*53ee8cc1Swenshuai.xi 4454*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4455*53ee8cc1Swenshuai.xi /// Scaler Write 4 Byte Function, and use mutex to protect while switch bank and write address 4456*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4457*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4458*53ee8cc1Swenshuai.xi /// @param u32Val \b IN: setting value 4459*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4460*53ee8cc1Swenshuai.xi // void MApi_XC_W4BYTE(MS_U32 u32Reg, MS_U32 u32Val); 4461*53ee8cc1Swenshuai.xi 4462*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4463*53ee8cc1Swenshuai.xi /// Scaler Read 4 Byte Function, and use mutex to protect while switch bank and write address 4464*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4465*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4466*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 4467*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4468*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_R4BYTE(MS_U32 u32Reg); 4469*53ee8cc1Swenshuai.xi 4470*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4471*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Mask Function, and use mutex to protect while switch bank and write address 4472*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4473*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4474*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 4475*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 4476*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4477*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_R2BYTEMSK(MS_U32 u32Reg, MS_U16 u16Mask); 4478*53ee8cc1Swenshuai.xi 4479*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4480*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Mask Function, and use mutex to protect while switch bank and write address 4481*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4482*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 4483*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Setting value 4484*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 4485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4486*53ee8cc1Swenshuai.xi void MApi_XC_W2BYTEMSK(MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16Mask); 4487*53ee8cc1Swenshuai.xi 4488*53ee8cc1Swenshuai.xi //------------------------------ 4489*53ee8cc1Swenshuai.xi // MLoad Function, xc command burst 4490*53ee8cc1Swenshuai.xi //------------------------------ 4491*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4492*53ee8cc1Swenshuai.xi /// Initialize the Menuload 4493*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4494*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 4495*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 4496*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4497*53ee8cc1Swenshuai.xi void MApi_XC_MLoad_Init(MS_PHY PhyAddr, MS_U32 u32BufByteLen); 4498*53ee8cc1Swenshuai.xi 4499*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4500*53ee8cc1Swenshuai.xi /// Enable/Disable the MLoad 4501*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4502*53ee8cc1Swenshuai.xi /// @return void 4503*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4504*53ee8cc1Swenshuai.xi void MApi_XC_MLoad_Enable(MS_BOOL bEnable); 4505*53ee8cc1Swenshuai.xi 4506*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4507*53ee8cc1Swenshuai.xi /// Get the status of MLoad 4508*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4509*53ee8cc1Swenshuai.xi /// @return @ref MLOAD_TYPE 4510*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4511*53ee8cc1Swenshuai.xi MLOAD_TYPE MApi_XC_MLoad_GetStatus(void); 4512*53ee8cc1Swenshuai.xi 4513*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4514*53ee8cc1Swenshuai.xi /// write signal command to Mload and fire 4515*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4516*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN: register 4517*53ee8cc1Swenshuai.xi /// @param u16Data \b IN: value 4518*53ee8cc1Swenshuai.xi /// @param u16Mask \b IN: mask 4519*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4520*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4521*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_MLoad_WriteCmd_And_Fire(MS_U32 u32Addr, MS_U16 u16Data, MS_U16 u16Mask); 4522*53ee8cc1Swenshuai.xi 4523*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4524*53ee8cc1Swenshuai.xi /// write multi commands to Mload and fire 4525*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4526*53ee8cc1Swenshuai.xi /// @param pu32Addr \b IN: buffer of register 4527*53ee8cc1Swenshuai.xi /// @param pu16Data \b IN: buffer of value 4528*53ee8cc1Swenshuai.xi /// @param pu16Mask \b IN: buffer of mask 4529*53ee8cc1Swenshuai.xi /// @param u16CmdCnt \b IN: counter of command 4530*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4531*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_MLoad_WriteCmds_And_Fire(MS_U32 *pu32Addr, MS_U16 *pu16Data, MS_U16 *pu16Mask, MS_U16 u16CmdCnt); 4532*53ee8cc1Swenshuai.xi 4533*53ee8cc1Swenshuai.xi //------------------------------ 4534*53ee8cc1Swenshuai.xi // Menuload Gamma Function 4535*53ee8cc1Swenshuai.xi //------------------------------ 4536*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4537*53ee8cc1Swenshuai.xi /// Initialize the Menuload Gamma 4538*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4539*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 4540*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 4541*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4542*53ee8cc1Swenshuai.xi void MApi_XC_MLG_Init(MS_PHY PhyAddr, MS_U32 u32BufByteLen); 4543*53ee8cc1Swenshuai.xi 4544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4545*53ee8cc1Swenshuai.xi /// Enable/Disable the Menuload Gamma 4546*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4547*53ee8cc1Swenshuai.xi /// @return void 4548*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4549*53ee8cc1Swenshuai.xi void MApi_XC_MLG_Enable(MS_BOOL bEnable); 4550*53ee8cc1Swenshuai.xi 4551*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4552*53ee8cc1Swenshuai.xi /// Get the caps of Menuload Gamma 4553*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4554*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 4555*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4556*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_MLG_GetCaps(void); 4557*53ee8cc1Swenshuai.xi 4558*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4559*53ee8cc1Swenshuai.xi /// Get the status of MLoad 4560*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4561*53ee8cc1Swenshuai.xi /// @return @ref MLG_TYPE 4562*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4563*53ee8cc1Swenshuai.xi MLG_TYPE MApi_XC_MLG_GetStatus(void); 4564*53ee8cc1Swenshuai.xi 4565*53ee8cc1Swenshuai.xi //------------------------------ 4566*53ee8cc1Swenshuai.xi // For U4 set VOP data mux to VE 4567*53ee8cc1Swenshuai.xi //------------------------------ 4568*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4569*53ee8cc1Swenshuai.xi /// Select the source which need to connect to VE. 4570*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4571*53ee8cc1Swenshuai.xi /// @param eVOPSelOSD_MUX \b IN: The source need to connect to VE. 4572*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4573*53ee8cc1Swenshuai.xi void MApi_XC_SetOSD2VEMode(EN_VOP_SEL_OSD_XC2VE_MUX eVOPSelOSD_MUX); 4574*53ee8cc1Swenshuai.xi 4575*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4576*53ee8cc1Swenshuai.xi /// Enable or disable prefilter in Scaler. 4577*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4578*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable: pre-filter. Disable: pre-filter 4579*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4580*53ee8cc1Swenshuai.xi // void MApi_XC_IP2_PreFilter_Enable(MS_BOOL bEnable); 4581*53ee8cc1Swenshuai.xi 4582*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4583*53ee8cc1Swenshuai.xi /// Get pixel data with RGB format. 4584*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4585*53ee8cc1Swenshuai.xi /// @param u16x \b IN: X coordinate 4586*53ee8cc1Swenshuai.xi /// @param u16Y \b IN: Y coordinate 4587*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window for retrieving data. 4588*53ee8cc1Swenshuai.xi /// @return @ref u32r return the R data 4589*53ee8cc1Swenshuai.xi /// @return @ref u32g return the G data 4590*53ee8cc1Swenshuai.xi /// @return @ref u32b return the B data 4591*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4592*53ee8cc1Swenshuai.xi E_APIXC_GET_PixelRGB_ReturnValue MApi_XC_Get_Pixel_RGB(XC_Get_Pixel_RGB *pData, SCALER_WIN eWindow); 4593*53ee8cc1Swenshuai.xi 4594*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4595*53ee8cc1Swenshuai.xi /// During retrieve pixel data, system have a cursor on the screen. This function can keep the cursor on the screen. 4596*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4597*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable if you want to keep cursor on the screen 4598*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4599*53ee8cc1Swenshuai.xi // void MApi_XC_KeepPixelPointerAppear(MS_BOOL bEnable); 4600*53ee8cc1Swenshuai.xi 4601*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4602*53ee8cc1Swenshuai.xi /// @param eMemFmt \b IN: the format of memory 4603*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4604*53ee8cc1Swenshuai.xi /// Set memory format 4605*53ee8cc1Swenshuai.xi /// @ref MS_BOOL 4606*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4607*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_MemFmtEx(MS_XC_MEM_FMT eMemFmt, SCALER_WIN eWindow); 4608*53ee8cc1Swenshuai.xi 4609*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4610*53ee8cc1Swenshuai.xi /// Get frame buffer less mode status 4611*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4612*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL retun the status about FrameBufferLess mode 4613*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4614*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_IsRequestFrameBufferLessMode(void); 4615*53ee8cc1Swenshuai.xi 4616*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4617*53ee8cc1Swenshuai.xi /// Set Flag to bypass software reset in MApi_XC_Init() 4618*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4619*53ee8cc1Swenshuai.xi /// @param bFlag \b TRUE: initialize XC by skipping SW reset; FALSE: initialize XC in normal case 4620*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4621*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4622*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SkipSWReset(MS_BOOL bFlag); 4623*53ee8cc1Swenshuai.xi 4624*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4625*53ee8cc1Swenshuai.xi /// MApi_XC_EnableRepWindowForFrameColor 4626*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4627*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable 4628*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4629*53ee8cc1Swenshuai.xi void MApi_XC_EnableRepWindowForFrameColor(MS_BOOL bEnable); 4630*53ee8cc1Swenshuai.xi 4631*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4632*53ee8cc1Swenshuai.xi /// Set VOP Video and OSD Laler 4633*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4634*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4635*53ee8cc1Swenshuai.xi /// Set OSD Layer in Box Project ( In TV chips, please use MApi_XC_SetVideoOnOSD) 4636*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4637*53ee8cc1Swenshuai.xi /// @param eVOPOSDLayer \b IN: OSD and Video layer selection 4638*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 4639*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4640*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayer(E_VOP_OSD_LAYER_SEL eVOPOSDLayer, SCALER_WIN eWindow); 4641*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4642*53ee8cc1Swenshuai.xi /// Get OSD Layer in Box Project 4643*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4644*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 4645*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4646*53ee8cc1Swenshuai.xi E_VOP_OSD_LAYER_SEL MApi_XC_GetOSDLayer(SCALER_WIN eWindow); 4647*53ee8cc1Swenshuai.xi 4648*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4649*53ee8cc1Swenshuai.xi /// Set Constant Alpha of Video 4650*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4652*53ee8cc1Swenshuai.xi /// Set alpha value of video (now only support in box) 4653*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4654*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The alpha value of video with specific window 4655*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be adjust 4656*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4657*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetVideoAlpha(MS_U8 u8Val, SCALER_WIN eWindow); 4658*53ee8cc1Swenshuai.xi 4659*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4660*53ee8cc1Swenshuai.xi /// Get alpha value of video (now only support in box) 4661*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4662*53ee8cc1Swenshuai.xi /// @param pu8Val \b IN: The alpha value of video with specific window 4663*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The alpha value of a window. 4664*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4665*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetVideoAlpha(MS_U8 *pu8Val, SCALER_WIN eWindow); 4666*53ee8cc1Swenshuai.xi 4667*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4668*53ee8cc1Swenshuai.xi /// Skip Wait Vsync 4669*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4670*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Enable 4671*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync \b IN: Disable wait Vsync 4672*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4673*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SkipWaitVsync( MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn); 4674*53ee8cc1Swenshuai.xi 4675*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4676*53ee8cc1Swenshuai.xi /// Set XC CMA Heap ID 4677*53ee8cc1Swenshuai.xi /// @param u8CMAHeapID \b IN: CMA Heap ID 4678*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4679*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4680*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_SetCMAHeapID(MS_U8 u8CMAHeapID, SCALER_WIN eWindow); 4681*53ee8cc1Swenshuai.xi 4682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4683*53ee8cc1Swenshuai.xi /// Select which DE to vop 4684*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4685*53ee8cc1Swenshuai.xi /// @param bFlag \b IN: @ref E_OP2VOP_DE_SEL 4686*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4687*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4688*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OP2VOPDESel(E_OP2VOP_DE_SEL eVopDESel); 4689*53ee8cc1Swenshuai.xi 4690*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4691*53ee8cc1Swenshuai.xi /// Set FRC Window 4692*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 4693*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: @ref E_XC_3D_INPUT_MODE 4694*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: @ref E_XC_3D_OUTPUT_MODE 4695*53ee8cc1Swenshuai.xi /// @param e3dPanelType \b IN: @ref E_XC_3D_PANEL_TYPE 4696*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4697*53ee8cc1Swenshuai.xi void MApi_XC_FRC_SetWindow(E_XC_3D_INPUT_MODE e3dInputMode, E_XC_3D_OUTPUT_MODE e3dOutputMode, E_XC_3D_PANEL_TYPE e3dPanelType); 4698*53ee8cc1Swenshuai.xi 4699*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4700*53ee8cc1Swenshuai.xi /// XC update bwd configuration 4701*53ee8cc1Swenshuai.xi /// @param eType \b IN: bwd configuration type 4702*53ee8cc1Swenshuai.xi /// @param pstParam \b IN: data 4703*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: window type 4704*53ee8cc1Swenshuai.xi /// @return result of power state control. 4705*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4706*53ee8cc1Swenshuai.xi #ifdef SUPPORT_BWD 4707*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_SetBwdConfig(E_XC_BWD_CONFIG_TYPE eType, void *pstParam, SCALER_WIN eWindow); 4708*53ee8cc1Swenshuai.xi #endif 4709*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4710*53ee8cc1Swenshuai.xi /// XC config cma configuration 4711*53ee8cc1Swenshuai.xi /// @param pstXC_CMA_Config \b IN: XC_CMA_CONFIG cma config struct 4712*53ee8cc1Swenshuai.xi /// @param enCmaClient \b IN: cma client 4713*53ee8cc1Swenshuai.xi /// @param u32DataLen \b IN: data len 4714*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: window type 4715*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4716*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ConfigCMA(XC_CMA_CONFIG *pstXC_CMA_Config, XC_CMA_CLIENT enCmaClient, MS_U32 u32DataLen, SCALER_WIN eWindow); 4717*53ee8cc1Swenshuai.xi 4718*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4719*53ee8cc1Swenshuai.xi /// Set two initial factors mode to improve quality in FBL 4720*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4721*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable two initial factors mode 4722*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 4723*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4724*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Enable_TwoInitFactor(MS_BOOL bEnable, SCALER_WIN eWindow); 4725*53ee8cc1Swenshuai.xi 4726*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4727*53ee8cc1Swenshuai.xi /// Get field packing mode support status 4728*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4729*53ee8cc1Swenshuai.xi /// @return TRUE(success) or FALSE(fail) 4730*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4731*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsFieldPackingModeSupported(void); 4732*53ee8cc1Swenshuai.xi 4733*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4734*53ee8cc1Swenshuai.xi /// Pre Init before XC Init 4735*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 4736*53ee8cc1Swenshuai.xi /// @param u16Type \b IN: @ref E_OP2VOP_DE_SEL 4737*53ee8cc1Swenshuai.xi /// @param para \b IN: parameter 4738*53ee8cc1Swenshuai.xi /// @param u32Length \b IN: size of parameter 4739*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4740*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4741*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_PreInit( E_XC_PREINIT_t eType ,void* para, MS_U32 u32Length); 4742*53ee8cc1Swenshuai.xi 4743*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4744*53ee8cc1Swenshuai.xi /// Get RGB data from memory buffer 4745*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4746*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: get RGB 8 bits or 10 bits format data 4747*53ee8cc1Swenshuai.xi /// @param pRect \b IN: the widnow for getting data area in memory, need to refer to pre-scaling 4748*53ee8cc1Swenshuai.xi /// @param pRectBuf \b IN: the buffer for getting data, the buffer typs must be the same as eBufType 4749*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: get main or sub video data from memory 4750*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4751*53ee8cc1Swenshuai.xi void MApi_XC_Get_BufferData(E_XC_OUTPUTDATA_TYPE eBufType, MS_WINDOW_TYPE *pRect, void *pRectBuf, SCALER_WIN eWindow); 4752*53ee8cc1Swenshuai.xi 4753*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4754*53ee8cc1Swenshuai.xi /// Set RGB data to memory buffer 4755*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4756*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: set RGB 8 bits or 10 bits format data 4757*53ee8cc1Swenshuai.xi /// @param pDstRect \b IN: the widnow for setting data area in memory, need to refer to pre-scaling 4758*53ee8cc1Swenshuai.xi /// @param pSrcBuf \b IN: the buffer with RGB data for setting to memory, the buffer typs must be the same as eBufType 4759*53ee8cc1Swenshuai.xi /// @param pSrcRect \b IN: the widnow for picking data area in pSrcBuf 4760*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 4761*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4762*53ee8cc1Swenshuai.xi void MApi_XC_Set_BufferData(E_XC_INPUTDATA_TYPE eBufType, MS_WINDOW_TYPE *pDstRect, void *pSrcBuf, MS_WINDOW_TYPE *pSrcRect, SCALER_WIN eWindow); 4763*53ee8cc1Swenshuai.xi 4764*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4765*53ee8cc1Swenshuai.xi /// Control the main window on or off 4766*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4767*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 4768*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4769*53ee8cc1Swenshuai.xi void MApi_XC_EnableMainWindow(MS_BOOL bEnable); // Turn on/off main/sub window 4770*53ee8cc1Swenshuai.xi 4771*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4772*53ee8cc1Swenshuai.xi /// Enable sub window and control the window size 4773*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4774*53ee8cc1Swenshuai.xi /// @param *pstDispWin \b IN: Window type 4775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4776*53ee8cc1Swenshuai.xi void MApi_XC_EnableSubWindow(MS_WINDOW_TYPE *pstDispWin); 4777*53ee8cc1Swenshuai.xi 4778*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4779*53ee8cc1Swenshuai.xi /// Disable sub window 4780*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4781*53ee8cc1Swenshuai.xi /// @param void \b IN: none 4782*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4783*53ee8cc1Swenshuai.xi void MApi_XC_DisableSubWindow(void); 4784*53ee8cc1Swenshuai.xi 4785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4786*53ee8cc1Swenshuai.xi /// Set pixel shift 4787*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4788*53ee8cc1Swenshuai.xi /// @param s8H \b IN: pixel shift H 4789*53ee8cc1Swenshuai.xi /// @param s8V \b IN: pixel shift V 4790*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4792*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetPixelShift(MS_S8 s8H, MS_S8 s8V); 4793*53ee8cc1Swenshuai.xi 4794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4795*53ee8cc1Swenshuai.xi /// Set Pixel Shift Features 4796*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 4797*53ee8cc1Swenshuai.xi /// @param u16HPixelShiftRange \b IN: horizontal shift range, if it is +/- 4, please assign 4 to this parameter 4798*53ee8cc1Swenshuai.xi /// @param u16VPixelShiftRange \b IN: vertical shift range, if it is +/- 3, please assign 3 to this parameter 4799*53ee8cc1Swenshuai.xi /// @param ePixelShiftFeature \b IN: decide which feature to be used, use "|" for multiple features 4800*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4802*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetPixelShiftFeatures(MS_U16 u16HPixelShiftRange, 4803*53ee8cc1Swenshuai.xi MS_U16 u16VPixelShiftRange, 4804*53ee8cc1Swenshuai.xi PIXEL_SHIFT_FEATURE ePixelShiftFeature); 4805*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4806*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn 4807*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 4808*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: whether to menuload 4809*53ee8cc1Swenshuai.xi /// Do an example when you want to menuload OSDLayer : 4810*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn(TRUE) 4811*53ee8cc1Swenshuai.xi /// xc function 4812*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn(FALSE) 4813*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4814*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4815*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Combine_MLoadEn(MS_BOOL bEn); 4816*53ee8cc1Swenshuai.xi 4817*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4818*53ee8cc1Swenshuai.xi /// MApi_XC_SetVideoOnOSD 4819*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4820*53ee8cc1Swenshuai.xi /// @param E_VDO_ON_OSD_LAYER \b IN: set video show on which osd layer 4821*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 4822*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4823*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4824*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetVideoOnOSD(E_VIDEO_ON_OSD_LAYER enlayer, SCALER_WIN eWindow); 4825*53ee8cc1Swenshuai.xi 4826*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4827*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDLayerBlending 4828*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4829*53ee8cc1Swenshuai.xi /// @param u8Layer \b IN: which osd layer will blend 4830*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: whether to blend 4831*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window blend with 4832*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4833*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4834*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayerBlending(MS_U8 u8Layer, MS_BOOL bEnable, SCALER_WIN eWindow); 4835*53ee8cc1Swenshuai.xi 4836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4837*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDLayerAlpha 4838*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4839*53ee8cc1Swenshuai.xi /// @param u8Layer \b IN: which osd layer will blend 4840*53ee8cc1Swenshuai.xi /// @param u8Alpha \b IN: blending alpha 4841*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4842*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4843*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayerAlpha(MS_U8 u8Layer, MS_U8 u8Alpha); 4844*53ee8cc1Swenshuai.xi 4845*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4846*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDBlendingFormula 4847*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 4848*53ee8cc1Swenshuai.xi /// @param enOsdIndex \b IN: osd index 4849*53ee8cc1Swenshuai.xi /// @param enType \b IN: osd blending type 4850*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: blending with main or sub video 4851*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4852*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4853*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDBlendingFormula(E_XC_OSD_INDEX enOsdIndex, E_XC_OSD_BlENDING_TYPE enType, SCALER_WIN eWindow); 4854*53ee8cc1Swenshuai.xi 4855*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4856*53ee8cc1Swenshuai.xi // usage: 4857*53ee8cc1Swenshuai.xi // MS_XC_REPORT_PIXELINFO stRepPixInfo; 4858*53ee8cc1Swenshuai.xi // memset(&stRepPixInfo, 0, sizeof(MS_XC_REPORT_PIXELINFO)); 4859*53ee8cc1Swenshuai.xi // stRepPixInfo.u32ReportPixelInfo_Version = XC_REPORT_PIXELINFO_VERSION; 4860*53ee8cc1Swenshuai.xi // stRepPixInfo.u16ReportPixelInfo_Length = sizeof(MS_XC_REPORT_PIXELINFO); 4861*53ee8cc1Swenshuai.xi // stRepPixInfo.enStage = E_XC_GET_PIXEL_STAGE_AFTER_OSD; 4862*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XStart = xxxx; 4863*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XEnd = xxxx; 4864*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YStart = xxxx; 4865*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YEnd = xxxx; 4866*53ee8cc1Swenshuai.xi // MApi_XC_ReportPixelInfo(&stRepPixInfo); 4867*53ee8cc1Swenshuai.xi // 4868*53ee8cc1Swenshuai.xi /// Report Pixel Info 4869*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4870*53ee8cc1Swenshuai.xi /// @param pstRepPixInfo \b IN: pointer to struct MS_XC_REPORT_PIXELINFO 4871*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 4872*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4873*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ReportPixelInfo(MS_XC_REPORT_PIXELINFO *pstRepPixInfo); 4874*53ee8cc1Swenshuai.xi 4875*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4876*53ee8cc1Swenshuai.xi /// MApi_XC_SetScaling 4877*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4878*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: set enable or disable 4879*53ee8cc1Swenshuai.xi /// @param eScaling_type \b IN: set scaling type, pre-scaling, post-scaling, both-scaling 4880*53ee8cc1Swenshuai.xi /// @param eVector_type \b IN: set H vector, v vector, and HV vector 4881*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 4882*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4883*53ee8cc1Swenshuai.xi void MApi_XC_SetScaling( MS_BOOL bEnable, E_XC_SCALING_TYPE eScaling_type, E_XC_VECTOR_TYPE eVector_type, SCALER_WIN eWindow ); 4884*53ee8cc1Swenshuai.xi 4885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4886*53ee8cc1Swenshuai.xi /// MApi_XC_SetMCDIBufferAddress 4887*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4888*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: frame buffer base addr 4889*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: frame buffer size 4890*53ee8cc1Swenshuai.xi /// @param eType \b IN: set frame buffer for MCDI ME1 or ME2 4891*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4892*53ee8cc1Swenshuai.xi void MApi_XC_SetMCDIBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, E_XC_MCDI_TYPE eType); 4893*53ee8cc1Swenshuai.xi 4894*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4895*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMCDI 4896*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4897*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable MCDI 4898*53ee8cc1Swenshuai.xi /// @param eType \b IN: control MCDI ME1 or ME2 or both 4899*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4900*53ee8cc1Swenshuai.xi void MApi_XC_EnableMCDI(MS_BOOL bEnable, E_XC_MCDI_TYPE eType); 4901*53ee8cc1Swenshuai.xi 4902*53ee8cc1Swenshuai.xi 4903*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4904*53ee8cc1Swenshuai.xi /// MApi_XC_SendCmdToFRC 4905*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 4906*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 4907*53ee8cc1Swenshuai.xi /// @param count \b IN: parameter Counter 4908*53ee8cc1Swenshuai.xi /// @param pFRC_R2_Para \b IN: input parameter 4909*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 4910*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4911*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SendCmdToFRC( MS_U8 u8Cmd, MS_U8 count, FRC_R2_CMD_PARAMETER_t pFRC_R2_Para ); 4912*53ee8cc1Swenshuai.xi 4913*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4914*53ee8cc1Swenshuai.xi /// MApi_XC_GetMsgFromFRC 4915*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 4916*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 4917*53ee8cc1Swenshuai.xi /// @param pu8ParaCount \b IN: Counter 4918*53ee8cc1Swenshuai.xi /// @param pu8Para \b IN: input parameter 4919*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 4920*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4921*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_GetMsgFromFRC(MS_U8* pu8Cmd, MS_U8* pu8ParaCount, MS_U8* pu8Para); 4922*53ee8cc1Swenshuai.xi 4923*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4924*53ee8cc1Swenshuai.xi /// Enable/Disable RW bank auto 4925*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4926*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 4927*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4928*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4929*53ee8cc1Swenshuai.xi // void MApi_XC_EnableRWBankAuto(MS_BOOL bEnable, SCALER_WIN eWindow); 4930*53ee8cc1Swenshuai.xi 4931*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4932*53ee8cc1Swenshuai.xi /// Set XC W/R Bank Mapping Number 4933*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4934*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: W/R bank mapping value 4935*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4936*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4937*53ee8cc1Swenshuai.xi void MApi_XC_SetWRBankMappingNum(MS_U8 u8Val, SCALER_WIN eWindow); 4938*53ee8cc1Swenshuai.xi 4939*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4940*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number 4941*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4942*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4943*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 4944*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4945*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetWRBankMappingNum(SCALER_WIN eWindow); 4946*53ee8cc1Swenshuai.xi 4947*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4948*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number for Zap (including UC effect) 4949*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4950*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4951*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 4952*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4953*53ee8cc1Swenshuai.xi // MS_U8 MApi_XC_GetWRBankMappingNumForZap(SCALER_WIN eWindow); 4954*53ee8cc1Swenshuai.xi 4955*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4956*53ee8cc1Swenshuai.xi /// Set BOB mode 4957*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4958*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable BOB mode or not 4959*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4960*53ee8cc1Swenshuai.xi /// @return TRUE - succeed, FALSE - fail 4961*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4962*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetBOBMode(MS_BOOL bEnable, SCALER_WIN eWindow); 4963*53ee8cc1Swenshuai.xi 4964*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4965*53ee8cc1Swenshuai.xi /// Set XC force read bank 4966*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4967*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable force read bank or not 4968*53ee8cc1Swenshuai.xi /// @param u8Bank \b IN: Force read bank index 4969*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4970*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4971*53ee8cc1Swenshuai.xi void MApi_XC_SetForceReadBank(MS_BOOL bEnable, MS_U8 u8Bank, SCALER_WIN eWindow); 4972*53ee8cc1Swenshuai.xi 4973*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4974*53ee8cc1Swenshuai.xi /// Set XC lock point 4975*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4976*53ee8cc1Swenshuai.xi /// @param u16LockPoint \b IN: lock point count 4977*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4978*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4979*53ee8cc1Swenshuai.xi // void MApi_XC_SetLockPoint(MS_U16 u16LockPoint, SCALER_WIN eWindow); 4980*53ee8cc1Swenshuai.xi 4981*53ee8cc1Swenshuai.xi //------------------------------ 4982*53ee8cc1Swenshuai.xi // LD 4983*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4984*53ee8cc1Swenshuai.xi /// LD set panel type 4985*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 4986*53ee8cc1Swenshuai.xi /// @param eLdPanelType \b IN: panel type 4987*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4988*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4989*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_Init(EN_LD_PANEL_TYPE eLDPanelType ); 4990*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4991*53ee8cc1Swenshuai.xi /// LD set memory address 4992*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 4993*53ee8cc1Swenshuai.xi /// @param u8MIU \b IN: MIU Select 4994*53ee8cc1Swenshuai.xi /// @param u32LDFBase0 \b IN: LDF memeory0 address 4995*53ee8cc1Swenshuai.xi /// @param u32LDFBase1 \b IN: LDF memeory1 address 4996*53ee8cc1Swenshuai.xi /// @param u32LDBBase0 \b IN: LDB memeory0 address 4997*53ee8cc1Swenshuai.xi /// @param u32LDBBase1 \b IN: LDB memeory1 address 4998*53ee8cc1Swenshuai.xi /// @param u32EDGE2DBase \b IN: EDGE2D memeory address 4999*53ee8cc1Swenshuai.xi /// @param u32LEDoffset \b IN: LED data offset 5000*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5001*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5002*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_SetMemoryAddress(MS_U8 u8MIU ,MS_PHY u32LDFBase0,MS_PHY u32LDFBase1,MS_PHY u32LDBBase0,MS_PHY u32LDBBase1,MS_PHY u32EDGE2DBase,MS_PHY u32LEDoffset); 5003*53ee8cc1Swenshuai.xi 5004*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5005*53ee8cc1Swenshuai.xi /// Get LD value 5006*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5007*53ee8cc1Swenshuai.xi /// @param pu8LDValue @ref MS_U8 \b OUT: get the LD back light value (The amount is u8WSize x u8HSize) 5008*53ee8cc1Swenshuai.xi /// @param u8WSize @ref MS_U8 \b IN: set the LD back light width 5009*53ee8cc1Swenshuai.xi /// @param u8HSize @ref MS_U8 \b IN: set the LD back light height 5010*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 5011*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5012*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_LD_Get_Value(MS_U8 *pu8LDValue, MS_U8 u8WSize, MS_U8 u8HSize); 5013*53ee8cc1Swenshuai.xi 5014*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5015*53ee8cc1Swenshuai.xi /// set LD Level 5016*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5017*53ee8cc1Swenshuai.xi /// @param eMode \b IN: LD level 5018*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5019*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5020*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_SetLevel(EN_LD_MODE eMode); 5021*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5022*53ee8cc1Swenshuai.xi /// set LD backlight is zero flags 5023*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5024*53ee8cc1Swenshuai.xi /// @param eMode \b IN: backlight is zero flags 5025*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5026*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5027*53ee8cc1Swenshuai.xi // MS_BOOL MApi_Set_TurnoffLDBL(MS_BOOL bturnoffbl); 5028*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5029*53ee8cc1Swenshuai.xi /// set not update SPI data Flags 5030*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5031*53ee8cc1Swenshuai.xi /// @param brefreshSpidata \b IN: refresh Spi data flags 5032*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5033*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5034*53ee8cc1Swenshuai.xi // MS_BOOL MApi_Set_notUpdateSPIDataFlags(MS_BOOL brefreshSpidata); 5035*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5036*53ee8cc1Swenshuai.xi /// set User mode LD Flags 5037*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5038*53ee8cc1Swenshuai.xi /// @param buserLDFlags \b IN: User mode LD Flags 5039*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5040*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5041*53ee8cc1Swenshuai.xi // MS_BOOL MApi_Set_UsermodeLDFlags(MS_BOOL buserLDFlags); 5042*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5043*53ee8cc1Swenshuai.xi /// set LD backlight level 5044*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 5045*53ee8cc1Swenshuai.xi /// @param u8BLLeve \b IN: backlight level 5046*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5047*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5048*53ee8cc1Swenshuai.xi // MS_BOOL MApi_Set_BLLevel(MS_U8 u8BLLeve); 5049*53ee8cc1Swenshuai.xi 5050*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5051*53ee8cc1Swenshuai.xi /// set XC bandwidth saving X-mode 5052*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5053*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 5054*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5055*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5056*53ee8cc1Swenshuai.xi void MApi_XC_Set_BWS_Mode(MS_BOOL bEnable, SCALER_WIN eWindow); 5057*53ee8cc1Swenshuai.xi 5058*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5059*53ee8cc1Swenshuai.xi /// set FRC ColorPathCtrl 5060*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5061*53ee8cc1Swenshuai.xi /// @param epath_type \b IN: Select one of path in the FRC_COLOR_PATH_TYPE 5062*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 5063*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5064*53ee8cc1Swenshuai.xi // void MApi_XC_FRC_ColorPathCtrl(MS_U16 u16Path_sel, MS_BOOL bEnable); 5065*53ee8cc1Swenshuai.xi 5066*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5067*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBGain 5068*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5069*53ee8cc1Swenshuai.xi /// @param u16RedGain \b IN: Red Gain 5070*53ee8cc1Swenshuai.xi /// @param u16GreenGain \b IN: Green Gain 5071*53ee8cc1Swenshuai.xi /// @param u16BlueGain \b IN: Blue Gain 5072*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5073*53ee8cc1Swenshuai.xi // void MApi_XC_FRC_OP2_SetRGBGain(MS_U16 u16RedGain, MS_U16 u16GreenGain, MS_U16 u16BlueGain); 5074*53ee8cc1Swenshuai.xi 5075*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5076*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBOffset 5077*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5078*53ee8cc1Swenshuai.xi /// @param u16RedOffset \b IN: Red Offset 5079*53ee8cc1Swenshuai.xi /// @param u16GreenOffset \b IN: Green Offset 5080*53ee8cc1Swenshuai.xi /// @param u16BlueOffset \b IN: Blue Offset 5081*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5082*53ee8cc1Swenshuai.xi // void MApi_XC_FRC_OP2_SetRGBOffset(MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset); 5083*53ee8cc1Swenshuai.xi 5084*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5085*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetDither 5086*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5087*53ee8cc1Swenshuai.xi /// @param u16dither \b IN: Dither setting 5088*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5089*53ee8cc1Swenshuai.xi // void MApi_XC_FRC_OP2_SetDither(MS_U16 u16dither); 5090*53ee8cc1Swenshuai.xi 5091*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5092*53ee8cc1Swenshuai.xi /// set XC Bypass MFC 5093*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5094*53ee8cc1Swenshuai.xi /// @param eEnable \b IN: Enable or Disable 5095*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5096*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5097*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_FRC_BypassMFC(MS_BOOL bEnable); 5098*53ee8cc1Swenshuai.xi 5099*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5100*53ee8cc1Swenshuai.xi /// set XC FRC Mute 5101*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5102*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 5103*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5104*53ee8cc1Swenshuai.xi void MApi_XC_FRC_Mute(MS_BOOL bEnable); 5105*53ee8cc1Swenshuai.xi 5106*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5107*53ee8cc1Swenshuai.xi /// MApi_XC_ForceReadFrame 5108*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5109*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 5110*53ee8cc1Swenshuai.xi /// @param u16FrameIndex \b IN: control specified frame to show 5111*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5112*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_ForceReadFrame(MS_BOOL bEnable, MS_U16 u16FrameIndex); 5113*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5114*53ee8cc1Swenshuai.xi /// MApi_XC_SetCsc 5115*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5116*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 5117*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5118*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5119*53ee8cc1Swenshuai.xi void MApi_XC_SetCsc( MS_BOOL bEnable, SCALER_WIN eWindow ); 5120*53ee8cc1Swenshuai.xi 5121*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5122*53ee8cc1Swenshuai.xi /// Register PQ Set FPLL thresh mode function 5123*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5124*53ee8cc1Swenshuai.xi /// @param fpPQCB \b IN: function pointer of PQ set FPLL thresh mode 5125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5126*53ee8cc1Swenshuai.xi // void MApi_XC_RegisterPQSetFPLLThreshMode(void (*fpPQCB)(MS_U8 u8PQWin)); 5127*53ee8cc1Swenshuai.xi 5128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5129*53ee8cc1Swenshuai.xi /// Get XC free run status 5130*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5131*53ee8cc1Swenshuai.xi /// @return TRUE if it is free run, FALSE if not 5132*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5133*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_GetFreeRunStatus(void); 5134*53ee8cc1Swenshuai.xi 5135*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5136*53ee8cc1Swenshuai.xi /// MApi_XC_Get_DSForceIndexSupported 5137*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 5138*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5139*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5140*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_Get_DSForceIndexSupported(SCALER_WIN eWindow); 5141*53ee8cc1Swenshuai.xi 5142*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5143*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 5144*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 5145*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 5146*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 5147*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5148*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5149*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_DSForceIndex(MS_BOOL bEnable, MS_U8 u8Index, SCALER_WIN eWindow); 5150*53ee8cc1Swenshuai.xi 5151*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5152*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSIndexSourceSelect 5153*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 5154*53ee8cc1Swenshuai.xi /// @param eDSIdxSrc \b IN: choose where the DS index comes from. 5155*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5156*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5157*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_DSIndexSourceSelect(E_XC_DS_INDEX_SOURCE eDSIdxSrc, SCALER_WIN eWindow); 5158*53ee8cc1Swenshuai.xi 5159*53ee8cc1Swenshuai.xi 5160*53ee8cc1Swenshuai.xi 5161*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5162*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 5163*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5164*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 5165*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 5166*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5167*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5168*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5169*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_InitSetting(E_XC_OSDC_TGEN_Type E_XC_OSDC_TGEN_Type, 5170*53ee8cc1Swenshuai.xi MS_XC_OSDC_TGEN_INFO *pstOC_Tgen_Cus, 5171*53ee8cc1Swenshuai.xi MS_XC_OSDC_CTRL_INFO *pstOC_Ctrl); 5172*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5173*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 5174*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5175*53ee8cc1Swenshuai.xi /// @param eCtrl_type \b IN: ENABLE/DISABLE force DS index or not 5176*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5177*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5178*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_Control(MS_U32 eCtrl_type); 5179*53ee8cc1Swenshuai.xi 5180*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5181*53ee8cc1Swenshuai.xi /// MApi_XC_OSDC_GetDstInfo 5182*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5183*53ee8cc1Swenshuai.xi /// @param pDstInfo \b IN: get the Desternation info 5184*53ee8cc1Swenshuai.xi /// @param u32SizeofDstInfo \b IN: size check 5185*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5186*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5187*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_GetDstInfo(MS_OSDC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo); 5188*53ee8cc1Swenshuai.xi 5189*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5190*53ee8cc1Swenshuai.xi /// MApi_XC_OSDC_SetOutVfreqx10 5191*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5192*53ee8cc1Swenshuai.xi /// @param u16Vfreq \b IN: output V freq x10 5193*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5194*53ee8cc1Swenshuai.xi void MApi_XC_OSDC_SetOutVfreqx10(MS_U16 u16Vfreq); 5195*53ee8cc1Swenshuai.xi 5196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5197*53ee8cc1Swenshuai.xi /// MApi_XC_SetByPassOSDVsyncPos 5198*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5199*53ee8cc1Swenshuai.xi /// @param u16VsyncStart \b IN: OSD vsync start 5200*53ee8cc1Swenshuai.xi /// @param u16VsyncEnd \b IN: OSD vsync end 5201*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5202*53ee8cc1Swenshuai.xi // void MApi_XC_BYPASS_SetOSDVsyncPos(MS_U16 u16VsyncStart, MS_U16 u16VsyncEnd); 5203*53ee8cc1Swenshuai.xi 5204*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5205*53ee8cc1Swenshuai.xi /// MApi_XC_BYPASS_SetInputSrc 5206*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5207*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE bypass mode 5208*53ee8cc1Swenshuai.xi /// @param input \b IN: Select the input source for bypass mode 5209*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5210*53ee8cc1Swenshuai.xi // void MApi_XC_BYPASS_SetInputSrc(MS_BOOL bEnable,E_XC_BYPASS_InputSource input); 5211*53ee8cc1Swenshuai.xi 5212*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5213*53ee8cc1Swenshuai.xi /// MApi_XC_BYPASS_SetCSC 5214*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5215*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE the color space convert 5216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5217*53ee8cc1Swenshuai.xi // void MApi_XC_BYPASS_SetCSC(MS_BOOL bEnable); 5218*53ee8cc1Swenshuai.xi 5219*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5220*53ee8cc1Swenshuai.xi /// MApi_XC_SetSeamlessZapping 5221*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5222*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 5223*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE seamless zapping 5224*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5225*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5226*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetSeamlessZapping(SCALER_WIN eWindow, MS_BOOL bEnable); 5227*53ee8cc1Swenshuai.xi 5228*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5229*53ee8cc1Swenshuai.xi /// MApi_XC_GetSeamlessZappingStatus 5230*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5231*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5232*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get status 5233*53ee8cc1Swenshuai.xi /// @param pbEnable \b IN: get current seamless zapping status 5234*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5235*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5236*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetSeamlessZappingStatus(SCALER_WIN eWindow, MS_BOOL* pbEnable); 5237*53ee8cc1Swenshuai.xi 5238*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5239*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_SetPayloadData 5240*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5241*53ee8cc1Swenshuai.xi /// @param u16Timecode \b IN: The time code is coded on 16 bits. It is calculated based on the number of days from January 1st. 5242*53ee8cc1Swenshuai.xi /// @param u8ID \b IN: Operator ID 5243*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5244*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_Vtrack_SetPayloadData(MS_U16 u16Timecode, MS_U8 u8OperatorID); 5245*53ee8cc1Swenshuai.xi 5246*53ee8cc1Swenshuai.xi 5247*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5248*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_SetUserDefindedSetting 5249*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5250*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Customized Setting 5251*53ee8cc1Swenshuai.xi /// @param pu8Setting \b IN: pointer to targert user definded setting data (include setting1 to setting3) 5252*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5253*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_Vtrack_SetUserDefindedSetting(MS_BOOL bUserDefinded, MS_U8 *pu8Setting); 5254*53ee8cc1Swenshuai.xi 5255*53ee8cc1Swenshuai.xi 5256*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5257*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_Enable 5258*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5259*53ee8cc1Swenshuai.xi /// @param u8FrameRate \b IN: ENABLE/DISABLE The FrameRateIn is based on the output format of the box 5260*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Vtrack 5261*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5262*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_Vtrack_Enable(MS_U8 u8FrameRate, MS_BOOL bEnable); 5263*53ee8cc1Swenshuai.xi 5264*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5265*53ee8cc1Swenshuai.xi /// Pre-set the specific window with PQ info 5266*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5267*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 5268*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 5269*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5270*53ee8cc1Swenshuai.xi void MApi_XC_PreSetPQInfo(XC_SETWIN_INFO *pstXC_SetWin_Info, SCALER_WIN eWindow); 5271*53ee8cc1Swenshuai.xi 5272*53ee8cc1Swenshuai.xi 5273*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5274*53ee8cc1Swenshuai.xi /// Mapi_XC_Is_OP1_TestPattern_Enabled 5275*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5276*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - enabled, FALSED - disabled 5277*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5278*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Is_OP1_TestPattern_Enabled(void); 5279*53ee8cc1Swenshuai.xi 5280*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5281*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OP1_TestPattern 5282*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5283*53ee8cc1Swenshuai.xi /// @param ePattern \b IN: select test pattern 5284*53ee8cc1Swenshuai.xi /// @param eMode \b IN: choose the patgen mode (only support E_XC_OP1_PATGEN_DISP_LB_MODE now) 5285*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5286*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5287*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_OP1_TestPattern(EN_XC_OP1_PATTERN ePattern, EN_XC_OP1_PATGEN_MODE eMode); 5288*53ee8cc1Swenshuai.xi 5289*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5290*53ee8cc1Swenshuai.xi /// MApi_XC_CheckWhiteBalancePatternModeSupport 5291*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5292*53ee8cc1Swenshuai.xi /// @param eWBPatternMode \b IN: White balance Pattern gen Mode 5293*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - support, FALSED - unsupport 5294*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5295*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_CheckWhiteBalancePatternModeSupport(EN_XC_WB_PATTERN_MODE enWBPatternMode); 5296*53ee8cc1Swenshuai.xi 5297*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5298*53ee8cc1Swenshuai.xi /// MApi_XC_SetHLinearScaling 5299*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5300*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe h linear scaling 5301*53ee8cc1Swenshuai.xi /// @param bSign \b IN: sign of delta 5302*53ee8cc1Swenshuai.xi /// @param u16Delta \b IN: the slop of scaling 5303*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 5304*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5305*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5306*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetHLinearScaling(MS_BOOL bEnable, MS_BOOL bSign, MS_U16 u16Delta, SCALER_WIN eWindow); 5307*53ee8cc1Swenshuai.xi 5308*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5309*53ee8cc1Swenshuai.xi /// XC power state control for fastboot 5310*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5311*53ee8cc1Swenshuai.xi /// @param u16PowerState \b IN: power state 5312*53ee8cc1Swenshuai.xi /// @return result of power state control. 5313*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5314*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_SetPowerState(EN_POWER_MODE enPowerState); 5315*53ee8cc1Swenshuai.xi 5316*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5317*53ee8cc1Swenshuai.xi /// MApi_XC_EnableT3D 5318*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 5319*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe T3D 5320*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5321*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5322*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_EnableT3D(MS_BOOL bEnable); 5323*53ee8cc1Swenshuai.xi 5324*53ee8cc1Swenshuai.xi 5325*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5326*53ee8cc1Swenshuai.xi /// MApi_XC_Set_FRC_InputTiming 5327*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5328*53ee8cc1Swenshuai.xi /// @param enFRC_InputTiming \b IN: FRC input timing 5329*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5330*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5331*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_FRC_InputTiming(E_XC_FRC_InputTiming enFRC_InputTiming); 5332*53ee8cc1Swenshuai.xi 5333*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5334*53ee8cc1Swenshuai.xi /// MApi_XC_Get_FRC_InputTiming 5335*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5336*53ee8cc1Swenshuai.xi /// @param penFRC_InputTiming \b IN: FRC input timing 5337*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5338*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5339*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_FRC_InputTiming(E_XC_FRC_InputTiming *penFRC_InputTiming); 5340*53ee8cc1Swenshuai.xi 5341*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5342*53ee8cc1Swenshuai.xi /// MApi_XC_Get_VirtualBox_Info 5343*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5344*53ee8cc1Swenshuai.xi /// @param pstXC_VboxInfo \b IN: virtual box info 5345*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5346*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5347*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_VirtualBox_Info(XC_VBOX_INFO *pstXC_VboxInfo); 5348*53ee8cc1Swenshuai.xi 5349*53ee8cc1Swenshuai.xi 5350*53ee8cc1Swenshuai.xi 5351*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5352*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OSD_Detect 5353*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5354*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe OSD detect 5355*53ee8cc1Swenshuai.xi /// @param Threhold \b IN: setup the threashold 5356*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5357*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5358*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_OSD_Detect(MS_BOOL bEnable, MS_U32 Threhold); 5359*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5360*53ee8cc1Swenshuai.xi /// MApi_XC_Get_OSD_Detect 5361*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5362*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe OSD detect 5363*53ee8cc1Swenshuai.xi /// @param Threhold \b IN: setup the threashold 5364*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5365*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5366*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_OSD_Detect(MS_BOOL *pbOSD); 5367*53ee8cc1Swenshuai.xi 5368*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5369*53ee8cc1Swenshuai.xi /// Get XC work mode: 2K2K mode or normal mode 5370*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 5371*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - 2K2K mode, FALSE - Normal mode 5372*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5373*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is2K2KToFrcMode(void); 5374*53ee8cc1Swenshuai.xi 5375*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5376*53ee8cc1Swenshuai.xi /// Set XC work mode: 2P mode or 4K2K@50/60Hz 5377*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - Success, FALSE - Fail 5378*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5379*53ee8cc1Swenshuai.xi //MS_BOOL MApi_XC_Set_2P_Mode(MS_BOOL bEnable,SCALER_WIN eWindow); 5380*53ee8cc1Swenshuai.xi 5381*53ee8cc1Swenshuai.xi #ifdef UFO_XC_TEST_PATTERN 5382*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5383*53ee8cc1Swenshuai.xi /// To generate designated test pattern,you should follow the following example 5384*53ee8cc1Swenshuai.xi /// Ex: 5385*53ee8cc1Swenshuai.xi /// XC_SET_IPMUX_TESTPATTERN_t ipmux_test_pattern; 5386*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.bEnable = TRUE; 5387*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16R_CR_Data = xxx; 5388*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16G_Y_Data = xxx; 5389*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16B_CB_Data = xxx; 5390*53ee8cc1Swenshuai.xi /// MApi_XC_GenerateTestPattern(E_XC_IPMUX_PATTERN_MODE,(void *)&ipmux_test_pattern,sizeof(XC_SET_IPMUX_TESTPATTERN_t)); 5391*53ee8cc1Swenshuai.xi /// ------------------------------------------------------------------------------------------------ 5392*53ee8cc1Swenshuai.xi /// @param ePatternMode \b IN: pattern type 5393*53ee8cc1Swenshuai.xi /// @param para \b IN: test pattern struct point 5394*53ee8cc1Swenshuai.xi /// @param u16Length \b IN: data length 5395*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_ADC_PATTERN_MODE; para = p_XC_SET_ADC_TESTPATTERN_t struct point; 5396*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_IPMUX_PATTERN_MODE; para = p_XC_SET_IPMUX_TESTPATTERN_t struct point; 5397*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_IP1_PATTERN_MODE; para = p_XC_SET_IP1_TESTPATTERN_t struct point; 5398*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_OP_PATTERN_MODE; para = p_XC_SET_OP_TESTPATTERN_t struct point; 5399*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_VOP_PATTERN_MODE; para = p_XC_SET_VOP_TESTPATTERN_t struct point; 5400*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_VOP2_PATTERN_MODE; para = p_XC_SET_VOP2_TESTPATTERN_t struct point; 5401*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_MOD_PATTERN_MODE; para = p_XC_SET_MOD_TESTPATTERN_t struct point; 5402*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5403*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_GenerateTestPattern (EN_XC_TEST_PATTERN_MODE ePatternMode,void* para, MS_U16 u16Length); 5404*53ee8cc1Swenshuai.xi #endif 5405*53ee8cc1Swenshuai.xi 5406*53ee8cc1Swenshuai.xi //================================ Obsolete Function Start ======================================= 5407*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5408*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5409*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5410*53ee8cc1Swenshuai.xi /// !!! below function will be "REMOVED" or "REFACTORING" later, please do not use it !!!!!!!!! 5411*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5412*53ee8cc1Swenshuai.xi 5413*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5414*53ee8cc1Swenshuai.xi /// mvideo_sc_get_output_vfreq 5415*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5416*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5417*53ee8cc1Swenshuai.xi // MS_U16 mvideo_sc_get_output_vfreq(void); //Replaced by MApi_XC_GetOutputVFreqX100 5418*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5419*53ee8cc1Swenshuai.xi /// MApi_XC_Get_Current_OutputVFreqX100 5420*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5421*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5422*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_Get_Current_OutputVFreqX100(void); //Replaced by MApi_XC_GetOutputVFreqX100 5423*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5424*53ee8cc1Swenshuai.xi /// MApi_XC_SetMemoryWriteRequest 5425*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5426*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5427*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetMemoryWriteRequest(MS_BOOL bEnable); //Replaced by MApi_XC_SetScalerMemoryRequest 5428*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5429*53ee8cc1Swenshuai.xi /// MApi_XC_Set_MemFmt 5430*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5432*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_Set_MemFmt(MS_XC_MEM_FMT eMemFmt); 5433*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5434*53ee8cc1Swenshuai.xi /// MApi_XC_SetOutputAdjustSetting 5435*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5436*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5437*53ee8cc1Swenshuai.xi // E_APIXC_ReturnValue MApi_XC_SetOutputAdjustSetting(XC_OUTPUT_TIMING_ADJUST_SETTING *stAdjSetting); // Replaced by MApi_XC_SetExPanelInfo 5438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5439*53ee8cc1Swenshuai.xi /// msAPI_Scaler_FPLL_FSM 5440*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5441*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5442*53ee8cc1Swenshuai.xi // void msAPI_Scaler_FPLL_FSM(SCALER_WIN eWindow); 5443*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5444*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMirrorMode 5445*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5446*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5447*53ee8cc1Swenshuai.xi void MApi_XC_EnableMirrorMode( MS_BOOL bEnable ); 5448*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5449*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMirrorMode2 5450*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5451*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5452*53ee8cc1Swenshuai.xi void MApi_XC_EnableMirrorMode2( MirrorMode_t eMirrorMode ); 5453*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5454*53ee8cc1Swenshuai.xi /// MApi_XC_GetMirrorModeType 5455*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5457*53ee8cc1Swenshuai.xi MirrorMode_t MApi_XC_GetMirrorModeType( void ); 5458*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5459*53ee8cc1Swenshuai.xi /// MApi_XC_set_FD_Mask 5460*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5462*53ee8cc1Swenshuai.xi void MApi_XC_set_FD_Mask(MS_BOOL bEnable); 5463*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5464*53ee8cc1Swenshuai.xi /// MApi_XC_Get_FD_Mask 5465*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5466*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5467*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FD_Mask(void); 5468*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5469*53ee8cc1Swenshuai.xi /// MApi_XC_GetAccurateVFreqx1K is obsolete, please use MApi_XC_CalculateVFreqx10 instead! 5470*53ee8cc1Swenshuai.xi /// the return vfreq of this function is not accurate when signal is not stable or have noise, so it's not 5471*53ee8cc1Swenshuai.xi /// suitable as interface for Ap use at any time. 5472*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 5473*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5474*53ee8cc1Swenshuai.xi 5475*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5476*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetAccurateVFreqx1K(SCALER_WIN eWindow); 5477*53ee8cc1Swenshuai.xi //================================ Obsolete Function End ======================================= 5478*53ee8cc1Swenshuai.xi 5479*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5480*53ee8cc1Swenshuai.xi /// MApi_XC_IsSupport2StepScaling 5481*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - Support 2 Step Scaling, FALSE - Not Support 2 Step Scaling 5482*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5483*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsSupport2StepScaling(void); 5484*53ee8cc1Swenshuai.xi 5485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5486*53ee8cc1Swenshuai.xi /// Set Scaler IP input test pattern. 5487*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5488*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: Set 1 to enable. Bit(0) is horizontal pattern and Bit(1) is vertical pattern 5489*53ee8cc1Swenshuai.xi /// @param u6Pattern_type \b IN: The pattern type. (the width of each pattern) 5490*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5491*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5492*53ee8cc1Swenshuai.xi void MApi_XC_SetIP1TestPattern(MS_U8 u8Enable, MS_U16 u6Pattern_type, SCALER_WIN eWindow); 5493*53ee8cc1Swenshuai.xi 5494*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5495*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OP2_Pattern 5496*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5497*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable OP2 pattern 5498*53ee8cc1Swenshuai.xi /// @param u16R_Data \b IN: when enable OP2 patter ,Data Generator for r_cr constant 5499*53ee8cc1Swenshuai.xi /// @param u16G_Data \b IN: when enable OP2 patter ,Data Generator for g_y constant 5500*53ee8cc1Swenshuai.xi /// @param u16B_Data \b IN: when enable OP2 patter ,Data Generator for b_cb constant 5501*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 5502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5503*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_OP2_Pattern(MS_BOOL bEnable, MS_U16 u16R_Data, MS_U16 u16G_Data ,MS_U16 u16B_Data); 5504*53ee8cc1Swenshuai.xi 5505*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5506*53ee8cc1Swenshuai.xi /// When the muteType is enabled, the vsync will be skipped and the registers will be written directly 5507*53ee8cc1Swenshuai.xi /// @param enMuteType \b IN: the mute type could be MainWindow, SubWindow and Panel 5508*53ee8cc1Swenshuai.xi /// @param bIsForceWrite \b IN: Force write or not 5509*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5510*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_SetForceWrite( EN_MUTE_TYPE enMuteType, MS_BOOL bIsForceWrite); 5511*53ee8cc1Swenshuai.xi 5512*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5513*53ee8cc1Swenshuai.xi /// Get the status of enMuteType which is writen directly or not. 5514*53ee8cc1Swenshuai.xi /// @param enMuteType \b IN: the mute type could be MainWindow, SubWindow and Panel 5515*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5516*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_GetForceWrite( EN_MUTE_TYPE enMuteType); 5517*53ee8cc1Swenshuai.xi 5518*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5519*53ee8cc1Swenshuai.xi /// Video Playback Controller. 5520*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:cmd type 5521*53ee8cc1Swenshuai.xi /// @param pbuf \b IN:input value depend on cmd type 5522*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:input structure size for validatition 5523*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5524*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5525*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_VideoPlaybackCtrl(MS_U32 u32Cmd,void *pCmdArgs,MS_U32 u32CmdArgsSize); 5526*53ee8cc1Swenshuai.xi 5527*53ee8cc1Swenshuai.xi 5528*53ee8cc1Swenshuai.xi #ifdef __cplusplus 5529*53ee8cc1Swenshuai.xi } 5530*53ee8cc1Swenshuai.xi #endif 5531*53ee8cc1Swenshuai.xi 5532*53ee8cc1Swenshuai.xi #endif /* _API_XC_H_ */ 5533*53ee8cc1Swenshuai.xi 5534*53ee8cc1Swenshuai.xi 5535