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 228*53ee8cc1Swenshuai.xi #ifndef _API_XC_H_ 229*53ee8cc1Swenshuai.xi #define _API_XC_H_ 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi #include "MsDevice.h" 232*53ee8cc1Swenshuai.xi // Driver 233*53ee8cc1Swenshuai.xi #include "drvXC_IOPort.h" 234*53ee8cc1Swenshuai.xi #include "UFO.h" 235*53ee8cc1Swenshuai.xi //? SYMBOL_WEAK defined here , but cause SN compile error 236*53ee8cc1Swenshuai.xi //#include "MsCommon.h" 237*53ee8cc1Swenshuai.xi #ifdef __cplusplus 238*53ee8cc1Swenshuai.xi extern "C" 239*53ee8cc1Swenshuai.xi { 240*53ee8cc1Swenshuai.xi #endif 241*53ee8cc1Swenshuai.xi #ifdef MVIDEO_C 242*53ee8cc1Swenshuai.xi #define INTERFACE 243*53ee8cc1Swenshuai.xi #else 244*53ee8cc1Swenshuai.xi #define INTERFACE extern 245*53ee8cc1Swenshuai.xi #endif 246*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 247*53ee8cc1Swenshuai.xi // Macro and Define 248*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 249*53ee8cc1Swenshuai.xi 250*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 251*53ee8cc1Swenshuai.xi // This macro defined in mscommon.h originally, here just for avoid SN compile error 252*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 253*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL 254*53ee8cc1Swenshuai.xi #define SYMBOL_WEAK 255*53ee8cc1Swenshuai.xi #else 256*53ee8cc1Swenshuai.xi #define SYMBOL_WEAK __attribute__((weak)) 257*53ee8cc1Swenshuai.xi #endif 258*53ee8cc1Swenshuai.xi // library information 259*53ee8cc1Swenshuai.xi #define MSIF_XC_LIB_CODE {'X','C','_','_'} 260*53ee8cc1Swenshuai.xi #define MSIF_XC_LIBVER {'0','9'} 261*53ee8cc1Swenshuai.xi #define MSIF_XC_BUILDNUM {'1','0'} 262*53ee8cc1Swenshuai.xi #define MSIF_XC_CHANGELIST {'0','0','7','0','9','8','0','1'} 263*53ee8cc1Swenshuai.xi #define XC_API_VERSION /* Character String for DRV/API version */ \ 264*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 265*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 266*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 267*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 268*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 269*53ee8cc1Swenshuai.xi MSIF_CPU, \ 270*53ee8cc1Swenshuai.xi MSIF_XC_LIB_CODE , /* IP__ */ \ 271*53ee8cc1Swenshuai.xi MSIF_XC_LIBVER , /* 0.0 ~ Z.Z */ \ 272*53ee8cc1Swenshuai.xi MSIF_XC_BUILDNUM , /* 00 ~ 99 */ \ 273*53ee8cc1Swenshuai.xi MSIF_XC_CHANGELIST, /* CL# */ \ 274*53ee8cc1Swenshuai.xi MSIF_OS 275*53ee8cc1Swenshuai.xi 276*53ee8cc1Swenshuai.xi #define XC_INITDATA_VERSION 1 277*53ee8cc1Swenshuai.xi #define XC_OUTPUT_TIMING_ADJUST_VERSION 1 278*53ee8cc1Swenshuai.xi /// PANEL_INFO_EX version of current XC lib 279*53ee8cc1Swenshuai.xi #define PANEL_INFO_EX_VERSION 2 280*53ee8cc1Swenshuai.xi /// hw 2d to 3d para version 281*53ee8cc1Swenshuai.xi #define HW2DTO3DPARA_VERSION 2 282*53ee8cc1Swenshuai.xi /// 3d detect format para version 283*53ee8cc1Swenshuai.xi #define DETECT3DFORMATPARA_VERSION 1 284*53ee8cc1Swenshuai.xi 285*53ee8cc1Swenshuai.xi /// ApiStatusEX version of current XC lib 286*53ee8cc1Swenshuai.xi /// Define below to distinguish from API_PNLSTATUS_EX_VERSION 287*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 288*53ee8cc1Swenshuai.xi #define API_XCSTATUS_EX_VERSION 4 289*53ee8cc1Swenshuai.xi #elif defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_212) 290*53ee8cc1Swenshuai.xi #define API_XCSTATUS_EX_VERSION 5 291*53ee8cc1Swenshuai.xi #else 292*53ee8cc1Swenshuai.xi #define API_XCSTATUS_EX_VERSION 9 293*53ee8cc1Swenshuai.xi #endif 294*53ee8cc1Swenshuai.xi #define API_STATUS_EX_VERSION API_XCSTATUS_EX_VERSION 295*53ee8cc1Swenshuai.xi 296*53ee8cc1Swenshuai.xi /// 3d fp info version of current XC lib 297*53ee8cc1Swenshuai.xi #define XC_3D_FPINFOPARA_VERSION 1 298*53ee8cc1Swenshuai.xi /// report pixel info version of current XC lib 299*53ee8cc1Swenshuai.xi #define XC_REPORT_PIXELINFO_VERSION 1 300*53ee8cc1Swenshuai.xi 301*53ee8cc1Swenshuai.xi /// OPTEE structure version 302*53ee8cc1Swenshuai.xi #define XC_OPTEE_HANDLER_VERSION 1 303*53ee8cc1Swenshuai.xi 304*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_300) 305*53ee8cc1Swenshuai.xi #define API_XCDS_INFO_VERSION 4 306*53ee8cc1Swenshuai.xi #else 307*53ee8cc1Swenshuai.xi #define API_XCDS_INFO_VERSION 3 308*53ee8cc1Swenshuai.xi #endif 309*53ee8cc1Swenshuai.xi #define API_DS_INFO_VERSION API_XCDS_INFO_VERSION 310*53ee8cc1Swenshuai.xi 311*53ee8cc1Swenshuai.xi /// osdc disp info version of current XC lib 312*53ee8cc1Swenshuai.xi #define ODSC_DISPINFO_VERSIN 1 313*53ee8cc1Swenshuai.xi 314*53ee8cc1Swenshuai.xi #define XC_INVALID_HEAP_ID 0xFFFFFFFF 315*53ee8cc1Swenshuai.xi 316*53ee8cc1Swenshuai.xi #define MAX_FRC_TABLE_INDEX 10 317*53ee8cc1Swenshuai.xi 318*53ee8cc1Swenshuai.xi #define _BIT(_bit_) (1 << (_bit_)) 319*53ee8cc1Swenshuai.xi 320*53ee8cc1Swenshuai.xi //---------------------------- 321*53ee8cc1Swenshuai.xi // Return value 322*53ee8cc1Swenshuai.xi //---------------------------- 323*53ee8cc1Swenshuai.xi 324*53ee8cc1Swenshuai.xi /// XC Return Value 325*53ee8cc1Swenshuai.xi typedef enum 326*53ee8cc1Swenshuai.xi { 327*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL = 0, ///<Fail 328*53ee8cc1Swenshuai.xi E_APIXC_RET_OK, ///<OK 329*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_FUN_NOT_SUPPORT, ///<Fail 330*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_ENUM_NOT_SUPPORT, ///<Fail 331*53ee8cc1Swenshuai.xi E_APIXC_RET_FAIL_INVALID_PARAMETER, ///<Fail 332*53ee8cc1Swenshuai.xi } E_APIXC_ReturnValue; 333*53ee8cc1Swenshuai.xi 334*53ee8cc1Swenshuai.xi //---------------------------- 335*53ee8cc1Swenshuai.xi // Debug Switch 336*53ee8cc1Swenshuai.xi //---------------------------- 337*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_OFF (0x0000) ///< Turn off 338*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETWINDOW (0x0001) ///< Set Window 339*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETTIMING (0x0002) ///< LPLL / SetPanelTiming 340*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SYNCDETECT (0x0004) ///< Sync detection ======>Not using it by now 341*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_MUX (0x0008) ///< Mux / Path Creation 342*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_MODEPARSE (0x0010) ///< Mode Parse ======>Not using it by now 343*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_HDMIMONITOR (0x0020) ///< HDMI and Package Monitor ===>Not using it by now 344*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_AUTOGEOMETRY (0x0040) ///< Auto Geometry / Auto Calibration 345*53ee8cc1Swenshuai.xi #define XC_DGBLEVEL_CROPCALC (0x0080) ///< Crop Window / Memory / OPM / IPM calculation 346*53ee8cc1Swenshuai.xi 347*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SETTIMING_ISR (0x0100) ///< ISR / SetPanelTiming 348*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_DWIN_SETWINDOW (0x0200) ///< DWIN / Set Window 349*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_FUNCTION_TRACE (0x0400) ///< Trace XC function using status 350*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_PARAMETER_TRACE (0x0800) ///< Trace XC function parameter 351*53ee8cc1Swenshuai.xi 352*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_SEAMLESSZAP (0x1000) ///< Seamless Zapping 353*53ee8cc1Swenshuai.xi #define XC_DBGLEVEL_ATVTiming (0x2000) ///< Seamless Trace ATV Timing 354*53ee8cc1Swenshuai.xi //---------------------------- 355*53ee8cc1Swenshuai.xi // Input signal detect 356*53ee8cc1Swenshuai.xi //---------------------------- 357*53ee8cc1Swenshuai.xi 358*53ee8cc1Swenshuai.xi #define XC_MD_VSYNC_POR_BIT _BIT(0) ///< VSnc polarity bit(0/1 = positive/negative) 359*53ee8cc1Swenshuai.xi #define XC_MD_HSYNC_POR_BIT _BIT(1) ///< HSync polarity bit(0/1 = positive/negative) 360*53ee8cc1Swenshuai.xi #define XC_MD_HSYNC_LOSS_BIT _BIT(2) ///< HSync loss bit 361*53ee8cc1Swenshuai.xi #define XC_MD_VSYNC_LOSS_BIT _BIT(3) ///< VSync loss bit 362*53ee8cc1Swenshuai.xi #define XC_MD_INTERLACE_BIT _BIT(4) ///< Interlace mode 363*53ee8cc1Swenshuai.xi #define XC_MD_USER_MODE_BIT _BIT(7) ///< User new mode (Not found in mode table) 364*53ee8cc1Swenshuai.xi #define XC_MD_SYNC_LOSS (XC_MD_HSYNC_LOSS_BIT | XC_MD_VSYNC_LOSS_BIT) ///< VSync & HSync loss bit 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi //---------------------------- 367*53ee8cc1Swenshuai.xi // 3D macros 368*53ee8cc1Swenshuai.xi //---------------------------- 369*53ee8cc1Swenshuai.xi #define DOUBLEHD_PRESCALE_VONEHDSIZE (540) 370*53ee8cc1Swenshuai.xi 371*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_FRAME_VSIZE (1080) 372*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_FIELD_VSIZE (540) 373*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_HSIZE (1920) 374*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VACT_SPACE1 (23) 375*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VACT_SPACE2 (22) 376*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_VSIZE (DOUBLEHD_1080X2I_FRAME_VSIZE*2+DOUBLEHD_1080X2I_VACT_SPACE1*2+DOUBLEHD_1080X2I_VACT_SPACE2) 377*53ee8cc1Swenshuai.xi 378*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_50_VACT_SPACE1 (85) // not sure spec 379*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_50_VACT_SPACE2 (85) // not sure spec 380*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2I_50_VSIZE (DOUBLEHD_1080X2I_FRAME_VSIZE*2+DOUBLEHD_1080X2I_50_VACT_SPACE1*2+DOUBLEHD_1080X2I_50_VACT_SPACE1) 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_FRAME_VSIZE (576) 383*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_FIELD_VSIZE (288) 384*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) ||defined(UFO_PUBLIC_HEADER_500_3) ||defined(UFO_PUBLIC_HEADER_700) 385*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_HSIZE (720) 386*53ee8cc1Swenshuai.xi #else 387*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_HSIZE (1440) 388*53ee8cc1Swenshuai.xi #endif 389*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_VACT_SPACE1 (25) 390*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_VACT_SPACE2 (24) 391*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2I_VSIZE (DOUBLEHD_576X2I_FRAME_VSIZE*2+DOUBLEHD_576X2I_VACT_SPACE1*2+DOUBLEHD_576X2I_VACT_SPACE2) 392*53ee8cc1Swenshuai.xi 393*53ee8cc1Swenshuai.xi 394*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_FRAME_VSIZE (480) 395*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_FIELD_VSIZE (240) 396*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) ||defined(UFO_PUBLIC_HEADER_500_3) ||defined(UFO_PUBLIC_HEADER_700) 397*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_HSIZE (720) 398*53ee8cc1Swenshuai.xi #else 399*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_HSIZE (1440) 400*53ee8cc1Swenshuai.xi #endif 401*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_VACT_SPACE1 (23) 402*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_VACT_SPACE2 (22) 403*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2I_VSIZE (DOUBLEHD_480X2I_FRAME_VSIZE*2+DOUBLEHD_480X2I_VACT_SPACE1*2+DOUBLEHD_480X2I_VACT_SPACE2) 404*53ee8cc1Swenshuai.xi 405*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_VSIZE (2205) 406*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_FRAME_VSIZE (1080) 407*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_HSIZE (1920) 408*53ee8cc1Swenshuai.xi #define DOUBLEHD_1080X2P_GARBAGE_VSIZE (45) 409*53ee8cc1Swenshuai.xi 410*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_VSIZE (1470) 411*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_FRAME_VSIZE (720) 412*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_HSIZE (1280) 413*53ee8cc1Swenshuai.xi #define DOUBLEHD_720X2P_GARBAGE_VSIZE (30) 414*53ee8cc1Swenshuai.xi 415*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_VSIZE (1201) 416*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_FRAME_VSIZE (576) 417*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_HSIZE (720) 418*53ee8cc1Swenshuai.xi #define DOUBLEHD_576X2P_GARBAGE_VSIZE (49) 419*53ee8cc1Swenshuai.xi 420*53ee8cc1Swenshuai.xi //720X480p 421*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_VSIZE (1005) 422*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_FRAME_VSIZE (480) 423*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_HSIZE (720) 424*53ee8cc1Swenshuai.xi #define DOUBLEHD_480X2P_GARBAGE_VSIZE (45) 425*53ee8cc1Swenshuai.xi 426*53ee8cc1Swenshuai.xi //640X480p 427*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_VSIZE (1005) 428*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_FRAME_VSIZE (480) 429*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_HSIZE (640) 430*53ee8cc1Swenshuai.xi #define DOUBLEHD_640_480X2P_GARBAGE_VSIZE (45) 431*53ee8cc1Swenshuai.xi 432*53ee8cc1Swenshuai.xi #define DOUBLEHD_288X2P_VSIZE (600) 433*53ee8cc1Swenshuai.xi #define DOUBLEHD_288X2P_FRAME_VSIZE (288) 434*53ee8cc1Swenshuai.xi #define DOUBLEHD_288X2P_HSIZE (1440) 435*53ee8cc1Swenshuai.xi #define DOUBLEHD_288X2P_GARBAGE_VSIZE (24) 436*53ee8cc1Swenshuai.xi 437*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_VSIZE (502) 438*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_FRAME_VSIZE (240) 439*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_HSIZE (1440) 440*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_GARBAGE_VSIZE (22) 441*53ee8cc1Swenshuai.xi 442*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_1_VSIZE (503) 443*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_1_FRAME_VSIZE (240) 444*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_1_HSIZE (1440) 445*53ee8cc1Swenshuai.xi #define DOUBLEHD_240X2P_1_GARBAGE_VSIZE (23) 446*53ee8cc1Swenshuai.xi 447*53ee8cc1Swenshuai.xi // Field Interleave 448*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE (1080) 449*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_FIELD_VISZE (540) 450*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_HISZE (1920) 451*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_VACT_SPACE (23) 452*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_1080X2I_VISZE (FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE+FIELD_INTERLEAVE_1080X2I_VACT_SPACE) 453*53ee8cc1Swenshuai.xi 454*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_576X2I_FRAME_VSIZE (576) 455*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_576X2I_FIELD_VISZE (288) 456*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_576X2I_HISZE (1440) 457*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_576X2I_VACT_SPACE (25) 458*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_576X2I_VISZE (FIELD_INTERLEAVE_576X2I_FRAME_VSIZE+FIELD_INTERLEAVE_576X2I_VACT_SPACE) 459*53ee8cc1Swenshuai.xi 460*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_480X2I_FRAME_VSIZE (480) 461*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_480X2I_FIELD_VISZE (240) 462*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_480X2I_HISZE (1440) 463*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_480X2I_VACT_SPACE (23) 464*53ee8cc1Swenshuai.xi #define FIELD_INTERLEAVE_480X2I_VISZE (FIELD_INTERLEAVE_480X2I_FRAME_VSIZE+FIELD_INTERLEAVE_480X2I_VACT_SPACE) 465*53ee8cc1Swenshuai.xi 466*53ee8cc1Swenshuai.xi ///< When disable panel_info_ex, this means disable all valid panel info 467*53ee8cc1Swenshuai.xi #define PANEL_INFO_EX_INVALID_ALL 0xFFFF 468*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 469*53ee8cc1Swenshuai.xi // Type and Structure 470*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 471*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 472*53ee8cc1Swenshuai.xi INTERFACE void* pu32XC_Kernel_Inst; 473*53ee8cc1Swenshuai.xi #endif 474*53ee8cc1Swenshuai.xi //---------------------------- 475*53ee8cc1Swenshuai.xi // Common 476*53ee8cc1Swenshuai.xi //---------------------------- 477*53ee8cc1Swenshuai.xi 478*53ee8cc1Swenshuai.xi /// Define mute type 479*53ee8cc1Swenshuai.xi #ifdef UFO_XC_FORCEWRITE_V2 480*53ee8cc1Swenshuai.xi typedef enum 481*53ee8cc1Swenshuai.xi { 482*53ee8cc1Swenshuai.xi E_BACKEND_MUTE = 1, ///< Backend mute 483*53ee8cc1Swenshuai.xi E_MUTE_MAX 484*53ee8cc1Swenshuai.xi }EN_MUTE_TYPE; 485*53ee8cc1Swenshuai.xi #else 486*53ee8cc1Swenshuai.xi typedef enum 487*53ee8cc1Swenshuai.xi { 488*53ee8cc1Swenshuai.xi E_MAIN_WINDOW_MUTE =0, ///< main window mute 489*53ee8cc1Swenshuai.xi E_SUB_WINDOW_MUTE =1, ///< sub window mute 490*53ee8cc1Swenshuai.xi E_PANEL_MUTE = 2 ///< panel mute 491*53ee8cc1Swenshuai.xi }EN_MUTE_TYPE; 492*53ee8cc1Swenshuai.xi #endif 493*53ee8cc1Swenshuai.xi 494*53ee8cc1Swenshuai.xi typedef enum 495*53ee8cc1Swenshuai.xi { 496*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL_FB, // frame buff mode 497*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL_FBL, // same as fbl,not use miu 498*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL_RFBL_DI, // use miu to deinterlace 499*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL_NUM, // number 500*53ee8cc1Swenshuai.xi } E_XC_FB_LEVEL; 501*53ee8cc1Swenshuai.xi 502*53ee8cc1Swenshuai.xi /// Define window type 503*53ee8cc1Swenshuai.xi typedef enum 504*53ee8cc1Swenshuai.xi { 505*53ee8cc1Swenshuai.xi MAIN_WINDOW=0, ///< main window if with PIP or without PIP 506*53ee8cc1Swenshuai.xi SUB_WINDOW=1, ///< sub window if PIP 507*53ee8cc1Swenshuai.xi MAX_WINDOW /// The max support window 508*53ee8cc1Swenshuai.xi }SCALER_WIN; 509*53ee8cc1Swenshuai.xi 510*53ee8cc1Swenshuai.xi #define PIP_WINDOWS MAX_WINDOW 511*53ee8cc1Swenshuai.xi 512*53ee8cc1Swenshuai.xi /// Define Window position and size attribute 513*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 514*53ee8cc1Swenshuai.xi { 515*53ee8cc1Swenshuai.xi MS_U16 x; ///<start x of the window 516*53ee8cc1Swenshuai.xi MS_U16 y; ///<start y of the window 517*53ee8cc1Swenshuai.xi MS_U16 width; ///<width of the window 518*53ee8cc1Swenshuai.xi MS_U16 height; ///<height of the window 519*53ee8cc1Swenshuai.xi } MS_WINDOW_TYPE; 520*53ee8cc1Swenshuai.xi #ifdef UFO_PUBLIC_HEADER_212 521*53ee8cc1Swenshuai.xi typedef enum 522*53ee8cc1Swenshuai.xi { 523*53ee8cc1Swenshuai.xi SCAN_AUTO = 0, 524*53ee8cc1Swenshuai.xi SCAN_PROGRESSIVE = SCAN_AUTO, 525*53ee8cc1Swenshuai.xi SCAN_INTERLACE = 1 526*53ee8cc1Swenshuai.xi }EN_VIDEO_SCAN_TYPE; 527*53ee8cc1Swenshuai.xi #endif 528*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 529*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 530*53ee8cc1Swenshuai.xi // This is abstract input source for XC library. If you want to add another one. 531*53ee8cc1Swenshuai.xi // Please contace with XC member 532*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 533*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 534*53ee8cc1Swenshuai.xi { 535*53ee8cc1Swenshuai.xi MS_U32 u32EnablePort; 536*53ee8cc1Swenshuai.xi MS_U32 u32Port[2]; 537*53ee8cc1Swenshuai.xi } XC_MUX_INPUTSRCTABLE; 538*53ee8cc1Swenshuai.xi /// Define Input type 539*53ee8cc1Swenshuai.xi typedef enum 540*53ee8cc1Swenshuai.xi { 541*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA, ///<0 VGA input 542*53ee8cc1Swenshuai.xi INPUT_SOURCE_TV, ///<1 TV input 543*53ee8cc1Swenshuai.xi 544*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS, ///<2 AV 1 545*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS2, ///<3 AV 2 546*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS3, ///<4 AV 3 547*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS4, ///<5 AV 4 548*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS5, ///<6 AV 5 549*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS6, ///<7 AV 6 550*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS7, ///<8 AV 7 551*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS8, ///<9 AV 8 552*53ee8cc1Swenshuai.xi INPUT_SOURCE_CVBS_MAX, ///<10 AV max 553*53ee8cc1Swenshuai.xi 554*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO, ///<11 S-video 1 555*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO2, ///<12 S-video 2 556*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO3, ///<13 S-video 3 557*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO4, ///<14 S-video 4 558*53ee8cc1Swenshuai.xi INPUT_SOURCE_SVIDEO_MAX, ///<15 S-video max 559*53ee8cc1Swenshuai.xi 560*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR, ///<16 Component 1 561*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR2, ///<17 Component 2 562*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR3, ///<18 Component 3 563*53ee8cc1Swenshuai.xi INPUT_SOURCE_YPBPR_MAX, ///<19 Component max 564*53ee8cc1Swenshuai.xi 565*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART, ///<20 Scart 1 566*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART2, ///<21 Scart 2 567*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCART_MAX, ///<22 Scart max 568*53ee8cc1Swenshuai.xi 569*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI, ///<23 HDMI 1 570*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI2, ///<24 HDMI 2 571*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI3, ///<25 HDMI 3 572*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI4, ///<26 HDMI 4 573*53ee8cc1Swenshuai.xi INPUT_SOURCE_HDMI_MAX, ///<27 HDMI max 574*53ee8cc1Swenshuai.xi 575*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV, ///<28 DTV 576*53ee8cc1Swenshuai.xi 577*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI, ///<29 DVI 1 578*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI2, ///<30 DVI 2 579*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI3, ///<31 DVI 2 580*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI4, ///<32 DVI 4 581*53ee8cc1Swenshuai.xi INPUT_SOURCE_DVI_MAX, ///<33 DVI max 582*53ee8cc1Swenshuai.xi 583*53ee8cc1Swenshuai.xi // Application source 584*53ee8cc1Swenshuai.xi INPUT_SOURCE_STORAGE, ///<34 Storage 585*53ee8cc1Swenshuai.xi INPUT_SOURCE_KTV, ///<35 KTV 586*53ee8cc1Swenshuai.xi INPUT_SOURCE_JPEG, ///<36 JPEG 587*53ee8cc1Swenshuai.xi 588*53ee8cc1Swenshuai.xi //Support Dual MVOP port 589*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV2, ///<37 DTV 590*53ee8cc1Swenshuai.xi INPUT_SOURCE_STORAGE2, ///<38 Storage 591*53ee8cc1Swenshuai.xi 592*53ee8cc1Swenshuai.xi //Support Third MVOP port 593*53ee8cc1Swenshuai.xi INPUT_SOURCE_DTV3, ///<39 DTV 594*53ee8cc1Swenshuai.xi 595*53ee8cc1Swenshuai.xi // Support OP capture 596*53ee8cc1Swenshuai.xi INPUT_SOURCE_SCALER_OP, ///<40 scaler OP 597*53ee8cc1Swenshuai.xi 598*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA2, /// <41 VGA2 599*53ee8cc1Swenshuai.xi INPUT_SOURCE_VGA3, /// <42 VGA3 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi INPUT_SOURCE_NUM, ///<43 number of the source 602*53ee8cc1Swenshuai.xi INPUT_SOURCE_NONE = INPUT_SOURCE_NUM, ///<NULL input 603*53ee8cc1Swenshuai.xi } INPUT_SOURCE_TYPE_t; 604*53ee8cc1Swenshuai.xi 605*53ee8cc1Swenshuai.xi #define IsSrcTypeAV(x) (((x)>=INPUT_SOURCE_CVBS)&&((x)<=INPUT_SOURCE_CVBS_MAX))/// x is AV 606*53ee8cc1Swenshuai.xi #define IsSrcTypeSV(x) (((x)>=INPUT_SOURCE_SVIDEO)&&((x)<=INPUT_SOURCE_SVIDEO_MAX))///< x is SV 607*53ee8cc1Swenshuai.xi #define IsSrcTypeATV(x) ((x)==INPUT_SOURCE_TV)///< x is ATV 608*53ee8cc1Swenshuai.xi #define IsSrcTypeScart(x) (((x)>=INPUT_SOURCE_SCART)&&((x)<=INPUT_SOURCE_SCART_MAX))///< x is Scart 609*53ee8cc1Swenshuai.xi #define IsSrcTypeHDMI(x) (((x)>=INPUT_SOURCE_HDMI)&&((x)<=INPUT_SOURCE_HDMI_MAX))///< x is HDMI 610*53ee8cc1Swenshuai.xi #define IsSrcTypeVga(x) (((x)==INPUT_SOURCE_VGA) || ((x)==INPUT_SOURCE_VGA2) || ((x)==INPUT_SOURCE_VGA3))///< x is VGA 611*53ee8cc1Swenshuai.xi #define IsSrcTypeYPbPr(x) (((x)>=INPUT_SOURCE_YPBPR)&&((x)<=INPUT_SOURCE_YPBPR_MAX))///< x is YPbPr 612*53ee8cc1Swenshuai.xi #define IsSrcTypeDTV(x) (((x)==INPUT_SOURCE_DTV) || ((x)==INPUT_SOURCE_DTV2) || ((x)==INPUT_SOURCE_DTV3))///< x is DTV 613*53ee8cc1Swenshuai.xi #define IsSrcTypeDVI(x) (((x)>=INPUT_SOURCE_DVI)&&((x)<=INPUT_SOURCE_DVI_MAX))///< x is DVI 614*53ee8cc1Swenshuai.xi #define IsSrcTypeJpeg(x) ((x)==INPUT_SOURCE_JPEG)///< x is JPEG 615*53ee8cc1Swenshuai.xi #define IsSrcTypeStorage(x) (((x)==INPUT_SOURCE_STORAGE) || ((x)==INPUT_SOURCE_STORAGE2) ||IsSrcTypeJpeg(x))///< x is Storage 616*53ee8cc1Swenshuai.xi #define IsSrcTypeDigitalVD(x) ( IsSrcTypeAV(x)||IsSrcTypeSV(x)||IsSrcTypeATV(x)||IsSrcTypeScart(x))///< x is VD 617*53ee8cc1Swenshuai.xi #define IsSrcTypeAnalog(x) ( IsSrcTypeVga(x)|| IsSrcTypeYPbPr(x))///< x is Analog 618*53ee8cc1Swenshuai.xi #define IsSrcTypeVideo(x) ( IsSrcTypeYPbPr(x) || IsSrcTypeATV(x) || IsSrcTypeAV(x) || IsSrcTypeSV(x) || IsSrcTypeScart(x) || IsSrcTypeDTV(x) ) ///< x is Video 619*53ee8cc1Swenshuai.xi #define IsSrcTypeCapture(x) ((x)==INPUT_SOURCE_SCALER_OP)///< x is scaler OP 620*53ee8cc1Swenshuai.xi 621*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 622*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 623*53ee8cc1Swenshuai.xi // This is abstract output source for XC library. If you want to add another one. 624*53ee8cc1Swenshuai.xi // Please contace with XC member 625*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 626*53ee8cc1Swenshuai.xi 627*53ee8cc1Swenshuai.xi /// Define output type 628*53ee8cc1Swenshuai.xi typedef enum 629*53ee8cc1Swenshuai.xi { 630*53ee8cc1Swenshuai.xi OUTPUT_NONE = 0, ///<NULL output 631*53ee8cc1Swenshuai.xi OUTPUT_SCALER_MAIN_WINDOW = 1, ///<output to Scaler main window 632*53ee8cc1Swenshuai.xi OUTPUT_SCALER2_MAIN_WINDOW = 2, 633*53ee8cc1Swenshuai.xi 634*53ee8cc1Swenshuai.xi OUTPUT_SCALER_SUB_WINDOW = 10, ///<output to Scaler sub window 635*53ee8cc1Swenshuai.xi OUTPUT_SCALER2_SUB_WINDOW = 11, 636*53ee8cc1Swenshuai.xi 637*53ee8cc1Swenshuai.xi OUTPUT_CVBS1 = 20, ///<output to CVBS1 638*53ee8cc1Swenshuai.xi OUTPUT_CVBS2, ///<output to CVBS2 639*53ee8cc1Swenshuai.xi // Reserved area 640*53ee8cc1Swenshuai.xi 641*53ee8cc1Swenshuai.xi OUTPUT_YPBPR0 = 40, ///<output to YPBPR0 642*53ee8cc1Swenshuai.xi OUTPUT_YPBPR1, ///<output to YPBPR1 643*53ee8cc1Swenshuai.xi // Reserved area 644*53ee8cc1Swenshuai.xi 645*53ee8cc1Swenshuai.xi OUTPUT_HDMI1 = 60, ///<output to HDMI1 646*53ee8cc1Swenshuai.xi OUTPUT_HDMI2, ///<output to HDMI2 647*53ee8cc1Swenshuai.xi 648*53ee8cc1Swenshuai.xi OUTPUT_OFFLINE_DETECT = 80, ///<output to OFFLINE detect 649*53ee8cc1Swenshuai.xi 650*53ee8cc1Swenshuai.xi OUTPUT_SCALER_DWIN = 100, ///<output to Dwin 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi OUTPUT_NUM, ///<number of outputs 653*53ee8cc1Swenshuai.xi }E_DEST_TYPE; 654*53ee8cc1Swenshuai.xi 655*53ee8cc1Swenshuai.xi 656*53ee8cc1Swenshuai.xi /// Define DeInterlace mode 657*53ee8cc1Swenshuai.xi typedef enum 658*53ee8cc1Swenshuai.xi { 659*53ee8cc1Swenshuai.xi 660*53ee8cc1Swenshuai.xi MS_DEINT_OFF=0, ///<deinterlace mode off 661*53ee8cc1Swenshuai.xi MS_DEINT_2DDI_BOB, ///<deinterlace mode: BOB 662*53ee8cc1Swenshuai.xi MS_DEINT_2DDI_AVG, ///<deinterlace mode: AVG 663*53ee8cc1Swenshuai.xi MS_DEINT_3DDI_HISTORY, ///<deinterlace mode: HISTORY // 24 bit 664*53ee8cc1Swenshuai.xi MS_DEINT_3DDI, ///<deinterlace mode:3DDI// 16 bit 665*53ee8cc1Swenshuai.xi } MS_DEINTERLACE_MODE; 666*53ee8cc1Swenshuai.xi 667*53ee8cc1Swenshuai.xi 668*53ee8cc1Swenshuai.xi /// Define the members of IP Sync Status 669*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 670*53ee8cc1Swenshuai.xi { 671*53ee8cc1Swenshuai.xi MS_U8 u8SyncStatus; ///< IP Sync status: refer to MD_VSYNC_POR_BIT, etc 672*53ee8cc1Swenshuai.xi MS_U16 u16Hperiod; ///<H Period 673*53ee8cc1Swenshuai.xi MS_U16 u16Vtotal; ///<Vertcal total 674*53ee8cc1Swenshuai.xi } XC_IP_SYNC_STATUS; 675*53ee8cc1Swenshuai.xi 676*53ee8cc1Swenshuai.xi typedef enum 677*53ee8cc1Swenshuai.xi { 678*53ee8cc1Swenshuai.xi CMA_XC_SELF_MEM = 0, 679*53ee8cc1Swenshuai.xi CMA_XC_COBUFF_MEM = 1, 680*53ee8cc1Swenshuai.xi CMA_XC_MEM_NUM = 2, 681*53ee8cc1Swenshuai.xi } XC_CMA_CLIENT; 682*53ee8cc1Swenshuai.xi 683*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 684*53ee8cc1Swenshuai.xi { 685*53ee8cc1Swenshuai.xi MS_U32 u32HeapID; 686*53ee8cc1Swenshuai.xi MS_U64 u64AddrHeapOffset; 687*53ee8cc1Swenshuai.xi } XC_CMA_CONFIG; 688*53ee8cc1Swenshuai.xi 689*53ee8cc1Swenshuai.xi /// Define Freerun color 690*53ee8cc1Swenshuai.xi typedef enum 691*53ee8cc1Swenshuai.xi { 692*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_BLACK, 693*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_WHITE, 694*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_BLUE, 695*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_RED, 696*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_GREEN, 697*53ee8cc1Swenshuai.xi E_XC_FREE_RUN_COLOR_MAX, 698*53ee8cc1Swenshuai.xi } XC_FREERUN_COLOR; 699*53ee8cc1Swenshuai.xi 700*53ee8cc1Swenshuai.xi /// Define which panel output timing change mode is used to change VFreq for same panel 701*53ee8cc1Swenshuai.xi typedef enum 702*53ee8cc1Swenshuai.xi { 703*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_DCLK = 0, ///<change output DClk to change Vfreq. 704*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_HTOTAL = 1, ///<change H total to change Vfreq. 705*53ee8cc1Swenshuai.xi E_XC_PNL_CHG_VTOTAL = 2, ///<change V total to change Vfreq. 706*53ee8cc1Swenshuai.xi } E_XC_PNL_OUT_TIMING_MODE; 707*53ee8cc1Swenshuai.xi 708*53ee8cc1Swenshuai.xi typedef enum 709*53ee8cc1Swenshuai.xi { 710*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TTL, ///< TTL type 711*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_LVDS, ///< LVDS type 712*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_RSDS, ///< RSDS type 713*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS, ///< TCON //E_XC_PNL_LPLL_MINILVDS_6P_2Link 714*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_ANALOG_MINILVDS, ///< Analog TCON 715*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DIGITAL_MINILVDS, ///< Digital TCON 716*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MFC, ///< Ursa (TTL output to Ursa) 717*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DAC_I, ///< DAC output 718*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_DAC_P, ///< DAC output 719*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_PDPLVDS, ///< For PDP(Vsync use Manually MODE) 720*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EXT, 721*53ee8cc1Swenshuai.xi }E_XC_PNL_LPLL_TYPE; 722*53ee8cc1Swenshuai.xi 723*53ee8cc1Swenshuai.xi 724*53ee8cc1Swenshuai.xi typedef enum 725*53ee8cc1Swenshuai.xi { 726*53ee8cc1Swenshuai.xi 727*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_8P = E_XC_PNL_LPLL_EXT, 728*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_8P, 729*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_6P, 730*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_6P, 731*53ee8cc1Swenshuai.xi 732*53ee8cc1Swenshuai.xi ///< replace this with E_XC_PNL_LPLL_MINILVD 733*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_5P_2L, 734*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_4P_2L, 735*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_3P_2L, 736*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_6P_1L, 737*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_5P_1L, 738*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_4P_1L, 739*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_3P_1L, 740*53ee8cc1Swenshuai.xi 741*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HS_LVDS, ///< High speed LVDS 742*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HF_LVDS, ///< High Freqquency LVDS 743*53ee8cc1Swenshuai.xi 744*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TTL_TCON, 745*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_3P_8BIT, ///< 2 channel, 3 pair, 8 bits 746*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_4P_8BIT, ///< 2 channel, 4 pair, 8 bits 747*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_5P_8BIT, ///< 2 channel, 5 pair, 8 bits 748*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_6P_8BIT, ///< 2 channel, 6 pair, 8 bits 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_3P_8BIT, ///< 1 channel, 3 pair, 8 bits 751*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_4P_8BIT, ///< 1 channel, 4 pair, 8 bits 752*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_5P_8BIT, ///< 1 channel, 5 pair, 8 bits 753*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_6P_8BIT, ///< 1 channel, 6 pair, 8 bits 754*53ee8cc1Swenshuai.xi 755*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_3P_6BIT, ///< 2 channel, 3 pari, 6 bits 756*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_4P_6BIT, ///< 2 channel, 4 pari, 6 bits 757*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_5P_6BIT, ///< 2 channel, 5 pari, 6 bits 758*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_2CH_6P_6BIT, ///< 2 channel, 6 pari, 6 bits 759*53ee8cc1Swenshuai.xi 760*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_3P_6BIT, ///< 1 channel, 3 pair, 6 bits 761*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_4P_6BIT, ///< 1 channel, 4 pair, 6 bits 762*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_5P_6BIT, ///< 1 channel, 5 pair, 6 bits 763*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_MINILVDS_1CH_6P_6BIT, ///< 1 channel, 6 pair, 6 bits 764*53ee8cc1Swenshuai.xi 765*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HDMI_BYPASS_MODE, //40 // HDMI Bypass Mode 766*53ee8cc1Swenshuai.xi 767*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_2P, /// 41 768*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI34_4P, /// 42 769*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_2P, /// 43 770*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_4P, /// 44 771*53ee8cc1Swenshuai.xi 772*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_4LANE, ///45 773*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_2LANE, ///46 774*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_1LANE, ///47 775*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_4LANE, ///48 776*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_2LANE, ///49 777*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_1LANE, ///50 778*53ee8cc1Swenshuai.xi 779*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_8LANE, ///51 780*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_8LANE, ///52 781*53ee8cc1Swenshuai.xi 782*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI28_12P, /// 53 783*53ee8cc1Swenshuai.xi 784*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_HS_LVDS_BYPASS_MODE, ///54 785*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_4LANE_BYPASS_MODE, ///55 786*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_4LANE_BYPASS_MODE, ///56 787*53ee8cc1Swenshuai.xi 788*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_10BIT_16LANE, //57 789*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_VBY1_8BIT_16LANE, //58 790*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_EPI24_12P, //59 791*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_USI_T_8BIT_12P, //60 792*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_USI_T_10BIT_12P, //61 793*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_ISP_8BIT_12P, //62 794*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_ISP_8BIT_6P_D, //63 795*53ee8cc1Swenshuai.xi 796*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TYPE_MAX, 797*53ee8cc1Swenshuai.xi }E_XC_PNL_LPLL_EXT_TYPE; 798*53ee8cc1Swenshuai.xi 799*53ee8cc1Swenshuai.xi typedef enum 800*53ee8cc1Swenshuai.xi { 801*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_SINGLE = 0, ///< single channel 802*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_DUAL = 1, ///< dual channel 803*53ee8cc1Swenshuai.xi 804*53ee8cc1Swenshuai.xi E_XC_MOD_OUTPUT_QUAD = 2, ///< quad channel 805*53ee8cc1Swenshuai.xi 806*53ee8cc1Swenshuai.xi } E_XC_OUTPUT_MODE; 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi typedef enum 809*53ee8cc1Swenshuai.xi { 810*53ee8cc1Swenshuai.xi VFREQ_50HZ = 0x00, 811*53ee8cc1Swenshuai.xi VFREQ_60HZ = 0x01, 812*53ee8cc1Swenshuai.xi VFREQ_FROM_SRC = 0x02, 813*53ee8cc1Swenshuai.xi VFREQ_FROM_PANEL = 0x03, 814*53ee8cc1Swenshuai.xi } E_VFREQ_SEL; 815*53ee8cc1Swenshuai.xi 816*53ee8cc1Swenshuai.xi /// Sources to VE 817*53ee8cc1Swenshuai.xi typedef enum 818*53ee8cc1Swenshuai.xi { 819*53ee8cc1Swenshuai.xi E_XC_NONE =0x00, 820*53ee8cc1Swenshuai.xi E_XC_IP = 0x01, ///< Scaler IP 821*53ee8cc1Swenshuai.xi E_XC_VOP2 = 0x02, ///< Scaler VOP2 822*53ee8cc1Swenshuai.xi E_XC_BRI = 0x04, ///< Scaler BRI 823*53ee8cc1Swenshuai.xi 824*53ee8cc1Swenshuai.xi /// Please use this for OSD OP video capture!!! 825*53ee8cc1Swenshuai.xi E_XC_OP2 = 0x08, ///< Scaler OP2 - After Blending with OSD 826*53ee8cc1Swenshuai.xi E_XC_GAM = 0x10, ///< Scaler Gamma - Without Blending with OSD 827*53ee8cc1Swenshuai.xi E_XC_DITHER = 0x20, ///< Scaler noise dither - Without Blending with OSD 828*53ee8cc1Swenshuai.xi 829*53ee8cc1Swenshuai.xi /// Please use this for non-OSD OP video capture!!! 830*53ee8cc1Swenshuai.xi E_XC_OVERLAP = 0x40, ///< Scaler color overlap - Without Blending with OSD 831*53ee8cc1Swenshuai.xi E_XC_IP_SUB = 0x80, ///< Scaler IP of sub window 832*53ee8cc1Swenshuai.xi }E_XC_SOURCE_TO_VE; 833*53ee8cc1Swenshuai.xi 834*53ee8cc1Swenshuai.xi ///Port connect to pin 8 of SCART 835*53ee8cc1Swenshuai.xi typedef enum 836*53ee8cc1Swenshuai.xi { 837*53ee8cc1Swenshuai.xi E_XC_SCARTID_NONE = 0x00, ///< No connection 838*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC0 = 0x01, ///< Pin 8 of SCART connects to Hsync 0 839*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC1 = 0x02, ///< Pin 8 of SCART connects to Hsync 1 840*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_HSYNC2 = 0x04, ///< Pin 8 of SCART connects to Hsync 2 841*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG0 = 0x08, ///< Pin 8 of SCART connects to SOG0 842*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG1 = 0x10, ///< Pin 8 of SCART connects to SOG1 843*53ee8cc1Swenshuai.xi E_XC_SCARTID_TO_SOG2 = 0x20, ///< Pin 8 of SCART connects to SOG2 844*53ee8cc1Swenshuai.xi }E_XC_SCART_ID_PORT; 845*53ee8cc1Swenshuai.xi 846*53ee8cc1Swenshuai.xi /// Items for query driver or H/W capability. 847*53ee8cc1Swenshuai.xi typedef enum 848*53ee8cc1Swenshuai.xi { 849*53ee8cc1Swenshuai.xi E_XC_SUPPORT_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 850*53ee8cc1Swenshuai.xi 851*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DVI_AUTO_EQ = 0x00000005, ///< return true if driver support Auto EQ. 852*53ee8cc1Swenshuai.xi 853*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FRC_INSIDE = 0x00000100, ///< return true if scaler driver support FRC (MFC) function. 854*53ee8cc1Swenshuai.xi 855*53ee8cc1Swenshuai.xi }E_XC_CAPABILITY; 856*53ee8cc1Swenshuai.xi 857*53ee8cc1Swenshuai.xi typedef enum 858*53ee8cc1Swenshuai.xi { 859*53ee8cc1Swenshuai.xi E_XC_SR_MODE_BASIC = 0x00000001, ///< basic SuperResolution 860*53ee8cc1Swenshuai.xi E_XC_SR_MODE_ADVANCED = 0x00000002, ///< advanced SuperResolution 861*53ee8cc1Swenshuai.xi }E_XC_SR_MODE; 862*53ee8cc1Swenshuai.xi 863*53ee8cc1Swenshuai.xi typedef enum 864*53ee8cc1Swenshuai.xi { 865*53ee8cc1Swenshuai.xi E_XC_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 866*53ee8cc1Swenshuai.xi 867*53ee8cc1Swenshuai.xi E_XC_DVI_AUTO_EQ = 0x00000002, ///< return true if driver support Auto EQ. 868*53ee8cc1Swenshuai.xi 869*53ee8cc1Swenshuai.xi E_XC_FRC_INSIDE = 0x00000004, ///< return true if scaler driver support FRC (MFC) function. 870*53ee8cc1Swenshuai.xi 871*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_CAPS = 0x00000008, ///< return dip chip caps. 872*53ee8cc1Swenshuai.xi 873*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 874*53ee8cc1Swenshuai.xi 875*53ee8cc1Swenshuai.xi E_XC_HW_SEAMLESS_ZAPPING = 0x00000020, ///< return true if H/W support seamless zapping 876*53ee8cc1Swenshuai.xi 877*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DEVICE1 = 0x00000040, ///< return true if H/W support scaler device1 878*53ee8cc1Swenshuai.xi 879*53ee8cc1Swenshuai.xi E_XC_SUPPORT_DETECT3D_IN3DMODE = 0x00000080, ///< return true if H/W support detecting 3d when already in 3d mode 880*53ee8cc1Swenshuai.xi 881*53ee8cc1Swenshuai.xi E_XC_2DTO3D_VERSION = 0x00000100, ///< return value 2D-to-3D version 882*53ee8cc1Swenshuai.xi 883*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FORCE_VSP_IN_DS_MODE = 0x00000200, ///< return if H/W support force post-Vscalin-down in DS mode 884*53ee8cc1Swenshuai.xi 885*53ee8cc1Swenshuai.xi E_XC_SUPPORT_FRCM_MODE = 0x00000400, ///< return if H/W support frcm 886*53ee8cc1Swenshuai.xi 887*53ee8cc1Swenshuai.xi E_XC_SUPPORT_INTERLACE_OUT = 0x00000800, ///< return if H/W supports interlace output timing 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xi E_XC_SUPPORT_4K2K_WITH_PIP = 0x00001000, ///< return if H/W supports output is 4k2k and open pip 890*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 891*53ee8cc1Swenshuai.xi E_XC_HW_4K2K_VIP_PEAKING_LIMITATION = 0x00002000, ///return if H/W has vip peaking limitation 892*53ee8cc1Swenshuai.xi #else 893*53ee8cc1Swenshuai.xi E_XC_SUPPORT_4K2K_60P = 0x00002000, ///< return if H/W supports output is 4k2k_60P timing 894*53ee8cc1Swenshuai.xi #endif 895*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 896*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_SOURCESEL = 0x00004000, ///< return if H/W supports output is 4k2k_60P timing 897*53ee8cc1Swenshuai.xi #else 898*53ee8cc1Swenshuai.xi E_XC_SUPPORT_PIP_PATCH_USING_SC1_MAIN_AS_SC0_SUB = 0x00004000,///<return if sc1 suport PIP 899*53ee8cc1Swenshuai.xi #endif 900*53ee8cc1Swenshuai.xi 901*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 902*53ee8cc1Swenshuai.xi //empty 903*53ee8cc1Swenshuai.xi #else 904*53ee8cc1Swenshuai.xi E_XC_HW_4K2K_VIP_PEAKING_LIMITATION = 0x00008000, ///return if H/W has vip peaking limitation 905*53ee8cc1Swenshuai.xi #endif 906*53ee8cc1Swenshuai.xi 907*53ee8cc1Swenshuai.xi #if defined(UFO_XC_AUTO_DOWNLOAD) 908*53ee8cc1Swenshuai.xi E_XC_SUPPORT_AUTODOWNLOAD_CLIENT = 0x00010000, ///return whether the client is supported, refer to XC_AUTODOWNLOAD_CLIENT_SUPPORTED_CAPS 909*53ee8cc1Swenshuai.xi #endif 910*53ee8cc1Swenshuai.xi 911*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR 912*53ee8cc1Swenshuai.xi E_XC_SUPPORT_HDR = 0x00020000, ///return whether HDR is supported, refer to XC_HDR_SUPPORTED_CAPS 913*53ee8cc1Swenshuai.xi #endif 914*53ee8cc1Swenshuai.xi 915*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 916*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_WINDOWBUS = 0x00040000, ///< return DIP window bus length 917*53ee8cc1Swenshuai.xi #else 918*53ee8cc1Swenshuai.xi E_XC_SUPPORT_3D_DS = 0x00040000, ///return whether 3D DS is supported 919*53ee8cc1Swenshuai.xi #endif 920*53ee8cc1Swenshuai.xi 921*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 922*53ee8cc1Swenshuai.xi E_XC_SCALING_LIMITATION = 0x00080000, ///return whether scaling is supported 923*53ee8cc1Swenshuai.xi #else 924*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_SOURCESEL = 0x00080000, ///< return if H/W supports output is 4k2k_60P timing 925*53ee8cc1Swenshuai.xi #endif 926*53ee8cc1Swenshuai.xi 927*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 928*53ee8cc1Swenshuai.xi //empty 929*53ee8cc1Swenshuai.xi #else 930*53ee8cc1Swenshuai.xi E_XC_DIP_CHIP_WINDOWBUS = 0x00100000, ///< return DIP window bus length 931*53ee8cc1Swenshuai.xi #endif 932*53ee8cc1Swenshuai.xi 933*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 934*53ee8cc1Swenshuai.xi //empty 935*53ee8cc1Swenshuai.xi #else 936*53ee8cc1Swenshuai.xi E_XC_SCALING_LIMITATION = 0x00800000, ///return whether scaling is supported 937*53ee8cc1Swenshuai.xi #endif 938*53ee8cc1Swenshuai.xi 939*53ee8cc1Swenshuai.xi E_XC_FB_CAPS_GET_FB_LEVEL = 0x01000000,//get fb caps 940*53ee8cc1Swenshuai.xi 941*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 942*53ee8cc1Swenshuai.xi E_XC_SUPPORT_4K2K_60P = 0x02000000, ///< return if H/W supports output is 4k2k_60P timing 943*53ee8cc1Swenshuai.xi #endif 944*53ee8cc1Swenshuai.xi 945*53ee8cc1Swenshuai.xi }E_XC_CAPS; 946*53ee8cc1Swenshuai.xi 947*53ee8cc1Swenshuai.xi typedef enum 948*53ee8cc1Swenshuai.xi { 949*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_MVOP, 950*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_SCALER, 951*53ee8cc1Swenshuai.xi E_XC_DS_INDEX_MAX, 952*53ee8cc1Swenshuai.xi }E_XC_DS_INDEX_SOURCE; 953*53ee8cc1Swenshuai.xi 954*53ee8cc1Swenshuai.xi typedef enum 955*53ee8cc1Swenshuai.xi { 956*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_2K1K, 957*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_4K2K, 958*53ee8cc1Swenshuai.xi E_XC_FRC_InputTiming_MAX, 959*53ee8cc1Swenshuai.xi }E_XC_FRC_InputTiming; 960*53ee8cc1Swenshuai.xi 961*53ee8cc1Swenshuai.xi typedef enum 962*53ee8cc1Swenshuai.xi { 963*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_MAIN_WINDOW = 0x0001, 964*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_SUB_WINDOW = 0x0002, 965*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_REPORT_WINDOW = 0x0004, 966*53ee8cc1Swenshuai.xi PIXEL_SHIFT_MOVE_OSD_LAYER = 0x0008, 967*53ee8cc1Swenshuai.xi PIXEL_SHIFT_DO_OVERSCAN = 0x0010, 968*53ee8cc1Swenshuai.xi } PIXEL_SHIFT_FEATURE; 969*53ee8cc1Swenshuai.xi 970*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 971*53ee8cc1Swenshuai.xi typedef enum 972*53ee8cc1Swenshuai.xi { 973*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 974*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 975*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 976*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 977*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 978*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 979*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER_NUM, 980*53ee8cc1Swenshuai.xi } E_VIDEO_ON_OSD_LAYER; 981*53ee8cc1Swenshuai.xi 982*53ee8cc1Swenshuai.xi /// Define panel information 983*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 984*53ee8cc1Swenshuai.xi { 985*53ee8cc1Swenshuai.xi // XC need below information do to frame lock 986*53ee8cc1Swenshuai.xi 987*53ee8cc1Swenshuai.xi MS_U16 u16HStart; ///<DE H start 988*53ee8cc1Swenshuai.xi 989*53ee8cc1Swenshuai.xi MS_U16 u16VStart; ///<DE V start 990*53ee8cc1Swenshuai.xi 991*53ee8cc1Swenshuai.xi MS_U16 u16Width; ///<DE H width 992*53ee8cc1Swenshuai.xi 993*53ee8cc1Swenshuai.xi MS_U16 u16Height; ///< DE V height 994*53ee8cc1Swenshuai.xi 995*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total 996*53ee8cc1Swenshuai.xi 997*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total 998*53ee8cc1Swenshuai.xi 999*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq; ///<Panel output Vfreq., used in free run 1000*53ee8cc1Swenshuai.xi 1001*53ee8cc1Swenshuai.xi MS_U8 u8LPLL_Mode; ///<0: single mode, 1: dual mode 1002*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 1003*53ee8cc1Swenshuai.xi 1004*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 1005*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHTotal; ///<default H total 1006*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVTotal; ///<default V total 1007*53ee8cc1Swenshuai.xi 1008*53ee8cc1Swenshuai.xi MS_U32 u32MinSET; 1009*53ee8cc1Swenshuai.xi MS_U32 u32MaxSET; 1010*53ee8cc1Swenshuai.xi E_XC_PNL_LPLL_TYPE eLPLL_Type; /// 1011*53ee8cc1Swenshuai.xi } XC_PANEL_INFO; 1012*53ee8cc1Swenshuai.xi 1013*53ee8cc1Swenshuai.xi 1014*53ee8cc1Swenshuai.xi /// Define the extern special panel information for FPLL or other usage 1015*53ee8cc1Swenshuai.xi /// Usage: 1016*53ee8cc1Swenshuai.xi /// The first 3 members of below structure must be set as their corresponding description 1017*53ee8cc1Swenshuai.xi /// The other members are set according to your request, none used members should be cleared to zero 1018*53ee8cc1Swenshuai.xi /// Example code of set VTT slowly: 1019*53ee8cc1Swenshuai.xi /// XC_PANEL_INFO_EX stPanelInfoEx; 1020*53ee8cc1Swenshuai.xi /// memset(&stPanelInfoEx, 0, sizeof(XC_PANEL_INFO_EX)); 1021*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u32PanelInfoEx_Version = PANEL_INFO_EX_VERSION; 1022*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16PanelInfoEX_Length = sizeof(XC_PANEL_INFO_EX); 1023*53ee8cc1Swenshuai.xi /// 1024*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttStepsValid = TRUE; 1025*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttDelayValid = TRUE; 1026*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttSteps = xx; //set how many steps u want to set the vtt 1027*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttDelay = xx;// set the delay between steps of setting vtt 1028*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 500; //this step setting info is only for 50hz 1029*53ee8cc1Swenshuai.xi /// if(MApi_XC_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 1030*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 600; //set same steps info for 60 hz 1031*53ee8cc1Swenshuai.xi /// if(MApi_XC_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 1032*53ee8cc1Swenshuai.xi /// 1033*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1034*53ee8cc1Swenshuai.xi { 1035*53ee8cc1Swenshuai.xi MS_U32 u32PanelInfoEx_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 1036*53ee8cc1Swenshuai.xi MS_U16 u16PanelInfoEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 1037*53ee8cc1Swenshuai.xi MS_U16 u16VFreq; ///<Output Vfreq, unit: (1Hz/10), range 0~PANEL_INFO_EX_INVALID_ALL 1038*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 0xFFFF means disable all valid ex panel info 1039*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 600 means disable the valid ex panel info for 60 hz 1040*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total of output "u16VFreq" 1041*53ee8cc1Swenshuai.xi MS_BOOL bHTotalValid; ///H total setting is valid in this structure 1042*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total of output "u16VFreq" 1043*53ee8cc1Swenshuai.xi MS_BOOL bVTotalValid; ///V total setting is valid in this structure 1044*53ee8cc1Swenshuai.xi MS_U32 u32DClk; ///<DCLK of output "u16VFreq", unit: KHz 1045*53ee8cc1Swenshuai.xi MS_BOOL bDClkValid; ///DCLK, unit: KHz 1046*53ee8cc1Swenshuai.xi MS_U16 u16MinHTotal; ///<Min H total 1047*53ee8cc1Swenshuai.xi MS_BOOL bMinHTotalValid; ///Min H total 1048*53ee8cc1Swenshuai.xi MS_U16 u16MinVTotal; ///<Min V total 1049*53ee8cc1Swenshuai.xi MS_BOOL bMinVTotalValid; ///Min V total 1050*53ee8cc1Swenshuai.xi MS_U32 u32MinDClk; ///<Min DCLK, unit: KHz 1051*53ee8cc1Swenshuai.xi MS_BOOL bMinDClkValid; ///Min DCLK, unit: KHz 1052*53ee8cc1Swenshuai.xi MS_U16 u16MaxHTotal; ///<Max H total 1053*53ee8cc1Swenshuai.xi MS_BOOL bMaxHTotalValid; ///Max H total 1054*53ee8cc1Swenshuai.xi MS_U16 u16MaxVTotal; ///<Max V total 1055*53ee8cc1Swenshuai.xi MS_BOOL bMaxVTotalValid; ///Max V total 1056*53ee8cc1Swenshuai.xi MS_U32 u32MaxDClk; ///<Min DCLK, unit: KHz 1057*53ee8cc1Swenshuai.xi MS_BOOL bMaxDClkValid; ///Min DCLK, unit: KHz 1058*53ee8cc1Swenshuai.xi // sync related 1059*53ee8cc1Swenshuai.xi MS_U16 u16HSyncWidth; ///<VOP_01[7:0], PANEL_HSYNC_WIDTH 1060*53ee8cc1Swenshuai.xi MS_BOOL bHSyncWidthValid; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 1061*53ee8cc1Swenshuai.xi MS_U16 u16HSyncBackPorch; ///<PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 1062*53ee8cc1Swenshuai.xi ///<not support Manuel VSync Start/End now 1063*53ee8cc1Swenshuai.xi ///<VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 1064*53ee8cc1Swenshuai.xi ///<VOP_03[10:0] VSync end = Vtt - VBackPorch 1065*53ee8cc1Swenshuai.xi MS_BOOL bHSyncBackPorchValid; 1066*53ee8cc1Swenshuai.xi MS_U16 u16VSyncWidth; ///<define PANEL_VSYNC_WIDTH 1067*53ee8cc1Swenshuai.xi MS_BOOL bVSyncWidthValid; 1068*53ee8cc1Swenshuai.xi MS_U16 u16VSyncBackPorch; ///<define PANEL_VSYNC_BACK_PORCH 1069*53ee8cc1Swenshuai.xi MS_BOOL bVSyncBackPorchValid; 1070*53ee8cc1Swenshuai.xi //step by step adjustment when 50/60 HZ Output switch 1071*53ee8cc1Swenshuai.xi MS_U16 u16HttSteps; ///<Number of adjusting step from Old Htt to new htt 1072*53ee8cc1Swenshuai.xi MS_BOOL bHttStepsValid; 1073*53ee8cc1Swenshuai.xi MS_U16 u16HttDelay; ///<Delay time in two steps 1074*53ee8cc1Swenshuai.xi MS_BOOL bHttDelayValid; 1075*53ee8cc1Swenshuai.xi MS_U16 u16VttSteps; ///<Number of adjusting step from Old Htt to new htt 1076*53ee8cc1Swenshuai.xi MS_BOOL bVttStepsValid; 1077*53ee8cc1Swenshuai.xi MS_U16 u16VttDelay; ///<Delay time in two steps 1078*53ee8cc1Swenshuai.xi MS_BOOL bVttDelayValid; 1079*53ee8cc1Swenshuai.xi MS_U16 u16DclkSteps; ///<Number of adjusting step from Old Htt to new htt 1080*53ee8cc1Swenshuai.xi MS_BOOL bDclkStepsValid; 1081*53ee8cc1Swenshuai.xi MS_U16 u16DclkDelay; ///<Delay time in two steps 1082*53ee8cc1Swenshuai.xi MS_BOOL bDclkDelayValid; ///<DclkDelay setting is valid in this structure 1083*53ee8cc1Swenshuai.xi }XC_PANEL_INFO_EX; 1084*53ee8cc1Swenshuai.xi 1085*53ee8cc1Swenshuai.xi /// Define new panel information 1086*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1087*53ee8cc1Swenshuai.xi { 1088*53ee8cc1Swenshuai.xi MS_U32 u32TimingAdjustSetting_version; ///<Version of current structure. Please always set this value as XC_OUTPUT_TIMING_ADJUST_VERSION 1089*53ee8cc1Swenshuai.xi 1090*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Step; ///<Number of adjusting step from Old Htt to new htt 1091*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Delay; ///<Delay time in two steps 1092*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Ratio; ///<Ratio of Htt for change to specific framerate (X10). 1093*53ee8cc1Swenshuai.xi 1094*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Step; ///<Number of adjusting step from Old Vtt to new Vtt 1095*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Delay; ///<Delay time in two steps 1096*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Ratio; ///<Ratio of Vtt for change to specific framerate (X10). 1097*53ee8cc1Swenshuai.xi 1098*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Step; ///<Number of adjusting step from Old Dclk to new Dclk 1099*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Delay; ///<Delay time in two steps 1100*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Ratio; ///<Ratio of Dclk for change to specific framerate (X10). 1101*53ee8cc1Swenshuai.xi 1102*53ee8cc1Swenshuai.xi }XC_OUTPUT_TIMING_ADJUST_SETTING; 1103*53ee8cc1Swenshuai.xi 1104*53ee8cc1Swenshuai.xi /// Define the initial data for XC 1105*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1106*53ee8cc1Swenshuai.xi { 1107*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 1108*53ee8cc1Swenshuai.xi // system related 1109*53ee8cc1Swenshuai.xi MS_U32 u32XTAL_Clock; ///<Crystal clock in Hz 1110*53ee8cc1Swenshuai.xi 1111*53ee8cc1Swenshuai.xi // frame buffer related 1112*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Start_Addr; ///<scaler main window frame buffer start address, absolute without any alignment 1113*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Size; ///<scaler main window frame buffer size, the unit is BYTES 1114*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Start_Addr; ///<scaler sub window frame buffer start address, absolute without any alignment 1115*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Size; ///<scaler sub window frame buffer size, the unit is BYTES 1116*53ee8cc1Swenshuai.xi 1117*53ee8cc1Swenshuai.xi // HDMI related, will be moved to HDMI module 1118*53ee8cc1Swenshuai.xi MS_BOOL bCEC_Use_Interrupt; ///<CEC use interrupt or not, if not, will use polling 1119*53ee8cc1Swenshuai.xi 1120*53ee8cc1Swenshuai.xi // This is related to chip package. ( Share Ground / Non-Share Ground ) 1121*53ee8cc1Swenshuai.xi MS_BOOL bIsShareGround; 1122*53ee8cc1Swenshuai.xi 1123*53ee8cc1Swenshuai.xi // function related 1124*53ee8cc1Swenshuai.xi MS_BOOL bEnableIPAutoCoast; ///<Enable IP auto coast 1125*53ee8cc1Swenshuai.xi 1126*53ee8cc1Swenshuai.xi MS_BOOL bMirror; ///<mirror mode 1127*53ee8cc1Swenshuai.xi 1128*53ee8cc1Swenshuai.xi // panel related 1129*53ee8cc1Swenshuai.xi XC_PANEL_INFO stPanelInfo; ///<panel infomation 1130*53ee8cc1Swenshuai.xi 1131*53ee8cc1Swenshuai.xi // DLC 1132*53ee8cc1Swenshuai.xi MS_BOOL bDLC_Histogram_From_VBlank; ///<If set to TRUE, the Y max/min report value is read from V blanking area 1133*53ee8cc1Swenshuai.xi 1134*53ee8cc1Swenshuai.xi // This is related to layout 1135*53ee8cc1Swenshuai.xi MS_U16 eScartIDPort_Sel; ///<This is port selection (E_XC_SCART_ID_PORT) of Scart ID pin 8 1136*53ee8cc1Swenshuai.xi 1137*53ee8cc1Swenshuai.xi // frcm frame buffer related 1138*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Start_Addr; ///<scaler main window frcm frame buffer start address, absolute without any alignment 1139*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Size; ///<scaler main window frcm frame buffer size, the unit is BYTES 1140*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Start_Addr; ///<scaler sub window frcm frame buffer start address, absolute without any alignment 1141*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Size; ///<scaler sub window frcm frame buffer size, the unit is BYTES 1142*53ee8cc1Swenshuai.xi } XC_INITDATA; 1143*53ee8cc1Swenshuai.xi 1144*53ee8cc1Swenshuai.xi /// define generic API infomation 1145*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1146*53ee8cc1Swenshuai.xi { 1147*53ee8cc1Swenshuai.xi MS_U8 u8MaxWindowNum; ///<max window number that XC driver supports such as MAIN/SUB window 1148*53ee8cc1Swenshuai.xi MS_U8 u8NumOfDigitalDDCRam; ///<indicate how many Digital DDCRam that use can use without external EDID EEPROM 1149*53ee8cc1Swenshuai.xi MS_U8 u8MaxFrameNumInMem; ///<indicate maximal number of frames (Progressive mode) supported by scaler simultaneously 1150*53ee8cc1Swenshuai.xi MS_U8 u8MaxFieldNumInMem; ///<indicate maximal number of fields (Interlace mode) supported by scaler simultaneously 1151*53ee8cc1Swenshuai.xi } XC_ApiInfo; 1152*53ee8cc1Swenshuai.xi 1153*53ee8cc1Swenshuai.xi /// define the information of set window 1154*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1155*53ee8cc1Swenshuai.xi { 1156*53ee8cc1Swenshuai.xi //------------- 1157*53ee8cc1Swenshuai.xi // Input 1158*53ee8cc1Swenshuai.xi //------------- 1159*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///<Input source 1160*53ee8cc1Swenshuai.xi 1161*53ee8cc1Swenshuai.xi //------------- 1162*53ee8cc1Swenshuai.xi // Window 1163*53ee8cc1Swenshuai.xi //------------- 1164*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 1165*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1166*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 1167*53ee8cc1Swenshuai.xi 1168*53ee8cc1Swenshuai.xi //------------- 1169*53ee8cc1Swenshuai.xi // Timing 1170*53ee8cc1Swenshuai.xi //------------- 1171*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1172*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1173*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1174*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1175*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1176*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete 1177*53ee8cc1Swenshuai.xi 1178*53ee8cc1Swenshuai.xi //------------------------- 1179*53ee8cc1Swenshuai.xi // customized post scaling 1180*53ee8cc1Swenshuai.xi //------------------------- 1181*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign post H customized scaling instead of using XC scaling 1182*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<post H customized scaling src width 1183*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<post H customized scaling dst width 1184*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign post V manuel scaling instead of using XC scaling 1185*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<post V customized scaling src height 1186*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<post V customized scaling dst height 1187*53ee8cc1Swenshuai.xi 1188*53ee8cc1Swenshuai.xi //-------------- 1189*53ee8cc1Swenshuai.xi // 9 lattice 1190*53ee8cc1Swenshuai.xi //-------------- 1191*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1192*53ee8cc1Swenshuai.xi 1193*53ee8cc1Swenshuai.xi //------------------------- 1194*53ee8cc1Swenshuai.xi // customized pre scaling 1195*53ee8cc1Swenshuai.xi //------------------------- 1196*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign pre H customized scaling instead of using XC scaling 1197*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<pre H customized scaling src width 1198*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<pre H customized scaling dst width 1199*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign pre V manuel scaling instead of using XC scaling 1200*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<pre V customized scaling src height 1201*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<pre V customized scaling dst height 1202*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 1203*53ee8cc1Swenshuai.xi } XC_SETWIN_INFO; 1204*53ee8cc1Swenshuai.xi 1205*53ee8cc1Swenshuai.xi typedef struct 1206*53ee8cc1Swenshuai.xi { //mastering color display: color volumne of a display 1207*53ee8cc1Swenshuai.xi MS_U32 u32MaxLuminance; 1208*53ee8cc1Swenshuai.xi MS_U32 u32MinLuminance; 1209*53ee8cc1Swenshuai.xi MS_U16 u16DisplayPrimaries[3][2]; 1210*53ee8cc1Swenshuai.xi MS_U16 u16WhitePoint[2]; 1211*53ee8cc1Swenshuai.xi } XC_DS_MasterColorDisplay; 1212*53ee8cc1Swenshuai.xi 1213*53ee8cc1Swenshuai.xi typedef struct 1214*53ee8cc1Swenshuai.xi { 1215*53ee8cc1Swenshuai.xi //color_description: indicates the chromaticity/opto-electronic coordinates of the source primaries 1216*53ee8cc1Swenshuai.xi MS_U8 u8ColorPrimaries; 1217*53ee8cc1Swenshuai.xi MS_U8 u8TransferCharacteristics; 1218*53ee8cc1Swenshuai.xi // matrix coefficients in deriving YUV signal from RGB 1219*53ee8cc1Swenshuai.xi MS_U8 u8MatrixCoefficients; 1220*53ee8cc1Swenshuai.xi } XC_DS_ColorDescription; 1221*53ee8cc1Swenshuai.xi 1222*53ee8cc1Swenshuai.xi typedef struct 1223*53ee8cc1Swenshuai.xi { 1224*53ee8cc1Swenshuai.xi // bit[0]: MS_ColorDescription present or valid, bit[1]: MS_MasterColorDisplay present or valid 1225*53ee8cc1Swenshuai.xi MS_U32 u32FrmInfoExtAvail; 1226*53ee8cc1Swenshuai.xi // mastering color display: color volumne of a display 1227*53ee8cc1Swenshuai.xi XC_DS_ColorDescription stColorDescription; 1228*53ee8cc1Swenshuai.xi XC_DS_MasterColorDisplay stMasterColorDisplay; 1229*53ee8cc1Swenshuai.xi MS_U8 u8CurrentIndex; 1230*53ee8cc1Swenshuai.xi MS_PHY phyRegAddr; 1231*53ee8cc1Swenshuai.xi MS_U32 u32RegSize; 1232*53ee8cc1Swenshuai.xi MS_PHY phyLutAddr; 1233*53ee8cc1Swenshuai.xi MS_U32 u32LutSize; 1234*53ee8cc1Swenshuai.xi MS_BOOL bDMEnable; 1235*53ee8cc1Swenshuai.xi MS_BOOL bCompEnable; 1236*53ee8cc1Swenshuai.xi } XC_DS_HDRInfo; 1237*53ee8cc1Swenshuai.xi 1238*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED{ 1239*53ee8cc1Swenshuai.xi //MVOP 1240*53ee8cc1Swenshuai.xi MS_U32 u32ApiDSInfo_Version; ///<Version of current structure. Please always set to "API_XCDS_INFO_VERSION" as input 1241*53ee8cc1Swenshuai.xi MS_U16 u16ApiDSInfo_Length; 1242*53ee8cc1Swenshuai.xi MS_U32 u32MFCodecInfo; 1243*53ee8cc1Swenshuai.xi XC_DS_HDRInfo stHDRInfo; 1244*53ee8cc1Swenshuai.xi //XC 1245*53ee8cc1Swenshuai.xi MS_BOOL bUpdate_DS_CMD[MAX_WINDOW]; 1246*53ee8cc1Swenshuai.xi MS_BOOL bEnableDNR[MAX_WINDOW]; 1247*53ee8cc1Swenshuai.xi MS_U32 u32DSBufferSize; 1248*53ee8cc1Swenshuai.xi MS_BOOL bEnable_ForceP[MAX_WINDOW]; 1249*53ee8cc1Swenshuai.xi }XC_DS_INFO; 1250*53ee8cc1Swenshuai.xi 1251*53ee8cc1Swenshuai.xi 1252*53ee8cc1Swenshuai.xi /// define the information for dynamic scaling (DS) 1253*53ee8cc1Swenshuai.xi /// one entry of DS is: 1254*53ee8cc1Swenshuai.xi /// 1255*53ee8cc1Swenshuai.xi /// 8 bit alignment 1256*53ee8cc1Swenshuai.xi /// LSB ----> MSB 1257*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) 1258*53ee8cc1Swenshuai.xi /// [7:0] [15:8] [23:16] [31:24] 1259*53ee8cc1Swenshuai.xi /// Data_L Data_H Reg_Addr(16bit) Reg_Bank 1260*53ee8cc1Swenshuai.xi /// 1261*53ee8cc1Swenshuai.xi /// 16 bit alignment 1262*53ee8cc1Swenshuai.xi /// LSB ----> MSB 1263*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) -> 0xFFFFFFFF, 0xFFFFFFFF (dummy) 1264*53ee8cc1Swenshuai.xi /// 1265*53ee8cc1Swenshuai.xi /// If bIP_DS_On == FALSE, the DS will ignore the IP information 1266*53ee8cc1Swenshuai.xi /// If bOP_DS_On == FALSE, the DS will ignore the OP information 1267*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1268*53ee8cc1Swenshuai.xi { 1269*53ee8cc1Swenshuai.xi MS_PHY u32DS_Info_BaseAddr; ///< The memory base address to update IP/OP dynamic scaling registers. Absolute without any alignment. 1270*53ee8cc1Swenshuai.xi MS_U8 u8MIU_Select; ///< 0: MIU0, 1: MIU1, etc. 1271*53ee8cc1Swenshuai.xi MS_U8 u8DS_Index_Depth; ///< The index depth (how many entries to fire per MVOP Vsync falling) of DS 1272*53ee8cc1Swenshuai.xi MS_BOOL bOP_DS_On; ///< OP dynamic scaling on/off 1273*53ee8cc1Swenshuai.xi MS_BOOL bIPS_DS_On; ///< IPS dynamic scaling on/off 1274*53ee8cc1Swenshuai.xi MS_BOOL bIPM_DS_On; ///< IPM dynamic scaling on/off 1275*53ee8cc1Swenshuai.xi } XC_DynamicScaling_Info; 1276*53ee8cc1Swenshuai.xi 1277*53ee8cc1Swenshuai.xi /// Define source type for DIP 1278*53ee8cc1Swenshuai.xi typedef enum 1279*53ee8cc1Swenshuai.xi { 1280*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SUB2 = 0, ///< DIP from SUB2(IP_F3) 1281*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MAIN = 1, ///< DIP from MAIN(IP_MAIN) 1282*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SUB = 2, ///< DIP from SUB (IP_SUB) 1283*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_MAIN = 3, ///< HVSP MAIN 1284*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_SUB = 4, ///< HVSP SUB 1285*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_DRAM = 5, ///< DIP from DRAM 1286*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_CAPTURE = 6, ///< DIP from OP capture 1287*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OSD = 7, ///< DIP from OSD capture 1288*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_SC2_OP_CAPTURE = 8, ///< DIP from SC2 OP capture 1289*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_OP_SC1_CAPTURE = 9, ///< DIP from OP SC1 capture 1290*53ee8cc1Swenshuai.xi #if defined (UFO_PUBLIC_HEADER_212) ||defined (UFO_PUBLIC_HEADER_500_3) ||defined (UFO_PUBLIC_HEADER_700) 1291*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MVOP0 =10, ///< DIP from MVOP0 capture 1292*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MVOP1 =11, ///< DIP from MVOP1 capture 1293*53ee8cc1Swenshuai.xi #else 1294*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_VE_CAPTURE = 10, ///< DIP from SC1 OP capture 1295*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MVOP0 =11, ///< DIP from MVOP0 capture 1296*53ee8cc1Swenshuai.xi SCALER_DIP_SOURCE_TYPE_MVOP1 =12, ///< DIP from MVOP1 capture 1297*53ee8cc1Swenshuai.xi #endif 1298*53ee8cc1Swenshuai.xi MAX_SCALER_DIP_SOURCE_NUM ///< The max support window 1299*53ee8cc1Swenshuai.xi }SCALER_DIP_SOURCE_TYPE; 1300*53ee8cc1Swenshuai.xi 1301*53ee8cc1Swenshuai.xi /// Define the path type 1302*53ee8cc1Swenshuai.xi typedef enum 1303*53ee8cc1Swenshuai.xi { 1304*53ee8cc1Swenshuai.xi PATH_TYPE_SYNCHRONOUS, ///<synchronous path type 1305*53ee8cc1Swenshuai.xi PATH_TYPE_ASYNCHRONOUS, ///<asynchronous path type 1306*53ee8cc1Swenshuai.xi }E_PATH_TYPE; 1307*53ee8cc1Swenshuai.xi 1308*53ee8cc1Swenshuai.xi /// Define the mux path information 1309*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1310*53ee8cc1Swenshuai.xi { 1311*53ee8cc1Swenshuai.xi E_PATH_TYPE Path_Type; ///<path type 1312*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t src; ///<source input type 1313*53ee8cc1Swenshuai.xi E_DEST_TYPE dest; ///<destination type of output 1314*53ee8cc1Swenshuai.xi 1315*53ee8cc1Swenshuai.xi void (* path_thread)(INPUT_SOURCE_TYPE_t src, MS_BOOL bRealTimeMonitorOnly); ///<path read 1316*53ee8cc1Swenshuai.xi void (* SyncEventHandler )(INPUT_SOURCE_TYPE_t src, void* para); ///<sync event handler 1317*53ee8cc1Swenshuai.xi void (* DestOnOff_Event_Handler )(INPUT_SOURCE_TYPE_t src, void* para); ///<destination on off event handler 1318*53ee8cc1Swenshuai.xi void (* dest_periodic_handler )(INPUT_SOURCE_TYPE_t src, MS_BOOL bRealTimeMonitorOnly) ; ///<destination periodic handler 1319*53ee8cc1Swenshuai.xi } XC_MUX_PATH_INFO; 1320*53ee8cc1Swenshuai.xi 1321*53ee8cc1Swenshuai.xi /// Image store format in XC 1322*53ee8cc1Swenshuai.xi typedef enum 1323*53ee8cc1Swenshuai.xi { 1324*53ee8cc1Swenshuai.xi IMAGE_STORE_444_24BIT, ///< (8+8+8) Y Cb Cr / B G R 1325*53ee8cc1Swenshuai.xi IMAGE_STORE_422_16BIT, ///< (8+8) Y Cb Y Cr / G B G R 1326*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 1327*53ee8cc1Swenshuai.xi } MS_IMAGE_STORE_FMT; 1328*53ee8cc1Swenshuai.xi 1329*53ee8cc1Swenshuai.xi /// XC API status 1330*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1331*53ee8cc1Swenshuai.xi { 1332*53ee8cc1Swenshuai.xi //---------------------- 1333*53ee8cc1Swenshuai.xi // Customer setting 1334*53ee8cc1Swenshuai.xi //---------------------- 1335*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///< Input source type 1336*53ee8cc1Swenshuai.xi 1337*53ee8cc1Swenshuai.xi //---------------------- 1338*53ee8cc1Swenshuai.xi // Window 1339*53ee8cc1Swenshuai.xi //---------------------- 1340*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 1341*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1342*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 1343*53ee8cc1Swenshuai.xi 1344*53ee8cc1Swenshuai.xi //---------------------- 1345*53ee8cc1Swenshuai.xi // Timing 1346*53ee8cc1Swenshuai.xi //---------------------- 1347*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1348*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1349*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1350*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1351*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1352*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 1353*53ee8cc1Swenshuai.xi 1354*53ee8cc1Swenshuai.xi //---------------------- 1355*53ee8cc1Swenshuai.xi // customized scaling 1356*53ee8cc1Swenshuai.xi //---------------------- 1357*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 1358*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 1359*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 1360*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1361*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 1362*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 1363*53ee8cc1Swenshuai.xi 1364*53ee8cc1Swenshuai.xi //-------------- 1365*53ee8cc1Swenshuai.xi // 9 lattice 1366*53ee8cc1Swenshuai.xi //-------------- 1367*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1368*53ee8cc1Swenshuai.xi 1369*53ee8cc1Swenshuai.xi //---------------------- 1370*53ee8cc1Swenshuai.xi // XC internal setting 1371*53ee8cc1Swenshuai.xi //---------------------- 1372*53ee8cc1Swenshuai.xi 1373*53ee8cc1Swenshuai.xi /* scaling ratio */ 1374*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 1375*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 1376*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 1377*53ee8cc1Swenshuai.xi 1378*53ee8cc1Swenshuai.xi /* real crop win in memory */ 1379*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE ScaledCropWin; 1380*53ee8cc1Swenshuai.xi 1381*53ee8cc1Swenshuai.xi /* others */ 1382*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 1383*53ee8cc1Swenshuai.xi 1384*53ee8cc1Swenshuai.xi /* Video screen status */ 1385*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 1386*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 1387*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 1388*53ee8cc1Swenshuai.xi 1389*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 1390*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 1391*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 1392*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 1393*53ee8cc1Swenshuai.xi MS_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 1394*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 1395*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 1396*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 1397*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 1398*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1399*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1400*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1401*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1402*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1403*53ee8cc1Swenshuai.xi 1404*53ee8cc1Swenshuai.xi // frame lock related 1405*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1406*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1407*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1408*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1409*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1410*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1411*53ee8cc1Swenshuai.xi 1412*53ee8cc1Swenshuai.xi // Capture_Memory 1413*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1414*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase0; ///<IPM base 0 1415*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase1; ///<IPM base 1 1416*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase2; ///<IPM base 2 1417*53ee8cc1Swenshuai.xi #else 1418*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1419*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1420*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1421*53ee8cc1Swenshuai.xi #endif 1422*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1423*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1424*53ee8cc1Swenshuai.xi }XC_ApiStatus; 1425*53ee8cc1Swenshuai.xi 1426*53ee8cc1Swenshuai.xi /// XC API status 1427*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1428*53ee8cc1Swenshuai.xi { 1429*53ee8cc1Swenshuai.xi MS_U32 u32ApiStatusEx_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 1430*53ee8cc1Swenshuai.xi MS_U16 u16ApiStatusEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 1431*53ee8cc1Swenshuai.xi 1432*53ee8cc1Swenshuai.xi //---------------------- 1433*53ee8cc1Swenshuai.xi // Customer setting 1434*53ee8cc1Swenshuai.xi //---------------------- 1435*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///< Input source type 1436*53ee8cc1Swenshuai.xi 1437*53ee8cc1Swenshuai.xi //---------------------- 1438*53ee8cc1Swenshuai.xi // Window 1439*53ee8cc1Swenshuai.xi //---------------------- 1440*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCapWin; ///<Capture window 1441*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1442*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 1443*53ee8cc1Swenshuai.xi 1444*53ee8cc1Swenshuai.xi //---------------------- 1445*53ee8cc1Swenshuai.xi // Timing 1446*53ee8cc1Swenshuai.xi //---------------------- 1447*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1448*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1449*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1450*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1451*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1452*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 1453*53ee8cc1Swenshuai.xi 1454*53ee8cc1Swenshuai.xi //---------------------- 1455*53ee8cc1Swenshuai.xi // Post customized scaling 1456*53ee8cc1Swenshuai.xi //---------------------- 1457*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 1458*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 1459*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 1460*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1461*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 1462*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 1463*53ee8cc1Swenshuai.xi 1464*53ee8cc1Swenshuai.xi //-------------- 1465*53ee8cc1Swenshuai.xi // 9 lattice 1466*53ee8cc1Swenshuai.xi //-------------- 1467*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1468*53ee8cc1Swenshuai.xi 1469*53ee8cc1Swenshuai.xi //---------------------- 1470*53ee8cc1Swenshuai.xi // XC internal setting 1471*53ee8cc1Swenshuai.xi //---------------------- 1472*53ee8cc1Swenshuai.xi 1473*53ee8cc1Swenshuai.xi /* scaling ratio */ 1474*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 1475*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 1476*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 1477*53ee8cc1Swenshuai.xi 1478*53ee8cc1Swenshuai.xi /* real crop win in memory */ 1479*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE ScaledCropWin; 1480*53ee8cc1Swenshuai.xi 1481*53ee8cc1Swenshuai.xi /* others */ 1482*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 1483*53ee8cc1Swenshuai.xi 1484*53ee8cc1Swenshuai.xi /* Video screen status */ 1485*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 1486*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 1487*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 1488*53ee8cc1Swenshuai.xi 1489*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 1490*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 1491*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 1492*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 1493*53ee8cc1Swenshuai.xi MS_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 1494*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 1495*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 1496*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 1497*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 1498*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1499*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1500*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1501*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1502*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1503*53ee8cc1Swenshuai.xi 1504*53ee8cc1Swenshuai.xi // frame lock related 1505*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1506*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1507*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1508*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1509*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1510*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1511*53ee8cc1Swenshuai.xi 1512*53ee8cc1Swenshuai.xi // Capture_Memory 1513*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1514*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase0; ///<IPM base 0 1515*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase1; ///<IPM base 1 1516*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase2; ///<IPM base 2 1517*53ee8cc1Swenshuai.xi #else 1518*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1519*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1520*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1521*53ee8cc1Swenshuai.xi #endif 1522*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1523*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1524*53ee8cc1Swenshuai.xi 1525*53ee8cc1Swenshuai.xi //---------------------- 1526*53ee8cc1Swenshuai.xi // Pre customized scaling 1527*53ee8cc1Swenshuai.xi //---------------------- 1528*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign H customized scaling instead of using XC scaling 1529*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<H customized scaling src width 1530*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<H customized scaling dst width 1531*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1532*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<V customized scaling src height 1533*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<V customized scaling dst height 1534*53ee8cc1Swenshuai.xi 1535*53ee8cc1Swenshuai.xi MS_BOOL bPQSetHSD;///<H_SizeAfterPreScaling is changed manually, which will skip PQ HSD sampling and filter 1536*53ee8cc1Swenshuai.xi 1537*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 1538*53ee8cc1Swenshuai.xi MS_BOOL bIsHWDepthAdjSupported; ///<Is hw depth adjustment for real 3d supported or not 1539*53ee8cc1Swenshuai.xi MS_BOOL bIs2LineMode; ///<Is 2 line mode or not 1540*53ee8cc1Swenshuai.xi MS_BOOL bIsPNLYUVOutput; ///<Is Scaler YUV output 1541*53ee8cc1Swenshuai.xi 1542*53ee8cc1Swenshuai.xi MS_U8 u8HDMIPixelRepetition; ///<the HDMI pixel repetition info 1543*53ee8cc1Swenshuai.xi 1544*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1545*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase0; ///<FRCM base 0 1546*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase1; ///<FRCM base 1 1547*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase2; ///<FRCM base 2 1548*53ee8cc1Swenshuai.xi #else 1549*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase0; ///<FRCM base 0 1550*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase1; ///<FRCM base 1 1551*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase2; ///<FRCM base 2 1552*53ee8cc1Swenshuai.xi #endif 1553*53ee8cc1Swenshuai.xi #ifdef UFO_XC_ZORDER 1554*53ee8cc1Swenshuai.xi E_VIDEO_ON_OSD_LAYER enZOrderIndex; ///<VIDEO and the relative position of OSD. 1555*53ee8cc1Swenshuai.xi #endif 1556*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) ||defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700) 1557*53ee8cc1Swenshuai.xi MS_BOOL bFSCEnabled; ///< used only for FSC enbaled case 1558*53ee8cc1Swenshuai.xi #endif 1559*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700) 1560*53ee8cc1Swenshuai.xi MS_BOOL bFRCEnabled; ///< used only for FRC enbaled case 1561*53ee8cc1Swenshuai.xi #endif 1562*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700) 1563*53ee8cc1Swenshuai.xi #if API_XCSTATUS_EX_VERSION >= 9 1564*53ee8cc1Swenshuai.xi MS_U16 u16PanelInterfaceType; ///< Panel Type 1565*53ee8cc1Swenshuai.xi #endif 1566*53ee8cc1Swenshuai.xi #endif 1567*53ee8cc1Swenshuai.xi }XC_ApiStatusEx; 1568*53ee8cc1Swenshuai.xi 1569*53ee8cc1Swenshuai.xi /// XC API status 1570*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1571*53ee8cc1Swenshuai.xi { 1572*53ee8cc1Swenshuai.xi MS_U32 u32ApiStatusEx_Version; ///<Version of current structure. Please always set to "PANEL_INFO_EX_VERSION" as input 1573*53ee8cc1Swenshuai.xi MS_U16 u16ApiStatusEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 1574*53ee8cc1Swenshuai.xi 1575*53ee8cc1Swenshuai.xi //---------------------- 1576*53ee8cc1Swenshuai.xi // Customer setting 1577*53ee8cc1Swenshuai.xi //---------------------- 1578*53ee8cc1Swenshuai.xi INPUT_SOURCE_TYPE_t enInputSourceType; ///< Input source type 1579*53ee8cc1Swenshuai.xi 1580*53ee8cc1Swenshuai.xi //---------------------- 1581*53ee8cc1Swenshuai.xi // Window 1582*53ee8cc1Swenshuai.xi //---------------------- 1583*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 1584*53ee8cc1Swenshuai.xi 1585*53ee8cc1Swenshuai.xi } ST_XC_APISTATUSNODELAY; 1586*53ee8cc1Swenshuai.xi 1587*53ee8cc1Swenshuai.xi /// Define the set timing information 1588*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1589*53ee8cc1Swenshuai.xi { 1590*53ee8cc1Swenshuai.xi MS_U32 u32HighAccurateInputVFreq; ///<high accurate input V frequency 1591*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<input V frequency 1592*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<input vertical total 1593*53ee8cc1Swenshuai.xi MS_BOOL bMVOPSrc; ///<MVOP source 1594*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether it's fast frame lock case 1595*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 1596*53ee8cc1Swenshuai.xi }XC_SetTiming_Info; 1597*53ee8cc1Swenshuai.xi 1598*53ee8cc1Swenshuai.xi //------------------------------ 1599*53ee8cc1Swenshuai.xi // XC Auto 1600*53ee8cc1Swenshuai.xi //------------------------------ 1601*53ee8cc1Swenshuai.xi 1602*53ee8cc1Swenshuai.xi /// internal calibration 1603*53ee8cc1Swenshuai.xi typedef struct 1604*53ee8cc1Swenshuai.xi { 1605*53ee8cc1Swenshuai.xi MS_U16 u16CH_AVG[3]; 1606*53ee8cc1Swenshuai.xi } MS_AUTOADC_TYPE; 1607*53ee8cc1Swenshuai.xi 1608*53ee8cc1Swenshuai.xi /// get IP1 report min/max R/G/B 1609*53ee8cc1Swenshuai.xi typedef enum 1610*53ee8cc1Swenshuai.xi { 1611*53ee8cc1Swenshuai.xi AUTO_MIN_R , 1612*53ee8cc1Swenshuai.xi AUTO_MIN_G , 1613*53ee8cc1Swenshuai.xi AUTO_MIN_B , 1614*53ee8cc1Swenshuai.xi AUTO_MAX_R , 1615*53ee8cc1Swenshuai.xi AUTO_MAX_G , 1616*53ee8cc1Swenshuai.xi AUTO_MAX_B , 1617*53ee8cc1Swenshuai.xi }AUTO_GAIN_TYPE; 1618*53ee8cc1Swenshuai.xi 1619*53ee8cc1Swenshuai.xi /// the tming types for internal calibration 1620*53ee8cc1Swenshuai.xi typedef enum 1621*53ee8cc1Swenshuai.xi { 1622*53ee8cc1Swenshuai.xi E_XC_OFF, 1623*53ee8cc1Swenshuai.xi E_XC_480P, 1624*53ee8cc1Swenshuai.xi E_XC_576P, 1625*53ee8cc1Swenshuai.xi E_XC_720P, 1626*53ee8cc1Swenshuai.xi E_XC_1080P, 1627*53ee8cc1Swenshuai.xi E_XC_480I, 1628*53ee8cc1Swenshuai.xi E_XC_576I, 1629*53ee8cc1Swenshuai.xi E_XC_720I, 1630*53ee8cc1Swenshuai.xi E_XC_1080I, 1631*53ee8cc1Swenshuai.xi }XC_Internal_TimingType; 1632*53ee8cc1Swenshuai.xi 1633*53ee8cc1Swenshuai.xi //------------------------------ 1634*53ee8cc1Swenshuai.xi // Software Reset 1635*53ee8cc1Swenshuai.xi //------------------------------ 1636*53ee8cc1Swenshuai.xi /// software reset type 1637*53ee8cc1Swenshuai.xi typedef enum 1638*53ee8cc1Swenshuai.xi { 1639*53ee8cc1Swenshuai.xi REST_SCALER_ALL = _BIT(0), 1640*53ee8cc1Swenshuai.xi REST_IP_F1 = _BIT(1), 1641*53ee8cc1Swenshuai.xi REST_IP_F2 = _BIT(2), 1642*53ee8cc1Swenshuai.xi REST_OP = _BIT(3), 1643*53ee8cc1Swenshuai.xi REST_IP_ALL = _BIT(4), 1644*53ee8cc1Swenshuai.xi REST_IP_OFFLINE = _BIT(5), 1645*53ee8cc1Swenshuai.xi REST_CLK = (_BIT(6)|_BIT(3)), 1646*53ee8cc1Swenshuai.xi }SOFTWARE_REST_TYPE_t; 1647*53ee8cc1Swenshuai.xi 1648*53ee8cc1Swenshuai.xi /// Detect Europe HDTV status type 1649*53ee8cc1Swenshuai.xi typedef enum 1650*53ee8cc1Swenshuai.xi { 1651*53ee8cc1Swenshuai.xi EURO_AUS_HDTV_NORMAL = 0, ///<not detected Euro or Aus HDTV 1652*53ee8cc1Swenshuai.xi EURO_HDTV_DETECTED, ///<Euro HDTV detected 1653*53ee8cc1Swenshuai.xi AUSTRALIA_HDTV_DETECTED, ///<Aus HDTV detected 1654*53ee8cc1Swenshuai.xi }MS_DETECT_EURO_HDTV_STATUS_TYPE; 1655*53ee8cc1Swenshuai.xi 1656*53ee8cc1Swenshuai.xi 1657*53ee8cc1Swenshuai.xi //Capture_Memory 1658*53ee8cc1Swenshuai.xi 1659*53ee8cc1Swenshuai.xi /// Define the rectangle information 1660*53ee8cc1Swenshuai.xi typedef struct 1661*53ee8cc1Swenshuai.xi { 1662*53ee8cc1Swenshuai.xi MS_S16 s16X_Start; ///<rectangle start x 1663*53ee8cc1Swenshuai.xi MS_S16 s16Y_Start; ///<rectangle start x 1664*53ee8cc1Swenshuai.xi MS_S16 s16X_Size; ///<rectangle horizontal size 1665*53ee8cc1Swenshuai.xi MS_S16 s16Y_Size; ///<rectangle vertical size 1666*53ee8cc1Swenshuai.xi 1667*53ee8cc1Swenshuai.xi MS_U8 *pRect; ///<the buffer address for the rectangle 1668*53ee8cc1Swenshuai.xi MS_U32 u32RectPitch; ///<rectangle pitch 1669*53ee8cc1Swenshuai.xi MS_U16 u16PointSize; ///<point size, consider the memory size 1670*53ee8cc1Swenshuai.xi } MS_RECT_INFO; 1671*53ee8cc1Swenshuai.xi 1672*53ee8cc1Swenshuai.xi /// Define for format of pixel 24 bit 1673*53ee8cc1Swenshuai.xi typedef struct 1674*53ee8cc1Swenshuai.xi { 1675*53ee8cc1Swenshuai.xi MS_U8 R_Cr; 1676*53ee8cc1Swenshuai.xi MS_U8 G_Y; 1677*53ee8cc1Swenshuai.xi MS_U8 B_Cb; 1678*53ee8cc1Swenshuai.xi } MS_PIXEL_24BIT; 1679*53ee8cc1Swenshuai.xi 1680*53ee8cc1Swenshuai.xi /// Define for format of pixel 32 bit 1681*53ee8cc1Swenshuai.xi typedef struct 1682*53ee8cc1Swenshuai.xi { 1683*53ee8cc1Swenshuai.xi MS_U32 B_Cb :10; 1684*53ee8cc1Swenshuai.xi MS_U32 G_Y :10; 1685*53ee8cc1Swenshuai.xi MS_U32 R_Cr :10; 1686*53ee8cc1Swenshuai.xi MS_U32 u8Dummy:2; 1687*53ee8cc1Swenshuai.xi }MS_PIXEL_32BIT; 1688*53ee8cc1Swenshuai.xi 1689*53ee8cc1Swenshuai.xi /// Define for format of pixel 16 bit 1690*53ee8cc1Swenshuai.xi typedef struct 1691*53ee8cc1Swenshuai.xi { 1692*53ee8cc1Swenshuai.xi MS_U8 u8G_Y; 1693*53ee8cc1Swenshuai.xi MS_U8 u8BR_CbCr; 1694*53ee8cc1Swenshuai.xi } MS_PIXEL_422_8BIT; 1695*53ee8cc1Swenshuai.xi 1696*53ee8cc1Swenshuai.xi typedef enum 1697*53ee8cc1Swenshuai.xi { 1698*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1699*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1700*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1701*53ee8cc1Swenshuai.xi 1702*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_RGB10BITS = 0x04, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1703*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_RGB8BITS = 0x05, ///< R[23:16] G[15:8] B[7:0] 1704*53ee8cc1Swenshuai.xi E_XC_OUTPUTDATA_FRC_4228BITS = 0x06, ///< CbCr[15:8] Y[7:0] 1705*53ee8cc1Swenshuai.xi }E_XC_OUTPUTDATA_TYPE; 1706*53ee8cc1Swenshuai.xi 1707*53ee8cc1Swenshuai.xi typedef enum 1708*53ee8cc1Swenshuai.xi { 1709*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1710*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1711*53ee8cc1Swenshuai.xi E_XC_INPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1712*53ee8cc1Swenshuai.xi }E_XC_INPUTDATA_TYPE; 1713*53ee8cc1Swenshuai.xi 1714*53ee8cc1Swenshuai.xi 1715*53ee8cc1Swenshuai.xi /// define for the auto calbration window type 1716*53ee8cc1Swenshuai.xi typedef struct 1717*53ee8cc1Swenshuai.xi { 1718*53ee8cc1Swenshuai.xi MS_U16 u16X; ///<window start x 1719*53ee8cc1Swenshuai.xi MS_U16 u16Xsize; ///<window horizontal size 1720*53ee8cc1Swenshuai.xi MS_U16 u16Y; ///<window start y 1721*53ee8cc1Swenshuai.xi MS_U16 u16Ysize; ///<window vertical size 1722*53ee8cc1Swenshuai.xi }MS_AUTO_CAL_WINDOW_t; 1723*53ee8cc1Swenshuai.xi 1724*53ee8cc1Swenshuai.xi typedef struct 1725*53ee8cc1Swenshuai.xi { 1726*53ee8cc1Swenshuai.xi MS_IMAGE_STORE_FMT eStoreFmt; ///<image store format 1727*53ee8cc1Swenshuai.xi MS_AUTO_CAL_WINDOW_t eCal_Win_Size; ///<auto calbration window type 1728*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelMax; ///<maximum value among the pixels 1729*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelMin; ///<minimum value among the pixels 1730*53ee8cc1Swenshuai.xi MS_AUTOADC_TYPE pixelAverage; ///<average value among the pixels 1731*53ee8cc1Swenshuai.xi } MS_IMAGE_MEM_INFO; 1732*53ee8cc1Swenshuai.xi 1733*53ee8cc1Swenshuai.xi /// defined channel select for contrast adjusting. 1734*53ee8cc1Swenshuai.xi typedef enum 1735*53ee8cc1Swenshuai.xi { 1736*53ee8cc1Swenshuai.xi XC_VOP_CHR = 0, ///< Channel R 1737*53ee8cc1Swenshuai.xi XC_VOP_CHG, ///< Channel G 1738*53ee8cc1Swenshuai.xi XC_VOP_CHB, ///< Channel B 1739*53ee8cc1Swenshuai.xi XC_VOP_ALL, ///< All Channel 1740*53ee8cc1Swenshuai.xi }MS_XC_VOP_CHANNEL_t; 1741*53ee8cc1Swenshuai.xi 1742*53ee8cc1Swenshuai.xi /// Define Scaler GOP IP setting. 1743*53ee8cc1Swenshuai.xi typedef enum 1744*53ee8cc1Swenshuai.xi { 1745*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP0, 1746*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP1, 1747*53ee8cc1Swenshuai.xi MS_IP0_SEL_GOP2, 1748*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP0, 1749*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP1, 1750*53ee8cc1Swenshuai.xi MS_NIP_SEL_GOP2, 1751*53ee8cc1Swenshuai.xi MS_MVOP_SEL, 1752*53ee8cc1Swenshuai.xi }MS_XC_IPSEL_GOP; 1753*53ee8cc1Swenshuai.xi 1754*53ee8cc1Swenshuai.xi /// Define Scaler memory format 1755*53ee8cc1Swenshuai.xi typedef enum 1756*53ee8cc1Swenshuai.xi { 1757*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_AUTO = 0, 1758*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_444 = 1, 1759*53ee8cc1Swenshuai.xi E_MS_XC_MEM_FMT_422 = 2, 1760*53ee8cc1Swenshuai.xi }MS_XC_MEM_FMT; 1761*53ee8cc1Swenshuai.xi 1762*53ee8cc1Swenshuai.xi /// Define the PQ path information 1763*53ee8cc1Swenshuai.xi /** 1764*53ee8cc1Swenshuai.xi * The active Window for PQ function to takes place. 1765*53ee8cc1Swenshuai.xi */ 1766*53ee8cc1Swenshuai.xi typedef enum 1767*53ee8cc1Swenshuai.xi { 1768*53ee8cc1Swenshuai.xi /// Main window 1769*53ee8cc1Swenshuai.xi PQ_MAIN_WINDOW=0, 1770*53ee8cc1Swenshuai.xi /// Sub window 1771*53ee8cc1Swenshuai.xi PQ_SUB_WINDOW=1, 1772*53ee8cc1Swenshuai.xi /// The max support window of PQ 1773*53ee8cc1Swenshuai.xi PQ_MAX_WINDOW 1774*53ee8cc1Swenshuai.xi }PQ_WIN; 1775*53ee8cc1Swenshuai.xi 1776*53ee8cc1Swenshuai.xi typedef enum 1777*53ee8cc1Swenshuai.xi { 1778*53ee8cc1Swenshuai.xi PQ_XC_ID_0, 1779*53ee8cc1Swenshuai.xi PQ_XC_ID_1, 1780*53ee8cc1Swenshuai.xi PQ_XC_ID_NUM, 1781*53ee8cc1Swenshuai.xi }PQ_XC_ID; 1782*53ee8cc1Swenshuai.xi 1783*53ee8cc1Swenshuai.xi /** 1784*53ee8cc1Swenshuai.xi * FOURCE COLOR FMT 1785*53ee8cc1Swenshuai.xi */ 1786*53ee8cc1Swenshuai.xi typedef enum 1787*53ee8cc1Swenshuai.xi { 1788*53ee8cc1Swenshuai.xi /// Default 1789*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_DEFAULT, 1790*53ee8cc1Swenshuai.xi /// RGB 1791*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_RGB, 1792*53ee8cc1Swenshuai.xi /// YUV 1793*53ee8cc1Swenshuai.xi PQ_FOURCE_COLOR_YUV, 1794*53ee8cc1Swenshuai.xi }PQ_FOURCE_COLOR_FMT; 1795*53ee8cc1Swenshuai.xi 1796*53ee8cc1Swenshuai.xi /** 1797*53ee8cc1Swenshuai.xi * PQ DEINTERLACE MODE 1798*53ee8cc1Swenshuai.xi */ 1799*53ee8cc1Swenshuai.xi typedef enum DLL_PACKED 1800*53ee8cc1Swenshuai.xi { 1801*53ee8cc1Swenshuai.xi /// off 1802*53ee8cc1Swenshuai.xi PQ_DEINT_OFF=0, 1803*53ee8cc1Swenshuai.xi /// 2DDI BOB 1804*53ee8cc1Swenshuai.xi PQ_DEINT_2DDI_BOB, 1805*53ee8cc1Swenshuai.xi /// 2DDI AVG 1806*53ee8cc1Swenshuai.xi PQ_DEINT_2DDI_AVG, 1807*53ee8cc1Swenshuai.xi /// 3DDI History(24 bit) 1808*53ee8cc1Swenshuai.xi PQ_DEINT_3DDI_HISTORY, 1809*53ee8cc1Swenshuai.xi /// 3DDI(16 bit) 1810*53ee8cc1Swenshuai.xi PQ_DEINT_3DDI, 1811*53ee8cc1Swenshuai.xi } PQ_DEINTERLACE_MODE; 1812*53ee8cc1Swenshuai.xi /** 1813*53ee8cc1Swenshuai.xi * Video data information to supply when in PQ mode. 1814*53ee8cc1Swenshuai.xi */ 1815*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1816*53ee8cc1Swenshuai.xi { 1817*53ee8cc1Swenshuai.xi /// is FBL or not 1818*53ee8cc1Swenshuai.xi MS_BOOL bFBL; 1819*53ee8cc1Swenshuai.xi /// is interlace mode or not 1820*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; 1821*53ee8cc1Swenshuai.xi /// input Horizontal size 1822*53ee8cc1Swenshuai.xi MS_U16 u16input_hsize; 1823*53ee8cc1Swenshuai.xi /// input Vertical size 1824*53ee8cc1Swenshuai.xi MS_U16 u16input_vsize; 1825*53ee8cc1Swenshuai.xi /// input Vertical total 1826*53ee8cc1Swenshuai.xi MS_U16 u16input_vtotal; 1827*53ee8cc1Swenshuai.xi /// input Vertical frequency 1828*53ee8cc1Swenshuai.xi MS_U16 u16input_vfreq; 1829*53ee8cc1Swenshuai.xi /// output Vertical frequency 1830*53ee8cc1Swenshuai.xi MS_U16 u16ouput_vfreq; 1831*53ee8cc1Swenshuai.xi /// Display Horizontal size 1832*53ee8cc1Swenshuai.xi MS_U16 u16display_hsize; 1833*53ee8cc1Swenshuai.xi /// Display Vertical size 1834*53ee8cc1Swenshuai.xi MS_U16 u16display_vsize; 1835*53ee8cc1Swenshuai.xi }MS_PQ_Mode_Info; 1836*53ee8cc1Swenshuai.xi /** 1837*53ee8cc1Swenshuai.xi * INPUT SOURCE TYPE 1838*53ee8cc1Swenshuai.xi */ 1839*53ee8cc1Swenshuai.xi typedef enum 1840*53ee8cc1Swenshuai.xi { 1841*53ee8cc1Swenshuai.xi /// VGA 1842*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_VGA, 1843*53ee8cc1Swenshuai.xi /// TV 1844*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_TV, 1845*53ee8cc1Swenshuai.xi 1846*53ee8cc1Swenshuai.xi /// CVBS 1847*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_CVBS, 1848*53ee8cc1Swenshuai.xi 1849*53ee8cc1Swenshuai.xi /// S-video 1850*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_SVIDEO, 1851*53ee8cc1Swenshuai.xi 1852*53ee8cc1Swenshuai.xi /// Component 1853*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_YPBPR, 1854*53ee8cc1Swenshuai.xi /// Scart 1855*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_SCART, 1856*53ee8cc1Swenshuai.xi 1857*53ee8cc1Swenshuai.xi 1858*53ee8cc1Swenshuai.xi /// HDMI 1859*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_HDMI, 1860*53ee8cc1Swenshuai.xi 1861*53ee8cc1Swenshuai.xi /// DTV 1862*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_DTV, 1863*53ee8cc1Swenshuai.xi 1864*53ee8cc1Swenshuai.xi /// DVI 1865*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_DVI, 1866*53ee8cc1Swenshuai.xi 1867*53ee8cc1Swenshuai.xi // Application source 1868*53ee8cc1Swenshuai.xi /// Storage 1869*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_STORAGE, 1870*53ee8cc1Swenshuai.xi /// KTV 1871*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_KTV, 1872*53ee8cc1Swenshuai.xi /// JPEG 1873*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_JPEG, 1874*53ee8cc1Swenshuai.xi 1875*53ee8cc1Swenshuai.xi /// The max support number of PQ input source 1876*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_NUM, 1877*53ee8cc1Swenshuai.xi /// None 1878*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_NONE = PQ_INPUT_SOURCE_NUM, 1879*53ee8cc1Swenshuai.xi } PQ_INPUT_SOURCE_TYPE; 1880*53ee8cc1Swenshuai.xi 1881*53ee8cc1Swenshuai.xi 1882*53ee8cc1Swenshuai.xi // PQ Function 1883*53ee8cc1Swenshuai.xi typedef enum 1884*53ee8cc1Swenshuai.xi { 1885*53ee8cc1Swenshuai.xi E_PQ_IOCTL_NONE = 0x00000000, 1886*53ee8cc1Swenshuai.xi E_PQ_IOCTL_HSD_SAMPLING = 0x00000001, 1887*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PREVSD_BILINEAR = 0x00000002, 1888*53ee8cc1Swenshuai.xi E_PQ_IOCTL_ADC_SAMPLING = 0x00000003, 1889*53ee8cc1Swenshuai.xi E_PQ_IOCTL_RFBL_CTRL = 0x00000004, 1890*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PQ_SUGGESTED_FRAMENUM = 0x00000008, 1891*53ee8cc1Swenshuai.xi E_PQ_IOCTL_SET_UCFEATURE = 0x00000010, 1892*53ee8cc1Swenshuai.xi E_PQ_IOCTL_PQ_SUGGESTED_FRCMFRAMENUM = 0x00000020, 1893*53ee8cc1Swenshuai.xi 1894*53ee8cc1Swenshuai.xi E_PQ_IOCTL_NUM, 1895*53ee8cc1Swenshuai.xi }PQ_IOCTL_FLAG_TYPE; 1896*53ee8cc1Swenshuai.xi 1897*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED s_PQ_Function 1898*53ee8cc1Swenshuai.xi { 1899*53ee8cc1Swenshuai.xi 1900*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode)(PQ_WIN eWindow, MS_BOOL bOn); 1901*53ee8cc1Swenshuai.xi 1902*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable)(PQ_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1903*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1904*53ee8cc1Swenshuai.xi 1905*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc)(PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1906*53ee8cc1Swenshuai.xi 1907*53ee8cc1Swenshuai.xi PQ_DEINTERLACE_MODE (* pq_set_memformat)(PQ_WIN eWindow, MS_BOOL bMemFmt422, MS_BOOL bFBL, MS_U8 *u8BitsPerPixel); 1908*53ee8cc1Swenshuai.xi 1909*53ee8cc1Swenshuai.xi void (* pq_set_420upsampling)(PQ_WIN eWindow, MS_BOOL bFBL, MS_BOOL bPreV_ScalingDown, MS_U16 u16V_CropStart); 1910*53ee8cc1Swenshuai.xi 1911*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo)(PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_Mode_Info *pstPQModeInfo); 1912*53ee8cc1Swenshuai.xi 1913*53ee8cc1Swenshuai.xi void (* pq_deside_srctype)(PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType); 1914*53ee8cc1Swenshuai.xi 1915*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt)(PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1916*53ee8cc1Swenshuai.xi 1917*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl)(PQ_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1918*53ee8cc1Swenshuai.xi 1919*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_BOOL bOn); 1920*53ee8cc1Swenshuai.xi 1921*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1922*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1923*53ee8cc1Swenshuai.xi 1924*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1925*53ee8cc1Swenshuai.xi 1926*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); 1927*53ee8cc1Swenshuai.xi 1928*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); 1929*53ee8cc1Swenshuai.xi 1930*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_Mode_Info *pstPQModeInfo); 1931*53ee8cc1Swenshuai.xi 1932*53ee8cc1Swenshuai.xi void (* pq_deside_srctype_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_INPUT_SOURCE_TYPE enInputSourceType); 1933*53ee8cc1Swenshuai.xi 1934*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, PQ_FOURCE_COLOR_FMT enFourceColor); 1935*53ee8cc1Swenshuai.xi 1936*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl_ex)(PQ_XC_ID eXCID, PQ_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1937*53ee8cc1Swenshuai.xi }PQ_Function_Info; 1938*53ee8cc1Swenshuai.xi 1939*53ee8cc1Swenshuai.xi typedef struct 1940*53ee8cc1Swenshuai.xi { 1941*53ee8cc1Swenshuai.xi MS_U32 u32ratio; 1942*53ee8cc1Swenshuai.xi MS_BOOL bADVMode; 1943*53ee8cc1Swenshuai.xi }PQ_HSD_SAMPLING_INFO; 1944*53ee8cc1Swenshuai.xi 1945*53ee8cc1Swenshuai.xi typedef struct 1946*53ee8cc1Swenshuai.xi { 1947*53ee8cc1Swenshuai.xi PQ_INPUT_SOURCE_TYPE enPQSourceType; 1948*53ee8cc1Swenshuai.xi MS_PQ_Mode_Info stPQModeInfo; 1949*53ee8cc1Swenshuai.xi MS_U16 u16ratio; 1950*53ee8cc1Swenshuai.xi }PQ_ADC_SAMPLING_INFO; 1951*53ee8cc1Swenshuai.xi 1952*53ee8cc1Swenshuai.xi //Display information 1953*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1954*53ee8cc1Swenshuai.xi { 1955*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 1956*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE vertical start 1957*53ee8cc1Swenshuai.xi MS_U32 DEVEND;//Output DE Vertical end 1958*53ee8cc1Swenshuai.xi MS_U32 HDTOT;// Output horizontal total 1959*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 1960*53ee8cc1Swenshuai.xi MS_U32 DEHEND;// Output DE horizontal end 1961*53ee8cc1Swenshuai.xi MS_BOOL bInterlaceMode; 1962*53ee8cc1Swenshuai.xi MS_BOOL bYUVInput; 1963*53ee8cc1Swenshuai.xi } MS_XC_DST_DispInfo; 1964*53ee8cc1Swenshuai.xi 1965*53ee8cc1Swenshuai.xi typedef enum 1966*53ee8cc1Swenshuai.xi { 1967*53ee8cc1Swenshuai.xi ///IP2 path. 1968*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP2=0, 1969*53ee8cc1Swenshuai.xi 1970*53ee8cc1Swenshuai.xi /// IP man path. 1971*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP1_MAIN=1, 1972*53ee8cc1Swenshuai.xi 1973*53ee8cc1Swenshuai.xi ///IP sub path. 1974*53ee8cc1Swenshuai.xi E_GOP_XCDST_IP1_SUB=2, 1975*53ee8cc1Swenshuai.xi 1976*53ee8cc1Swenshuai.xi /// op1 main path. 1977*53ee8cc1Swenshuai.xi E_GOP_XCDST_OP1_MAIN=3, 1978*53ee8cc1Swenshuai.xi 1979*53ee8cc1Swenshuai.xi MAX_GOP_XCDST_SUPPORT 1980*53ee8cc1Swenshuai.xi 1981*53ee8cc1Swenshuai.xi } EN_GOP_XCDST_TYPE; 1982*53ee8cc1Swenshuai.xi 1983*53ee8cc1Swenshuai.xi /// Set data mux to VE 1984*53ee8cc1Swenshuai.xi typedef enum 1985*53ee8cc1Swenshuai.xi { 1986*53ee8cc1Swenshuai.xi /// GOP mux0 to VE 1987*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND0, 1988*53ee8cc1Swenshuai.xi /// GOP mux1 to VE 1989*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND1, 1990*53ee8cc1Swenshuai.xi /// GOP mux2 to VE 1991*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_BLEND2, 1992*53ee8cc1Swenshuai.xi /// mux from XC MACE 1993*53ee8cc1Swenshuai.xi E_VOP_SEL_MACE_RGB, 1994*53ee8cc1Swenshuai.xi 1995*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_NONE, 1996*53ee8cc1Swenshuai.xi /// Last GOP mux to VE 1997*53ee8cc1Swenshuai.xi E_VOP_SEL_OSD_LAST = 0x80, 1998*53ee8cc1Swenshuai.xi } EN_VOP_SEL_OSD_XC2VE_MUX; 1999*53ee8cc1Swenshuai.xi 2000*53ee8cc1Swenshuai.xi // 3D info 2001*53ee8cc1Swenshuai.xi typedef enum 2002*53ee8cc1Swenshuai.xi { 2003*53ee8cc1Swenshuai.xi //range [0000 ~ 1111] reserved for hdmi 3D spec 2004*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_PACKING = 0x00, //0000 2005*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FIELD_ALTERNATIVE = 0x01, //0001 2006*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_LINE_ALTERNATIVE = 0x02, //0010 2007*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_FULL = 0x03, //0011 2008*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_L_DEPTH = 0x04, //0100 2009*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_L_DEPTH_GRAPHICS_GRAPHICS_DEPTH = 0x05, //0101 2010*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_TOP_BOTTOM = 0x06, //0110 2011*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF = 0x08, //1000 2012*53ee8cc1Swenshuai.xi 2013*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_CHECK_BORAD = 0x09, //1001 2014*53ee8cc1Swenshuai.xi 2015*53ee8cc1Swenshuai.xi //user defined 2016*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE_USER = 0x10, 2017*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE_NONE = E_XC_3D_INPUT_MODE_USER, 2018*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_ALTERNATIVE, 2019*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE, 2020*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 2021*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_FRAME_PACKING_OPT, 2022*53ee8cc1Swenshuai.xi // optimize for format: in:E_XC_3D_INPUT_TOP_BOTTOM, out:E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF 2023*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_TOP_BOTTOM_OPT, 2024*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D, 2025*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_INTERLACE, 2026*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_INTERLACE_PTP, 2027*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE_OPT, 2028*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_NORMAL_2D_HW, //for hw 2D to 3D use 2029*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_PIXEL_ALTERNATIVE, 2030*53ee8cc1Swenshuai.xi } E_XC_3D_INPUT_MODE; 2031*53ee8cc1Swenshuai.xi 2032*53ee8cc1Swenshuai.xi 2033*53ee8cc1Swenshuai.xi typedef enum 2034*53ee8cc1Swenshuai.xi { 2035*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE_NONE, 2036*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_LINE_ALTERNATIVE , 2037*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_TOP_BOTTOM, 2038*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF, 2039*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE, //25-->50,30-->60,24-->48,50-->100,60-->120----FRC 1:2 2040*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_L, 2041*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_R, 2042*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_NOFRC, //50->50, 60->60-------------------------------FRC 1:1 2043*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_CHECKBOARD_HW, //for hw 2d to 3d use 2044*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_LINE_ALTERNATIVE_HW, //for hw 2d to 3d use 2045*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_PIXEL_ALTERNATIVE_HW, //for hw 2d to 3d use 2046*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_L_HW, //for hw 2d to 3d use 2047*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_R_HW, //for hw 2d to 3d use 2048*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_HW, //for hw 2d to 3d use 2049*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 2050*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 2051*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_PACKING, 2052*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR,//for 4k0.5k@240 3D 2053*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR_HW,//for HW 2Dto3D 4k0.5k@240 3D 2054*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_TOP_TOP, 2055*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_BOTTOM_BOTTOM, 2056*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_LEFT_LEFT, 2057*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_RIGHT_RIGHT, 2058*53ee8cc1Swenshuai.xi } E_XC_3D_OUTPUT_MODE; 2059*53ee8cc1Swenshuai.xi 2060*53ee8cc1Swenshuai.xi typedef enum 2061*53ee8cc1Swenshuai.xi { 2062*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_MODE_NONE , 2063*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1920x1080 , 2064*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_960x1080 , 2065*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1920x540 , 2066*53ee8cc1Swenshuai.xi 2067*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_FI_1280x720 , 2068*53ee8cc1Swenshuai.xi } E_XC_3D_OUTPUT_FI_MODE; 2069*53ee8cc1Swenshuai.xi 2070*53ee8cc1Swenshuai.xi typedef enum 2071*53ee8cc1Swenshuai.xi { 2072*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_SW, 2073*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_HW, 2074*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_HW_COMPATIBLE, 2075*53ee8cc1Swenshuai.xi E_XC_3D_AUTODETECT_MAX 2076*53ee8cc1Swenshuai.xi }E_XC_3D_AUTODETECT_METHOD; 2077*53ee8cc1Swenshuai.xi 2078*53ee8cc1Swenshuai.xi typedef enum 2079*53ee8cc1Swenshuai.xi { 2080*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_NONE, 2081*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_SHUTTER, //240hz panel, which can process updown, leftright,vertical or horizontal line weave 2082*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_PELLICLE, //120hz panel, which can only process horizontal line weave 2083*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_4K1K_SHUTTER, //120hz 4K1K panel, which can process updown, leftright,vertical or horizontal line weave 2084*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_MAX, 2085*53ee8cc1Swenshuai.xi } E_XC_3D_PANEL_TYPE; 2086*53ee8cc1Swenshuai.xi 2087*53ee8cc1Swenshuai.xi //hw 2d to 3d para 2088*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2089*53ee8cc1Swenshuai.xi { 2090*53ee8cc1Swenshuai.xi MS_U32 u32Hw2dTo3dPara_Version; 2091*53ee8cc1Swenshuai.xi MS_U16 u16Concave; 2092*53ee8cc1Swenshuai.xi MS_U16 u16Gain; 2093*53ee8cc1Swenshuai.xi MS_U16 u16Offset; 2094*53ee8cc1Swenshuai.xi MS_U16 u16ArtificialGain; 2095*53ee8cc1Swenshuai.xi MS_U16 u16EleSel; 2096*53ee8cc1Swenshuai.xi MS_U16 u16ModSel; 2097*53ee8cc1Swenshuai.xi MS_U16 u16EdgeBlackWidth; 2098*53ee8cc1Swenshuai.xi } MS_XC_3D_HW2DTO3D_PARA; 2099*53ee8cc1Swenshuai.xi 2100*53ee8cc1Swenshuai.xi //detect 3d format para 2101*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2102*53ee8cc1Swenshuai.xi { 2103*53ee8cc1Swenshuai.xi MS_U32 u32Detect3DFormatPara_Version; //version control, back compatible 2104*53ee8cc1Swenshuai.xi //////////////////obsolete field begin/////////////////////////////////////////////////////////////////////////////////////////////////////////// 2105*53ee8cc1Swenshuai.xi MS_U16 u16HorSearchRange; //the horizontal range for find the similar pixel at R image 2106*53ee8cc1Swenshuai.xi MS_U16 u16VerSearchRange; //the vertical range for find the similar pixel at R image 2107*53ee8cc1Swenshuai.xi MS_U16 u16GYPixelThreshold; //g/y pixel threshold for define the similar pixel 2108*53ee8cc1Swenshuai.xi MS_U16 u16RCrPixelThreshold; //r/cr pixel threshold for define the similar pixel 2109*53ee8cc1Swenshuai.xi MS_U16 u16BCbPixelThreshold; //b/cb pixel threshold for define the similar pixel 2110*53ee8cc1Swenshuai.xi MS_U16 u16HorSampleCount; //the horizontal sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 2111*53ee8cc1Swenshuai.xi MS_U16 u16VerSampleCount; //the vertical sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 2112*53ee8cc1Swenshuai.xi MS_U16 u16MaxCheckingFrameCount; //the max checking frame count 2113*53ee8cc1Swenshuai.xi MS_U16 u16HitPixelPercentage; //the percentage about hit pixel in one frame total checked pixel, for example: 70%, need set as 70 2114*53ee8cc1Swenshuai.xi //////////////////obsolete field end///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2115*53ee8cc1Swenshuai.xi MS_BOOL bEnableOverscan; //detect 3d format for considering overscan shift 2116*53ee8cc1Swenshuai.xi } MS_XC_3D_DETECT3DFORMAT_PARA; 2117*53ee8cc1Swenshuai.xi 2118*53ee8cc1Swenshuai.xi //define 3d fp info para 2119*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2120*53ee8cc1Swenshuai.xi { 2121*53ee8cc1Swenshuai.xi MS_U32 u32FPInfoPara_Version; //version control, back compatible 2122*53ee8cc1Swenshuai.xi MS_U16 u16HBlank; //horizontal blank 2123*53ee8cc1Swenshuai.xi MS_BOOL bEnableUserSetting; //enable user setting 2124*53ee8cc1Swenshuai.xi } MS_XC_3D_FPINFO_PARA; 2125*53ee8cc1Swenshuai.xi 2126*53ee8cc1Swenshuai.xi typedef enum 2127*53ee8cc1Swenshuai.xi { 2128*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_DISABLE_ALL = 0, 2129*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_DISABLE = 1, 2130*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_ENABLE = 2, 2131*53ee8cc1Swenshuai.xi DBG_FPLL_MODE_MAX, 2132*53ee8cc1Swenshuai.xi }EN_FPLL_DBG_MODE;//For debug purpose only! 2133*53ee8cc1Swenshuai.xi 2134*53ee8cc1Swenshuai.xi typedef enum 2135*53ee8cc1Swenshuai.xi { 2136*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_PHASELIMIT = 0, 2137*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_D5D6D7 = 1, 2138*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_IGAIN = 2, 2139*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_PGAIN = 3, 2140*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_INITSETSTEP = 4, 2141*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_INITSETDELAY= 5, 2142*53ee8cc1Swenshuai.xi DBG_FPLL_FLAG_MAX, 2143*53ee8cc1Swenshuai.xi }EN_FPLL_DBG_FLAG;//For debug purpose only! 2144*53ee8cc1Swenshuai.xi 2145*53ee8cc1Swenshuai.xi typedef enum 2146*53ee8cc1Swenshuai.xi { 2147*53ee8cc1Swenshuai.xi E_FPLL_MODE_DISABLE_ALL = 0, /// Disable all current FPLL customer setting(then scaler will auto decide it) 2148*53ee8cc1Swenshuai.xi E_FPLL_MODE_DISABLE = 1, /// Disable the specified(by other function parameter) FPLL customer setting 2149*53ee8cc1Swenshuai.xi E_FPLL_MODE_ENABLE = 2, /// Enable the specified(by other function parameter) FPLL customer setting 2150*53ee8cc1Swenshuai.xi E_FPLL_MODE_MAX, 2151*53ee8cc1Swenshuai.xi }EN_FPLL_MODE; 2152*53ee8cc1Swenshuai.xi 2153*53ee8cc1Swenshuai.xi typedef enum 2154*53ee8cc1Swenshuai.xi { 2155*53ee8cc1Swenshuai.xi E_FPLL_FLAG_PHASELIMIT = 0, ///Set customer setting of PHASE limit 2156*53ee8cc1Swenshuai.xi E_FPLL_FLAG_D5D6D7 = 1,///Set customer setting of D5D6D7 limit 2157*53ee8cc1Swenshuai.xi E_FPLL_FLAG_IGAIN = 2,///Set customer setting of IGAIN 2158*53ee8cc1Swenshuai.xi E_FPLL_FLAG_PGAIN = 3,///Set customer setting of PGAIN 2159*53ee8cc1Swenshuai.xi E_FPLL_FLAG_INITSETSTEP = 4, ///steps to set DCLK 2160*53ee8cc1Swenshuai.xi E_FPLL_FLAG_INITSETDELAY= 5, ///delay between steps when setting DCLK 2161*53ee8cc1Swenshuai.xi E_FPLL_FLAG_MAX, 2162*53ee8cc1Swenshuai.xi }EN_FPLL_FLAG; 2163*53ee8cc1Swenshuai.xi 2164*53ee8cc1Swenshuai.xi typedef enum 2165*53ee8cc1Swenshuai.xi { 2166*53ee8cc1Swenshuai.xi E_MLOAD_UNSUPPORTED = 0, 2167*53ee8cc1Swenshuai.xi E_MLOAD_DISABLED = 1, 2168*53ee8cc1Swenshuai.xi E_MLOAD_ENABLED = 2, 2169*53ee8cc1Swenshuai.xi }MLOAD_TYPE; 2170*53ee8cc1Swenshuai.xi 2171*53ee8cc1Swenshuai.xi typedef enum 2172*53ee8cc1Swenshuai.xi { 2173*53ee8cc1Swenshuai.xi E_MLCLIENT_MAIN_HDR = 0, 2174*53ee8cc1Swenshuai.xi 2175*53ee8cc1Swenshuai.xi E_MLCLIENT_MAX, 2176*53ee8cc1Swenshuai.xi }EN_MLOAD_CLIENT_SELECT; 2177*53ee8cc1Swenshuai.xi 2178*53ee8cc1Swenshuai.xi typedef enum 2179*53ee8cc1Swenshuai.xi { 2180*53ee8cc1Swenshuai.xi E_MLG_UNSUPPORTED = 0, 2181*53ee8cc1Swenshuai.xi E_MLG_DISABLED = 1, 2182*53ee8cc1Swenshuai.xi E_MLG_ENABLED = 2, 2183*53ee8cc1Swenshuai.xi }MLG_TYPE; 2184*53ee8cc1Swenshuai.xi 2185*53ee8cc1Swenshuai.xi typedef enum 2186*53ee8cc1Swenshuai.xi { 2187*53ee8cc1Swenshuai.xi HDMI_SYNC_DE, 2188*53ee8cc1Swenshuai.xi HDMI_SYNC_HV, 2189*53ee8cc1Swenshuai.xi } E_HDMI_SYNC_TYPE; 2190*53ee8cc1Swenshuai.xi 2191*53ee8cc1Swenshuai.xi typedef enum 2192*53ee8cc1Swenshuai.xi { 2193*53ee8cc1Swenshuai.xi MS_FRC_1_1 = 0, 2194*53ee8cc1Swenshuai.xi MS_FRC_1_2 = 1, 2195*53ee8cc1Swenshuai.xi MS_FRC_5_12 = 2, 2196*53ee8cc1Swenshuai.xi MS_FRC_2_5 = 3, 2197*53ee8cc1Swenshuai.xi MS_FRC_1_4 = 4, 2198*53ee8cc1Swenshuai.xi MS_FRC_1_3 = 5, 2199*53ee8cc1Swenshuai.xi 2200*53ee8cc1Swenshuai.xi MS_FRC_2_1 = 8, 2201*53ee8cc1Swenshuai.xi MS_FRC_4_5 = 9, 2202*53ee8cc1Swenshuai.xi } MS_FRC_TYPE; 2203*53ee8cc1Swenshuai.xi 2204*53ee8cc1Swenshuai.xi // scaler FRC table 2205*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2206*53ee8cc1Swenshuai.xi { 2207*53ee8cc1Swenshuai.xi MS_U16 u16LowerBound; 2208*53ee8cc1Swenshuai.xi MS_U16 u16HigherBound; 2209*53ee8cc1Swenshuai.xi MS_U8 u8Padding; 2210*53ee8cc1Swenshuai.xi MS_U8 u8FRC_In; // ivs 2211*53ee8cc1Swenshuai.xi MS_U8 u8FRC_Out; // ovs 2212*53ee8cc1Swenshuai.xi MS_FRC_TYPE eFRC_Type; 2213*53ee8cc1Swenshuai.xi } SC_FRC_SETTING; 2214*53ee8cc1Swenshuai.xi 2215*53ee8cc1Swenshuai.xi typedef enum 2216*53ee8cc1Swenshuai.xi { 2217*53ee8cc1Swenshuai.xi E_PQ_IOCTL_GET_HSD_SAMPLING, 2218*53ee8cc1Swenshuai.xi E_PQ_IOCTL_MAX, 2219*53ee8cc1Swenshuai.xi }E_PQ_IOCTL_FLAG; 2220*53ee8cc1Swenshuai.xi 2221*53ee8cc1Swenshuai.xi 2222*53ee8cc1Swenshuai.xi typedef enum 2223*53ee8cc1Swenshuai.xi { 2224*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_FAIL = 0, ///<Fail 2225*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_OK, ///<OK 2226*53ee8cc1Swenshuai.xi E_GET_PIXEL_RET_OUT_OF_RANGE, ///< out of range 2227*53ee8cc1Swenshuai.xi } E_APIXC_GET_PixelRGB_ReturnValue; 2228*53ee8cc1Swenshuai.xi 2229*53ee8cc1Swenshuai.xi 2230*53ee8cc1Swenshuai.xi typedef enum 2231*53ee8cc1Swenshuai.xi { 2232*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_AFTER_DLC = 0x01, 2233*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_PRE_GAMMA = 0x02, 2234*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_AFTER_OSD = 0x03, 2235*53ee8cc1Swenshuai.xi E_XC_GET_PIXEL_STAGE_MAX = 0xFF, 2236*53ee8cc1Swenshuai.xi }EN_XC_GET_PIXEL_RGB_STAGE; 2237*53ee8cc1Swenshuai.xi 2238*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2239*53ee8cc1Swenshuai.xi { 2240*53ee8cc1Swenshuai.xi EN_XC_GET_PIXEL_RGB_STAGE enStage; 2241*53ee8cc1Swenshuai.xi MS_U16 u16x; 2242*53ee8cc1Swenshuai.xi MS_U16 u16y; 2243*53ee8cc1Swenshuai.xi MS_U32 u32r; 2244*53ee8cc1Swenshuai.xi MS_U32 u32g; 2245*53ee8cc1Swenshuai.xi MS_U32 u32b; 2246*53ee8cc1Swenshuai.xi }XC_Get_Pixel_RGB; 2247*53ee8cc1Swenshuai.xi 2248*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2249*53ee8cc1Swenshuai.xi { 2250*53ee8cc1Swenshuai.xi MS_U32 u32ReportPixelInfo_Version; ///<Input: Version of current structure. Please always set to "XC_REPORT_PIXELINFO_VERSION" as input 2251*53ee8cc1Swenshuai.xi MS_U16 u16ReportPixelInfo_Length; ///<Input: Length of this structure, u16ReportPixelInfo_Length=sizeof(MS_XC_REPORT_PIXELINFO) 2252*53ee8cc1Swenshuai.xi EN_XC_GET_PIXEL_RGB_STAGE enStage; ///<Input: Pixel info report stage 2253*53ee8cc1Swenshuai.xi MS_U16 u16RepWinColor; ///<Input:Report window Color 2254*53ee8cc1Swenshuai.xi MS_U16 u16XStart; ///<Input: X start location of report window 2255*53ee8cc1Swenshuai.xi MS_U16 u16XEnd; ///<Input: X end location of report window 2256*53ee8cc1Swenshuai.xi MS_U16 u16YStart; ///<Input: Y start location of report window 2257*53ee8cc1Swenshuai.xi MS_U16 u16YEnd; ///<Input: Y end location of report window 2258*53ee8cc1Swenshuai.xi MS_U16 u16RCrMin; ///<Output:R or Cr min value 2259*53ee8cc1Swenshuai.xi MS_U16 u16RCrMax; ///<Output:R or Cr max value 2260*53ee8cc1Swenshuai.xi MS_U16 u16GYMin; ///<Output:G or Y min value 2261*53ee8cc1Swenshuai.xi MS_U16 u16GYMax; ///<Output:G or Y max value 2262*53ee8cc1Swenshuai.xi MS_U16 u16BCbMin; ///<Output:B or Cb min value 2263*53ee8cc1Swenshuai.xi MS_U16 u16BCbMax; ///<Output:B or Cb max value 2264*53ee8cc1Swenshuai.xi MS_U32 u32RCrSum; ///<Output:R or Cr sum value 2265*53ee8cc1Swenshuai.xi MS_U32 u32GYSum; ///<Output:G or Y sum value 2266*53ee8cc1Swenshuai.xi MS_U32 u32BCbSum; ///<Output:B or Cb sum value 2267*53ee8cc1Swenshuai.xi MS_BOOL bShowRepWin; ///<Input: Show report window or not 2268*53ee8cc1Swenshuai.xi }MS_XC_REPORT_PIXELINFO; 2269*53ee8cc1Swenshuai.xi 2270*53ee8cc1Swenshuai.xi // scaler interrupt sources 2271*53ee8cc1Swenshuai.xi typedef enum 2272*53ee8cc1Swenshuai.xi { 2273*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 2274*53ee8cc1Swenshuai.xi SC_INT_DIPW = 1, //DIPW write one frame done interrupt 2275*53ee8cc1Swenshuai.xi SC_INT_MEMSYNC_MAIN = 3, // interrupt of memory sync done 2276*53ee8cc1Swenshuai.xi SC_INT_START = 4, 2277*53ee8cc1Swenshuai.xi SC_INT_RESERVED1 = SC_INT_START, // before is SC_INT_TUNE_FAIL_P, FBL line buffer overrun/underrun 2278*53ee8cc1Swenshuai.xi // scaler dosen't have this interrupt now, 2279*53ee8cc1Swenshuai.xi 2280*53ee8cc1Swenshuai.xi SC_INT_VSINT, // output Vsync interrupt, can select polarity with BK0_04[1] 2281*53ee8cc1Swenshuai.xi SC_INT_F2_VTT_CHG, // main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 2282*53ee8cc1Swenshuai.xi SC_INT_F1_VTT_CHG, 2283*53ee8cc1Swenshuai.xi SC_INT_F2_VS_LOSE, // didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 2284*53ee8cc1Swenshuai.xi SC_INT_F1_VS_LOSE, 2285*53ee8cc1Swenshuai.xi SC_INT_F2_JITTER, // H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 2286*53ee8cc1Swenshuai.xi SC_INT_F1_JITTER, 2287*53ee8cc1Swenshuai.xi SC_INT_F2_IPVS_SB, // input V sync interrupt, can select which edge to trigger this interrupt with BK0_04[0] 2288*53ee8cc1Swenshuai.xi SC_INT_F1_IPVS_SB, 2289*53ee8cc1Swenshuai.xi SC_INT_F2_IPHCS_DET, // input H sync interrupt 2290*53ee8cc1Swenshuai.xi SC_INT_F1_IPHCS_DET, 2291*53ee8cc1Swenshuai.xi 2292*53ee8cc1Swenshuai.xi // 0x10 2293*53ee8cc1Swenshuai.xi SC_INT_PWM_RP_L_INT, // pwm rising edge of left frame 2294*53ee8cc1Swenshuai.xi SC_INT_PWM_FP_L_INT, // pwm falling edge of left frame 2295*53ee8cc1Swenshuai.xi SC_INT_F2_HTT_CHG, // Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 2296*53ee8cc1Swenshuai.xi SC_INT_F1_HTT_CHG, 2297*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 2298*53ee8cc1Swenshuai.xi SC_INT_F1_HS_LOSE, 2299*53ee8cc1Swenshuai.xi SC_INT_PWM_RP_R_INT, // pwm rising edge of right frame 2300*53ee8cc1Swenshuai.xi SC_INT_PWM_FP_R_INT, // pwm falling edge of right frame 2301*53ee8cc1Swenshuai.xi SC_INT_F2_CSOG, // composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 2302*53ee8cc1Swenshuai.xi SC_INT_F1_CSOG, 2303*53ee8cc1Swenshuai.xi SC_INT_F2_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATS_READY 2304*53ee8cc1Swenshuai.xi SC_INT_F1_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATS_READY 2305*53ee8cc1Swenshuai.xi SC_INT_F2_ATP_READY, // auto phase ready interrupt 2306*53ee8cc1Swenshuai.xi SC_INT_F1_ATP_READY, 2307*53ee8cc1Swenshuai.xi SC_INT_F2_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATG_READY 2308*53ee8cc1Swenshuai.xi SC_INT_F1_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATG_READY 2309*53ee8cc1Swenshuai.xi 2310*53ee8cc1Swenshuai.xi MAX_SC_INT, 2311*53ee8cc1Swenshuai.xi } SC_INT_SRC; 2312*53ee8cc1Swenshuai.xi 2313*53ee8cc1Swenshuai.xi typedef enum 2314*53ee8cc1Swenshuai.xi { 2315*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 2316*53ee8cc1Swenshuai.xi XC_INT_RESERVED1 = 4, ///< scaler dosen't have this interrupt now 2317*53ee8cc1Swenshuai.xi XC_INT_VSINT, ///< output Vsync interrupt 2318*53ee8cc1Swenshuai.xi XC_INT_F2_VTT_CHG, ///< main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 2319*53ee8cc1Swenshuai.xi XC_INT_F1_VTT_CHG, 2320*53ee8cc1Swenshuai.xi XC_INT_F2_VS_LOSE, ///< didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 2321*53ee8cc1Swenshuai.xi XC_INT_F1_VS_LOSE, 2322*53ee8cc1Swenshuai.xi XC_INT_F2_JITTER, ///< H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 2323*53ee8cc1Swenshuai.xi XC_INT_F1_JITTER, 2324*53ee8cc1Swenshuai.xi XC_INT_F2_IPVS_SB, ///< input V sync interrupt 2325*53ee8cc1Swenshuai.xi XC_INT_F1_IPVS_SB, 2326*53ee8cc1Swenshuai.xi XC_INT_F2_IPHCS_DET, ///< input H sync interrupt 2327*53ee8cc1Swenshuai.xi XC_INT_F1_IPHCS_DET, 2328*53ee8cc1Swenshuai.xi 2329*53ee8cc1Swenshuai.xi // 0x10 2330*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 2331*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 2332*53ee8cc1Swenshuai.xi XC_INT_F2_HTT_CHG, ///< Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 2333*53ee8cc1Swenshuai.xi XC_INT_F1_HTT_CHG, 2334*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 2335*53ee8cc1Swenshuai.xi XC_INT_F1_HS_LOSE, 2336*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 2337*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 2338*53ee8cc1Swenshuai.xi XC_INT_F2_CSOG, ///< composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 2339*53ee8cc1Swenshuai.xi XC_INT_F1_CSOG, 2340*53ee8cc1Swenshuai.xi XC_INT_F2_RESERVED2, ///< scaler dosen't have this interrupt now 2341*53ee8cc1Swenshuai.xi XC_INT_F1_RESERVED2, 2342*53ee8cc1Swenshuai.xi XC_INT_F2_ATP_READY, ///< auto phase ready interrupt 2343*53ee8cc1Swenshuai.xi XC_INT_F1_ATP_READY, 2344*53ee8cc1Swenshuai.xi XC_INT_F2_RESERVED3, ///< scaler dosen't have this interrupt now 2345*53ee8cc1Swenshuai.xi XC_INT_F1_RESERVED3, 2346*53ee8cc1Swenshuai.xi } XC_INT_SRC; 2347*53ee8cc1Swenshuai.xi 2348*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 2349*53ee8cc1Swenshuai.xi typedef enum 2350*53ee8cc1Swenshuai.xi { 2351*53ee8cc1Swenshuai.xi E_VOP_LAYER_VIDEO_MUX1_MUX2 = 0, ///<0: Video->GOP1->GOP2 (GOP2 is one pipe later than GOP1) 2352*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_VIDEO_MUX1_MUX2, ///<1: FrameColor->Video->GOP1->GOP2 (GOP1/GOP2 smae pipe) 2353*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_VIDEO_MUX2_MUX1, ///<2: FrameColor->Video->GOP2->GOP1 (GOP1/GOP2 smae pipe) 2354*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2, ///<3: FrameColor->GOP1->Video->GOP2 (GOP1/GOP2 smae pipe) 2355*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO, ///<4: FrameColor->GOP1->GOP2->Video (GOP1/GOP2 smae pipe) 2356*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX2_VIDEO_MUX1, ///<5: FrameColor->GOP2->Video->GOP1 (GOP1/GOP2 smae pipe) 2357*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX2_MUX1_VIDEO, ///<6: FrameColor->GOP2->GOP1->Video (GOP1/GOP2 smae pipe) 2358*53ee8cc1Swenshuai.xi 2359*53ee8cc1Swenshuai.xi E_VOP_LAYER_VIDEO_MUX1_MUX2_MUX3_MUX4 = E_VOP_LAYER_VIDEO_MUX1_MUX2, /// Video->GOP1->GOP2->GOP3->GOP4 (GOP2 is one pipe later than GOP1) 2360*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_VIDEO_MUX1_MUX2_MUX3_MUX4 = 7, /// FrameColor->Video->GOP1->GOP2->GOP3->GOP4 (GOP1/GOP2/GOP3/GOP4 smae pipe) 2361*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2_MUX3_MUX4 = E_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2, /// FrameColor->GOP1->Video->GOP2->GOP3->GOP4 (GOP1/GOP2/GOP3/GOP4 smae pipe) 2362*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO_MUX3_MUX4 = E_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO, /// FrameColor->GOP1->GOP2->Video->GOP3->GOP4 (GOP1/GOP2/GOP3/GOP4 smae pipe) 2363*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_MUX2_MUX3_VIDEO_MUX4 = 8, /// FrameColor->GOP1->GOP2->GOP3->Video->GOP4 (GOP1/GOP2/GOP3/GOP4 smae pipe) 2364*53ee8cc1Swenshuai.xi E_VOP_LAYER_FRAME_MUX1_MUX2_MUX3_MUX4_VIDEO = 9, 2365*53ee8cc1Swenshuai.xi 2366*53ee8cc1Swenshuai.xi E_VOP_LAYER_RESERVED, 2367*53ee8cc1Swenshuai.xi } E_VOP_OSD_LAYER_SEL; 2368*53ee8cc1Swenshuai.xi 2369*53ee8cc1Swenshuai.xi /// OP2VOP de select 2370*53ee8cc1Swenshuai.xi typedef enum 2371*53ee8cc1Swenshuai.xi { 2372*53ee8cc1Swenshuai.xi E_OP2VOPDE_MAINWINDOW = 0, ///<0: capture main display window, no osd 2373*53ee8cc1Swenshuai.xi E_OP2VOPDE_SUBWINDOW, ///<1: capture sub display window, no osd 2374*53ee8cc1Swenshuai.xi E_OP2VOPDE_WHOLEFRAME, ///<2: Whole frame of panel DE, no osd 2375*53ee8cc1Swenshuai.xi E_OP2VOPDE_WHOLEFRAME_WITHOSD, ///<3: Whole frame of panel DE, with osd 2376*53ee8cc1Swenshuai.xi } E_OP2VOP_DE_SEL; 2377*53ee8cc1Swenshuai.xi 2378*53ee8cc1Swenshuai.xi typedef void (*SC_InterruptCb) (SC_INT_SRC enIntNum, void *pParam); ///< Interrupt callback function 2379*53ee8cc1Swenshuai.xi 2380*53ee8cc1Swenshuai.xi 2381*53ee8cc1Swenshuai.xi //Define Output Frame control 2382*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2383*53ee8cc1Swenshuai.xi { 2384*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 2385*53ee8cc1Swenshuai.xi MS_U16 u16InVFreq; ///<input V frequency 2386*53ee8cc1Swenshuai.xi MS_U16 u16OutVFreq; ///<output V frequncy 2387*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 2388*53ee8cc1Swenshuai.xi 2389*53ee8cc1Swenshuai.xi }XC_OUTPUTFRAME_Info; 2390*53ee8cc1Swenshuai.xi 2391*53ee8cc1Swenshuai.xi /// Define XC Init MISC 2392*53ee8cc1Swenshuai.xi /// please enum use BIT0 = 1, BIT1 = 2, BIT3 = 4 2393*53ee8cc1Swenshuai.xi typedef enum 2394*53ee8cc1Swenshuai.xi { 2395*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_NULL = 0, 2396*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IMMESWITCH = 1, 2397*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IMMESWITCH_DVI_POWERSAVING = 2, 2398*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_DVI_AUTO_EQ = 4, 2399*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE = 8, 2400*53ee8cc1Swenshuai.xi 2401*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_OSD_TO_HSLVDS = 0x10, 2402*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_60HZ = 0x20, // for 60Hz FRC case 2403*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_240HZ = 0x40, // for 240Hz FRC case 2404*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_4K1K_120HZ = 0x80, // for 4K1K 120Hz FRC case 2405*53ee8cc1Swenshuai.xi 2406*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_ADC_AUTO_SCART_SV = 0x100, // Support S-Video Auto Switch on SCART 2407*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_KEEP_OP_4K2K = 0x200, // always keep OP timing as 4K2K 2408*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_INSIDE_4K_HALFK_240HZ = 0x400, // for 4K 0.5K 240Hz FRC case 2409*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FCLK_DYNAMIC_CONTROL = 0x800, // for Dynamic FCLK control 2410*53ee8cc1Swenshuai.xi 2411*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SKIP_UC_DOWNLOAD = 0x1000, // for iframe case skip UC 2412*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SKIP_VIP_PEAKING_CONTROL = 0x2000, // for skipping VIP peaking control related unnecesary timing change 2413*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FAST_GET_VFREQ = 0x4000,//for get freq fast 2414*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_LEGACY_MODE = 0x8000, // for monaco mode 2415*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_SAVE_MEM_MODE = 0x10000, // for muji save memory 2416*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 2417*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IPMUX_HDR_MODE = 0x20000, // for Kano IPMux HDR 2418*53ee8cc1Swenshuai.xi #else 2419*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_FRC_DUAL_MIU = 0x20000, // for Manhattan FRC MEMC dual-MUU 2420*53ee8cc1Swenshuai.xi #endif 2421*53ee8cc1Swenshuai.xi 2422*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IS_ANDROID = 0x40000, // android flag 2423*53ee8cc1Swenshuai.xi E_XC_S_DISPLAY_INITMISC_A_ENABLE_CVBSOX_ADCX = 0x80000, //enable ADCX code flow 2424*53ee8cc1Swenshuai.xi 2425*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 2426*53ee8cc1Swenshuai.xi //empty 2427*53ee8cc1Swenshuai.xi #else 2428*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_A_IPMUX_HDR_MODE = 0x100000, // for Kano IPMux HDR 2429*53ee8cc1Swenshuai.xi #endif 2430*53ee8cc1Swenshuai.xi } XC_INIT_MISC_A; 2431*53ee8cc1Swenshuai.xi 2432*53ee8cc1Swenshuai.xi typedef enum 2433*53ee8cc1Swenshuai.xi { 2434*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_NULL = 0, 2435*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_PQ_SKIP_PCMODE_NEWFLOW = 1, 2436*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_SKIP_SR = 2, 2437*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_HDMITX_ENABLE = 4, 2438*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_DRAM_DDR4_MODE = 8, 2439*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_HDMITX_FREERUN_UCNR_ENABLE = 0x10, //Enable UC in SOC+Raptor output freerun case 2440*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_B_DISABLE_SUPPORT_4K2K = 0x20, 2441*53ee8cc1Swenshuai.xi } XC_INIT_MISC_B; 2442*53ee8cc1Swenshuai.xi 2443*53ee8cc1Swenshuai.xi typedef enum 2444*53ee8cc1Swenshuai.xi { 2445*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_C_NULL = 0, 2446*53ee8cc1Swenshuai.xi } XC_INIT_MISC_C; 2447*53ee8cc1Swenshuai.xi 2448*53ee8cc1Swenshuai.xi 2449*53ee8cc1Swenshuai.xi typedef enum 2450*53ee8cc1Swenshuai.xi { 2451*53ee8cc1Swenshuai.xi E_XC_INIT_MISC_D_NULL = 0, 2452*53ee8cc1Swenshuai.xi } XC_INIT_MISC_D; 2453*53ee8cc1Swenshuai.xi 2454*53ee8cc1Swenshuai.xi typedef enum 2455*53ee8cc1Swenshuai.xi { 2456*53ee8cc1Swenshuai.xi E_XC_PQ_4K_PATH = 0, 2457*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) ||defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_700) 2458*53ee8cc1Swenshuai.xi E_XC_PQ_UFSC_4K_PATH = 1, 2459*53ee8cc1Swenshuai.xi #endif 2460*53ee8cc1Swenshuai.xi E_XC_PQ_PATH_MAX, 2461*53ee8cc1Swenshuai.xi }E_XC_PQ_Path_Type; 2462*53ee8cc1Swenshuai.xi 2463*53ee8cc1Swenshuai.xi /// Define the initial MISC for XC 2464*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2465*53ee8cc1Swenshuai.xi { 2466*53ee8cc1Swenshuai.xi MS_U32 u32XCMISC_version; ///<Version of current structure. 2467*53ee8cc1Swenshuai.xi MS_U32 u32MISC_A; 2468*53ee8cc1Swenshuai.xi MS_U32 u32MISC_B; 2469*53ee8cc1Swenshuai.xi MS_U32 u32MISC_C; 2470*53ee8cc1Swenshuai.xi MS_U32 u32MISC_D; 2471*53ee8cc1Swenshuai.xi } XC_INITMISC; 2472*53ee8cc1Swenshuai.xi 2473*53ee8cc1Swenshuai.xi typedef enum 2474*53ee8cc1Swenshuai.xi { 2475*53ee8cc1Swenshuai.xi E_XC_FLOCK_DIV_OFF = 0, 2476*53ee8cc1Swenshuai.xi E_XC_FLOCK_DIV_ON, 2477*53ee8cc1Swenshuai.xi E_XC_FLOCK_FPLL_ON, 2478*53ee8cc1Swenshuai.xi 2479*53ee8cc1Swenshuai.xi }E_XC_FLOCK_TYPE; 2480*53ee8cc1Swenshuai.xi 2481*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2482*53ee8cc1Swenshuai.xi { 2483*53ee8cc1Swenshuai.xi // memory 2484*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemAddr; 2485*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemSize; 2486*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemAddr; 2487*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemSize; 2488*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemAddr; 2489*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemSize; 2490*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemAddr; 2491*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemSize; 2492*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemAddr; 2493*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemSize; 2494*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemAddr; 2495*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemSize; 2496*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemAddr; 2497*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemSize; 2498*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemAddr; 2499*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemSize; 2500*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemAddr; 2501*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemSize; 2502*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemAddr; 2503*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemSize; 2504*53ee8cc1Swenshuai.xi 2505*53ee8cc1Swenshuai.xi MS_PHY u32FRC_FrameSize; 2506*53ee8cc1Swenshuai.xi 2507*53ee8cc1Swenshuai.xi MS_PHY u16FB_YcountLinePitch; 2508*53ee8cc1Swenshuai.xi MS_U16 u16PanelWidth; 2509*53ee8cc1Swenshuai.xi MS_U16 u16PanelHeigh; 2510*53ee8cc1Swenshuai.xi MS_U8 u8FRC3DPanelType; 2511*53ee8cc1Swenshuai.xi MS_U8 u83Dmode; 2512*53ee8cc1Swenshuai.xi MS_U8 u8IpMode; 2513*53ee8cc1Swenshuai.xi MS_U8 u8MirrorMode; 2514*53ee8cc1Swenshuai.xi MS_U8 u83D_FI_out; 2515*53ee8cc1Swenshuai.xi MS_BOOL bFRC; 2516*53ee8cc1Swenshuai.xi 2517*53ee8cc1Swenshuai.xi } FRC_INFO_t, *PFRC_INFO_t; 2518*53ee8cc1Swenshuai.xi 2519*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2520*53ee8cc1Swenshuai.xi { 2521*53ee8cc1Swenshuai.xi MS_U32 u32XC_PREINIT_version; ///<Version of current structure. 2522*53ee8cc1Swenshuai.xi // FRC control info 2523*53ee8cc1Swenshuai.xi FRC_INFO_t FRCInfo; 2524*53ee8cc1Swenshuai.xi 2525*53ee8cc1Swenshuai.xi MS_U16 u16VTrigX; 2526*53ee8cc1Swenshuai.xi MS_U16 u16VTrigY; 2527*53ee8cc1Swenshuai.xi 2528*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2529*53ee8cc1Swenshuai.xi // panel timing spec. 2530*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2531*53ee8cc1Swenshuai.xi // sync related 2532*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncWidth; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 2533*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncBackPorch; ///< PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 2534*53ee8cc1Swenshuai.xi 2535*53ee8cc1Swenshuai.xi ///< not support Manuel VSync Start/End now 2536*53ee8cc1Swenshuai.xi ///< VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 2537*53ee8cc1Swenshuai.xi ///< VOP_03[10:0] VSync end = Vtt - VBackPorch 2538*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncWidth; ///< define PANEL_VSYNC_WIDTH 2539*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncBackPorch; ///< define PANEL_VSYNC_BACK_PORCH 2540*53ee8cc1Swenshuai.xi 2541*53ee8cc1Swenshuai.xi } XC_PREINIT_INFO_t, *p_XC_PREINIT_INFO_t; 2542*53ee8cc1Swenshuai.xi 2543*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2544*53ee8cc1Swenshuai.xi { 2545*53ee8cc1Swenshuai.xi // memory 2546*53ee8cc1Swenshuai.xi MS_U64 u64FRC_IPM_L_MemAddr; 2547*53ee8cc1Swenshuai.xi MS_U64 u64FRC_IPM_L_MemSize; 2548*53ee8cc1Swenshuai.xi MS_U64 u64FRC_IPM_R_MemAddr; 2549*53ee8cc1Swenshuai.xi MS_U64 u64FRC_IPM_R_MemSize; 2550*53ee8cc1Swenshuai.xi MS_U64 u64FRC_PQ_MemAddr; 2551*53ee8cc1Swenshuai.xi MS_U64 u64FRC_PQ_MemSize; 2552*53ee8cc1Swenshuai.xi } XC_FRC_ADDRESS_INFO, *PXC_FRC_ADDRESS_INFO; 2553*53ee8cc1Swenshuai.xi 2554*53ee8cc1Swenshuai.xi typedef enum 2555*53ee8cc1Swenshuai.xi { 2556*53ee8cc1Swenshuai.xi E_XC_HDMITX_COLORDEPTH_8BIT, // color depth: 8bits 2557*53ee8cc1Swenshuai.xi E_XC_HDMITX_COLORDEPTH_10BIT, // color depth: 10bits 2558*53ee8cc1Swenshuai.xi E_XC_HDMITX_COLORDEPTH_12BIT, // color depth: 12bits 2559*53ee8cc1Swenshuai.xi E_XC_HDMITX_COLORDEPTH_16BIT, // color depth: 16bits 2560*53ee8cc1Swenshuai.xi E_XC_HDMITX_COLORDEPTH_MAX, 2561*53ee8cc1Swenshuai.xi } EN_XC_HDMITX_COLORDEPTH; 2562*53ee8cc1Swenshuai.xi 2563*53ee8cc1Swenshuai.xi typedef enum 2564*53ee8cc1Swenshuai.xi { 2565*53ee8cc1Swenshuai.xi E_XC_PREINIT_NULL = 0x00, 2566*53ee8cc1Swenshuai.xi E_XC_PREINIT_FRC = 0x01, 2567*53ee8cc1Swenshuai.xi E_XC_PREINIT_FRC_3D_TYPE = 0x02, 2568*53ee8cc1Swenshuai.xi E_XC_PREINIT_FRC_ADDRESS = 0x03, 2569*53ee8cc1Swenshuai.xi E_XC_PREINIT_HDMITX_COLORDEPTH = 0x04, 2570*53ee8cc1Swenshuai.xi E_XC_PREINIT_NUM, 2571*53ee8cc1Swenshuai.xi 2572*53ee8cc1Swenshuai.xi }E_XC_PREINIT_t; 2573*53ee8cc1Swenshuai.xi 2574*53ee8cc1Swenshuai.xi typedef enum 2575*53ee8cc1Swenshuai.xi { 2576*53ee8cc1Swenshuai.xi MIRROR_NORMAL, 2577*53ee8cc1Swenshuai.xi MIRROR_H_ONLY, 2578*53ee8cc1Swenshuai.xi MIRROR_V_ONLY, 2579*53ee8cc1Swenshuai.xi MIRROR_HV, 2580*53ee8cc1Swenshuai.xi MIRROR_MAX, 2581*53ee8cc1Swenshuai.xi } MirrorMode_t; 2582*53ee8cc1Swenshuai.xi 2583*53ee8cc1Swenshuai.xi typedef enum 2584*53ee8cc1Swenshuai.xi { 2585*53ee8cc1Swenshuai.xi E_XC_MEMORY_IP_READ_REQUEST, ///< memory request for IP read 2586*53ee8cc1Swenshuai.xi E_XC_MEMORY_IP_WRITE_REQUEST, ///< memory request for IP write 2587*53ee8cc1Swenshuai.xi E_XC_MEMORY_OP_READ_REQUEST, ///< memory request for OP read 2588*53ee8cc1Swenshuai.xi E_XC_MEMORY_OP_WRITE_REQUEST, ///< memory request for OP write 2589*53ee8cc1Swenshuai.xi E_XC_MEMORY_REQUEST_MAX, ///< Invalid request 2590*53ee8cc1Swenshuai.xi } E_XC_MEMORY_REQUEST_TYPE; 2591*53ee8cc1Swenshuai.xi 2592*53ee8cc1Swenshuai.xi /// Osd Index 2593*53ee8cc1Swenshuai.xi typedef enum 2594*53ee8cc1Swenshuai.xi { 2595*53ee8cc1Swenshuai.xi E_XC_OSD_0 = 0, ///< osd0 2596*53ee8cc1Swenshuai.xi E_XC_OSD_1 = 1, ///< osd1 2597*53ee8cc1Swenshuai.xi E_XC_OSD_2 = 2, ///< osd2 2598*53ee8cc1Swenshuai.xi E_XC_OSD_3 = 3, ///< osd3 2599*53ee8cc1Swenshuai.xi E_XC_OSD_4 = 4, ///< osd3 2600*53ee8cc1Swenshuai.xi E_XC_OSD_NUM, 2601*53ee8cc1Swenshuai.xi } E_XC_OSD_INDEX; 2602*53ee8cc1Swenshuai.xi 2603*53ee8cc1Swenshuai.xi /// Osd Index 2604*53ee8cc1Swenshuai.xi typedef enum 2605*53ee8cc1Swenshuai.xi { 2606*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_MODE0 = 0, ///< a*OSD + (1-a)*Video 2607*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_MODE1 = 1, ///< OSD + (1-a)*Video 2608*53ee8cc1Swenshuai.xi E_XC_OSD_BlENDING_TYPE_NUM, 2609*53ee8cc1Swenshuai.xi } E_XC_OSD_BlENDING_TYPE; 2610*53ee8cc1Swenshuai.xi 2611*53ee8cc1Swenshuai.xi /// Scaling type 2612*53ee8cc1Swenshuai.xi typedef enum 2613*53ee8cc1Swenshuai.xi { 2614*53ee8cc1Swenshuai.xi E_XC_PRE_SCALING = 0, 2615*53ee8cc1Swenshuai.xi E_XC_POST_SCALING, 2616*53ee8cc1Swenshuai.xi E_XC_BOTH_SCALING, 2617*53ee8cc1Swenshuai.xi }E_XC_SCALING_TYPE; 2618*53ee8cc1Swenshuai.xi 2619*53ee8cc1Swenshuai.xi /// HV Vector type 2620*53ee8cc1Swenshuai.xi typedef enum 2621*53ee8cc1Swenshuai.xi { 2622*53ee8cc1Swenshuai.xi E_XC_H_VECTOR = 0, 2623*53ee8cc1Swenshuai.xi E_XC_V_VECTOR, 2624*53ee8cc1Swenshuai.xi E_XC_HV_VECTOR, 2625*53ee8cc1Swenshuai.xi }E_XC_VECTOR_TYPE; 2626*53ee8cc1Swenshuai.xi 2627*53ee8cc1Swenshuai.xi /// Define MCDI buffer type 2628*53ee8cc1Swenshuai.xi typedef enum 2629*53ee8cc1Swenshuai.xi { 2630*53ee8cc1Swenshuai.xi E_XC_MCDI_ME1 = 0, ///< Main MDCI ME1 2631*53ee8cc1Swenshuai.xi E_XC_MCDI_ME2 = 1, ///< Main MDCI ME2 2632*53ee8cc1Swenshuai.xi E_XC_MCDI_BOTH, ///< Main MDCI ME1+ME2 2633*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_ME1, ///< Sub MDCI ME1 2634*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_ME2, ///< Sub MDCI ME2 2635*53ee8cc1Swenshuai.xi E_XC_MCDI_SUB_BOTH, ///< Sub MDCI ME1+ME2 2636*53ee8cc1Swenshuai.xi E_XC_MCDI_MAX, 2637*53ee8cc1Swenshuai.xi }E_XC_MCDI_TYPE; 2638*53ee8cc1Swenshuai.xi 2639*53ee8cc1Swenshuai.xi typedef struct 2640*53ee8cc1Swenshuai.xi { 2641*53ee8cc1Swenshuai.xi MS_U8 p1; 2642*53ee8cc1Swenshuai.xi MS_U8 p2; 2643*53ee8cc1Swenshuai.xi MS_U8 p3; 2644*53ee8cc1Swenshuai.xi MS_U8 p4; 2645*53ee8cc1Swenshuai.xi MS_U8 p5; 2646*53ee8cc1Swenshuai.xi MS_U8 p6; 2647*53ee8cc1Swenshuai.xi MS_U8 p7; 2648*53ee8cc1Swenshuai.xi MS_U8 p8; 2649*53ee8cc1Swenshuai.xi } FRC_R2_CMD_PARAMETER_t, *p_FRC_R2_CMD_PARAMETER_t; 2650*53ee8cc1Swenshuai.xi 2651*53ee8cc1Swenshuai.xi typedef enum 2652*53ee8cc1Swenshuai.xi { 2653*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_NONE = 0x00, 2654*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_TEST = 0x01, // Print parameter 2655*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_GET_SW_VERSION = 0x02, // ParaCnt=0, return 2 Byte, P0=Main, P1=Minor 2656*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_GET_CMD_VERSION = 0x03, // ParaCnt=0, return 2 Byte, P0=Low byte, P1=High byte 2657*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_INIT = 0x10, // ParaCnt=5, P0 = Panel 3D type(0=2D, 1=passive, 2=active, 3=PDP) 2658*53ee8cc1Swenshuai.xi // P1 = Panel max V Freq, 60/120/240, but 240 Hz is not supported 2659*53ee8cc1Swenshuai.xi // P2 = LocalDimming panel type, (0=LG32inch_LR10, 1=LG37inch_LR10, 2=LG42inch_LR16, 3=LG47inch_LR16, 4=LG55inch_LR16, 2660*53ee8cc1Swenshuai.xi // 5=TOSHIBA_LR16, 6=TOSHIBA_TB16, 8=LG50inchCinema_TB32, 9=LG60inchCinema_TB32, A=LG47inch_Direct72, B=LG55inch_Direct96, C=LG72inch_Direct480) 2661*53ee8cc1Swenshuai.xi // P3 = ChipRevision (0=U01, 1=U02, 2=U03, etc.) 2662*53ee8cc1Swenshuai.xi // P4 = Is60HzPackage (0=FALSE, 1=TRUE) 2663*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_TIMING = 0x11, // ParaCnt=2, P0 = Input V Freq, P1 = Output V Freq 2664*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] 2665*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] 2666*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) 2667*53ee8cc1Swenshuai.xi // P1 = 3DModeConfig(0=Normal, 1=L/R Swap, 2=L-Only, 3=R-Only) 2668*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_3D_DEPTH_OFFSET = 0x15, // ParaCnt=2, P0 = Enable3DDepthOffset(0=Disable, 1=Enable) 2669*53ee8cc1Swenshuai.xi // P1 = 3DDepthOffset(0~255) 2670*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) 2671*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) 2672*53ee8cc1Swenshuai.xi // P1 = DeJudderLevel(0~10) [for User mode only] 2673*53ee8cc1Swenshuai.xi // P2 = DeBlurLevel(0~10) [for User mode only] 2674*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_MFC_DEMO_MODE = 0x21, // ParaCnt=1, P0 = DemoModeEnable(0=Disable,1=Enable) 2675*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_MFC_LOW_BANDWIDTH = 0x23, // ParaCnt=1, P0 = MEMC low badnwidth switch(0 :off, 1 on) 2676*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_MFC_WAIT_TODO = 0x24, // ParaCnt=1, P0 = MEMC wait to do switch(0: off, 1: on) , P1 = Frame Number 2677*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) 2678*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_2D_TO_3D_MODE = 0x40, // ParaCnt=5, P0 = 2D to 3D ConversionMode(0=Disable, 1=Enable) 2679*53ee8cc1Swenshuai.xi // P1 = 2D to 3D Depth Gain(0~31) 2680*53ee8cc1Swenshuai.xi // P2 = 2D to 3D Depth Offset(0~127) 2681*53ee8cc1Swenshuai.xi // P3 = Artificial Gain(0~15) 2682*53ee8cc1Swenshuai.xi // P4 = L/R Swap (0=Normal, 1=L/R Swap) 2683*53ee8cc1Swenshuai.xi ///* the value is not decided yet 2684*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_ENABLE = 0x50, // ParaCnt=1, P0 = PWM Enable(0=Disable, 1=Enable) 2685*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_DUTY_PHASE = 0x51, // ParaCnt=6, P0 = PWM No.(0, 1, 3) 2686*53ee8cc1Swenshuai.xi // P1 P2 = PWMX_DutyPercentX100(0~65536) 2687*53ee8cc1Swenshuai.xi // P3 P4 = PWMX_360DegreeX100(0~65536) 2688*53ee8cc1Swenshuai.xi // P5 = PWMX_Polarity(0=not invert, 1=invert) 2689*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_PWM_FREQ = 0x52, // ParaCnt=4, P0 = PWM No.(0, 1, 3) 2690*53ee8cc1Swenshuai.xi // P1 = PWMX_FreqMul 2691*53ee8cc1Swenshuai.xi // P2 = PWMX_FreqDiv 2692*53ee8cc1Swenshuai.xi // P3 = PWMX_VsorHsRST 2693*53ee8cc1Swenshuai.xi // P4 = PWMX_SyncRstCnt 2694*53ee8cc1Swenshuai.xi E_XC_FRC_MB_CMD_SET_FORCE_PWM = 0x53, // ParaCnt=0 2695*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) 2696*53ee8cc1Swenshuai.xi // P2 P1= Pulse time shift(0~65536) 2697*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) 2698*53ee8cc1Swenshuai.xi /* 2699*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) 2700*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) 2701*53ee8cc1Swenshuai.xi // P2 = First CMD shift(0~255) 2702*53ee8cc1Swenshuai.xi // P3 = Second CMD shift(0~255) 2703*53ee8cc1Swenshuai.xi */ 2704*53ee8cc1Swenshuai.xi /* 2705*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) 2706*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) 2707*53ee8cc1Swenshuai.xi // P2 = First CMD shift(0~255) 2708*53ee8cc1Swenshuai.xi // P3 = Second CMD shift(0~255) 2709*53ee8cc1Swenshuai.xi */ 2710*53ee8cc1Swenshuai.xi } E_XC_FRC_MAILBOX_CMD; 2711*53ee8cc1Swenshuai.xi 2712*53ee8cc1Swenshuai.xi //LD 2713*53ee8cc1Swenshuai.xi 2714*53ee8cc1Swenshuai.xi typedef enum 2715*53ee8cc1Swenshuai.xi { 2716*53ee8cc1Swenshuai.xi E_LD_PANEL_LG32inch_LR10 = 0x0, 2717*53ee8cc1Swenshuai.xi E_LD_PANEL_LG37inch_LR10 = 0x1, 2718*53ee8cc1Swenshuai.xi E_LD_PANEL_LG42inch_LR16 = 0x2, 2719*53ee8cc1Swenshuai.xi E_LD_PANEL_LG47inch_LR16 = 0x3, 2720*53ee8cc1Swenshuai.xi E_LD_PANEL_LG55inch_LR16 = 0x4, 2721*53ee8cc1Swenshuai.xi E_LD_PANEL_LG55inch_LR12 = 0x5, 2722*53ee8cc1Swenshuai.xi E_LD_PANEL_CMO42inch_LR16 = 0x6, 2723*53ee8cc1Swenshuai.xi E_LD_PANEL_LG50inch_4K2K_VB1 = 0x7, 2724*53ee8cc1Swenshuai.xi E_LD_PANEL_DEFAULT, 2725*53ee8cc1Swenshuai.xi E_LD_PANEL_NUMS, 2726*53ee8cc1Swenshuai.xi }EN_LD_PANEL_TYPE; 2727*53ee8cc1Swenshuai.xi 2728*53ee8cc1Swenshuai.xi typedef enum 2729*53ee8cc1Swenshuai.xi { 2730*53ee8cc1Swenshuai.xi E_LD_MODE_OFF = 0, 2731*53ee8cc1Swenshuai.xi E_LD_MODE_LOW = 1, 2732*53ee8cc1Swenshuai.xi E_LD_MODE_MID = 2, 2733*53ee8cc1Swenshuai.xi E_LD_MODE_HIGH = 3, 2734*53ee8cc1Swenshuai.xi }EN_LD_MODE; 2735*53ee8cc1Swenshuai.xi 2736*53ee8cc1Swenshuai.xi //parameters for detecting nine lattice 2737*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2738*53ee8cc1Swenshuai.xi { 2739*53ee8cc1Swenshuai.xi MS_U16 u16PixelStep; // distance between sample points 2740*53ee8cc1Swenshuai.xi MS_U8 u8ColorThreshold; // max color difference 2741*53ee8cc1Swenshuai.xi MS_U8 u8TryTimes; // max times for detecting 2742*53ee8cc1Swenshuai.xi MS_U16 u16LinearDiff; // difference for every 3 lattice in a line 2743*53ee8cc1Swenshuai.xi }ST_DETECTNL_PARA; 2744*53ee8cc1Swenshuai.xi 2745*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_ALLOFF (0x0000) 2746*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2COLORMATRIX (0x0001) 2747*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2CSCDITHER (0x0002) 2748*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2BRIGHTNESS (0x0004) 2749*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2CONTRAST (0x0008) 2750*53ee8cc1Swenshuai.xi #define FRC_PATHCTRL_OP2NOISEROUND (0x0010) 2751*53ee8cc1Swenshuai.xi 2752*53ee8cc1Swenshuai.xi // OSDC TIMING GEN 2753*53ee8cc1Swenshuai.xi typedef struct 2754*53ee8cc1Swenshuai.xi { 2755*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HTotal; 2756*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VTotal; 2757*53ee8cc1Swenshuai.xi 2758*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_Start; 2759*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_End; 2760*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_Start; 2761*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_End; 2762*53ee8cc1Swenshuai.xi 2763*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_Start; 2764*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_End; 2765*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_Start; 2766*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_End; 2767*53ee8cc1Swenshuai.xi }MS_XC_OSDC_TGEN_INFO; 2768*53ee8cc1Swenshuai.xi 2769*53ee8cc1Swenshuai.xi // OSDC MISC Control 2770*53ee8cc1Swenshuai.xi typedef struct 2771*53ee8cc1Swenshuai.xi { 2772*53ee8cc1Swenshuai.xi MS_BOOL bOC_ClK_En; 2773*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Bypass_En; 2774*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_InvAlpha_En; 2775*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hsync_Vfde_Out; // 1:hs_out = hs&vfde 2776*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hfde_Vfde_Out; // 1:hs_out = de(hfde)&vfde 2777*53ee8cc1Swenshuai.xi MS_U16 u16OC_Lpll_type; 2778*53ee8cc1Swenshuai.xi MS_U8 u8OC_OutputFormat; // output bit order 2779*53ee8cc1Swenshuai.xi }MS_XC_OSDC_CTRL_INFO; 2780*53ee8cc1Swenshuai.xi 2781*53ee8cc1Swenshuai.xi typedef enum 2782*53ee8cc1Swenshuai.xi { 2783*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_MANUAL = 0, 2784*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_1366x768, 2785*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_1920x1080, 2786*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_3840x2160, 2787*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_3840x1080, 2788*53ee8cc1Swenshuai.xi 2789*53ee8cc1Swenshuai.xi E_XC_OSDC_TGEN_MAX, 2790*53ee8cc1Swenshuai.xi }E_XC_OSDC_TGEN_Type; 2791*53ee8cc1Swenshuai.xi 2792*53ee8cc1Swenshuai.xi typedef enum 2793*53ee8cc1Swenshuai.xi { 2794*53ee8cc1Swenshuai.xi E_XC_OSDC_INIT = 0, 2795*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_TGEN, 2796*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_MISC, 2797*53ee8cc1Swenshuai.xi E_XC_OSDC_CTRL_OUTPUT_FORMAT, 2798*53ee8cc1Swenshuai.xi }E_XC_OSDC_CTRL_TYPE; 2799*53ee8cc1Swenshuai.xi 2800*53ee8cc1Swenshuai.xi //OSDC Display information 2801*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2802*53ee8cc1Swenshuai.xi { 2803*53ee8cc1Swenshuai.xi MS_U32 ODSC_DISPInfo_Version; ///<Version of current structure. Please always set to "u32Osdc_dispinfo_Version" as input 2804*53ee8cc1Swenshuai.xi 2805*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 2806*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE Vertical start 2807*53ee8cc1Swenshuai.xi MS_U32 DEVEND; //Output DE Vertical end 2808*53ee8cc1Swenshuai.xi MS_U32 HDTOT; // Output horizontal total 2809*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 2810*53ee8cc1Swenshuai.xi MS_U32 DEHEND; // Output DE horizontal end 2811*53ee8cc1Swenshuai.xi 2812*53ee8cc1Swenshuai.xi MS_U32 SYNCHST; 2813*53ee8cc1Swenshuai.xi MS_U32 SYNCHEND; 2814*53ee8cc1Swenshuai.xi MS_U32 SYNCVST; 2815*53ee8cc1Swenshuai.xi MS_U32 SYNCVEND; 2816*53ee8cc1Swenshuai.xi 2817*53ee8cc1Swenshuai.xi MS_BOOL bCLK_EN; // OUTPUT ENABLE 2818*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_BYPASS_EN; // MIXER BYPASS ENABLE 2819*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_INVALPHA_EN; 2820*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HSTVFDEOUT_EN;// 1:hs_out = hs&vfde 2821*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HFDEVFDEOUT_EN;// 1:hs_out = de(hfde)&vfde 2822*53ee8cc1Swenshuai.xi 2823*53ee8cc1Swenshuai.xi } MS_OSDC_DST_DispInfo; 2824*53ee8cc1Swenshuai.xi 2825*53ee8cc1Swenshuai.xi //select the input for bypass mode. 2826*53ee8cc1Swenshuai.xi typedef enum 2827*53ee8cc1Swenshuai.xi { 2828*53ee8cc1Swenshuai.xi E_XC_BYPASS_HDMI = 0, 2829*53ee8cc1Swenshuai.xi E_XC_BYPASS_DC_MAIN, 2830*53ee8cc1Swenshuai.xi E_XC_BYPASS_DC_SUB, 2831*53ee8cc1Swenshuai.xi }E_XC_BYPASS_InputSource; 2832*53ee8cc1Swenshuai.xi 2833*53ee8cc1Swenshuai.xi 2834*53ee8cc1Swenshuai.xi // For HW internal test pattern 2835*53ee8cc1Swenshuai.xi typedef enum 2836*53ee8cc1Swenshuai.xi { 2837*53ee8cc1Swenshuai.xi E_XC_OP1_PATGEN_DISP_LB_MODE, // pattern gen on display line buffer, can't support post-sclaing 2838*53ee8cc1Swenshuai.xi E_XC_OP1_PATGEN_OPM_MODE, // pattern gen before post scaling engine, can support post-scaling, but not implement now 2839*53ee8cc1Swenshuai.xi }EN_XC_OP1_PATGEN_MODE; 2840*53ee8cc1Swenshuai.xi 2841*53ee8cc1Swenshuai.xi typedef enum{ 2842*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_OFF = 0, 2843*53ee8cc1Swenshuai.xi E_XC_OP1_WB_PATTERN, // 1: 2844*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_PATTERN, // 2: red 2845*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_PATTERN, // 3: green 2846*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_PATTERN, // 4: blue 2847*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_PATTERN, // 5: white 2848*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLACK_PATTERN, // 6: black 2849*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_PATTERN, // 7: gray 2850*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_COLOR_V_BAR_PATTERN, // 8: vertical color-bar 2851*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_COLOR_H_BAR_PATTERN, // 9: horizontal color-bar 2852*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_16_PATTERN, // 10: 16 vertical gray-bar 2853*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_32_PATTERN, // 11: 32 vertical gray-bar 2854*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_BAR_64_PATTERN, // 12: 64 vertical gray-bar 2855*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREY_RGB_32_PATTERN, // 13: 32 vertical 4 color bar 2856*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN, // 14: 3x3 checkerboard R/B/G 2857*53ee8cc1Swenshuai.xi E_XC_OP1_DOAFADE_GRAY_PATTERN, // 15: dotfade gary 2858*53ee8cc1Swenshuai.xi E_XC_OP1_CALIBRATION_COLOR_DOTFADE_PATTERN, // 16: checkerboard + dotfade gary 2859*53ee8cc1Swenshuai.xi E_XC_OP1_CALIBRATION_PATTERN, // 17: checkerboard 2860*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_1, // 18 2861*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_2, // 19: 2862*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_3, // 20: same as pattern2, but not full screen 2863*53ee8cc1Swenshuai.xi E_XC_OP1_3D_PATTERN, // 21: side-by-side, if enable 3D effect, can see the word "3D" 2864*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_100IRE_PATTERN, // 22: red 2865*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_100IRE_PATTERN, // 23: green 2866*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_100IRE_PATTERN, // 24: blue 2867*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_70IRE_PATTERN, // 25 2868*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_70IRE_PATTERN, // 26 2869*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_70IRE_PATTERN, // 27 2870*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_40IRE_PATTERN, // 28 2871*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_40IRE_PATTERN, // 29 2872*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_40IRE_PATTERN, // 30 2873*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_20IRE_PATTERN, // 31 2874*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_20IRE_PATTERN, // 32 2875*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_20IRE_PATTERN, // 33 2876*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RED_10IRE_PATTERN, // 34 2877*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GREEN_10IRE_PATTERN, // 35 2878*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_BLUE_10IRE_PATTERN, // 36 2879*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_100IRE_PATTERN, // 37 2880*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_90IRE_PATTERN, // 38 2881*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_80IRE_PATTERN, // 39 2882*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_70IRE_PATTERN, // 40 2883*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_60IRE_PATTERN, // 41 2884*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_50IRE_PATTERN, // 42 2885*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_40IRE_PATTERN, // 43 2886*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_30IRE_PATTERN, // 44 2887*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_20IRE_PATTERN, // 45 2888*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_WHITE_10IRE_PATTERN, // 46 2889*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GAMMA_GREY1_PATTERN, // 47: gray 2890*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_GAMMA_GREY2_PATTERN, // 48: gray 2891*53ee8cc1Swenshuai.xi E_XC_OP1_PURE_RGB_CHECKERBOARD_PATTERN_2, // 49: 3x3 checkerboard R/G/B 2892*53ee8cc1Swenshuai.xi }EN_XC_OP1_PATTERN; 2893*53ee8cc1Swenshuai.xi 2894*53ee8cc1Swenshuai.xi //white balance pattern mode 2895*53ee8cc1Swenshuai.xi typedef enum 2896*53ee8cc1Swenshuai.xi { 2897*53ee8cc1Swenshuai.xi E_XC_OP1_PATTERN_MODE, // OP1 tset Pattern 2898*53ee8cc1Swenshuai.xi E_XC_OP2_PATTERN_MODE, // OP2 tset Pattern 2899*53ee8cc1Swenshuai.xi }EN_XC_WB_PATTERN_MODE; 2900*53ee8cc1Swenshuai.xi 2901*53ee8cc1Swenshuai.xi 2902*53ee8cc1Swenshuai.xi typedef struct 2903*53ee8cc1Swenshuai.xi { 2904*53ee8cc1Swenshuai.xi // Output timing 2905*53ee8cc1Swenshuai.xi MS_U16 u16HStart; ///< DE H start 2906*53ee8cc1Swenshuai.xi MS_U16 u16VStart; ///< DE V start 2907*53ee8cc1Swenshuai.xi MS_U16 u16Width; ///< DE H width 2908*53ee8cc1Swenshuai.xi MS_U16 u16Height; ///< DE V height 2909*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///< H total 2910*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///< V total 2911*53ee8cc1Swenshuai.xi 2912*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq; ///< Panel output Vfreq., used in free run 2913*53ee8cc1Swenshuai.xi 2914*53ee8cc1Swenshuai.xi // sync 2915*53ee8cc1Swenshuai.xi MS_U8 u8HSyncWidth; ///< H sync width 2916*53ee8cc1Swenshuai.xi MS_U16 u16VSyncStart; ///< V sync start = Vtotal - backporch - VSyncWidth 2917*53ee8cc1Swenshuai.xi MS_U8 u8VSyncWidth; ///< V sync width 2918*53ee8cc1Swenshuai.xi MS_BOOL bManuelVSyncCtrl; ///< enable manuel V sync control 2919*53ee8cc1Swenshuai.xi 2920*53ee8cc1Swenshuai.xi // output control 2921*53ee8cc1Swenshuai.xi MS_U16 u16OCTRL; ///< Output control such as Swap port, etc. 2922*53ee8cc1Swenshuai.xi MS_U16 u16OSTRL; ///< Output control sync as Invert sync/DE, etc. 2923*53ee8cc1Swenshuai.xi MS_U16 u16ODRV; ///< Driving current 2924*53ee8cc1Swenshuai.xi MS_U16 u16DITHCTRL; ///< Dither control 2925*53ee8cc1Swenshuai.xi 2926*53ee8cc1Swenshuai.xi } MS_XC_VOP_Data; 2927*53ee8cc1Swenshuai.xi 2928*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SETBLACKVIDEOBYMODE 2929*53ee8cc1Swenshuai.xi // Black video mode 2930*53ee8cc1Swenshuai.xi typedef enum 2931*53ee8cc1Swenshuai.xi { 2932*53ee8cc1Swenshuai.xi E_XC_BLACK_VIDEO_BASIC, 2933*53ee8cc1Swenshuai.xi E_XC_BLACK_VIDEO_MEMSYNC, // HW auto memory sync 2934*53ee8cc1Swenshuai.xi }EN_XC_BLACK_VIDEO_MODE; 2935*53ee8cc1Swenshuai.xi #endif 2936*53ee8cc1Swenshuai.xi 2937*53ee8cc1Swenshuai.xi typedef enum 2938*53ee8cc1Swenshuai.xi { 2939*53ee8cc1Swenshuai.xi /* 2940*53ee8cc1Swenshuai.xi __________________________________________________________________________________________________________________________________________ 2941*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| 2942*53ee8cc1Swenshuai.xi |------------------|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| 2943*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 | 2944*53ee8cc1Swenshuai.xi |------------------|--|--|--|--|--|--|--|--|--|--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| 2945*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 | 2946*53ee8cc1Swenshuai.xi ------------------------------------------------------------------------------------------------------------------------------------------ 2947*53ee8cc1Swenshuai.xi */ 2948*53ee8cc1Swenshuai.xi E_XC_OSDC_OUTPUT_FORMAT_VBY1_ARGB1, 2949*53ee8cc1Swenshuai.xi E_XC_OSDC_OUTPUT_FORMAT_VBY1_ARGB2, 2950*53ee8cc1Swenshuai.xi } E_XC_OSDC_OUTPUT_FORMAT; 2951*53ee8cc1Swenshuai.xi 2952*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2953*53ee8cc1Swenshuai.xi { 2954*53ee8cc1Swenshuai.xi MS_PHYADDR u32FBSize[2]; 2955*53ee8cc1Swenshuai.xi MS_U16 u16VBox_Htotal[2]; 2956*53ee8cc1Swenshuai.xi MS_U16 u16VBox_Vtotal[2]; 2957*53ee8cc1Swenshuai.xi MS_U16 u16VBox_PanelHsize; 2958*53ee8cc1Swenshuai.xi MS_U16 u16VBox_PanelVsize; 2959*53ee8cc1Swenshuai.xi MS_U16 u16Vfreq[2]; 2960*53ee8cc1Swenshuai.xi MS_BOOL bInterface[2]; 2961*53ee8cc1Swenshuai.xi }XC_VBOX_INFO; 2962*53ee8cc1Swenshuai.xi 2963*53ee8cc1Swenshuai.xi typedef enum 2964*53ee8cc1Swenshuai.xi { 2965*53ee8cc1Swenshuai.xi E_XC_BWD_UPDATE_BWR_CONFIG = 0, // Update bwr configuration 2966*53ee8cc1Swenshuai.xi } E_XC_BWD_CONFIG_TYPE; 2967*53ee8cc1Swenshuai.xi 2968*53ee8cc1Swenshuai.xi #ifdef UFO_XC_TEST_PATTERN 2969*53ee8cc1Swenshuai.xi //xc test pattern type 2970*53ee8cc1Swenshuai.xi typedef enum 2971*53ee8cc1Swenshuai.xi { 2972*53ee8cc1Swenshuai.xi E_XC_ADC_PATTERN_MODE, //adc test pattern 2973*53ee8cc1Swenshuai.xi E_XC_IPMUX_PATTERN_MODE, // ipmux test Pattern 2974*53ee8cc1Swenshuai.xi E_XC_IP1_PATTERN_MODE, // ip test Pattern 2975*53ee8cc1Swenshuai.xi E_XC_OP_PATTERN_MODE, // op test Pattern 2976*53ee8cc1Swenshuai.xi E_XC_VOP_PATTERN_MODE, // vop test Pattern 2977*53ee8cc1Swenshuai.xi E_XC_VOP2_PATTERN_MODE, // vop2 test Pattern 2978*53ee8cc1Swenshuai.xi E_XC_MOD_PATTERN_MODE, // mod test Pattern 2979*53ee8cc1Swenshuai.xi }EN_XC_TEST_PATTERN_MODE; 2980*53ee8cc1Swenshuai.xi 2981*53ee8cc1Swenshuai.xi //adc test pattern 2982*53ee8cc1Swenshuai.xi typedef struct 2983*53ee8cc1Swenshuai.xi { 2984*53ee8cc1Swenshuai.xi MS_U8 u8EnableADCType; 2985*53ee8cc1Swenshuai.xi MS_U16 u16Ramp; 2986*53ee8cc1Swenshuai.xi } XC_SET_ADC_TESTPATTERN_t, *p_XC_SET_ADC_TESTPATTERN_t; 2987*53ee8cc1Swenshuai.xi 2988*53ee8cc1Swenshuai.xi //ipmux test Pattern 2989*53ee8cc1Swenshuai.xi typedef struct 2990*53ee8cc1Swenshuai.xi { 2991*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2992*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 2993*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 2994*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 2995*53ee8cc1Swenshuai.xi } XC_SET_IPMUX_TESTPATTERN_t, *p_XC_SET_IPMUX_TESTPATTERN_t; 2996*53ee8cc1Swenshuai.xi 2997*53ee8cc1Swenshuai.xi //ip test Pattern 2998*53ee8cc1Swenshuai.xi typedef struct 2999*53ee8cc1Swenshuai.xi { 3000*53ee8cc1Swenshuai.xi MS_U16 u16Enable; 3001*53ee8cc1Swenshuai.xi MS_U32 u32Pattern_type; 3002*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 3003*53ee8cc1Swenshuai.xi } XC_SET_IP1_TESTPATTERN_t, *p_XC_SET_IP1_TESTPATTERN_t; 3004*53ee8cc1Swenshuai.xi 3005*53ee8cc1Swenshuai.xi //op test Pattern 3006*53ee8cc1Swenshuai.xi typedef struct 3007*53ee8cc1Swenshuai.xi { 3008*53ee8cc1Swenshuai.xi MS_BOOL bMiuLineBuff; 3009*53ee8cc1Swenshuai.xi MS_BOOL bLineBuffHVSP; 3010*53ee8cc1Swenshuai.xi } XC_SET_OP_TESTPATTERN_t, *p_XC_SET_OP_TESTPATTERN_t; 3011*53ee8cc1Swenshuai.xi 3012*53ee8cc1Swenshuai.xi //vop test Pattern 3013*53ee8cc1Swenshuai.xi typedef struct 3014*53ee8cc1Swenshuai.xi { 3015*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 3016*53ee8cc1Swenshuai.xi } XC_SET_VOP_TESTPATTERN_t, *p_XC_SET_VOP_TESTPATTERN_t; 3017*53ee8cc1Swenshuai.xi 3018*53ee8cc1Swenshuai.xi //vop2 test Pattern 3019*53ee8cc1Swenshuai.xi typedef struct 3020*53ee8cc1Swenshuai.xi { 3021*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 3022*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 3023*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 3024*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 3025*53ee8cc1Swenshuai.xi } XC_SET_VOP2_TESTPATTERN_t, *p_XC_SET_VOP2_TESTPATTERN_t; 3026*53ee8cc1Swenshuai.xi 3027*53ee8cc1Swenshuai.xi //mod test Pattern 3028*53ee8cc1Swenshuai.xi typedef struct 3029*53ee8cc1Swenshuai.xi { 3030*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 3031*53ee8cc1Swenshuai.xi MS_U16 u16R_CR_Data; 3032*53ee8cc1Swenshuai.xi MS_U16 u16G_Y_Data; 3033*53ee8cc1Swenshuai.xi MS_U16 u16B_CB_Data; 3034*53ee8cc1Swenshuai.xi } XC_SET_MOD_TESTPATTERN_t, *p_XC_SET_MOD_TESTPATTERN_t; 3035*53ee8cc1Swenshuai.xi #endif 3036*53ee8cc1Swenshuai.xi 3037*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3038*53ee8cc1Swenshuai.xi //MApi_XC_VideoPlaybackController enum of cmd 3039*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3040*53ee8cc1Swenshuai.xi typedef enum 3041*53ee8cc1Swenshuai.xi { 3042*53ee8cc1Swenshuai.xi E_XC_VPC_MULTI_SPEED_PLAYBACK_CTRL, 3043*53ee8cc1Swenshuai.xi }E_XC_VIDEO_PLAYBACK_CTRL_ID; 3044*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3045*53ee8cc1Swenshuai.xi //MApi_XC_VideoPlaybackController struct of cmd 3046*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3047*53ee8cc1Swenshuai.xi typedef struct 3048*53ee8cc1Swenshuai.xi { 3049*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 3050*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 3051*53ee8cc1Swenshuai.xi }ST_XC_VPC_MULTI_SPEED_PLAYBACK_CTRL; 3052*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3053*53ee8cc1Swenshuai.xi 3054*53ee8cc1Swenshuai.xi #ifdef UFO_XC_AUTO_DOWNLOAD 3055*53ee8cc1Swenshuai.xi /// AUTODOWNLOAD_CONFIG_INFO version of current XC lib 3056*53ee8cc1Swenshuai.xi #define AUTODOWNLOAD_CONFIG_INFO_VERSION 1 3057*53ee8cc1Swenshuai.xi /// AUTODOWNLOAD_DATA_INFO version of current XC lib 3058*53ee8cc1Swenshuai.xi #define AUTODOWNLOAD_DATA_INFO_VERSION 1 3059*53ee8cc1Swenshuai.xi /// AUTODOWNLOAD_FORMAT_INFO version of current XC lib 3060*53ee8cc1Swenshuai.xi #define AUTODOWNLOAD_FORMAT_INFO_VERSION 1 3061*53ee8cc1Swenshuai.xi 3062*53ee8cc1Swenshuai.xi typedef enum 3063*53ee8cc1Swenshuai.xi { 3064*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_HDR, 3065*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_OP2GAMMA, 3066*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_FRCOP2GAMMA, 3067*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_XVYCC, 3068*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_ODTABLE1, 3069*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_ODTABLE2, 3070*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_ODTABLE3, 3071*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_DEMURA, 3072*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_OP2LUT, 3073*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_T3D_0, /// t3d of sc0 3074*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_T3D_1, /// t3d of sc1 3075*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_FRCSPTPOPM, 3076*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_FOOPM, 3077*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_CLIENT_MAX, 3078*53ee8cc1Swenshuai.xi } EN_XC_AUTODOWNLOAD_CLIENT; 3079*53ee8cc1Swenshuai.xi 3080*53ee8cc1Swenshuai.xi typedef enum 3081*53ee8cc1Swenshuai.xi { 3082*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_TRIGGER_MODE, 3083*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_ENABLE_MODE, 3084*53ee8cc1Swenshuai.xi } EN_XC_AUTODOWNLOAD_MODE; 3085*53ee8cc1Swenshuai.xi 3086*53ee8cc1Swenshuai.xi typedef enum 3087*53ee8cc1Swenshuai.xi { 3088*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_HDR_SUB_TMO, 3089*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_HDR_SUB_3DLUT, 3090*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_HDR_SUB_GAMMA, 3091*53ee8cc1Swenshuai.xi E_XC_AUTODOWNLOAD_HDR_SUB_DEGAMMA, 3092*53ee8cc1Swenshuai.xi } EN_XC_AUTODOWNLOAD_SUB_CLIENT; 3093*53ee8cc1Swenshuai.xi 3094*53ee8cc1Swenshuai.xi typedef struct 3095*53ee8cc1Swenshuai.xi { 3096*53ee8cc1Swenshuai.xi MS_U32 u32ConfigInfo_Version; ///<Version of current structure. Please always set to "AUTODOWNLOAD_CONFIG_INFO_VERSION" as input 3097*53ee8cc1Swenshuai.xi MS_U16 u16ConfigInfo_Length; ///<Length of this structure, u16ConfigInfo_Length=sizeof(XC_AUTODOWNLOAD_CONFIG_INFO) 3098*53ee8cc1Swenshuai.xi 3099*53ee8cc1Swenshuai.xi EN_XC_AUTODOWNLOAD_CLIENT enClient; /// current client 3100*53ee8cc1Swenshuai.xi MS_PHY phyBaseAddr; /// baseaddr 3101*53ee8cc1Swenshuai.xi MS_U32 u32Size; /// size 3102*53ee8cc1Swenshuai.xi MS_BOOL bEnable; /// enable/disable the client 3103*53ee8cc1Swenshuai.xi EN_XC_AUTODOWNLOAD_MODE enMode; /// work mode 3104*53ee8cc1Swenshuai.xi } XC_AUTODOWNLOAD_CONFIG_INFO; 3105*53ee8cc1Swenshuai.xi 3106*53ee8cc1Swenshuai.xi typedef struct 3107*53ee8cc1Swenshuai.xi { 3108*53ee8cc1Swenshuai.xi MS_U32 u32FormatInfo_Version; ///<Version of current structure. Please always set to "AUTODOWNLOAD_FORMAT_INFO_VERSION" as input 3109*53ee8cc1Swenshuai.xi MS_U16 u16FormatInfo_Length; ///<Length of this structure, u16FormatInfo_Length=sizeof(XC_AUTODOWNLOAD_FORMAT_INFO) 3110*53ee8cc1Swenshuai.xi 3111*53ee8cc1Swenshuai.xi EN_XC_AUTODOWNLOAD_SUB_CLIENT enSubClient; /// sub client 3112*53ee8cc1Swenshuai.xi MS_BOOL bEnableRange; /// whether enable range, 0: write data to (0-511), 1: write data to (u32StartAddr-u16EndAddr) 3113*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 3114*53ee8cc1Swenshuai.xi MS_PHY u16StartAddr; /// start addr, range: 0-511, startaddr <= endaddr 3115*53ee8cc1Swenshuai.xi MS_PHY u16EndAddr; /// end addr: range: 0-511, startaddr <= endaddr 3116*53ee8cc1Swenshuai.xi #else 3117*53ee8cc1Swenshuai.xi MS_U16 u16StartAddr; /// start addr, range: 0-511, startaddr <= endaddr 3118*53ee8cc1Swenshuai.xi MS_U16 u16EndAddr; /// end addr: range: 0-511, startaddr <= endaddr 3119*53ee8cc1Swenshuai.xi #endif 3120*53ee8cc1Swenshuai.xi } XC_AUTODOWNLOAD_FORMAT_INFO; 3121*53ee8cc1Swenshuai.xi 3122*53ee8cc1Swenshuai.xi typedef struct 3123*53ee8cc1Swenshuai.xi { 3124*53ee8cc1Swenshuai.xi MS_U32 u32DataInfo_Version; ///<Version of current structure. Please always set to "AUTODOWNLOAD_DATA_INFO_VERSION" as input 3125*53ee8cc1Swenshuai.xi MS_U16 u16DataInfo_Length; ///<Length of this structure, u16ConfigInfo_Length=sizeof(XC_AUTODOWNLOAD_DATA_INFO) 3126*53ee8cc1Swenshuai.xi 3127*53ee8cc1Swenshuai.xi EN_XC_AUTODOWNLOAD_CLIENT enClient; /// current client 3128*53ee8cc1Swenshuai.xi MS_U8* pu8Data; /// pointer to data 3129*53ee8cc1Swenshuai.xi MS_U32 u32Size; /// data size 3130*53ee8cc1Swenshuai.xi void* pParam; /// pointer to XC_AUTODOWNLOAD_FORMAT_INFO 3131*53ee8cc1Swenshuai.xi } XC_AUTODOWNLOAD_DATA_INFO; 3132*53ee8cc1Swenshuai.xi 3133*53ee8cc1Swenshuai.xi typedef struct 3134*53ee8cc1Swenshuai.xi { 3135*53ee8cc1Swenshuai.xi EN_XC_AUTODOWNLOAD_CLIENT enClient; /// current client 3136*53ee8cc1Swenshuai.xi MS_BOOL bSupported; /// whether it is supported 3137*53ee8cc1Swenshuai.xi } XC_AUTODOWNLOAD_CLIENT_SUPPORTED_CAPS; 3138*53ee8cc1Swenshuai.xi #endif 3139*53ee8cc1Swenshuai.xi 3140*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR 3141*53ee8cc1Swenshuai.xi #if (UFO_XC_HDR_VERSION == 2) 3142*53ee8cc1Swenshuai.xi #define HDR_3DLUT_INFO_VERSION 1 3143*53ee8cc1Swenshuai.xi #define HDR_OPEN_METADATA_INFO_VERSION 1 3144*53ee8cc1Swenshuai.xi #define HDR_DMA_CONFIG_INFO_VERSION 1 3145*53ee8cc1Swenshuai.xi #define HDR_DMA_INIT_INFO_VERSION 1 3146*53ee8cc1Swenshuai.xi #define HDR_OTT_SHARE_MEMORY_INFO_VERSION 1 3147*53ee8cc1Swenshuai.xi 3148*53ee8cc1Swenshuai.xi typedef enum 3149*53ee8cc1Swenshuai.xi { 3150*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_NONE, 3151*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_ENABLE, /// enable/disable hdr, pParam: pointer to MS_BOOL 3152*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_SET_TYPE, /// set hdr type, pParam: pointer to EN_XC_HDR_TYPE 3153*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_SET_3DLUT, /// set 3dlut, pParam: pointer to XC_HDR_3DLUT_INFO, for dobly hdr only 3154*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_INIT_DMA, /// init dma info, pParam: pointer to XC_HDR_DMA_INIT_INFO 3155*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_CONFIG_DMA, /// config dma info, pParam: pointer to XC_HDR_DMA_CONFIG_INFO 3156*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_SET_OTT_SHARE_MEMORY, /// set share memory, pParam: pointer to XC_HDR_OTT_SHARE_MEMORY_INFO, communcation for VDEC and XC driver, for OTT only 3157*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_SET_OPEN_METADATA, /// set open metadata, pParam: pointer to XC_HDR_OPEN_METADATA_INFO, for open hdr only 3158*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_SET_COLOR_FORMAT, /// set color format, pParam: pointer to EN_XC_HDR_COLOR_FORMAT 3159*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_CFD_CONTROL, /// CFD control 3160*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_GET_TYPE, /// get hdr type, pParam: pointer to EN_XC_HDR_TYPE 3161*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDMI_4K2K_DMA 3162*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_INIT_DMA_HDMI, /// init dma info, pParam: pointer to XC_HDR_DMA_INIT_INFO 3163*53ee8cc1Swenshuai.xi #endif 3164*53ee8cc1Swenshuai.xi E_XC_HDR_CTRL_MAX, 3165*53ee8cc1Swenshuai.xi } EN_XC_HDR_CTRL_TYPE; 3166*53ee8cc1Swenshuai.xi 3167*53ee8cc1Swenshuai.xi typedef enum 3168*53ee8cc1Swenshuai.xi { 3169*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_NONE, 3170*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 3171*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_YC12, 3172*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_YUV444, 3173*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_YC8, 3174*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_YC10, 3175*53ee8cc1Swenshuai.xi #else 3176*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_8BIT, // color depth: 8bits 3177*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_10BIT, // color depth: 10bits 3178*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_12BIT, // color depth: 12bits 3179*53ee8cc1Swenshuai.xi #endif 3180*53ee8cc1Swenshuai.xi E_XC_HDR_DMA_MODE_MAX, 3181*53ee8cc1Swenshuai.xi } EN_XC_HDR_DMA_MODE; 3182*53ee8cc1Swenshuai.xi 3183*53ee8cc1Swenshuai.xi typedef enum 3184*53ee8cc1Swenshuai.xi { 3185*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_NONE, 3186*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_YUV420, 3187*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_YUV422, 3188*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_YUV444, 3189*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_RGB, 3190*53ee8cc1Swenshuai.xi E_XC_HDR_COLOR_MAX, 3191*53ee8cc1Swenshuai.xi } EN_XC_HDR_COLOR_FORMAT; 3192*53ee8cc1Swenshuai.xi 3193*53ee8cc1Swenshuai.xi typedef struct 3194*53ee8cc1Swenshuai.xi { 3195*53ee8cc1Swenshuai.xi MS_U32 u32OpenInfo_Version; ///<Version of current structure. Please always set to "HDR_OPEN_METADATA_INFO_VERSION" as input 3196*53ee8cc1Swenshuai.xi MS_U16 u16OpenInfo_Length; ///<Length of this structure, u16OpenInfo_Length=sizeof(XC_HDR_OPEN_METADATA_INFO) 3197*53ee8cc1Swenshuai.xi 3198*53ee8cc1Swenshuai.xi // the flowing metadata info 3199*53ee8cc1Swenshuai.xi // to do 3200*53ee8cc1Swenshuai.xi } XC_HDR_OPEN_METADATA_INFO; 3201*53ee8cc1Swenshuai.xi 3202*53ee8cc1Swenshuai.xi typedef struct 3203*53ee8cc1Swenshuai.xi { 3204*53ee8cc1Swenshuai.xi MS_U32 u323DLutInfo_Version; ///<Version of current structure. Please always set to "HDR_3DLUT_INFO_VERSION" as input 3205*53ee8cc1Swenshuai.xi MS_U16 u163DLutInfo_Length; ///<Length of this structure, u163DLutInfo_Length=sizeof(XC_HDR_3DLUT_INFO) 3206*53ee8cc1Swenshuai.xi 3207*53ee8cc1Swenshuai.xi MS_U8* pu8Data; /// pointer to data 3208*53ee8cc1Swenshuai.xi MS_U32 u32Size; /// data size 3209*53ee8cc1Swenshuai.xi } XC_HDR_3DLUT_INFO; 3210*53ee8cc1Swenshuai.xi 3211*53ee8cc1Swenshuai.xi typedef struct 3212*53ee8cc1Swenshuai.xi { 3213*53ee8cc1Swenshuai.xi MS_U32 u32DMAConfigInfo_Version; ///<Version of current structure. Please always set to "HDR_DMA_CONFIG_INFO_VERSION" as input 3214*53ee8cc1Swenshuai.xi MS_U16 u16DMAConfigInfo_Length; ///<Length of this structure, u16DMAConfigInfo_Length=sizeof(XC_HDR_DMA_CONFIG_INFO) 3215*53ee8cc1Swenshuai.xi 3216*53ee8cc1Swenshuai.xi EN_XC_HDR_DMA_MODE enMode; /// DMA mode 3217*53ee8cc1Swenshuai.xi } XC_HDR_DMA_CONFIG_INFO; 3218*53ee8cc1Swenshuai.xi 3219*53ee8cc1Swenshuai.xi typedef struct 3220*53ee8cc1Swenshuai.xi { 3221*53ee8cc1Swenshuai.xi MS_U32 u32DMAInitInfo_Version; ///<Version of current structure. Please always set to "HDR_DMA_INIT_INFO_VERSION" as input 3222*53ee8cc1Swenshuai.xi MS_U16 u16DMAInitInfo_Length; ///<Length of this structure, u16DMAInitInfo_Length=sizeof(XC_HDR_DMA_INIT_INFO) 3223*53ee8cc1Swenshuai.xi 3224*53ee8cc1Swenshuai.xi MS_PHY phyBaseAddr; /// DMA baseaddr 3225*53ee8cc1Swenshuai.xi MS_U32 u32Size; /// DMA size 3226*53ee8cc1Swenshuai.xi } XC_HDR_DMA_INIT_INFO; 3227*53ee8cc1Swenshuai.xi 3228*53ee8cc1Swenshuai.xi typedef struct 3229*53ee8cc1Swenshuai.xi { 3230*53ee8cc1Swenshuai.xi MS_U32 u32ShareMemInfo_Version; ///<Version of current structure. Please always set to "HDR_OTT_SHARE_MEMORY_INFO_VERSION" as input 3231*53ee8cc1Swenshuai.xi MS_U16 u16ShareMemInfo_Length; ///<Length of this structure, u16ShareMemInfo_Length=sizeof(XC_HDR_SHARE_MEMORY_INFO) 3232*53ee8cc1Swenshuai.xi 3233*53ee8cc1Swenshuai.xi MS_PHY phyBaseAddr; /// Share memory baseaddr 3234*53ee8cc1Swenshuai.xi MS_U32 u32Size; /// Share memory size 3235*53ee8cc1Swenshuai.xi } XC_HDR_OTT_SHARE_MEMORY_INFO; 3236*53ee8cc1Swenshuai.xi 3237*53ee8cc1Swenshuai.xi 3238*53ee8cc1Swenshuai.xi #endif 3239*53ee8cc1Swenshuai.xi #endif 3240*53ee8cc1Swenshuai.xi 3241*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR 3242*53ee8cc1Swenshuai.xi typedef enum 3243*53ee8cc1Swenshuai.xi { 3244*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_NONE, 3245*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_OPEN, 3246*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_DOLBY, 3247*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_TECHNICOLOR, 3248*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_HLG, 3249*53ee8cc1Swenshuai.xi E_XC_HDR_TYPE_MAX, 3250*53ee8cc1Swenshuai.xi } EN_XC_HDR_TYPE; 3251*53ee8cc1Swenshuai.xi 3252*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 3253*53ee8cc1Swenshuai.xi { 3254*53ee8cc1Swenshuai.xi EN_XC_HDR_TYPE enHDRType; /// HDR type 3255*53ee8cc1Swenshuai.xi MS_BOOL bSupported; /// whether it is supported 3256*53ee8cc1Swenshuai.xi 3257*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3258*53ee8cc1Swenshuai.xi MS_S32 s32MaxLuminanceData; 3259*53ee8cc1Swenshuai.xi MS_S32 s32MinLuminanceData; 3260*53ee8cc1Swenshuai.xi MS_S32 s32MaxFrameAveLumiance; 3261*53ee8cc1Swenshuai.xi } XC_HDR_SUPPORTED_CAPS; 3262*53ee8cc1Swenshuai.xi 3263*53ee8cc1Swenshuai.xi #endif 3264*53ee8cc1Swenshuai.xi 3265*53ee8cc1Swenshuai.xi 3266*53ee8cc1Swenshuai.xi #define CFD_INIT_VERSION 0 3267*53ee8cc1Swenshuai.xi #define CFD_HDMI_VERSION 0 3268*53ee8cc1Swenshuai.xi /// CFD Panel structure version 3269*53ee8cc1Swenshuai.xi /// Version 0: Init structure 3270*53ee8cc1Swenshuai.xi /// Version 1: Add Linear RGB setting and customer color primaries. 3271*53ee8cc1Swenshuai.xi #define CFD_PANEL_VERSION 1 3272*53ee8cc1Swenshuai.xi #define CFD_ANALOG_VERSION 0 3273*53ee8cc1Swenshuai.xi /// CFD HDR structure version 3274*53ee8cc1Swenshuai.xi /// Version 0: Init structure 3275*53ee8cc1Swenshuai.xi /// Version 1: Add TMO level 3276*53ee8cc1Swenshuai.xi #define CFD_HDR_VERSION 1 3277*53ee8cc1Swenshuai.xi #define CFD_EDID_VERSION 0 3278*53ee8cc1Swenshuai.xi /// CFD OSD structure version 3279*53ee8cc1Swenshuai.xi /// Version 0: Init structure 3280*53ee8cc1Swenshuai.xi /// Version 1: Add backlight and hue/contrast/saturation valid flag 3281*53ee8cc1Swenshuai.xi /// Version 2: Add color range and main/sub window. 3282*53ee8cc1Swenshuai.xi /// Version 3: Add ultra black / white 3283*53ee8cc1Swenshuai.xi /// Version 4: Add skip picture setting (hue/ contrast/ saturation) 3284*53ee8cc1Swenshuai.xi /// Version 5: Add color correction matrix 3285*53ee8cc1Swenshuai.xi /// Version 6: Add view Mode (switch view mode for dolby) 3286*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 3287*53ee8cc1Swenshuai.xi #define CFD_OSD_VERSION 2 3288*53ee8cc1Swenshuai.xi #elif defined(UFO_PUBLIC_HEADER_500) 3289*53ee8cc1Swenshuai.xi #define CFD_OSD_VERSION 5 3290*53ee8cc1Swenshuai.xi #else 3291*53ee8cc1Swenshuai.xi #define CFD_OSD_VERSION 6 3292*53ee8cc1Swenshuai.xi #endif 3293*53ee8cc1Swenshuai.xi #define CFD_DLC_VERSION 0 3294*53ee8cc1Swenshuai.xi #define CFD_LINEAR_RGB_VERSION 0 3295*53ee8cc1Swenshuai.xi #define CFD_FIRE_VERSION 0 3296*53ee8cc1Swenshuai.xi /// Version 0: Init structure 3297*53ee8cc1Swenshuai.xi /// Version 1: Add content is full range and ultra black & white active 3298*53ee8cc1Swenshuai.xi /// Version 2: Add color type of the source 3299*53ee8cc1Swenshuai.xi /// Version 3: Add HDR metadata of the source(ott or hdmi) 3300*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) || defined(UFO_PUBLIC_HEADER_500) 3301*53ee8cc1Swenshuai.xi #define CFD_STATUS_VERSION 3 3302*53ee8cc1Swenshuai.xi #else 3303*53ee8cc1Swenshuai.xi #define CFD_STATUS_VERSION 2 3304*53ee8cc1Swenshuai.xi #endif 3305*53ee8cc1Swenshuai.xi #define CFD_TMO_VERSION 1 3306*53ee8cc1Swenshuai.xi /// CFD control type. This enum sync from mdrv_xc_st.h in kernel 3307*53ee8cc1Swenshuai.xi typedef enum 3308*53ee8cc1Swenshuai.xi { 3309*53ee8cc1Swenshuai.xi /// Initialize 3310*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_INIT = 0, 3311*53ee8cc1Swenshuai.xi /// VGA 3312*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_VGA = 1, 3313*53ee8cc1Swenshuai.xi /// TV (ATV) 3314*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_TV = 2, 3315*53ee8cc1Swenshuai.xi /// CVBS (AV) 3316*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_CVBS = 3, 3317*53ee8cc1Swenshuai.xi /// S-Video 3318*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_SVIDEO = 4, 3319*53ee8cc1Swenshuai.xi /// YPbPr 3320*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_YPBPR = 5, 3321*53ee8cc1Swenshuai.xi /// Scart 3322*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_SCART = 6, 3323*53ee8cc1Swenshuai.xi /// HDMI 3324*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_HDMI = 7, 3325*53ee8cc1Swenshuai.xi /// DTV 3326*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_DTV = 8, 3327*53ee8cc1Swenshuai.xi /// DVI 3328*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_DVI = 9, 3329*53ee8cc1Swenshuai.xi /// MM 3330*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_MM = 10, 3331*53ee8cc1Swenshuai.xi /// Panel 3332*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_PANEL = 11, 3333*53ee8cc1Swenshuai.xi /// HDR 3334*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_HDR = 12, 3335*53ee8cc1Swenshuai.xi /// EDID 3336*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_EDID = 13, 3337*53ee8cc1Swenshuai.xi /// OSD 3338*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_OSD = 14, 3339*53ee8cc1Swenshuai.xi /// Fire 3340*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_FIRE = 15, 3341*53ee8cc1Swenshuai.xi /// DLC 3342*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_DLC = 16, 3343*53ee8cc1Swenshuai.xi /// Linear RGB 3344*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_LINEAR_RGB = 17, 3345*53ee8cc1Swenshuai.xi /// Get CFD Output to HDMI Status and dicison. 3346*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_GET_HDMI_STATUS = 18, 3347*53ee8cc1Swenshuai.xi /// Set force HDR OnOff or auto select 3348*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_SET_HDR_ONOFF_SETTING = 19, 3349*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 3350*53ee8cc1Swenshuai.xi /// Status 3351*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_GET_STATUS = 20, 3352*53ee8cc1Swenshuai.xi #else 3353*53ee8cc1Swenshuai.xi /// Status 3354*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_STATUS = 20, 3355*53ee8cc1Swenshuai.xi #endif 3356*53ee8cc1Swenshuai.xi /// TMO 3357*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_SET_TMO = 21, 3358*53ee8cc1Swenshuai.xi 3359*53ee8cc1Swenshuai.xi /// (Set this base is 0x40000000 for int type) 3360*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_EX_BASE = 0x40000000, 3361*53ee8cc1Swenshuai.xi 3362*53ee8cc1Swenshuai.xi /// OSD_STATUS 3363*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_GET_OSD_PROCESS_CONFIGS= 0x40000001, 3364*53ee8cc1Swenshuai.xi /// Max 3365*53ee8cc1Swenshuai.xi E_XC_CFD_CTRL_TYPE_MAX, 3366*53ee8cc1Swenshuai.xi } EN_XC_CFD_CTRL_TYPE; 3367*53ee8cc1Swenshuai.xi 3368*53ee8cc1Swenshuai.xi /// HDR type. This enum define is the same with E_CFIO_HDR_STATUS in CFD document. 3369*53ee8cc1Swenshuai.xi typedef enum 3370*53ee8cc1Swenshuai.xi { 3371*53ee8cc1Swenshuai.xi /// None HDR 3372*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_NONE = 0x0000, 3373*53ee8cc1Swenshuai.xi /// Dolby HDR (HDR1) 3374*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_DOLBY = 0x0001, 3375*53ee8cc1Swenshuai.xi /// Open HDR (HDR2) 3376*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_OPEN = 0x0002, 3377*53ee8cc1Swenshuai.xi /// TechniColor HDR (HDR3) 3378*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_TCH = 0x0004, 3379*53ee8cc1Swenshuai.xi /// HLG (HDR3) 3380*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_HLG = 0x0008, 3381*53ee8cc1Swenshuai.xi /// Max 3382*53ee8cc1Swenshuai.xi E_XC_CFD_HDR_TYPE_MAX = 0xff 3383*53ee8cc1Swenshuai.xi } EN_XC_CFD_HDR_TYPE; 3384*53ee8cc1Swenshuai.xi 3385*53ee8cc1Swenshuai.xi /// Update type, reference mhal_xc.h in kernel. 3386*53ee8cc1Swenshuai.xi typedef enum 3387*53ee8cc1Swenshuai.xi { 3388*53ee8cc1Swenshuai.xi /// Update all 3389*53ee8cc1Swenshuai.xi E_XC_CFD_UPDATE_TYPE_ALL, 3390*53ee8cc1Swenshuai.xi /// Update OSD only 3391*53ee8cc1Swenshuai.xi E_XC_CFD_UPDATE_TYPE_OSD_ONLY, 3392*53ee8cc1Swenshuai.xi /// Max 3393*53ee8cc1Swenshuai.xi E_XC_CFD_UPDATE_TYPE_MAX 3394*53ee8cc1Swenshuai.xi } EN_XC_CFD_UPDATE_TYPE; 3395*53ee8cc1Swenshuai.xi 3396*53ee8cc1Swenshuai.xi /// TMO level enum 3397*53ee8cc1Swenshuai.xi typedef enum 3398*53ee8cc1Swenshuai.xi { 3399*53ee8cc1Swenshuai.xi /// Low 3400*53ee8cc1Swenshuai.xi E_XC_CFD_TMO_LEVEL_LOW, 3401*53ee8cc1Swenshuai.xi /// Middle 3402*53ee8cc1Swenshuai.xi E_XC_CFD_TMO_LEVEL_MIDDLE, 3403*53ee8cc1Swenshuai.xi /// High 3404*53ee8cc1Swenshuai.xi E_XC_CFD_TMO_LEVEL_HIGH, 3405*53ee8cc1Swenshuai.xi /// Max 3406*53ee8cc1Swenshuai.xi E_XC_CFD_TMO_LEVEL_MAX 3407*53ee8cc1Swenshuai.xi } EN_XC_CFD_TMO_LEVEL; 3408*53ee8cc1Swenshuai.xi 3409*53ee8cc1Swenshuai.xi /// CFD init structure, reference mhal_xc.h in kernel. 3410*53ee8cc1Swenshuai.xi typedef struct 3411*53ee8cc1Swenshuai.xi { 3412*53ee8cc1Swenshuai.xi /// Structure version 3413*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3414*53ee8cc1Swenshuai.xi /// Structure length 3415*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3416*53ee8cc1Swenshuai.xi 3417*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3418*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3419*53ee8cc1Swenshuai.xi /// Input source 3420*53ee8cc1Swenshuai.xi MS_U8 u8InputSource; 3421*53ee8cc1Swenshuai.xi } XC_CFD_INIT; 3422*53ee8cc1Swenshuai.xi 3423*53ee8cc1Swenshuai.xi /// CFD HDMI structure, reference mhal_xc.h in kernel. 3424*53ee8cc1Swenshuai.xi typedef struct 3425*53ee8cc1Swenshuai.xi { 3426*53ee8cc1Swenshuai.xi /// Structure version 3427*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3428*53ee8cc1Swenshuai.xi /// Structure length 3429*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3430*53ee8cc1Swenshuai.xi 3431*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3432*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3433*53ee8cc1Swenshuai.xi 3434*53ee8cc1Swenshuai.xi /// Full range 3435*53ee8cc1Swenshuai.xi MS_BOOL bIsFullRange; 3436*53ee8cc1Swenshuai.xi 3437*53ee8cc1Swenshuai.xi /// AVI infoframe 3438*53ee8cc1Swenshuai.xi /// Pixel Format 3439*53ee8cc1Swenshuai.xi MS_U8 u8PixelFormat; 3440*53ee8cc1Swenshuai.xi /// Color imetry 3441*53ee8cc1Swenshuai.xi MS_U8 u8Colorimetry; 3442*53ee8cc1Swenshuai.xi /// Extended Color imetry 3443*53ee8cc1Swenshuai.xi MS_U8 u8ExtendedColorimetry; 3444*53ee8cc1Swenshuai.xi /// Rgb Quantization Range 3445*53ee8cc1Swenshuai.xi MS_U8 u8RgbQuantizationRange; 3446*53ee8cc1Swenshuai.xi /// Ycc Quantization Range 3447*53ee8cc1Swenshuai.xi MS_U8 u8YccQuantizationRange; 3448*53ee8cc1Swenshuai.xi 3449*53ee8cc1Swenshuai.xi /// HDR infoframe 3450*53ee8cc1Swenshuai.xi /// HDR infoframe valid 3451*53ee8cc1Swenshuai.xi MS_BOOL bHDRInfoFrameValid; 3452*53ee8cc1Swenshuai.xi /// EOTF (/// 0:SDR gamma, 1:HDR gamma, 2:SMPTE ST2084, 3:Future EOTF, 4-7:Reserved) 3453*53ee8cc1Swenshuai.xi MS_U8 u8EOTF; 3454*53ee8cc1Swenshuai.xi /// Static metadata ID (0: Static Metadata Type 1, 1-7:Reserved for future use) 3455*53ee8cc1Swenshuai.xi MS_U8 u8SMDID; 3456*53ee8cc1Swenshuai.xi /// Display primaries x 3457*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_x[3]; 3458*53ee8cc1Swenshuai.xi /// Display primaries y 3459*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_y[3]; 3460*53ee8cc1Swenshuai.xi /// White point x 3461*53ee8cc1Swenshuai.xi MS_U16 u16White_point_x; 3462*53ee8cc1Swenshuai.xi /// White point y 3463*53ee8cc1Swenshuai.xi MS_U16 u16White_point_y; 3464*53ee8cc1Swenshuai.xi /// Panel max luminance 3465*53ee8cc1Swenshuai.xi MS_U16 u16MasterPanelMaxLuminance; 3466*53ee8cc1Swenshuai.xi /// Panel min luminance 3467*53ee8cc1Swenshuai.xi MS_U16 u16MasterPanelMinLuminance; 3468*53ee8cc1Swenshuai.xi /// Max content light level 3469*53ee8cc1Swenshuai.xi MS_U16 u16MaxContentLightLevel; 3470*53ee8cc1Swenshuai.xi /// Max frame average light level 3471*53ee8cc1Swenshuai.xi MS_U16 u16MaxFrameAvgLightLevel; 3472*53ee8cc1Swenshuai.xi 3473*53ee8cc1Swenshuai.xi } XC_CFD_HDMI; 3474*53ee8cc1Swenshuai.xi 3475*53ee8cc1Swenshuai.xi /// CFD analog structure, reference mhal_xc.h in kernel. 3476*53ee8cc1Swenshuai.xi typedef struct 3477*53ee8cc1Swenshuai.xi { 3478*53ee8cc1Swenshuai.xi /// Structure version 3479*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3480*53ee8cc1Swenshuai.xi /// Structure length 3481*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3482*53ee8cc1Swenshuai.xi 3483*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3484*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3485*53ee8cc1Swenshuai.xi 3486*53ee8cc1Swenshuai.xi /// Color format, reference EN_KDRV_XC_CFD_COLOR_FORMAT. 3487*53ee8cc1Swenshuai.xi MS_U8 u8ColorFormat; 3488*53ee8cc1Swenshuai.xi /// Color data format, reference EN_KDRV_XC_CFD_COLOR_DATA_FORMAT. 3489*53ee8cc1Swenshuai.xi MS_U8 u8ColorDataFormat; 3490*53ee8cc1Swenshuai.xi /// Full range 3491*53ee8cc1Swenshuai.xi MS_BOOL bIsFullRange; 3492*53ee8cc1Swenshuai.xi /// Color primaries 3493*53ee8cc1Swenshuai.xi MS_U8 u8ColorPrimaries; 3494*53ee8cc1Swenshuai.xi /// Transfer characteristics 3495*53ee8cc1Swenshuai.xi MS_U8 u8TransferCharacteristics; 3496*53ee8cc1Swenshuai.xi /// Matrix coefficients 3497*53ee8cc1Swenshuai.xi MS_U8 u8MatrixCoefficients; 3498*53ee8cc1Swenshuai.xi 3499*53ee8cc1Swenshuai.xi } XC_CFD_ANALOG; 3500*53ee8cc1Swenshuai.xi 3501*53ee8cc1Swenshuai.xi /// CFD panel structure, reference mhal_xc.h in kernel. 3502*53ee8cc1Swenshuai.xi typedef struct 3503*53ee8cc1Swenshuai.xi { 3504*53ee8cc1Swenshuai.xi /// Structure version 3505*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3506*53ee8cc1Swenshuai.xi /// Structure length 3507*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3508*53ee8cc1Swenshuai.xi 3509*53ee8cc1Swenshuai.xi /// Color format, reference CFD document. 3510*53ee8cc1Swenshuai.xi MS_U8 u8ColorFormat; 3511*53ee8cc1Swenshuai.xi /// Color data format, reference CFD document. 3512*53ee8cc1Swenshuai.xi MS_U8 u8ColorDataFormat; 3513*53ee8cc1Swenshuai.xi /// Full range 3514*53ee8cc1Swenshuai.xi MS_BOOL bIsFullRange; 3515*53ee8cc1Swenshuai.xi 3516*53ee8cc1Swenshuai.xi /// Display primaries x, data *0.00002 0xC350 = 1 3517*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_x[3]; 3518*53ee8cc1Swenshuai.xi /// Display primaries y, data *0.00002 0xC350 = 1 3519*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_y[3]; 3520*53ee8cc1Swenshuai.xi /// White point x, data *0.00002 0xC350 = 1 3521*53ee8cc1Swenshuai.xi MS_U16 u16White_point_x; 3522*53ee8cc1Swenshuai.xi /// White point y, data *0.00002 0xC350 = 1 3523*53ee8cc1Swenshuai.xi MS_U16 u16White_point_y; 3524*53ee8cc1Swenshuai.xi /// Max luminance, data * 1 nits 3525*53ee8cc1Swenshuai.xi MS_U16 u16MaxLuminance; 3526*53ee8cc1Swenshuai.xi /// Med luminance, data * 1 nits 3527*53ee8cc1Swenshuai.xi MS_U16 u16MedLuminance; 3528*53ee8cc1Swenshuai.xi /// Min luminance, data * 0.0001 nits 3529*53ee8cc1Swenshuai.xi MS_U16 u16MinLuminance; 3530*53ee8cc1Swenshuai.xi /// Linear RGB 3531*53ee8cc1Swenshuai.xi MS_BOOL bLinearRgb; 3532*53ee8cc1Swenshuai.xi /// Customer color primaries 3533*53ee8cc1Swenshuai.xi MS_BOOL bCustomerColorPrimaries; 3534*53ee8cc1Swenshuai.xi /// Source white x 3535*53ee8cc1Swenshuai.xi MS_U16 u16SourceWx; 3536*53ee8cc1Swenshuai.xi /// Source white y 3537*53ee8cc1Swenshuai.xi MS_U16 u16SourceWy; 3538*53ee8cc1Swenshuai.xi } XC_CFD_PANEL; 3539*53ee8cc1Swenshuai.xi 3540*53ee8cc1Swenshuai.xi /// CFD EDID structure, reference mhal_xc.h in kernel. 3541*53ee8cc1Swenshuai.xi typedef struct 3542*53ee8cc1Swenshuai.xi { 3543*53ee8cc1Swenshuai.xi /// Structure version 3544*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3545*53ee8cc1Swenshuai.xi /// Structure length 3546*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3547*53ee8cc1Swenshuai.xi 3548*53ee8cc1Swenshuai.xi /// HDR data block valid 3549*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkHDRDataBlockValid; 3550*53ee8cc1Swenshuai.xi /// HDR EOTF 3551*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkEOTF; 3552*53ee8cc1Swenshuai.xi /// HDR static metadata descriptor 3553*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkSM; 3554*53ee8cc1Swenshuai.xi /// Desired content max luminance 3555*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkDesiredContentMaxLuminance; 3556*53ee8cc1Swenshuai.xi /// Desired content max frame average luminance 3557*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkDesiredContentMaxFrameAvgLuminance; 3558*53ee8cc1Swenshuai.xi /// Desired content min luminance 3559*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkDesiredContentMinLuminance; 3560*53ee8cc1Swenshuai.xi /// HDR data block length 3561*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkHDRDataBlockLength; 3562*53ee8cc1Swenshuai.xi 3563*53ee8cc1Swenshuai.xi /// Display primaries x 3564*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_x[3]; 3565*53ee8cc1Swenshuai.xi /// Display primaries y 3566*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_y[3]; 3567*53ee8cc1Swenshuai.xi /// White point x 3568*53ee8cc1Swenshuai.xi MS_U16 u16White_point_x; 3569*53ee8cc1Swenshuai.xi /// White point y 3570*53ee8cc1Swenshuai.xi MS_U16 u16White_point_y; 3571*53ee8cc1Swenshuai.xi 3572*53ee8cc1Swenshuai.xi /// EDID version 3573*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkEDIDBaseBlockVersion; 3574*53ee8cc1Swenshuai.xi /// EDID reversion 3575*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkEDIDBaseBlockReversion; 3576*53ee8cc1Swenshuai.xi /// CEA block reversion 3577*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkEDIDCEABlockReversion; 3578*53ee8cc1Swenshuai.xi 3579*53ee8cc1Swenshuai.xi /// Video capability data block valid 3580*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkVCDBValid; 3581*53ee8cc1Swenshuai.xi /// Support YUV format, bit0: YUV444, bit1: YUV422, bit2: YUV420, bit3: QY, bit4: QS 3582*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkSupportYUVFormat; 3583*53ee8cc1Swenshuai.xi 3584*53ee8cc1Swenshuai.xi /// Colorimetry 3585*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkExtendedColorspace; 3586*53ee8cc1Swenshuai.xi /// EDID valid 3587*53ee8cc1Swenshuai.xi MS_U8 u8HDMISinkEDIDValid; 3588*53ee8cc1Swenshuai.xi } XC_CFD_EDID; 3589*53ee8cc1Swenshuai.xi 3590*53ee8cc1Swenshuai.xi /// CFD HDR structure, reference mhal_xc.h in kernel. 3591*53ee8cc1Swenshuai.xi typedef struct 3592*53ee8cc1Swenshuai.xi { 3593*53ee8cc1Swenshuai.xi /// Structure version 3594*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3595*53ee8cc1Swenshuai.xi /// Structure length 3596*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3597*53ee8cc1Swenshuai.xi 3598*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3599*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3600*53ee8cc1Swenshuai.xi /// HDR type, reference EN_MAPI_CFD_HDR_TYPE 3601*53ee8cc1Swenshuai.xi MS_U8 u8HdrType; 3602*53ee8cc1Swenshuai.xi /// HDR10/HLG TMO level. 0: low, 1: middle, 2: high, 3: reference mode 3603*53ee8cc1Swenshuai.xi MS_U8 u8TmoLevel; 3604*53ee8cc1Swenshuai.xi } XC_CFD_HDR; 3605*53ee8cc1Swenshuai.xi 3606*53ee8cc1Swenshuai.xi /// CFD HDR structure, reference mhal_xc.h in kernel. 3607*53ee8cc1Swenshuai.xi typedef struct 3608*53ee8cc1Swenshuai.xi { 3609*53ee8cc1Swenshuai.xi /// Structure version 3610*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3611*53ee8cc1Swenshuai.xi /// Structure length 3612*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3613*53ee8cc1Swenshuai.xi 3614*53ee8cc1Swenshuai.xi /// customer dlc curve 3615*53ee8cc1Swenshuai.xi MS_BOOL bUseCustomerDlcCurve; 3616*53ee8cc1Swenshuai.xi } XC_CFD_DLC; 3617*53ee8cc1Swenshuai.xi 3618*53ee8cc1Swenshuai.xi /// CFD linear structure, reference mhal_xc.h in kernel. 3619*53ee8cc1Swenshuai.xi typedef struct 3620*53ee8cc1Swenshuai.xi { 3621*53ee8cc1Swenshuai.xi /// Structure version 3622*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3623*53ee8cc1Swenshuai.xi /// Structure length 3624*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3625*53ee8cc1Swenshuai.xi 3626*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3627*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3628*53ee8cc1Swenshuai.xi /// Linear RGB enable 3629*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 3630*53ee8cc1Swenshuai.xi } XC_CFD_LINEAR_RGB; 3631*53ee8cc1Swenshuai.xi 3632*53ee8cc1Swenshuai.xi //controls from Panel OSD 3633*53ee8cc1Swenshuai.xi typedef struct 3634*53ee8cc1Swenshuai.xi { 3635*53ee8cc1Swenshuai.xi MS_U32 u32Version; ///<Version of current structure. Please always set to "CFD_OSD_VERSION" as input 3636*53ee8cc1Swenshuai.xi MS_U16 u16Length; ///<Length of this structure, u16Length=sizeof(XC_CFD_OSD_CONTROL) 3637*53ee8cc1Swenshuai.xi 3638*53ee8cc1Swenshuai.xi MS_U16 u16Hue; 3639*53ee8cc1Swenshuai.xi MS_U16 u16Saturation; 3640*53ee8cc1Swenshuai.xi MS_U16 u16Contrast; 3641*53ee8cc1Swenshuai.xi 3642*53ee8cc1Swenshuai.xi //default on , not in the document 3643*53ee8cc1Swenshuai.xi MS_U8 u8OSDUIEn; 3644*53ee8cc1Swenshuai.xi 3645*53ee8cc1Swenshuai.xi //Mode 0: update matrix by OSD and color format driver 3646*53ee8cc1Swenshuai.xi //Mode 1: only update matrix by OSD controls 3647*53ee8cc1Swenshuai.xi //for mode1 : the configures of matrix keep the same as the values by calling CFD last time 3648*53ee8cc1Swenshuai.xi MS_U8 u8OSDUIMode; 3649*53ee8cc1Swenshuai.xi 3650*53ee8cc1Swenshuai.xi /// 3651*53ee8cc1Swenshuai.xi MS_BOOL bHueValid; 3652*53ee8cc1Swenshuai.xi MS_BOOL bSaturationValid; 3653*53ee8cc1Swenshuai.xi MS_BOOL bContrastValid; 3654*53ee8cc1Swenshuai.xi 3655*53ee8cc1Swenshuai.xi MS_BOOL bBacklightValid; 3656*53ee8cc1Swenshuai.xi MS_U32 u32MinBacklight; 3657*53ee8cc1Swenshuai.xi MS_U32 u32MaxBacklight; 3658*53ee8cc1Swenshuai.xi MS_U32 u32Backlight; 3659*53ee8cc1Swenshuai.xi 3660*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3661*53ee8cc1Swenshuai.xi MS_BOOL bColorRangeValid; 3662*53ee8cc1Swenshuai.xi MS_U8 u8ColorRange; // 0: Auto, 1: Full Range (0~255), 2: Limit Range (16~235) 3663*53ee8cc1Swenshuai.xi 3664*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) || defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212) 3665*53ee8cc1Swenshuai.xi MS_BOOL bUltraBlackLevelValid; 3666*53ee8cc1Swenshuai.xi MS_U8 u8UltraBlackLevel; 3667*53ee8cc1Swenshuai.xi MS_BOOL bUltraWhiteLevelValid; 3668*53ee8cc1Swenshuai.xi MS_U8 u8UltraWhiteLevel; 3669*53ee8cc1Swenshuai.xi 3670*53ee8cc1Swenshuai.xi MS_BOOL bSkipPictureSettingValid; 3671*53ee8cc1Swenshuai.xi MS_BOOL bSkipPictureSetting; 3672*53ee8cc1Swenshuai.xi #endif 3673*53ee8cc1Swenshuai.xi 3674*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) || defined(UFO_PUBLIC_HEADER_500) ||defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212) 3675*53ee8cc1Swenshuai.xi MS_BOOL bColorCorrectionValid; 3676*53ee8cc1Swenshuai.xi MS_S16 s16ColorCorrectionMatrix[32]; 3677*53ee8cc1Swenshuai.xi #endif 3678*53ee8cc1Swenshuai.xi 3679*53ee8cc1Swenshuai.xi MS_BOOL bViewModeValid; 3680*53ee8cc1Swenshuai.xi MS_U8 u8ViewMode; 3681*53ee8cc1Swenshuai.xi 3682*53ee8cc1Swenshuai.xi } XC_CFD_OSD_CONTROL; 3683*53ee8cc1Swenshuai.xi 3684*53ee8cc1Swenshuai.xi //controls for CFD OSD PROCESS 3685*53ee8cc1Swenshuai.xi typedef struct 3686*53ee8cc1Swenshuai.xi { 3687*53ee8cc1Swenshuai.xi 3688*53ee8cc1Swenshuai.xi MS_U32 u32Version; ///<Version of current structure. Please always set to "CFD_HDMI_INFOFRAME_ST_VERSION" as input 3689*53ee8cc1Swenshuai.xi MS_U16 u16Length; ///<Length of this structure, u16Length=sizeof(STU_CFDAPI_OSD_PROCESS_CONFIGS) 3690*53ee8cc1Swenshuai.xi 3691*53ee8cc1Swenshuai.xi //for this function 3692*53ee8cc1Swenshuai.xi //1: on 0:off 3693*53ee8cc1Swenshuai.xi MS_U8 u8OSD_SDR2HDR_en; 3694*53ee8cc1Swenshuai.xi 3695*53ee8cc1Swenshuai.xi //0:limit 1:full 3696*53ee8cc1Swenshuai.xi //default = full 3697*53ee8cc1Swenshuai.xi MS_U8 u8OSD_IsFullRange; 3698*53ee8cc1Swenshuai.xi 3699*53ee8cc1Swenshuai.xi //default = RGB444 3700*53ee8cc1Swenshuai.xi MS_U8 u8OSD_Dataformat; 3701*53ee8cc1Swenshuai.xi 3702*53ee8cc1Swenshuai.xi //default = SDR 3703*53ee8cc1Swenshuai.xi MS_U8 u8OSD_HDRMode; 3704*53ee8cc1Swenshuai.xi 3705*53ee8cc1Swenshuai.xi //E_OSD_CFIO_CP 3706*53ee8cc1Swenshuai.xi //default = BT709 3707*53ee8cc1Swenshuai.xi MS_U8 u8OSD_colorprimary; 3708*53ee8cc1Swenshuai.xi 3709*53ee8cc1Swenshuai.xi //default = BT709 3710*53ee8cc1Swenshuai.xi MS_U8 u8OSD_transferf; 3711*53ee8cc1Swenshuai.xi 3712*53ee8cc1Swenshuai.xi //default = 600 3713*53ee8cc1Swenshuai.xi MS_U16 u16OSD_MaxLumInNits; 3714*53ee8cc1Swenshuai.xi 3715*53ee8cc1Swenshuai.xi //default = BT2020 3716*53ee8cc1Swenshuai.xi MS_U8 u8Video_colorprimary; 3717*53ee8cc1Swenshuai.xi 3718*53ee8cc1Swenshuai.xi //default = BT2020 3719*53ee8cc1Swenshuai.xi MS_U8 u8Video_MatrixCoefficients; 3720*53ee8cc1Swenshuai.xi 3721*53ee8cc1Swenshuai.xi //default 2 = tr use PQ 3722*53ee8cc1Swenshuai.xi MS_U8 u8Video_HDRMode; 3723*53ee8cc1Swenshuai.xi 3724*53ee8cc1Swenshuai.xi //default = 4000 3725*53ee8cc1Swenshuai.xi MS_U16 u16Video_MaxLumInNits; 3726*53ee8cc1Swenshuai.xi 3727*53ee8cc1Swenshuai.xi //0:limit 1:full 3728*53ee8cc1Swenshuai.xi //default = limit 3729*53ee8cc1Swenshuai.xi MS_U8 u8Video_IsFullRange; 3730*53ee8cc1Swenshuai.xi 3731*53ee8cc1Swenshuai.xi //default = YUV444 3732*53ee8cc1Swenshuai.xi MS_U8 u8Video_Dataformat; 3733*53ee8cc1Swenshuai.xi 3734*53ee8cc1Swenshuai.xi MS_U16 u16AntiTMO_SourceInNits; 3735*53ee8cc1Swenshuai.xi 3736*53ee8cc1Swenshuai.xi } XC_CFD_OSD_PROCESS_CONFIGS; 3737*53ee8cc1Swenshuai.xi 3738*53ee8cc1Swenshuai.xi typedef struct 3739*53ee8cc1Swenshuai.xi { 3740*53ee8cc1Swenshuai.xi MS_U8 u8CurrentIndex; 3741*53ee8cc1Swenshuai.xi MS_U8 u8InputFormat; 3742*53ee8cc1Swenshuai.xi MS_U8 u8InputDataFormat; 3743*53ee8cc1Swenshuai.xi MS_BOOL u8Video_Full_Range_Flag; 3744*53ee8cc1Swenshuai.xi 3745*53ee8cc1Swenshuai.xi MS_BOOL bVUIValid; 3746*53ee8cc1Swenshuai.xi MS_U8 u8Colour_primaries; 3747*53ee8cc1Swenshuai.xi MS_U8 u8Transfer_Characteristics; 3748*53ee8cc1Swenshuai.xi MS_U8 u8Matrix_Coeffs; 3749*53ee8cc1Swenshuai.xi 3750*53ee8cc1Swenshuai.xi MS_BOOL bSEIValid; 3751*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_x[3]; 3752*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_y[3]; 3753*53ee8cc1Swenshuai.xi MS_U16 u16White_point_x; 3754*53ee8cc1Swenshuai.xi MS_U16 u16White_point_y; 3755*53ee8cc1Swenshuai.xi MS_U32 u32Master_Panel_Max_Luminance; 3756*53ee8cc1Swenshuai.xi MS_U32 u32Master_Panel_Min_Luminance; 3757*53ee8cc1Swenshuai.xi 3758*53ee8cc1Swenshuai.xi MS_BOOL bContentLightLevelEnabled; 3759*53ee8cc1Swenshuai.xi MS_U16 u16maxContentLightLevel; 3760*53ee8cc1Swenshuai.xi MS_U16 u16maxPicAverageLightLevel; 3761*53ee8cc1Swenshuai.xi } XC_HDR_CFD_MEMORY_FORMAT; 3762*53ee8cc1Swenshuai.xi 3763*53ee8cc1Swenshuai.xi typedef struct 3764*53ee8cc1Swenshuai.xi { 3765*53ee8cc1Swenshuai.xi /// Structure version 3766*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3767*53ee8cc1Swenshuai.xi /// Structure length 3768*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3769*53ee8cc1Swenshuai.xi 3770*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3771*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3772*53ee8cc1Swenshuai.xi /// HDR type (0: SDR, 1: Dolby HDR, 2: Open HDR) 3773*53ee8cc1Swenshuai.xi MS_U8 u8VideoHdrType; 3774*53ee8cc1Swenshuai.xi /// HDR running 3775*53ee8cc1Swenshuai.xi MS_BOOL bIsHdrRunning; 3776*53ee8cc1Swenshuai.xi /// Is full range 3777*53ee8cc1Swenshuai.xi MS_BOOL bIsFullRange; 3778*53ee8cc1Swenshuai.xi /// Ultra black & white active 3779*53ee8cc1Swenshuai.xi MS_BOOL bUltraBlackWhiteActive; 3780*53ee8cc1Swenshuai.xi /// Color Type 3781*53ee8cc1Swenshuai.xi MS_U8 u8ColorType; 3782*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) || defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_500) 3783*53ee8cc1Swenshuai.xi /// open HDR metadata 3784*53ee8cc1Swenshuai.xi union 3785*53ee8cc1Swenshuai.xi { 3786*53ee8cc1Swenshuai.xi XC_CFD_HDMI stHdmiInfoCFD; 3787*53ee8cc1Swenshuai.xi XC_HDR_CFD_MEMORY_FORMAT stHDRMemFormatCFD; 3788*53ee8cc1Swenshuai.xi } HDRMetadata; 3789*53ee8cc1Swenshuai.xi #endif 3790*53ee8cc1Swenshuai.xi } XC_CFD_STATUS; 3791*53ee8cc1Swenshuai.xi 3792*53ee8cc1Swenshuai.xi typedef struct 3793*53ee8cc1Swenshuai.xi { 3794*53ee8cc1Swenshuai.xi MS_U32 u16HdrType; 3795*53ee8cc1Swenshuai.xi MS_U16 u16Level; 3796*53ee8cc1Swenshuai.xi 3797*53ee8cc1Swenshuai.xi MS_U16 u16ControlSize; 3798*53ee8cc1Swenshuai.xi MS_U8 *pu8data; 3799*53ee8cc1Swenshuai.xi #if !defined (__aarch64__) 3800*53ee8cc1Swenshuai.xi /// Dummy parameter 3801*53ee8cc1Swenshuai.xi void *pDummy; 3802*53ee8cc1Swenshuai.xi #endif 3803*53ee8cc1Swenshuai.xi 3804*53ee8cc1Swenshuai.xi }ST_TMO_LEVEL; 3805*53ee8cc1Swenshuai.xi 3806*53ee8cc1Swenshuai.xi typedef struct 3807*53ee8cc1Swenshuai.xi { 3808*53ee8cc1Swenshuai.xi /// Structure version 3809*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3810*53ee8cc1Swenshuai.xi /// Structure length 3811*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3812*53ee8cc1Swenshuai.xi 3813*53ee8cc1Swenshuai.xi //Array of TMO 3*3 parameter. just for compatibilty and is abandoned after TMO 12P 3814*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Smin[E_XC_CFD_TMO_LEVEL_MAX]; 3815*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Smed[E_XC_CFD_TMO_LEVEL_MAX]; 3816*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Smax[E_XC_CFD_TMO_LEVEL_MAX]; 3817*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Tmin[E_XC_CFD_TMO_LEVEL_MAX]; 3818*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Tmed[E_XC_CFD_TMO_LEVEL_MAX]; 3819*53ee8cc1Swenshuai.xi MS_U16 u16Hdr10Tmax[E_XC_CFD_TMO_LEVEL_MAX]; 3820*53ee8cc1Swenshuai.xi 3821*53ee8cc1Swenshuai.xi MS_U16 u16HlgSmin[E_XC_CFD_TMO_LEVEL_MAX]; 3822*53ee8cc1Swenshuai.xi MS_U16 u16HlgSmed[E_XC_CFD_TMO_LEVEL_MAX]; 3823*53ee8cc1Swenshuai.xi MS_U16 u16HlgSmax[E_XC_CFD_TMO_LEVEL_MAX]; 3824*53ee8cc1Swenshuai.xi MS_U16 u16HlgTmin[E_XC_CFD_TMO_LEVEL_MAX]; 3825*53ee8cc1Swenshuai.xi MS_U16 u16HlgTmed[E_XC_CFD_TMO_LEVEL_MAX]; 3826*53ee8cc1Swenshuai.xi MS_U16 u16HlgTmax[E_XC_CFD_TMO_LEVEL_MAX]; 3827*53ee8cc1Swenshuai.xi //End of Array of TMO 3*3 parameter 3828*53ee8cc1Swenshuai.xi 3829*53ee8cc1Swenshuai.xi MS_U16 u16LevelCount; 3830*53ee8cc1Swenshuai.xi ST_TMO_LEVEL *pstTmoLevel; 3831*53ee8cc1Swenshuai.xi #if !defined (__aarch64__) 3832*53ee8cc1Swenshuai.xi /// Dummy parameter 3833*53ee8cc1Swenshuai.xi void *pDummy; 3834*53ee8cc1Swenshuai.xi #endif 3835*53ee8cc1Swenshuai.xi 3836*53ee8cc1Swenshuai.xi } ST_KDRV_XC_CFD_TMO; 3837*53ee8cc1Swenshuai.xi 3838*53ee8cc1Swenshuai.xi /// CFD fire structure, reference mhal_xc.h in kernel. 3839*53ee8cc1Swenshuai.xi typedef struct 3840*53ee8cc1Swenshuai.xi { 3841*53ee8cc1Swenshuai.xi /// Structure version 3842*53ee8cc1Swenshuai.xi MS_U32 u32Version; 3843*53ee8cc1Swenshuai.xi /// Structure length 3844*53ee8cc1Swenshuai.xi MS_U16 u16Length; 3845*53ee8cc1Swenshuai.xi 3846*53ee8cc1Swenshuai.xi /// Window (main or sub window) 3847*53ee8cc1Swenshuai.xi MS_U8 u8Win; 3848*53ee8cc1Swenshuai.xi /// Input source, reference PQ_INPUT_SOURCE_TYPE in apxXC.h 3849*53ee8cc1Swenshuai.xi MS_U8 u8InputSource; 3850*53ee8cc1Swenshuai.xi /// Update type, reference EN_MAPI_CFD_UPDATE_TYPE 3851*53ee8cc1Swenshuai.xi MS_U8 u8UpdateType; 3852*53ee8cc1Swenshuai.xi /// RGB bypass 3853*53ee8cc1Swenshuai.xi MS_BOOL bIsRgbBypass; 3854*53ee8cc1Swenshuai.xi /// HD mode 3855*53ee8cc1Swenshuai.xi MS_BOOL bIsHdMode; 3856*53ee8cc1Swenshuai.xi } XC_CFD_FIRE; 3857*53ee8cc1Swenshuai.xi 3858*53ee8cc1Swenshuai.xi /// CFD control information, reference mdrv_xc_st.h in kernel. 3859*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 3860*53ee8cc1Swenshuai.xi { 3861*53ee8cc1Swenshuai.xi /// Control type, reference EN_MAPI_CFD_CTRL_TYPE 3862*53ee8cc1Swenshuai.xi EN_XC_CFD_CTRL_TYPE enCtrlType; 3863*53ee8cc1Swenshuai.xi /// Control parameter 3864*53ee8cc1Swenshuai.xi void *pParam; 3865*53ee8cc1Swenshuai.xi #if !defined (__aarch64__) 3866*53ee8cc1Swenshuai.xi /// Dummy parameter 3867*53ee8cc1Swenshuai.xi void *pDummy; 3868*53ee8cc1Swenshuai.xi #endif 3869*53ee8cc1Swenshuai.xi /// Control parameter length 3870*53ee8cc1Swenshuai.xi MS_U32 u32ParamLen; 3871*53ee8cc1Swenshuai.xi /// Error code 3872*53ee8cc1Swenshuai.xi MS_U16 u16ErrCode; 3873*53ee8cc1Swenshuai.xi } XC_CFD_CONTROL_INFO; 3874*53ee8cc1Swenshuai.xi 3875*53ee8cc1Swenshuai.xi typedef struct 3876*53ee8cc1Swenshuai.xi { 3877*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stCropWin; ///<Crop window 3878*53ee8cc1Swenshuai.xi MS_WINDOW_TYPE stDispWin; ///<Display window 3879*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; 3880*53ee8cc1Swenshuai.xi //out value 3881*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL eFBLevel; ///return for FB or FBL mode 3882*53ee8cc1Swenshuai.xi MS_U16 u16HSizeAfterPrescaling; 3883*53ee8cc1Swenshuai.xi MS_U16 u16VSizeAfterPrescaling; 3884*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 3885*53ee8cc1Swenshuai.xi } XC_GET_FB_LEVEL; 3886*53ee8cc1Swenshuai.xi 3887*53ee8cc1Swenshuai.xi //////////////////////////////////////////// 3888*53ee8cc1Swenshuai.xi 3889*53ee8cc1Swenshuai.xi /// OPTEE 3890*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) 3891*53ee8cc1Swenshuai.xi { 3892*53ee8cc1Swenshuai.xi MS_U32 ID[4]; 3893*53ee8cc1Swenshuai.xi } RESOURCE; 3894*53ee8cc1Swenshuai.xi #define OP_TEE_XC_REG_MAX_CNT 0x10 3895*53ee8cc1Swenshuai.xi #define OP_TEE_XC_DRAM_MAX_CNT 0x10 3896*53ee8cc1Swenshuai.xi typedef enum 3897*53ee8cc1Swenshuai.xi { 3898*53ee8cc1Swenshuai.xi E_XC_OPTEE_GET_PIPE_ID, 3899*53ee8cc1Swenshuai.xi E_XC_OPTEE_ENABLE, 3900*53ee8cc1Swenshuai.xi E_XC_OPTEE_DISABLE, 3901*53ee8cc1Swenshuai.xi E_XC_OPTEE_SET_HANDLER, 3902*53ee8cc1Swenshuai.xi E_XC_OPTEE_SYNC_HANDLER, 3903*53ee8cc1Swenshuai.xi E_XC_OPTEE_GET_HANDLER, 3904*53ee8cc1Swenshuai.xi E_XC_OPTEE_UPDATE_HANDLER, 3905*53ee8cc1Swenshuai.xi E_XC_OPTEE_SET_MUX, 3906*53ee8cc1Swenshuai.xi E_XC_OPTEE_SYNC_MUX, 3907*53ee8cc1Swenshuai.xi E_XC_OPTEE_GET_MUX, 3908*53ee8cc1Swenshuai.xi E_XC_OPTEE_MAX, 3909*53ee8cc1Swenshuai.xi } EN_XC_OPTEE_ACTION; 3910*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) 3911*53ee8cc1Swenshuai.xi { 3912*53ee8cc1Swenshuai.xi MS_U32 bk; 3913*53ee8cc1Swenshuai.xi MS_U16 value; 3914*53ee8cc1Swenshuai.xi MS_U16 mask; 3915*53ee8cc1Swenshuai.xi } XC_OPTEE_REG_DATA; 3916*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) 3917*53ee8cc1Swenshuai.xi { 3918*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) ||defined(UFO_PUBLIC_HEADER_500_3) 3919*53ee8cc1Swenshuai.xi MS_PHY address; 3920*53ee8cc1Swenshuai.xi #else 3921*53ee8cc1Swenshuai.xi MS_U32 address; 3922*53ee8cc1Swenshuai.xi #endif 3923*53ee8cc1Swenshuai.xi MS_U32 length; 3924*53ee8cc1Swenshuai.xi } XC_OPTEE_DRAM_DATA; 3925*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) 3926*53ee8cc1Swenshuai.xi { 3927*53ee8cc1Swenshuai.xi MS_U16 version; 3928*53ee8cc1Swenshuai.xi MS_U32 length; 3929*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 3930*53ee8cc1Swenshuai.xi // EN_XC_OPTEE_ACTION action; 3931*53ee8cc1Swenshuai.xi /* E_XC_OPTEE_GET_PIPE_ID */ 3932*53ee8cc1Swenshuai.xi MS_U32 pipeID; 3933*53ee8cc1Swenshuai.xi /* E_XC_OPTEE_ENABLE / E_XC_OPTEE_DISABLE */ 3934*53ee8cc1Swenshuai.xi MS_BOOL isEnable; 3935*53ee8cc1Swenshuai.xi /* E_XC_OPTEE_SET_HANDLER / E_XC_OPTEE_GET_HANDLER / E_XC_OPTEE_UPDATE_HANDLER */ 3936*53ee8cc1Swenshuai.xi MS_U32 regs_cnt; 3937*53ee8cc1Swenshuai.xi XC_OPTEE_REG_DATA regs_data[OP_TEE_XC_REG_MAX_CNT]; 3938*53ee8cc1Swenshuai.xi MS_U32 drams_cnt; 3939*53ee8cc1Swenshuai.xi XC_OPTEE_DRAM_DATA drams_data[OP_TEE_XC_DRAM_MAX_CNT]; 3940*53ee8cc1Swenshuai.xi 3941*53ee8cc1Swenshuai.xi } XC_OPTEE_HANDLER; 3942*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) 3943*53ee8cc1Swenshuai.xi { 3944*53ee8cc1Swenshuai.xi MS_U16 version; 3945*53ee8cc1Swenshuai.xi MS_U32 length; 3946*53ee8cc1Swenshuai.xi SCALER_WIN eWindow; 3947*53ee8cc1Swenshuai.xi MS_U32 regs_cnt; 3948*53ee8cc1Swenshuai.xi XC_OPTEE_REG_DATA regs_data[OP_TEE_XC_REG_MAX_CNT]; 3949*53ee8cc1Swenshuai.xi MS_BOOL bfire; 3950*53ee8cc1Swenshuai.xi } XC_OPTEE_MUX_DATA; 3951*53ee8cc1Swenshuai.xi 3952*53ee8cc1Swenshuai.xi //define 3D attribute type 3953*53ee8cc1Swenshuai.xi typedef enum 3954*53ee8cc1Swenshuai.xi { 3955*53ee8cc1Swenshuai.xi E_XC_3D_ATTRIBUTE_OSD, 3956*53ee8cc1Swenshuai.xi E_XC_3D_ATTRIBUTE_NUM, 3957*53ee8cc1Swenshuai.xi } E_XC_3D_ATTRIBUTE_TYPE; 3958*53ee8cc1Swenshuai.xi 3959*53ee8cc1Swenshuai.xi //define 3D OSD blending point 3960*53ee8cc1Swenshuai.xi typedef enum 3961*53ee8cc1Swenshuai.xi { 3962*53ee8cc1Swenshuai.xi E_XC_3D_OSD_BLENDING_SC_IP, //scaler IP 3963*53ee8cc1Swenshuai.xi E_XC_3D_OSD_BLENDING_SC_OP, //scaler IP 3964*53ee8cc1Swenshuai.xi E_XC_3D_OSD_BLENDING_FRC_IP, // inside FRC IP 3965*53ee8cc1Swenshuai.xi E_XC_3D_OSD_BLENDING_FRC_OP, // inside FRC IP 3966*53ee8cc1Swenshuai.xi E_XC_3D_OSD_BLENDING_NUM, 3967*53ee8cc1Swenshuai.xi } E_XC_3D_OSD_BLENDING_POINT; 3968*53ee8cc1Swenshuai.xi 3969*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SCAN_TYPE 3970*53ee8cc1Swenshuai.xi //define enum for different scan type 3971*53ee8cc1Swenshuai.xi typedef enum 3972*53ee8cc1Swenshuai.xi { 3973*53ee8cc1Swenshuai.xi E_XC_NORMAL_MODE = 0, 3974*53ee8cc1Swenshuai.xi E_XC_FORCE_P_MODE, 3975*53ee8cc1Swenshuai.xi E_XC_FORCE_I_MODE, 3976*53ee8cc1Swenshuai.xi }E_XC_SCAN_TYPE; 3977*53ee8cc1Swenshuai.xi #endif 3978*53ee8cc1Swenshuai.xi 3979*53ee8cc1Swenshuai.xi //SWDR information 3980*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 3981*53ee8cc1Swenshuai.xi { 3982*53ee8cc1Swenshuai.xi MS_BOOL bDRE_En; //1: enable; 0: disable 3983*53ee8cc1Swenshuai.xi MS_BOOL bDRE_SWDR_En; //1: enable; 0: disable 3984*53ee8cc1Swenshuai.xi MS_U8 u8DRE_DR_Set_BasicStrength; //default = 4, max = 32 3985*53ee8cc1Swenshuai.xi MS_U8 u8DRE_SWDR_Set_BasicStrength; //default = 4, max = 32 3986*53ee8cc1Swenshuai.xi MS_U16 u16DRE_SWDR_Set_StrengthDk; //dentity = 0x100; max = 0x200 3987*53ee8cc1Swenshuai.xi MS_U16 u16DRE_SWDR_Set_StrengthBr; //dentity = 0x100; max = 0x200 3988*53ee8cc1Swenshuai.xi MS_U8 u8DRE_SWDR_Set_SceneProtectLevel; //default = 0x08, max = 0x20 3989*53ee8cc1Swenshuai.xi MS_U8 u8DRE_Set_TemporalFilterLevel; //default = 0x06, max = 0x20 3990*53ee8cc1Swenshuai.xi MS_U8 u8DRE_Set_ColorCorrectLevel; //default = 0x10, max = 0x20 3991*53ee8cc1Swenshuai.xi }XC_SWDR_INFO; 3992*53ee8cc1Swenshuai.xi 3993*53ee8cc1Swenshuai.xi //////////////////////////////////////////// 3994*53ee8cc1Swenshuai.xi 3995*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3996*53ee8cc1Swenshuai.xi // Function and Variable 3997*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3998*53ee8cc1Swenshuai.xi 3999*53ee8cc1Swenshuai.xi 4000*53ee8cc1Swenshuai.xi //---------------------------- 4001*53ee8cc1Swenshuai.xi // Must have functions 4002*53ee8cc1Swenshuai.xi //---------------------------- 4003*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4004*53ee8cc1Swenshuai.xi /// Get XC library version 4005*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4006*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: store the version in this member 4007*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue 4008*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4009*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetLibVer(const MSIF_Version **ppVersion); 4010*53ee8cc1Swenshuai.xi 4011*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4012*53ee8cc1Swenshuai.xi /// Get XC Information 4013*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4014*53ee8cc1Swenshuai.xi /// @return @ref XC_ApiInfo returnthe XC information in this member 4015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4016*53ee8cc1Swenshuai.xi const XC_ApiInfo * MApi_XC_GetInfo(void); 4017*53ee8cc1Swenshuai.xi 4018*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4019*53ee8cc1Swenshuai.xi /// Get XC Status of specific window(Main/Sub) 4020*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4021*53ee8cc1Swenshuai.xi /// @param pDrvStatus \b OUT: store the status 4022*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 4023*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4024*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4025*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetStatus(XC_ApiStatus *pDrvStatus, SCALER_WIN eWindow); 4026*53ee8cc1Swenshuai.xi 4027*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4028*53ee8cc1Swenshuai.xi /// Extended interface to Get XC Status of specific window(Main/Sub) with version info 4029*53ee8cc1Swenshuai.xi /// usage: 4030*53ee8cc1Swenshuai.xi /// XC_ApiStatusEx stXCStatus; 4031*53ee8cc1Swenshuai.xi /// memset(&stXCStatus, 0, sizeof(XC_ApiStatusEx)); 4032*53ee8cc1Swenshuai.xi /// stXCStatus.u16ApiStatusEX_Length = sizeof(XC_ApiStatusEx); 4033*53ee8cc1Swenshuai.xi /// stXCStatus.u32ApiStatusEx_Version = API_STATUS_EX_VERSION; 4034*53ee8cc1Swenshuai.xi /// if(MApi_XC_GetStatusEx(&stXCStatusEx, MAIN_WINDOW) == sizeof(XC_ApiStatusEx)) 4035*53ee8cc1Swenshuai.xi /// { 4036*53ee8cc1Swenshuai.xi /// ...... 4037*53ee8cc1Swenshuai.xi /// } 4038*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4039*53ee8cc1Swenshuai.xi /// @param pDrvStatusEx \b OUT: store the status 4040*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 4041*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return the copied length of input structure 4042*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4043*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetStatusEx(XC_ApiStatusEx *pDrvStatusEx, SCALER_WIN eWindow); 4044*53ee8cc1Swenshuai.xi 4045*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4046*53ee8cc1Swenshuai.xi /// Get XC Status of specific window(Main/Sub) for no lock method 4047*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4048*53ee8cc1Swenshuai.xi /// @param pDrvStatus \b OUT: store the status 4049*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 4050*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4051*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4052*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetStatusNodelay(ST_XC_APISTATUSNODELAY *pDrvStatus, SCALER_WIN eWindow); 4053*53ee8cc1Swenshuai.xi 4054*53ee8cc1Swenshuai.xi //------------------------------- 4055*53ee8cc1Swenshuai.xi // Set Debug Level 4056*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4057*53ee8cc1Swenshuai.xi // @para u16DbgSwitch: XC_DBGLEVEL_OFF,XC_DBGLEVEL_SETWINDOW,XC_DBGLEVEL_SETTIMING,XC_DBGLEVEL_SYNCDETECT,XC_DBGLEVEL_MUX 4058*53ee8cc1Swenshuai.xi // currently, only used XC_DBGLEVEL_OFF,XC_DBGLEVEL_SETTIMING 4059*53ee8cc1Swenshuai.xi //------------------------------- 4060*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDbgLevel(MS_U16 u16DbgSwitch); 4061*53ee8cc1Swenshuai.xi 4062*53ee8cc1Swenshuai.xi //For debug purpose only! 4063*53ee8cc1Swenshuai.xi //------------------------------- 4064*53ee8cc1Swenshuai.xi // Set Debug Mode for scaler framelock 4065*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4066*53ee8cc1Swenshuai.xi // @para DbgMode: Disable/Enable debug 4067*53ee8cc1Swenshuai.xi // @para DbgFlag: The debug item 4068*53ee8cc1Swenshuai.xi // @para u32Data: The debug data 4069*53ee8cc1Swenshuai.xi //------------------------------- 4070*53ee8cc1Swenshuai.xi void MApi_XC_FPLLDbgMode(EN_FPLL_DBG_MODE DbgMode, EN_FPLL_DBG_FLAG DbgFlag, MS_U32 u32Data); 4071*53ee8cc1Swenshuai.xi 4072*53ee8cc1Swenshuai.xi //------------------------------- 4073*53ee8cc1Swenshuai.xi // Set customer mode for scaler framelock 4074*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4075*53ee8cc1Swenshuai.xi // @para eMode: Disable/Enable customer mode 4076*53ee8cc1Swenshuai.xi // @para eFlag: The customer item 4077*53ee8cc1Swenshuai.xi // @para u32Data: The customer data 4078*53ee8cc1Swenshuai.xi //------------------------------- 4079*53ee8cc1Swenshuai.xi void MApi_XC_FPLLCustomerMode(EN_FPLL_MODE eMode, EN_FPLL_FLAG eFlag, MS_U32 u32Data); 4080*53ee8cc1Swenshuai.xi 4081*53ee8cc1Swenshuai.xi //---------------------------- 4082*53ee8cc1Swenshuai.xi // Initialize 4083*53ee8cc1Swenshuai.xi //---------------------------- 4084*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_SetIOMapBase(void); 4085*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4086*53ee8cc1Swenshuai.xi 4087*53ee8cc1Swenshuai.xi /// Initialize the XC 4088*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 4089*53ee8cc1Swenshuai.xi /// @param pXC_InitData \b IN: the Initialized Data 4090*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the initialized data 4091*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4092*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4093*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Init(XC_INITDATA *pXC_InitData, MS_U32 u32InitDataLen); 4094*53ee8cc1Swenshuai.xi 4095*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4096*53ee8cc1Swenshuai.xi /// Get the config data of XC 4097*53ee8cc1Swenshuai.xi /// @param pXC_InitData \b IN: the Initialized Data 4098*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue 4099*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4100*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_GetConfig(XC_INITDATA *pXC_InitData); 4101*53ee8cc1Swenshuai.xi 4102*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4103*53ee8cc1Swenshuai.xi /// Initialize the XC MISC 4104*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 4105*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b IN: the Initialized XC MISC 4106*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4107*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4108*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Init_MISC(XC_INITMISC *pXC_Init_Misc, MS_U32 u32InitMiscDataLen); 4109*53ee8cc1Swenshuai.xi 4110*53ee8cc1Swenshuai.xi 4111*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4112*53ee8cc1Swenshuai.xi /// Get XC Init MISC Status 4113*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4114*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b OUT: store the status 4115*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 4116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4117*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetMISCStatus(XC_INITMISC *pXC_Init_Misc); 4118*53ee8cc1Swenshuai.xi 4119*53ee8cc1Swenshuai.xi 4120*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4121*53ee8cc1Swenshuai.xi /// Get XC Capability 4122*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4123*53ee8cc1Swenshuai.xi /// @param u32Id (you can get detail from E_XC_CAPABILITY enum) 4124*53ee8cc1Swenshuai.xi /// @return output data for each query item. 4125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4126*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetCapability(MS_U32 u32Id); 4127*53ee8cc1Swenshuai.xi 4128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4129*53ee8cc1Swenshuai.xi /// Get XC Capability 2 4130*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 4131*53ee8cc1Swenshuai.xi /// @param eCapType \b IN: u32Id (you can get detail from E_XC_CAPABILITY enum) 4132*53ee8cc1Swenshuai.xi /// @param pRet \b IN: -- 4133*53ee8cc1Swenshuai.xi /// @param ret_size \b IN: -- 4134*53ee8cc1Swenshuai.xi /// @return @E_APIXC_ReturnValue 4135*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4136*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetChipCaps(E_XC_CAPS eCapType, MS_U32* pRet, MS_U32 ret_size); 4137*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4138*53ee8cc1Swenshuai.xi /// Exit the XC 4139*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 4140*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4141*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4142*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Exit(void); 4143*53ee8cc1Swenshuai.xi 4144*53ee8cc1Swenshuai.xi //------------------------------- 4145*53ee8cc1Swenshuai.xi // Set Window & Scaling 4146*53ee8cc1Swenshuai.xi //------------------------------- 4147*53ee8cc1Swenshuai.xi 4148*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4149*53ee8cc1Swenshuai.xi /// Set Dynamic Scaling 4150*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 4151*53ee8cc1Swenshuai.xi /// @param pstDSInfo \b IN: the information of Dynamic Scaling 4152*53ee8cc1Swenshuai.xi /// @param u32DSInforLen \b IN: the length of the pstDSInfo 4153*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4154*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4156*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDynamicScaling(XC_DynamicScaling_Info *pstDSInfo, MS_U32 u32DSInfoLen, SCALER_WIN eWindow); 4157*53ee8cc1Swenshuai.xi 4158*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4159*53ee8cc1Swenshuai.xi /// Set Dynamic Scaling flag 4160*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 4161*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable Dynamic Scaling 4162*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4163*53ee8cc1Swenshuai.xi void MApi_XC_Set_DynamicScalingFlag(MS_BOOL bEnable); 4164*53ee8cc1Swenshuai.xi 4165*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4166*53ee8cc1Swenshuai.xi /// Get Dynamic Scaling Status 4167*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 4168*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: dynamic scaling is enabled; FALSE: dynamic scaling is not enabled. 4169*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4170*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetDynamicScalingStatus(void); 4171*53ee8cc1Swenshuai.xi 4172*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4173*53ee8cc1Swenshuai.xi /// Set SWDS force I mode film de interlate mode 4174*53ee8cc1Swenshuai.xi /// @param bPmode \b IN: current decoded stream progressive/interlace mode 4175*53ee8cc1Swenshuai.xi /// @param bIsTopField \b IN: current decoded stream top/bottom field 4176*53ee8cc1Swenshuai.xi /// @param u16FrameRate \b IN: current decoded stream framerate 4177*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4178*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4179*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SWDS_SW_FILM_ENABLE 4180*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_DS_ForceI_DeInterlaceMode(MS_BOOL bPmode, MS_BOOL bIsTopField, MS_U16 u16FrameRate, SCALER_WIN eWindow); 4181*53ee8cc1Swenshuai.xi #endif 4182*53ee8cc1Swenshuai.xi 4183*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4184*53ee8cc1Swenshuai.xi /// Get DNR Base offset 4185*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4186*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4187*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 return the DNR Base offset 4188*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4189*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 4190*53ee8cc1Swenshuai.xi MS_PHY MApi_XC_Get_DNRBaseOffset(SCALER_WIN eWindow); 4191*53ee8cc1Swenshuai.xi #else 4192*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_Get_DNRBaseOffset(SCALER_WIN eWindow); 4193*53ee8cc1Swenshuai.xi #endif 4194*53ee8cc1Swenshuai.xi 4195*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4196*53ee8cc1Swenshuai.xi /// Get the FrameStoreNum's factor number, which is usually to calcuate buffer offset 4197*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4198*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4199*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 return the store frame number factor 4200*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4201*53ee8cc1Swenshuai.xi #define MApi_XC_Get_StoreFrameNum MApi_XC_Get_FrameNumFactor 4202*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_Get_FrameNumFactor(SCALER_WIN eWindow); 4203*53ee8cc1Swenshuai.xi 4204*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4205*53ee8cc1Swenshuai.xi /// Get the FRCM FrameStoreNum's factor number, which is usually to calcuate buffer offset 4206*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4207*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 return the store frame number factor 4208*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4209*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_Get_FRCMFrameNum(SCALER_WIN eWindow); 4210*53ee8cc1Swenshuai.xi 4211*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4212*53ee8cc1Swenshuai.xi /// Set the specific window 4213*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4214*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 4215*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 4216*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4217*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4218*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4219*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetWindow(XC_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, SCALER_WIN eWindow); 4220*53ee8cc1Swenshuai.xi 4221*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4222*53ee8cc1Swenshuai.xi /// Set main and sub window 4223*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4224*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Main \b IN: the information of the main window setting 4225*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Sub \b IN: the information of the sub window setting 4226*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4227*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4228*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetDualWindow(XC_SETWIN_INFO *pstXC_SetWin_Info_Main, XC_SETWIN_INFO *pstXC_SetWin_Info_Sub); 4229*53ee8cc1Swenshuai.xi 4230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4231*53ee8cc1Swenshuai.xi /// Set the specific window for traveling mode(VE capture function) 4232*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4233*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 4234*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 4235*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4236*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4237*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4238*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetTravelingWindow(XC_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, SCALER_WIN eWindow); 4239*53ee8cc1Swenshuai.xi 4240*53ee8cc1Swenshuai.xi //------------------------------- 4241*53ee8cc1Swenshuai.xi // Mode Related 4242*53ee8cc1Swenshuai.xi //------------------------------- 4243*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4244*53ee8cc1Swenshuai.xi /// Set input source type 4245*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4246*53ee8cc1Swenshuai.xi /// @param enInputSourceType \b IN: which input source typewe are going to set 4247*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4248*53ee8cc1Swenshuai.xi /// @return void 4249*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4250*53ee8cc1Swenshuai.xi void MApi_XC_SetInputSource( INPUT_SOURCE_TYPE_t enInputSourceType, SCALER_WIN eWindow ); 4251*53ee8cc1Swenshuai.xi #ifdef UFO_PUBLIC_HEADER_212 4252*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4253*53ee8cc1Swenshuai.xi /// Set field detect 4254*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4255*53ee8cc1Swenshuai.xi /// @param enInputSourceType \b IN: which input source typewe are going to set 4256*53ee8cc1Swenshuai.xi /// @param enScanType \b IN: which scan type we are going to set 4257*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4258*53ee8cc1Swenshuai.xi /// @return void 4259*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4260*53ee8cc1Swenshuai.xi void MApi_XC_Set_FieldDetect(INPUT_SOURCE_TYPE_t enInputSrcType, EN_VIDEO_SCAN_TYPE enScanType, SCALER_WIN eWindow); 4261*53ee8cc1Swenshuai.xi #endif 4262*53ee8cc1Swenshuai.xi 4263*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4264*53ee8cc1Swenshuai.xi /// check whether the specific window is YUV space 4265*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4266*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4267*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4269*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsYUVSpace(SCALER_WIN eWindow); 4270*53ee8cc1Swenshuai.xi 4271*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4272*53ee8cc1Swenshuai.xi /// check whether specific window is memory format 422 4273*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4274*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 4275*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4276*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4277*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsMemoryFormat422(SCALER_WIN eWindow); 4278*53ee8cc1Swenshuai.xi 4279*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4280*53ee8cc1Swenshuai.xi /// Enable/Disable force RGB in 4281*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4282*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 4283*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4284*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4285*53ee8cc1Swenshuai.xi void MApi_XC_EnableForceRGBin(MS_BOOL bEnable, SCALER_WIN eWindow); 4286*53ee8cc1Swenshuai.xi 4287*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4288*53ee8cc1Swenshuai.xi /// Set XC mirror mode for main or sub window 4289*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4290*53ee8cc1Swenshuai.xi /// @param eMirrorMode \b IN: enable or disable XC mirror mode 4291*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 4292*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4293*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4294*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_EnableMirrorModeEx( MirrorMode_t eMirrorMode, SCALER_WIN eWindow); 4295*53ee8cc1Swenshuai.xi 4296*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4297*53ee8cc1Swenshuai.xi /// Get XC mirror mode for main or sub window 4298*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4299*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 4300*53ee8cc1Swenshuai.xi /// @return @ref MirrorMode_t 4301*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4302*53ee8cc1Swenshuai.xi MirrorMode_t MApi_XC_GetMirrorModeTypeEx(SCALER_WIN eWindow); 4303*53ee8cc1Swenshuai.xi 4304*53ee8cc1Swenshuai.xi 4305*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4306*53ee8cc1Swenshuai.xi /// Get whether support SWDS or not 4307*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4308*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4309*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4310*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_SupportSWDS(void); 4311*53ee8cc1Swenshuai.xi 4312*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4313*53ee8cc1Swenshuai.xi /// Set DS info to XC global variable/// 4314*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4315*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_SetDSInfo(XC_DS_INFO *pstSetDSInfo, MS_U32 u32DSInfoLen, SCALER_WIN eWindow); 4316*53ee8cc1Swenshuai.xi 4317*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4318*53ee8cc1Swenshuai.xi /// Get the SWDS index number 4319*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4320*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of SWDS index 4321*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4322*53ee8cc1Swenshuai.xi MS_U8 SYMBOL_WEAK MApi_XC_GetSWDSIndex(SCALER_WIN eWindow); 4323*53ee8cc1Swenshuai.xi 4324*53ee8cc1Swenshuai.xi //------------------------------- 4325*53ee8cc1Swenshuai.xi // Timing detect 4326*53ee8cc1Swenshuai.xi //------------------------------- 4327*53ee8cc1Swenshuai.xi 4328*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4329*53ee8cc1Swenshuai.xi /// Get the specific window's sync status 4330*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4331*53ee8cc1Swenshuai.xi /// @param eCurrentSrc \b IN: the current input source 4332*53ee8cc1Swenshuai.xi /// @param sXC_Sync_Status \b OUT:store the sync status 4333*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4334*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4335*53ee8cc1Swenshuai.xi void MApi_XC_GetSyncStatus(INPUT_SOURCE_TYPE_t eCurrentSrc , XC_IP_SYNC_STATUS *sXC_Sync_Status, SCALER_WIN eWindow); 4336*53ee8cc1Swenshuai.xi 4337*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4338*53ee8cc1Swenshuai.xi /// wait for output sync 4339*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4340*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 4341*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 4342*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 4343*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4344*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_WaitOutputVSync(MS_U8 u8NumVSyncs, MS_U16 u16Timeout, SCALER_WIN eWindow); 4345*53ee8cc1Swenshuai.xi 4346*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4347*53ee8cc1Swenshuai.xi /// wait for input sync 4348*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4349*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 4350*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 4351*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 4352*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4353*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_WaitInputVSync(MS_U8 u8NumVSyncs, MS_U16 u16Timeout, SCALER_WIN eWindow); 4354*53ee8cc1Swenshuai.xi 4355*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4356*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 4357*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4358*53ee8cc1Swenshuai.xi /// @param esynctype \b IN: HDMI detect mode 4359*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4360*53ee8cc1Swenshuai.xi void MApi_XC_SetHdmiSyncMode(E_HDMI_SYNC_TYPE esynctype); 4361*53ee8cc1Swenshuai.xi 4362*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4363*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 4364*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4365*53ee8cc1Swenshuai.xi /// @return @ref E_HDMI_SYNC_TYPE Get current HDMI sync type 4366*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4367*53ee8cc1Swenshuai.xi E_HDMI_SYNC_TYPE MApi_XC_GetHdmiSyncMode(void); 4368*53ee8cc1Swenshuai.xi 4369*53ee8cc1Swenshuai.xi //------------------------------- 4370*53ee8cc1Swenshuai.xi // Display control 4371*53ee8cc1Swenshuai.xi //------------------------------- 4372*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4373*53ee8cc1Swenshuai.xi /// Set report window 4374*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4375*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable report window 4376*53ee8cc1Swenshuai.xi /// @param Window \b IN: the window position and size 4377*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: report window's color 4378*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4379*53ee8cc1Swenshuai.xi void MApi_XC_SetRepWindow(MS_BOOL bEnable,MS_WINDOW_TYPE Window,MS_U8 u8Color); 4380*53ee8cc1Swenshuai.xi 4381*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4382*53ee8cc1Swenshuai.xi /// update the _bSkipDisableOPWriteOffInFPLL variable status 4383*53ee8cc1Swenshuai.xi /// if TRUE, disable OPWriteOff in FPLL will be skipped 4384*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4385*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: disable OPWriteOff in FPLL will be skipped or not. 4386*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4387*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4388*53ee8cc1Swenshuai.xi void MApi_XC_SetSkipDisableOPWriteOffInFPLL(MS_BOOL bEnable, SCALER_WIN eWindow); 4389*53ee8cc1Swenshuai.xi 4390*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4391*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status instead of direcly modifying the register itself 4392*53ee8cc1Swenshuai.xi /// instead, the state machine will take care of modifying the register by checking this status. 4393*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4394*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 4395*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4396*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4397*53ee8cc1Swenshuai.xi void MApi_XC_Set_OPWriteOffEnable(MS_BOOL bEnable, SCALER_WIN eWindow); 4398*53ee8cc1Swenshuai.xi 4399*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4400*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status, set force flag, and direcly modifying the register 4401*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4402*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 4403*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4404*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4405*53ee8cc1Swenshuai.xi void MApi_XC_ForceSet_OPWriteOffEnable(MS_BOOL bEnable ,SCALER_WIN eWindow); 4406*53ee8cc1Swenshuai.xi 4407*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4408*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status and also direcly modifying the register itself 4409*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4410*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 4411*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4412*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4413*53ee8cc1Swenshuai.xi void MApi_XC_Set_OPWriteOffEnableToReg(MS_BOOL bEnable, SCALER_WIN eWindow); 4414*53ee8cc1Swenshuai.xi 4415*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4416*53ee8cc1Swenshuai.xi /// get the OPWriteOff variable status 4417*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4418*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4419*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4420*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4421*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_OPWriteOffEnable(SCALER_WIN eWindow); 4422*53ee8cc1Swenshuai.xi 4423*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4424*53ee8cc1Swenshuai.xi /// skip the opwrite off operation in setwindow 4425*53ee8cc1Swenshuai.xi /// zoom no need to set panel timing, so skip the opwriteoff to save time 4426*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4427*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: skip, FALSE: don's skip 4428*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4429*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4430*53ee8cc1Swenshuai.xi void MApi_XC_SkipOPWriteOffInSetWindow(MS_BOOL bEnable, SCALER_WIN eWindow); 4431*53ee8cc1Swenshuai.xi 4432*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4433*53ee8cc1Swenshuai.xi /// return the status of skip the opwrite off operation in setwindow 4434*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4435*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4436*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4437*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4438*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetSkipOPWriteOffInSetWindow(SCALER_WIN eWindow); 4439*53ee8cc1Swenshuai.xi 4440*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4441*53ee8cc1Swenshuai.xi /// update display window registers with input window 4442*53ee8cc1Swenshuai.xi /// note: 4443*53ee8cc1Swenshuai.xi /// driver will update pstDspwin to hw directly, no any transform 4444*53ee8cc1Swenshuai.xi /// for ap user: should call MApi_XC_Is2K2KToFrcMode first to check whether xc under 2K2K mode or not, 4445*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 4446*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4447*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 4448*53ee8cc1Swenshuai.xi /// @param pdspwin \b IN: window info that will be setted to registers 4449*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4450*53ee8cc1Swenshuai.xi void MApi_XC_SetDispWinToReg(MS_WINDOW_TYPE *pstDspwin, SCALER_WIN eWindow); 4451*53ee8cc1Swenshuai.xi 4452*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4453*53ee8cc1Swenshuai.xi /// get current display window registers setting 4454*53ee8cc1Swenshuai.xi /// note: 4455*53ee8cc1Swenshuai.xi /// driver will return pstDspwin from hw directly, no any transform 4456*53ee8cc1Swenshuai.xi /// for ap user: should call MApi_XC_Is2K2KToFrcMode first to check whether xc under 2K2K mode or not, 4457*53ee8cc1Swenshuai.xi /// if TURE, need double pstDspwin's x and width(x=x*2; width=width*2) from this API 4458*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4459*53ee8cc1Swenshuai.xi /// @param eWindow \b IN : Main or sub window 4460*53ee8cc1Swenshuai.xi /// @param pdspwin \b OUT: Pointer for ouput disp window register 4461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4462*53ee8cc1Swenshuai.xi void MApi_XC_GetDispWinFromReg(MS_WINDOW_TYPE *pstDspwin, SCALER_WIN eWindow); 4463*53ee8cc1Swenshuai.xi 4464*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4465*53ee8cc1Swenshuai.xi /// let display video freeze by disable scaler buffer write 4466*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4467*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4468*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4469*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4470*53ee8cc1Swenshuai.xi void MApi_XC_FreezeImg(MS_BOOL bEnable, SCALER_WIN eWindow); 4471*53ee8cc1Swenshuai.xi 4472*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4473*53ee8cc1Swenshuai.xi /// Query whether the specific window is freeze image status or not 4474*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4475*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 4476*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4477*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4478*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsFreezeImg(SCALER_WIN eWindow); 4479*53ee8cc1Swenshuai.xi 4480*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4481*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 4482*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4483*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4484*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4485*53ee8cc1Swenshuai.xi void MApi_XC_GenerateBlackVideoForBothWin( MS_BOOL bEnable); 4486*53ee8cc1Swenshuai.xi 4487*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4488*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 4489*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4490*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4491*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4492*53ee8cc1Swenshuai.xi void MApi_XC_Set_BLSK(MS_BOOL bEnable); 4493*53ee8cc1Swenshuai.xi 4494*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4495*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 4496*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4497*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4498*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4499*53ee8cc1Swenshuai.xi void MApi_XC_GenerateBlackVideo(MS_BOOL bEnable, SCALER_WIN eWindow); 4500*53ee8cc1Swenshuai.xi 4501*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4502*53ee8cc1Swenshuai.xi /// Query whether current XC is black video enabled or not 4503*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4504*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4505*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4506*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsBlackVideoEnable(SCALER_WIN eWindow); 4507*53ee8cc1Swenshuai.xi 4508*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4509*53ee8cc1Swenshuai.xi /// This function will enable/diable framebufferless mode 4510*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4511*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4512*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4513*53ee8cc1Swenshuai.xi void MApi_XC_EnableFrameBufferLess(MS_BOOL bEnable); 4514*53ee8cc1Swenshuai.xi 4515*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4516*53ee8cc1Swenshuai.xi /// Query whether current XC is framebufferless or not 4517*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4518*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4519*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4520*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsCurrentFrameBufferLessMode(void); 4521*53ee8cc1Swenshuai.xi 4522*53ee8cc1Swenshuai.xi 4523*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4524*53ee8cc1Swenshuai.xi /// This function will enable/diable request framebufferless mode 4525*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4526*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4527*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4528*53ee8cc1Swenshuai.xi void MApi_XC_EnableRequest_FrameBufferLess(MS_BOOL bEnable); 4529*53ee8cc1Swenshuai.xi 4530*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4531*53ee8cc1Swenshuai.xi /// Query whether current XC is request framebufferless or not 4532*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4533*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4534*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4535*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsCurrentRequest_FrameBufferLessMode(void); 4536*53ee8cc1Swenshuai.xi 4537*53ee8cc1Swenshuai.xi //------------------------------- 4538*53ee8cc1Swenshuai.xi // 3D control 4539*53ee8cc1Swenshuai.xi //------------------------------- 4540*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4541*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HW_Version 4542*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4543*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or not 4544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4545*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_Get_3D_HW_Version(void); 4546*53ee8cc1Swenshuai.xi 4547*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4548*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_IsSupportedHW2DTo3D 4549*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4550*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or not 4551*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4552*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_IsSupportedHW2DTo3D(void); 4553*53ee8cc1Swenshuai.xi 4554*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4555*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_Mode 4556*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4557*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: 3d input format 4558*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: 3d output format 4559*53ee8cc1Swenshuai.xi /// @param e3dPanelType \b IN: 3d panel type 4560*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 4561*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4562*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4563*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_Mode(E_XC_3D_INPUT_MODE e3dInputMode, 4564*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE e3dOutputMode, 4565*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_TYPE e3dPanelType, 4566*53ee8cc1Swenshuai.xi SCALER_WIN eWindow); 4567*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4568*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_MainWin_FirstMode 4569*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4570*53ee8cc1Swenshuai.xi /// @param bMainFirst \b IN: main first or not 4571*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4572*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4573*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_MainWin_FirstMode(MS_BOOL bMainFirst); 4574*53ee8cc1Swenshuai.xi 4575*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4576*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_LR_Frame_Exchg 4577*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4578*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 4579*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 4580*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4581*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_LR_Frame_Exchg(SCALER_WIN eWindow); 4582*53ee8cc1Swenshuai.xi 4583*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4584*53ee8cc1Swenshuai.xi /// MApi_XC_3D_Is_LR_Frame_Exchged 4585*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4586*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 4587*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 4588*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4589*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Is_LR_Frame_Exchged(SCALER_WIN eWindow); 4590*53ee8cc1Swenshuai.xi 4591*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4592*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Input_Mode 4593*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4594*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 4595*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input mode 4596*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4597*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE MApi_XC_Get_3D_Input_Mode(SCALER_WIN eWindow); 4598*53ee8cc1Swenshuai.xi 4599*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4600*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Output_Mode 4601*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4602*53ee8cc1Swenshuai.xi /// @return E_XC_3D_OUTPUT_MODE \b OUT: 3D output mode 4603*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4604*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE MApi_XC_Get_3D_Output_Mode(void); 4605*53ee8cc1Swenshuai.xi 4606*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4607*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Panel_Type 4608*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4609*53ee8cc1Swenshuai.xi /// @return E_XC_3D_PANEL_TYPE \b OUT: 3D panel type 4610*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4611*53ee8cc1Swenshuai.xi E_XC_3D_PANEL_TYPE MApi_XC_Get_3D_Panel_Type(void); 4612*53ee8cc1Swenshuai.xi 4613*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4614*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_MainWin_First 4615*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4616*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 4617*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4618*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_MainWin_First(void); 4619*53ee8cc1Swenshuai.xi 4620*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4621*53ee8cc1Swenshuai.xi /// MApi_XC_3DMainSub_IPSync 4622*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4623*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: yes or no 4624*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4625*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3DMainSub_IPSync(void); 4626*53ee8cc1Swenshuai.xi 4627*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4628*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_VerVideoOffset 4629*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4630*53ee8cc1Swenshuai.xi /// @param u163DVerVideoOffset \b IN: 3d offset 4631*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4632*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4633*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_VerVideoOffset(MS_U16 u163DVerVideoOffset); 4634*53ee8cc1Swenshuai.xi 4635*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4636*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_VerVideoOffset 4637*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4638*53ee8cc1Swenshuai.xi /// @return MS_U16 \b OUT: H shift value 4639*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4640*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_Get_3D_VerVideoOffset(void); 4641*53ee8cc1Swenshuai.xi 4642*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4643*53ee8cc1Swenshuai.xi /// MApi_XC_Is3DFormatSupported 4644*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4645*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: input format 4646*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: output format 4647*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4648*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4649*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is3DFormatSupported(E_XC_3D_INPUT_MODE e3dInputMode, 4650*53ee8cc1Swenshuai.xi E_XC_3D_OUTPUT_MODE e3dOutputMode); 4651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4652*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HShift 4653*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4654*53ee8cc1Swenshuai.xi /// @param u16HShift \b IN: setup H shift value 4655*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4656*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4657*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HShift(MS_U16 u16HShift); 4658*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4659*53ee8cc1Swenshuai.xi /// MApi_XC_Enable_3D_LR_Sbs2Line 4660*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4661*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable feature 4662*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4663*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4664*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Enable_3D_LR_Sbs2Line(MS_BOOL bEnable); 4665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4666*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HShift 4667*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4668*53ee8cc1Swenshuai.xi /// @return MS_U16 \b OUT: H shift value 4669*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4670*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_Get_3D_HShift(void); 4671*53ee8cc1Swenshuai.xi 4672*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4673*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HW2DTo3D_Buffer 4674*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4675*53ee8cc1Swenshuai.xi /// @param u32HW2DTO3D_DD_Buf \b IN: DD physical address for 2D3D 4676*53ee8cc1Swenshuai.xi /// @param u32HW2DTO3D_DR_Buf \b IN: DR physical address for 2D3D 4677*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4678*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4679*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HW2DTo3D_Buffer(MS_PHY u32HW2DTO3D_DD_Buf, MS_PHY u32HW2DTO3D_DR_Buf); 4680*53ee8cc1Swenshuai.xi 4681*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4682*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_HW2DTo3D_Parameters 4683*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4684*53ee8cc1Swenshuai.xi /// @param st3DHw2DTo3DPara \b IN: 2D3D parameter 4685*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4686*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4687*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_HW2DTo3D_Parameters(MS_XC_3D_HW2DTO3D_PARA st3DHw2DTo3DPara); 4688*53ee8cc1Swenshuai.xi 4689*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4690*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_HW2DTo3D_Parameters 4691*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4692*53ee8cc1Swenshuai.xi /// @param st3DHw2DTo3DPara \b IN: 2D3D parameter 4693*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: success or not 4694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4695*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_HW2DTo3D_Parameters(MS_XC_3D_HW2DTO3D_PARA *pst3DHw2DTo3DPara); 4696*53ee8cc1Swenshuai.xi 4697*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4698*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_Detect3DFormat_Parameters 4699*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4700*53ee8cc1Swenshuai.xi /// @param pstDetect3DFormatPara \b IN: 3D format parameter 4701*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 4702*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4703*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_Detect3DFormat_Parameters(MS_XC_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 4704*53ee8cc1Swenshuai.xi 4705*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4706*53ee8cc1Swenshuai.xi /// MApi_XC_Get_3D_Detect3DFormat_Parameters 4707*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 4708*53ee8cc1Swenshuai.xi /// @param pstDetect3DFormatPara \b IN: 3D format parameter 4709*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 4710*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4711*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_3D_Detect3DFormat_Parameters(MS_XC_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 4712*53ee8cc1Swenshuai.xi 4713*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4714*53ee8cc1Swenshuai.xi /// MApi_XC_3D_PostPQSetting 4715*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4716*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 4717*53ee8cc1Swenshuai.xi /// @return E_XC_3D_INPUT_MODE \b OUT: 3D input format 4718*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4719*53ee8cc1Swenshuai.xi E_XC_3D_INPUT_MODE MApi_XC_Detect3DFormatByContent(SCALER_WIN eWindow); 4720*53ee8cc1Swenshuai.xi 4721*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4722*53ee8cc1Swenshuai.xi /// MApi_XC_DetectNL 4723*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4724*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 4725*53ee8cc1Swenshuai.xi /// @param pstDetectNLatticePara \b IN: Nine lattice parameter 4726*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4727*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4728*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DetectNL(SCALER_WIN eWindow, ST_DETECTNL_PARA* pstDetectNLatticePara); 4729*53ee8cc1Swenshuai.xi 4730*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4731*53ee8cc1Swenshuai.xi /// MApi_XC_3D_PostPQSetting 4732*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4733*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: select main or sub window 4734*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4735*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4736*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_PostPQSetting(SCALER_WIN eWindow); 4737*53ee8cc1Swenshuai.xi 4738*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4739*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_FPInfo 4740*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4741*53ee8cc1Swenshuai.xi /// @param pstFPInfoPara \b IN: Frame packing info 4742*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4743*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4744*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_FPInfo(MS_XC_3D_FPINFO_PARA *pstFPInfoPara); 4745*53ee8cc1Swenshuai.xi 4746*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4747*53ee8cc1Swenshuai.xi /// MApi_XC_EnableAutoDetect3D 4748*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4749*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: disable 4750*53ee8cc1Swenshuai.xi /// @param enDetectMethod \b IN: select auto detect mode 4751*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4752*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4753*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_EnableAutoDetect3D(MS_BOOL bEnable, E_XC_3D_AUTODETECT_METHOD enDetectMethod); 4754*53ee8cc1Swenshuai.xi 4755*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4756*53ee8cc1Swenshuai.xi /// MApi_XC_GetAutoDetect3DFlag 4757*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4758*53ee8cc1Swenshuai.xi /// @param penDetectMethod \b IN: select auto detect mode 4759*53ee8cc1Swenshuai.xi /// @param pbEnable \b IN: TRUE: enable, FALSE: disable 4760*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4761*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4762*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetAutoDetect3DFlag(E_XC_3D_AUTODETECT_METHOD *penDetectMethod, MS_BOOL *pbEnable); 4763*53ee8cc1Swenshuai.xi 4764*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4765*53ee8cc1Swenshuai.xi /// MApi_XC_Set_3D_SubWinClk 4766*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4767*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4768*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4769*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_3D_SubWinClk(void); 4770*53ee8cc1Swenshuai.xi 4771*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4772*53ee8cc1Swenshuai.xi /// Is 3D reg_3dlr_side2line_en enabled or not 4773*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4774*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 4775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4776*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Is_LR_Sbs2Line(void); 4777*53ee8cc1Swenshuai.xi 4778*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4779*53ee8cc1Swenshuai.xi /// This function will get the skip status of default flag 4780*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4781*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL return the the skip status of default flag 4782*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4783*53ee8cc1Swenshuai.xi MS_BOOL MApi_SC_3D_Is_Skip_Default_LR_Flag(void); 4784*53ee8cc1Swenshuai.xi 4785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4786*53ee8cc1Swenshuai.xi /// This function will enable/diable skip default LR flag 4787*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 4788*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 4789*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 4790*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4791*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_3D_Enable_Skip_Default_LR_Flag(MS_BOOL bEnable); 4792*53ee8cc1Swenshuai.xi 4793*53ee8cc1Swenshuai.xi //------------------------------- 4794*53ee8cc1Swenshuai.xi // Mux control 4795*53ee8cc1Swenshuai.xi //------------------------------- 4796*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 4797*53ee8cc1Swenshuai.xi #define MAX_ASYNC_DATA_PATH_SUPPORTED (2) 4798*53ee8cc1Swenshuai.xi #define MAX_DATA_PATH_SUPPORTED (MAX_SYNC_DATA_PATH_SUPPORTED+MAX_ASYNC_DATA_PATH_SUPPORTED) 4799*53ee8cc1Swenshuai.xi 4800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4801*53ee8cc1Swenshuai.xi /// Initialize Mux before using Mux controller 4802*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4803*53ee8cc1Swenshuai.xi /// @param input_source_to_input_port \b IN: a function to map from input source to input port 4804*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4805*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 ) ); 4806*53ee8cc1Swenshuai.xi 4807*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4808*53ee8cc1Swenshuai.xi /// Monitor the source of Mux 4809*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4810*53ee8cc1Swenshuai.xi /// @param bRealTimeMonitorOnly \b IN: define whether do the monitor routine only for real time 4811*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4812*53ee8cc1Swenshuai.xi void MApi_XC_Mux_SourceMonitor(MS_BOOL bRealTimeMonitorOnly); 4813*53ee8cc1Swenshuai.xi 4814*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4815*53ee8cc1Swenshuai.xi /// Create a path in Mux Controller. 4816*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4817*53ee8cc1Swenshuai.xi /// @param Path_Info \b IN: the information of the path 4818*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the Path_Info 4819*53ee8cc1Swenshuai.xi /// @return @ref MS_S16 return the path id, or -1 when any error is happened 4820*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4821*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_CreatePath(XC_MUX_PATH_INFO* Path_Info, MS_U32 u32InitDataLen); 4822*53ee8cc1Swenshuai.xi 4823*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4824*53ee8cc1Swenshuai.xi /// delete a path from Mux Controller. 4825*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4826*53ee8cc1Swenshuai.xi /// @param src \b IN: Type of input source of a path you want to delete 4827*53ee8cc1Swenshuai.xi /// @param dest \b IN: Type of destination of a path you want to delete 4828*53ee8cc1Swenshuai.xi /// @return 1 if delete successfuly. Return -1 if delete fail 4829*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4830*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_DeletePath(INPUT_SOURCE_TYPE_t src, E_DEST_TYPE dest); 4831*53ee8cc1Swenshuai.xi 4832*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4833*53ee8cc1Swenshuai.xi /// A path is disabled after creating it (\ref MApi_XC_Mux_CreatePath) 4834*53ee8cc1Swenshuai.xi /// If a path is not enabled, \ref MApi_XC_Mux_SourceMonitor will bypass it. 4835*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4836*53ee8cc1Swenshuai.xi /// @param PathId \b IN: PathId The Path you want to enable 4837*53ee8cc1Swenshuai.xi /// @return 1 if enable successfuly. Return -1 if enable fail 4838*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4839*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_EnablePath(MS_U16 PathId); 4840*53ee8cc1Swenshuai.xi 4841*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4842*53ee8cc1Swenshuai.xi /// Trigger Sync Event on Mux Controller. 4843*53ee8cc1Swenshuai.xi /// The Mux Controller will pass src and *para to each Sync Event Handler (refer synchronous_event_handler of MUX_DATA_PATH also). 4844*53ee8cc1Swenshuai.xi /// ( Delegate Function: 4845*53ee8cc1Swenshuai.xi /// Send necessary parameter to SyncEventHandler of each synchronous_path which source is 'src' ) 4846*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4847*53ee8cc1Swenshuai.xi /// @param src \b IN: The input source which triggers Sync Event 4848*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 4849*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4850*53ee8cc1Swenshuai.xi void MApi_XC_Mux_TriggerPathSyncEvent( INPUT_SOURCE_TYPE_t src , void* para); 4851*53ee8cc1Swenshuai.xi 4852*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4853*53ee8cc1Swenshuai.xi /// Set the specific window 4854*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4855*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 4856*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 4857*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4858*53ee8cc1Swenshuai.xi void MApi_XC_Mux_TriggerDestOnOffEvent( INPUT_SOURCE_TYPE_t src , void* para); 4859*53ee8cc1Swenshuai.xi 4860*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4861*53ee8cc1Swenshuai.xi /// This function was used to enable/disable the destination periodic handler 4862*53ee8cc1Swenshuai.xi /// After enabled periodic hander, Mux Controller will pass the parameters to this handler and execute it periodically 4863*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4864*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 4865*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable the priodic handler. 4866*53ee8cc1Swenshuai.xi /// @return 1 if successfuly. Return -1 if failed. 4867*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4868*53ee8cc1Swenshuai.xi MS_S16 MApi_XC_Mux_OnOffPeriodicHandler( INPUT_SOURCE_TYPE_t src, MS_BOOL bEnable); 4869*53ee8cc1Swenshuai.xi 4870*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4871*53ee8cc1Swenshuai.xi /// Get Paths in driver. 4872*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4873*53ee8cc1Swenshuai.xi /// @param Paths \b OUT: Path information 4874*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 4875*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4876*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 4877*53ee8cc1Swenshuai.xi 4878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4879*53ee8cc1Swenshuai.xi /// Set Support MHL Path Info 4880*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4881*53ee8cc1Swenshuai.xi /// @param u8MhlSupportInfo \b IN: MHL Support Info 4882*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 4883*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4884*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Mux_SetSupportMhlPathInfo(MS_U8 u8MhlSupportInfo); 4885*53ee8cc1Swenshuai.xi 4886*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4887*53ee8cc1Swenshuai.xi /// Set MHL Hot Plug Inverse Info 4888*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4889*53ee8cc1Swenshuai.xi /// @param bIsMhlHotPlugInverse \b IN: MHL Hot Plug Inverse Info 4890*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 4891*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4892*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Mux_SetMhlHotPlugInverseInfo(MS_BOOL bIsMhlHotPlugInverse); 4893*53ee8cc1Swenshuai.xi 4894*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4895*53ee8cc1Swenshuai.xi /// Get input port from input HDMI source type 4896*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4897*53ee8cc1Swenshuai.xi /// @param src \b IN: the query based on the input HDMI type 4898*53ee8cc1Swenshuai.xi /// @return @ref E_MUX_INPUTPORT 4899*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4900*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT MApi_XC_Mux_GetHDMIPort( INPUT_SOURCE_TYPE_t src ); 4901*53ee8cc1Swenshuai.xi 4902*53ee8cc1Swenshuai.xi void MApi_XC_Mux_GetPortMappingMatrix(XC_MUX_INPUTSRCTABLE *mapping_tab,MS_U32 length); 4903*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4904*53ee8cc1Swenshuai.xi /// Map input source to VD Ymux port 4905*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 4906*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: input source type 4907*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 4908*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4909*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_MUX_MapInputSourceToVDYMuxPORT( INPUT_SOURCE_TYPE_t u8InputSourceType ); 4910*53ee8cc1Swenshuai.xi 4911*53ee8cc1Swenshuai.xi //------------------------------ 4912*53ee8cc1Swenshuai.xi /// MApi_XC_Set_NR 4913*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4914*53ee8cc1Swenshuai.xi /// @param bEn \b IN: enable 4915*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub 4916*53ee8cc1Swenshuai.xi //------------------------------ 4917*53ee8cc1Swenshuai.xi void MApi_XC_Set_NR(MS_BOOL bEn, SCALER_WIN eWindow); 4918*53ee8cc1Swenshuai.xi 4919*53ee8cc1Swenshuai.xi //------------------------------ 4920*53ee8cc1Swenshuai.xi /// MApi_XC_FilmMode_P 4921*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4922*53ee8cc1Swenshuai.xi //------------------------------ 4923*53ee8cc1Swenshuai.xi void MApi_XC_FilmMode_P(void); 4924*53ee8cc1Swenshuai.xi 4925*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4926*53ee8cc1Swenshuai.xi /// Check if UC is enabled 4927*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 4928*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 4929*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: UC enabled, FALSE: UC disabled 4930*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4931*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetUCEnabled(SCALER_WIN eWindow); 4932*53ee8cc1Swenshuai.xi 4933*53ee8cc1Swenshuai.xi //------------------------------ 4934*53ee8cc1Swenshuai.xi /// MApi_XC_GenSpecificTiming 4935*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 4936*53ee8cc1Swenshuai.xi /// @param timingtype \b IN: internal timing gen 4937*53ee8cc1Swenshuai.xi //------------------------------ 4938*53ee8cc1Swenshuai.xi void MApi_XC_GenSpecificTiming(XC_Internal_TimingType timingtype); 4939*53ee8cc1Swenshuai.xi 4940*53ee8cc1Swenshuai.xi //------------------------------ 4941*53ee8cc1Swenshuai.xi // Scaler IP Related 4942*53ee8cc1Swenshuai.xi //------------------------------ 4943*53ee8cc1Swenshuai.xi // DE-Bypass Mode 4944*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4945*53ee8cc1Swenshuai.xi /// This function get DE-Bypass Mode 4946*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4947*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 4948*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 4949*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4950*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetDEBypassMode(SCALER_WIN eWindow); 4951*53ee8cc1Swenshuai.xi 4952*53ee8cc1Swenshuai.xi // Data enable 4953*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4954*53ee8cc1Swenshuai.xi /// This function get DE window 4955*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4956*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 4957*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 4958*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4959*53ee8cc1Swenshuai.xi void MApi_XC_GetDEWindow(MS_WINDOW_TYPE *psWin, SCALER_WIN eWindow); 4960*53ee8cc1Swenshuai.xi 4961*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4962*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.) 4963*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. 4964*53ee8cc1Swenshuai.xi /// Prepare this function for using in the feature. 4965*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 4966*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 4967*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 4968*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4969*53ee8cc1Swenshuai.xi void MApi_XC_GetDEWidthHeightInDEByPassMode(MS_U16* pu16Width,MS_U16* pu16Height ,SCALER_WIN eWindow); 4970*53ee8cc1Swenshuai.xi 4971*53ee8cc1Swenshuai.xi //Get Capture Window 4972*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4973*53ee8cc1Swenshuai.xi /// Get the capture window for specific window 4974*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4975*53ee8cc1Swenshuai.xi /// @param capture_win \b OUT: the window info to get 4976*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 4977*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4978*53ee8cc1Swenshuai.xi void MApi_XC_GetCaptureWindow(MS_WINDOW_TYPE* capture_win, SCALER_WIN eWindow); 4979*53ee8cc1Swenshuai.xi 4980*53ee8cc1Swenshuai.xi 4981*53ee8cc1Swenshuai.xi //Set Capture Window 4982*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4983*53ee8cc1Swenshuai.xi /// Set the Vertical start of capture window for specific window 4984*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4985*53ee8cc1Swenshuai.xi /// @param u16Vstart \b IN: the window info to get 4986*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 4987*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4988*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowVstart(MS_U16 u16Vstart , SCALER_WIN eWindow); 4989*53ee8cc1Swenshuai.xi 4990*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4991*53ee8cc1Swenshuai.xi /// Set the horizontal start of capture window for specific window 4992*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 4993*53ee8cc1Swenshuai.xi /// @param u16Hstart \b IN: the window info to get 4994*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 4995*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4996*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowHstart(MS_U16 u16Hstart , SCALER_WIN eWindow); 4997*53ee8cc1Swenshuai.xi 4998*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4999*53ee8cc1Swenshuai.xi /// Set the Vertical size of capture window for specific window 5000*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5001*53ee8cc1Swenshuai.xi /// @param u16Vsize \b IN: the window info to get 5002*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 5003*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5004*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowVsize(MS_U16 u16Vsize , SCALER_WIN eWindow); 5005*53ee8cc1Swenshuai.xi 5006*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5007*53ee8cc1Swenshuai.xi /// Set the Horizontal size of capture window for specific window 5008*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5009*53ee8cc1Swenshuai.xi /// @param u16Hsize \b IN: the window info to get 5010*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 5011*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5012*53ee8cc1Swenshuai.xi void MApi_XC_SetCaptureWindowHsize(MS_U16 u16Hsize , SCALER_WIN eWindow); 5013*53ee8cc1Swenshuai.xi 5014*53ee8cc1Swenshuai.xi // Utility 5015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5016*53ee8cc1Swenshuai.xi /// do the software reset for the specific window 5017*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5018*53ee8cc1Swenshuai.xi /// @param u8Reset \b IN: reset IP @ref SOFTWARE_REST_TYPE_t 5019*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 5020*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5021*53ee8cc1Swenshuai.xi void MApi_XC_SoftwareReset(MS_U8 u8Reset, SCALER_WIN eWindow); 5022*53ee8cc1Swenshuai.xi 5023*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5024*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 10 5025*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5026*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 5027*53ee8cc1Swenshuai.xi /// @return MS_U16: H Frequency x 10 5028*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5029*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_CalculateHFreqx10(MS_U16 u16HPeriod); 5030*53ee8cc1Swenshuai.xi 5031*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5032*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 1000 5033*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5034*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 5035*53ee8cc1Swenshuai.xi /// @return MS_U32: H Frequency x 1000 5036*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5037*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_CalculateHFreqx1K(MS_U16 u16HPeriod); 5038*53ee8cc1Swenshuai.xi 5039*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5040*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 10 5041*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5042*53ee8cc1Swenshuai.xi /// @param u16HFreqx10 \b IN: Horizontal frequency x 10 5043*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 5044*53ee8cc1Swenshuai.xi /// @return MS_U16: V Frequency x 10 5045*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5046*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_CalculateVFreqx10(MS_U16 u16HFreqx10, MS_U16 u16VTotal); 5047*53ee8cc1Swenshuai.xi 5048*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5049*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 1000 5050*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5051*53ee8cc1Swenshuai.xi /// @param u32HFreqx1K \b IN: Horizontal frequency x 1000 5052*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 5053*53ee8cc1Swenshuai.xi /// @return MS_U32: V Frequency x 1000 5054*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5055*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_CalculateVFreqx1K(MS_U32 u32HFreqx1K, MS_U16 u16VTotal); 5056*53ee8cc1Swenshuai.xi 5057*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5058*53ee8cc1Swenshuai.xi /// Attach a Call back function info Interrupt. 5059*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5060*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 5061*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 5062*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 5063*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 5064*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5065*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_InterruptAttach(SC_INT_SRC enIntNum, SC_InterruptCb pIntCb, void * pParam); 5066*53ee8cc1Swenshuai.xi 5067*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5068*53ee8cc1Swenshuai.xi /// DeAttach a Call back function info Interrupt. 5069*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5070*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 5071*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 5072*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 5073*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 5074*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5075*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_InterruptDeAttach(SC_INT_SRC enIntNum, SC_InterruptCb pIntCb, void * pParam); 5076*53ee8cc1Swenshuai.xi 5077*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5078*53ee8cc1Swenshuai.xi /// This function will disable input source 5079*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5080*53ee8cc1Swenshuai.xi /// @param bDisable \b IN: TRUE : Disable; FALSE: Enable 5081*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5082*53ee8cc1Swenshuai.xi void MApi_XC_DisableInputSource(MS_BOOL bDisable, SCALER_WIN eWidnow); 5083*53ee8cc1Swenshuai.xi 5084*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5085*53ee8cc1Swenshuai.xi /// This function will check is input source disabled or not 5086*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5087*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 5088*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: inputsource is disabled, False: inputsource is not disabled 5089*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5090*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsInputSourceDisabled(SCALER_WIN eWindow); 5091*53ee8cc1Swenshuai.xi 5092*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5093*53ee8cc1Swenshuai.xi /// This function will change panel type dynamically 5094*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5095*53ee8cc1Swenshuai.xi /// @param pstPanelInfo \b IN: the new panel type 5096*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5097*53ee8cc1Swenshuai.xi void MApi_XC_ChangePanelType(XC_PANEL_INFO *pstPanelInfo); 5098*53ee8cc1Swenshuai.xi 5099*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5100*53ee8cc1Swenshuai.xi /// MApi_XC_GetCurrentReadBank 5101*53ee8cc1Swenshuai.xi /// Attention! This function should only be used in the xc interrupt!!! 5102*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5103*53ee8cc1Swenshuai.xi /// This function will tell the current read bank 5104*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 5105*53ee8cc1Swenshuai.xi /// @return MS_U16 Current read bank 5106*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5107*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetCurrentReadBank(SCALER_WIN eWindow); 5108*53ee8cc1Swenshuai.xi 5109*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5110*53ee8cc1Swenshuai.xi /// MApi_XC_GetCurrentWriteBank 5111*53ee8cc1Swenshuai.xi /// Attention! This function should only be used in the xc interrupt!!! 5112*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5113*53ee8cc1Swenshuai.xi /// This function will tell the current write bank 5114*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 5115*53ee8cc1Swenshuai.xi /// @return MS_U16 Current write bank 5116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5117*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetCurrentWriteBank(SCALER_WIN eWindow); 5118*53ee8cc1Swenshuai.xi 5119*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5120*53ee8cc1Swenshuai.xi /// 1. calculate H/V pre-scaling down ratio accroding to frame buffer size 5121*53ee8cc1Swenshuai.xi /// 2. must be called after MApi_XC_SetFrameBufferAddress() and before MApi_XC_SetWindow() 5122*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5123*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable auto pre scaling 5124*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 5125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5126*53ee8cc1Swenshuai.xi void MApi_XC_SetAutoPreScaling(MS_BOOL bEnable, SCALER_WIN eWindow); 5127*53ee8cc1Swenshuai.xi 5128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5129*53ee8cc1Swenshuai.xi /// Get V sync width of current input source. 5130*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5131*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The Vsync width of specific window. 5132*53ee8cc1Swenshuai.xi /// @return MS_U8 Sync width of input V sync 5133*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5134*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetVSyncWidth(SCALER_WIN eWindow); 5135*53ee8cc1Swenshuai.xi 5136*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5137*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 5138*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5139*53ee8cc1Swenshuai.xi /// @param MaxGOP \b IN: The mux number. 5140*53ee8cc1Swenshuai.xi /// @param UseNum \b IN: GOP selection. 5141*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 5142*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable GOP 5143*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: Success FALSE: Fail 5144*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5145*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_set_GOP_Enable(MS_U8 MaxGOP, MS_U8 UseNum, MS_U8 u8MuxNum, MS_BOOL bEnable); 5146*53ee8cc1Swenshuai.xi 5147*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5148*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 5149*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5150*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 5151*53ee8cc1Swenshuai.xi /// @param ipSelGop \b IN: GOP selection. 5152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5153*53ee8cc1Swenshuai.xi void MApi_XC_ip_sel_for_gop(MS_U8 u8MuxNum , MS_XC_IPSEL_GOP ipSelGop); 5154*53ee8cc1Swenshuai.xi 5155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5156*53ee8cc1Swenshuai.xi /// Set Scaler VOP New blending level 5157*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5158*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5159*53ee8cc1Swenshuai.xi void MApi_XC_SetVOPNBL(void); 5160*53ee8cc1Swenshuai.xi 5161*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5162*53ee8cc1Swenshuai.xi /// XC IP0 Get Destination Information for GOP mixer 5163*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5164*53ee8cc1Swenshuai.xi /// @param pDstInfo \b IN: destination info 5165*53ee8cc1Swenshuai.xi /// @param u32SizeofDstInfo \b IN: size of destination info 5166*53ee8cc1Swenshuai.xi /// @param XCDstType \b IN: destination type 5167*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 5168*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 5169*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetDstInfo(MS_XC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo, EN_GOP_XCDST_TYPE XCDstType); 5170*53ee8cc1Swenshuai.xi 5171*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5172*53ee8cc1Swenshuai.xi /// Allow decoder to control Field R / W bank status of scaler. 5173*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5174*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 5175*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5176*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5177*53ee8cc1Swenshuai.xi void MApi_XC_set_FD_Mask_byWin(MS_BOOL bEnable, SCALER_WIN eWindow); 5178*53ee8cc1Swenshuai.xi 5179*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5180*53ee8cc1Swenshuai.xi /// Get XC FD_Mask master swtich status. 5181*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5182*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5183*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 5184*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5185*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FD_Mask_byWin(SCALER_WIN eWindow); 5186*53ee8cc1Swenshuai.xi 5187*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5188*53ee8cc1Swenshuai.xi /// Get XC FD_Mask read back status from decoder. 5189*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5190*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5191*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 5192*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5193*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FD_Mask_Status(SCALER_WIN eWindow); 5194*53ee8cc1Swenshuai.xi 5195*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 5196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5197*53ee8cc1Swenshuai.xi /// Set Scaler IP input test pattern. 5198*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: Set 1 to enable. Bit(0) is horizontal pattern and Bit(1) is vertical pattern 5199*53ee8cc1Swenshuai.xi /// @param u6Pattern_type \b IN: The pattern type. (the width of each pattern) 5200*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5201*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5202*53ee8cc1Swenshuai.xi void MApi_XC_SetIP1TestPattern(MS_U8 u8Enable, MS_U16 u6Pattern_type, SCALER_WIN eWindow); 5203*53ee8cc1Swenshuai.xi #endif 5204*53ee8cc1Swenshuai.xi 5205*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5206*53ee8cc1Swenshuai.xi /// Auto create input timing. To use this feature, the system must provide clock to scaler. 5207*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5208*53ee8cc1Swenshuai.xi /// @param timingtype \b IN: the timing type. 5209*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5210*53ee8cc1Swenshuai.xi void MApi_XC_InitIPForInternalTiming(XC_Internal_TimingType timingtype); 5211*53ee8cc1Swenshuai.xi 5212*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5213*53ee8cc1Swenshuai.xi /// Set Main window IP mux directly. 5214*53ee8cc1Swenshuai.xi /// @ingroup XC_MUX 5215*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The value need to be set into register 5216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5217*53ee8cc1Swenshuai.xi void MApi_XC_SetIPMux(MS_U8 u8Val); 5218*53ee8cc1Swenshuai.xi 5219*53ee8cc1Swenshuai.xi /// status of input H/V sync 5220*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5221*53ee8cc1Swenshuai.xi /// Return true if input H sync of scaler is exist. 5222*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 5223*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5224*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 5225*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5226*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_H_Sync_Active(SCALER_WIN eWindow); 5227*53ee8cc1Swenshuai.xi 5228*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5229*53ee8cc1Swenshuai.xi /// Return true if input V sync of scaler is exist. 5230*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 5231*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5232*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 5233*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5234*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_V_Sync_Active(SCALER_WIN eWindow); 5235*53ee8cc1Swenshuai.xi 5236*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5237*53ee8cc1Swenshuai.xi /// get auto position window with the corresponding valid data threshold 5238*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 5239*53ee8cc1Swenshuai.xi /// @param u8ValidData \b IN: valid data threshold 5240*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 5241*53ee8cc1Swenshuai.xi /// @param pstAutoPositionWindow \b OUT: auto position window parameters 5242*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: auto position window is valid FALSE: auto position window is invalid 5243*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5244*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetAutoPositionWindow(MS_U8 u8ValidData, SCALER_WIN eWindow, MS_WINDOW_TYPE *pstAutoPositionWindow); 5245*53ee8cc1Swenshuai.xi 5246*53ee8cc1Swenshuai.xi 5247*53ee8cc1Swenshuai.xi //------------------------------ 5248*53ee8cc1Swenshuai.xi // Scaler & Memory 5249*53ee8cc1Swenshuai.xi //------------------------------ 5250*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5251*53ee8cc1Swenshuai.xi /// Set Frame buffer address and size for scaler. 5252*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5253*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: Start address of frame buffer. 5254*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: Frame buffer size for Scaler 5255*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5256*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5257*53ee8cc1Swenshuai.xi void MApi_XC_SetFrameBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, SCALER_WIN eWindow); 5258*53ee8cc1Swenshuai.xi 5259*53ee8cc1Swenshuai.xi //------------------------------ 5260*53ee8cc1Swenshuai.xi // Scaler FRCM Memory // monaco mode 5261*53ee8cc1Swenshuai.xi //------------------------------ 5262*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5263*53ee8cc1Swenshuai.xi /// Set FRCM Frame buffer address and size for scaler. 5264*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5265*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: Start address of frame buffer. 5266*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: Frame buffer size for Scaler 5267*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5269*53ee8cc1Swenshuai.xi void MApi_XC_SetFRCMFrameBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, SCALER_WIN eWindow); 5270*53ee8cc1Swenshuai.xi 5271*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5272*53ee8cc1Swenshuai.xi /// Check if the buffer size is enough or not. 5273*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5274*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 5275*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5276*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Buffer size is enough FALSE: Buffer is not enough 5277*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5278*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsFrameBufferEnoughForCusScaling(XC_SETWIN_INFO *pstXC_SetWin_Info, SCALER_WIN eWindow); 5279*53ee8cc1Swenshuai.xi 5280*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5281*53ee8cc1Swenshuai.xi /// Enable or disable scaler memory read/write request 5282*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5283*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TURE=Enable memory request of 'eType'; FALSE= Disable memory request of 'eType' 5284*53ee8cc1Swenshuai.xi /// @param eType \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 5285*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5286*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue 5287*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5288*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetScalerMemoryRequest(MS_BOOL bEnable, E_XC_MEMORY_REQUEST_TYPE eType, SCALER_WIN eWindow); 5289*53ee8cc1Swenshuai.xi 5290*53ee8cc1Swenshuai.xi //Capture_Memory 5291*53ee8cc1Swenshuai.xi 5292*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5293*53ee8cc1Swenshuai.xi /// Get pixel data specify by u16CorX and u16CorY. 5294*53ee8cc1Swenshuai.xi /// This pixel data is catured after scaler memory (not after OSD or gamma). And it will latch 20ms for retrieving data. 5295*53ee8cc1Swenshuai.xi /// Also note the x , y coordinate should be small or equel to input source size. (not panel size) 5296*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5297*53ee8cc1Swenshuai.xi /// @param u16CorX \b IN: X coordinate 5298*53ee8cc1Swenshuai.xi /// @param u16CorY \b IN: Y coordinate. 5299*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 5300*53ee8cc1Swenshuai.xi /// @return void 5301*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5302*53ee8cc1Swenshuai.xi void MApi_XC_Get_PixelData(MS_U16 u16CorX, MS_U16 u16CorY, MS_PIXEL_32BIT* pixel); 5303*53ee8cc1Swenshuai.xi 5304*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5305*53ee8cc1Swenshuai.xi /// calc widht or height based on existed dnr buffer and byte/pixel 5306*53ee8cc1Swenshuai.xi /// Fomula : Scaler buffer size / u8FBNum / (byte / pixel) / InputSize 5307*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5308*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window need to be calc 5309*53ee8cc1Swenshuai.xi /// @param u8FBNum \b IN: frame cout 5310*53ee8cc1Swenshuai.xi /// @param u32InputSize \b IN: The input source size. 5311*53ee8cc1Swenshuai.xi /// @return MS_U32 The size of frames. 5312*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5313*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetAvailableSize(SCALER_WIN eWindow, MS_U8 u8FBNum, MS_U32 u32InputSize); 5314*53ee8cc1Swenshuai.xi 5315*53ee8cc1Swenshuai.xi //------------------------------ 5316*53ee8cc1Swenshuai.xi // Display & Output 5317*53ee8cc1Swenshuai.xi //------------------------------ 5318*53ee8cc1Swenshuai.xi // Display related 5319*53ee8cc1Swenshuai.xi 5320*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5321*53ee8cc1Swenshuai.xi /// Set Scaler Frame color 5322*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5323*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) 5324*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5325*53ee8cc1Swenshuai.xi void MApi_XC_SetFrameColor(MS_U32 u32aRGB); 5326*53ee8cc1Swenshuai.xi 5327*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5328*53ee8cc1Swenshuai.xi /// Set color of main / sub window. This color will be shown when black screen enabled. 5329*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 5330*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: format in a byte => R 7:5, G 4:2, B 1:0 5331*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be set. 5332*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5333*53ee8cc1Swenshuai.xi void MApi_XC_SetDispWindowColor(MS_U8 u8Color, SCALER_WIN eWindow); 5334*53ee8cc1Swenshuai.xi 5335*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5336*53ee8cc1Swenshuai.xi /// Query the capability of scaler about source to Video encoder(VE) 5337*53ee8cc1Swenshuai.xi /// @ingroup XC_VE 5338*53ee8cc1Swenshuai.xi /// @param OutputCapability \b OUT: Which part of scaler can output data to Video Encoder (VE). 5339*53ee8cc1Swenshuai.xi ///Check E_XC_SOURCE_TO_VE for capability bit. Take an example, if bit0 of OutputCapability equal to 1, 5340*53ee8cc1Swenshuai.xi ///Scaler can output data to ve from its E_XC_IP(IP) 5341*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 5342*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5343*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SupportSourceToVE(MS_U16* pOutputCapability); 5344*53ee8cc1Swenshuai.xi 5345*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5346*53ee8cc1Swenshuai.xi /// Enable output capture for output data to VE. Return False if current platform does not support E_XC_SOURCE_TO_VE 5347*53ee8cc1Swenshuai.xi /// Note: this source is not only for VE, but Scaler IP or DIP 5348*53ee8cc1Swenshuai.xi /// @ingroup XC_VE 5349*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable output capture function 5350*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. 5351*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5352*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOutputCapture(MS_BOOL bEnable,E_XC_SOURCE_TO_VE eSourceToVE); 5353*53ee8cc1Swenshuai.xi 5354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5355*53ee8cc1Swenshuai.xi /// Setup Gamma function ON/OFF 5356*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 5357*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 5358*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5359*53ee8cc1Swenshuai.xi void MApi_XC_SetGammaOnOff (MS_BOOL bEnable); 5360*53ee8cc1Swenshuai.xi 5361*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5362*53ee8cc1Swenshuai.xi /// Set VOP Gain for Main Window(after 3x3 before Gamma) 5363*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 5364*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 5365*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 5366*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5367*53ee8cc1Swenshuai.xi void MApi_XC_SetPreGammaGain(SCALER_WIN eWindow, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val); 5368*53ee8cc1Swenshuai.xi 5369*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5370*53ee8cc1Swenshuai.xi /// Set VOP Offset for Main Window(after 3x3 before Gamma) 5371*53ee8cc1Swenshuai.xi /// @ingroup XC_GAMMA 5372*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 5373*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 5374*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5375*53ee8cc1Swenshuai.xi void MApi_XC_SetPreGammaOffset(SCALER_WIN eWindow, MS_XC_VOP_CHANNEL_t eVop_Channel, MS_U16 u16Val); 5376*53ee8cc1Swenshuai.xi 5377*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5378*53ee8cc1Swenshuai.xi // Output timing related 5379*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5380*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5381*53ee8cc1Swenshuai.xi /// Setup panel timing (output DCLK)/FRC/FramePLL, and enable input source 5382*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5383*53ee8cc1Swenshuai.xi /// @param pTimingInfo \b IN: the information of the timing to set @ref XC_SetTiming_Info 5384*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5385*53ee8cc1Swenshuai.xi void MApi_XC_SetPanelTiming(XC_SetTiming_Info *pTimingInfo, SCALER_WIN eWindow); 5386*53ee8cc1Swenshuai.xi 5387*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5388*53ee8cc1Swenshuai.xi /// Set current output type. This is set in Panel structure. You can adjust it here. 5389*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5390*53ee8cc1Swenshuai.xi /// @param enPnl_Out_Timing_Mode \b IN: The output type 5391*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5392*53ee8cc1Swenshuai.xi void MApi_XC_SetOutTimingMode(E_XC_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode); 5393*53ee8cc1Swenshuai.xi 5394*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5395*53ee8cc1Swenshuai.xi /// set free run display window timing 5396*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5397*53ee8cc1Swenshuai.xi /// @return void Output type. 5398*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5399*53ee8cc1Swenshuai.xi void MApi_XC_SetFreeRunTiming(void); 5400*53ee8cc1Swenshuai.xi 5401*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5402*53ee8cc1Swenshuai.xi /// Adjust V sync FrontPorch , Sync Width for specific output frame rate (You can adjust in advance by using MApi_XC_SetExPanelInfo) 5403*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5404*53ee8cc1Swenshuai.xi /// @param u16FrontPorch \b IN: Front porch of output Vsync 5405*53ee8cc1Swenshuai.xi /// @param u16SyncWidth \b IN: Sync width of output Vsync 5406*53ee8cc1Swenshuai.xi /// @param u16OutputVfreq \b IN: The output frame rate you want to adjust. 5407*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success False : Fail 5408*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5409*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_CustomerSyncInfo(MS_U16 u16FrontPorch, MS_U16 u16SyncWidth, MS_U16 u16OutputVfreq); 5410*53ee8cc1Swenshuai.xi 5411*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5412*53ee8cc1Swenshuai.xi /// Wait FPLL finished 5413*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5414*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL indicate FPLL finished or not (frame lock finished or not) 5415*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5416*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_WaitFPLLDone(void); 5417*53ee8cc1Swenshuai.xi 5418*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5419*53ee8cc1Swenshuai.xi /// Get scaler output vertical frequency 5420*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5421*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return output vertical frequency x 100 5422*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5423*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetOutputVFreqX100(void); 5424*53ee8cc1Swenshuai.xi 5425*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5426*53ee8cc1Swenshuai.xi /// Get scaler output vertical frequency 5427*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5428*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return output vertical frequency x 100 5429*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5430*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_GetOP1OutputVFreqX100(void); 5431*53ee8cc1Swenshuai.xi 5432*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5433*53ee8cc1Swenshuai.xi /// Frame Lock Check 5434*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5435*53ee8cc1Swenshuai.xi /// @ref MS_BOOL TURE=Frame Lock ; FALSE= Not Frame Lock 5436*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5437*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_FrameLockCheck(void); 5438*53ee8cc1Swenshuai.xi 5439*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5440*53ee8cc1Swenshuai.xi /// Set a customize FRC table into driver 5441*53ee8cc1Swenshuai.xi /// You can customize frc table in driver. The max number of FRC setting is 5 (Can be changed in driver layer). 5442*53ee8cc1Swenshuai.xi /// 5443*53ee8cc1Swenshuai.xi /// Here is an example of 5 FRC items with 6 maximal number of FRC setting. 5444*53ee8cc1Swenshuai.xi /// Please fill {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} at unused FRC item slot. 5445*53ee8cc1Swenshuai.xi /// 5446*53ee8cc1Swenshuai.xi /// {0, 160, 1, 4, MS_FRC_1_4}, <-- FRC item 0 5447*53ee8cc1Swenshuai.xi /// {160, 245, 2, 5, MS_FRC_2_5}, <-- FRC item 1 5448*53ee8cc1Swenshuai.xi /// {245, 260, 1, 2, MS_FRC_1_2}, <-- FRC item 2 5449*53ee8cc1Swenshuai.xi /// {260, 400, 1, 2, MS_FRC_1_2}, <-- FRC item 3 5450*53ee8cc1Swenshuai.xi /// {400, 0xFFFF, 1, 1, MS_FRC_1_1}, <-- FRC item 4 5451*53ee8cc1Swenshuai.xi /// {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} <-- FRC item 5 (Unused) 5452*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5453*53ee8cc1Swenshuai.xi /// @param stFRCTable \b IN: The pointer which point to a FRC table. You can refer above description. 5454*53ee8cc1Swenshuai.xi /// if pass NULL, driver will use default frc table. 5455*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue Return status. 5456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5457*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_CustomizeFRCTable(SC_FRC_SETTING* stFRCTable); 5458*53ee8cc1Swenshuai.xi 5459*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5460*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 5461*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5462*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 5463*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 5464*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 5465*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue return type. 5466*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5467*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OutputFrameCtrl(MS_BOOL bEnable,XC_OUTPUTFRAME_Info * stOutFrameInfo,SCALER_WIN eWindow); 5468*53ee8cc1Swenshuai.xi 5469*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5470*53ee8cc1Swenshuai.xi /// Set the FPLL mode: 5471*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5472*53ee8cc1Swenshuai.xi /// @param bTrue \b IN: True: FSM mode, False: Non FSM mode 5473*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5474*53ee8cc1Swenshuai.xi void MApi_SC_Enable_FPLL_FSM(MS_BOOL bTrue); 5475*53ee8cc1Swenshuai.xi 5476*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5477*53ee8cc1Swenshuai.xi /// This function will force freerun in MDrv_Scaler_SetPanelTiming(), 5478*53ee8cc1Swenshuai.xi /// otherwise MDrv_Scaler_SetPanelTiming() will decide to do framelock or not by itself. 5479*53ee8cc1Swenshuai.xi /// 5480*53ee8cc1Swenshuai.xi /// Note: this function is difference with MDrv_SC_set_fpll() which is used to 5481*53ee8cc1Swenshuai.xi /// unlock framelock after MDrv_Scaler_SetPanelTiming(). 5482*53ee8cc1Swenshuai.xi /// But this function is used to affect MDrv_Scaler_SetPanelTiming()'s behavior. 5483*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5484*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable force freerun. FALSE: disable force free run. 5485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5486*53ee8cc1Swenshuai.xi void MApi_SC_ForceFreerun(MS_BOOL bEnable); 5487*53ee8cc1Swenshuai.xi 5488*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5489*53ee8cc1Swenshuai.xi /// Get Force freerun status. 5490*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5491*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL True: Current is in Force freerun mode. False: Current is not in Force Freerun mode 5492*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5493*53ee8cc1Swenshuai.xi MS_BOOL MApi_SC_IsForceFreerun(void); 5494*53ee8cc1Swenshuai.xi 5495*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5496*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 5497*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5498*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 5499*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 5500*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 5501*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue return type. 5502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5503*53ee8cc1Swenshuai.xi void MApi_SC_SetFreerunVFreq(E_VFREQ_SEL VFreq); 5504*53ee8cc1Swenshuai.xi 5505*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5506*53ee8cc1Swenshuai.xi /// Set external panel info for output 5507*53ee8cc1Swenshuai.xi /// Currently, only support setting of two different vfreqs at same time 5508*53ee8cc1Swenshuai.xi /// The set ExPanelInfo will take effect after running of function MApi_XC_SetPanelTiming 5509*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5510*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable this XC_PANEL_INFO_EX, FALSE: Disable this XC_PANEL_INFO_EX 5511*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The extern panel information to set @ref XC_PANEL_INFO_EX 5512*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 5513*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5514*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetExPanelInfo(MS_BOOL bEnable, XC_PANEL_INFO_EX *pPanelInfoEx); 5515*53ee8cc1Swenshuai.xi 5516*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5517*53ee8cc1Swenshuai.xi /// Set the FPLL thresh mode: 5518*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5519*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Thresh mode, FALSE: Non-Thresh mode 5520*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5521*53ee8cc1Swenshuai.xi void MApi_XC_Enable_FPLL_Thresh_Mode(MS_BOOL bEnable); 5522*53ee8cc1Swenshuai.xi 5523*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5524*53ee8cc1Swenshuai.xi /// Get the FPLL Thresh mode: 5525*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5526*53ee8cc1Swenshuai.xi /// @return TRUE: Thresh mode, FALSE: Non-Thresh mode 5527*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5528*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FPLL_Thresh_Mode(void); 5529*53ee8cc1Swenshuai.xi 5530*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5531*53ee8cc1Swenshuai.xi /// Enable auto no signal mode 5532*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5533*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable auto no signal mode. 5534*53ee8cc1Swenshuai.xi /// @eWindow \b IN: The window (main or sub) which need to be controled. 5535*53ee8cc1Swenshuai.xi /// @return @ref E_APIXC_ReturnValue TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 5536*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5537*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_EnableIPAutoNoSignal(MS_BOOL bEnable, SCALER_WIN eWindow ); 5538*53ee8cc1Swenshuai.xi 5539*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5540*53ee8cc1Swenshuai.xi /// Return true is current is in auto nosignal mode. 5541*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5542*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: IP auto nosignal in specific window 5543*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 5544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5545*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetIPAutoNoSignal(SCALER_WIN eWindow ); 5546*53ee8cc1Swenshuai.xi 5547*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5548*53ee8cc1Swenshuai.xi /// Enable or disable IP auto coast 5549*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5550*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 5551*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5552*53ee8cc1Swenshuai.xi void MApi_XC_EnableIPAutoCoast(MS_BOOL bEnable); 5553*53ee8cc1Swenshuai.xi 5554*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5555*53ee8cc1Swenshuai.xi /// Enable IP auto Coast debounce (the debounce time is 1 (default) in driver) 5556*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5557*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5558*53ee8cc1Swenshuai.xi void MApi_XC_EnableIPCoastDebounce(void); 5559*53ee8cc1Swenshuai.xi 5560*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5561*53ee8cc1Swenshuai.xi /// Clear IP auto Coast debounce 5562*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5563*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5564*53ee8cc1Swenshuai.xi void MApi_XC_ClearIPCoastStatus(void); 5565*53ee8cc1Swenshuai.xi 5566*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5567*53ee8cc1Swenshuai.xi /// Enable FPLL related settings not by program but by user's setting from TV tool 5568*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5569*53ee8cc1Swenshuai.xi /// Including PhaseLimit, limitD5D6D7_RK 5570*53ee8cc1Swenshuai.xi /// @param bEnable @ref MS_BOOL \b IN: enable or not 5571*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5572*53ee8cc1Swenshuai.xi void MApi_XC_EnableFpllManualSetting(MS_BOOL bEnable); // debug purpose 5573*53ee8cc1Swenshuai.xi 5574*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 5575*53ee8cc1Swenshuai.xi /// Test if panel output is ok by changing output DClk, this is to test max range that FPLL can do 5576*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 5577*53ee8cc1Swenshuai.xi /// @param u32FpllSetOffset @ref MS_U32 \b IN: the offset to be add/minus the typical DClk output, unit is SET 5578*53ee8cc1Swenshuai.xi /// @param u16TestCnt @ref MS_U16 \b IN: the times to do boundary test 5579*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 5580*53ee8cc1Swenshuai.xi void MApi_XC_FpllBoundaryTest(MS_U32 u32FpllSetOffset, MS_U16 u16TestCnt); // debug purpose 5581*53ee8cc1Swenshuai.xi 5582*53ee8cc1Swenshuai.xi //------------------------------ 5583*53ee8cc1Swenshuai.xi // Offline signal detection related 5584*53ee8cc1Swenshuai.xi //------------------------------ 5585*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5586*53ee8cc1Swenshuai.xi /// Set the source need to be detect in offline detection. 5587*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5588*53ee8cc1Swenshuai.xi /// @param INPUT_SOURCE_TYPE_t \b IN: The source need to be monitor 5589*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5590*53ee8cc1Swenshuai.xi void MApi_XC_SetOffLineDetection (INPUT_SOURCE_TYPE_t); 5591*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5592*53ee8cc1Swenshuai.xi /// Get Offline detection status to specific input source 5593*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5594*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: the specific input source type to do offline detection 5595*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 TRUE: Success, FALSE: Failed 5596*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5597*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetOffLineDetection( INPUT_SOURCE_TYPE_t); 5598*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5599*53ee8cc1Swenshuai.xi /// Set Offline detection Sog Threshold 5600*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5601*53ee8cc1Swenshuai.xi /// @param u8Threshold \b IN: threshold value t2,u3,u4: 0~31 other chip: 0~255 5602*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 5603*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5604*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetOffLineSogThreshold(MS_U8 u8Threshold); //t2,u3,u4: 0~31 other chip: 0~255 5605*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5606*53ee8cc1Swenshuai.xi /// Set Offline Detection Sog filter bandwidth 5607*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5608*53ee8cc1Swenshuai.xi /// @param u8BW \b IN: bandwidth value t2,u3,u4: 0~7 other chip: 0~31 5609*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 5610*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5611*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetOffLineSogBW(MS_U8 u8BW); 5612*53ee8cc1Swenshuai.xi 5613*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5614*53ee8cc1Swenshuai.xi /// Initial offline detect procedure. 5615*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5616*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 5617*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5618*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_OffLineInit(void); 5619*53ee8cc1Swenshuai.xi 5620*53ee8cc1Swenshuai.xi //------------------------------ 5621*53ee8cc1Swenshuai.xi // PIP 5622*53ee8cc1Swenshuai.xi //------------------------------ 5623*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5624*53ee8cc1Swenshuai.xi /// Set Extra fetch number. (This setting is usually used in PIP mode. Please set carefully) 5625*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5626*53ee8cc1Swenshuai.xi /// @param u8val \b IN: The extra fetch number. 5627*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5628*53ee8cc1Swenshuai.xi void MApi_XC_Set_Extra_fetch_adv_line(MS_U8 u8val); 5629*53ee8cc1Swenshuai.xi 5630*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5631*53ee8cc1Swenshuai.xi /// Set the VGA SOG on or off 5632*53ee8cc1Swenshuai.xi /// @ingroup XC_INFO 5633*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the VGA SOG; bEnable =0, Turn off the VGA SOG 5634*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5635*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetVGASogEn(MS_BOOL bVGASogEn); 5636*53ee8cc1Swenshuai.xi 5637*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5638*53ee8cc1Swenshuai.xi /// Control the output window(Main/Sub) on or off 5639*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5640*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 5641*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: eWindow =0, for MAIN; eWindow =1, for SUB; 5642*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5643*53ee8cc1Swenshuai.xi void MApi_XC_EnableWindow(MS_BOOL bEnable, SCALER_WIN eWindow); 5644*53ee8cc1Swenshuai.xi 5645*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5646*53ee8cc1Swenshuai.xi /// whether sub window is enable 5647*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5648*53ee8cc1Swenshuai.xi /// @param void \b IN: none 5649*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5650*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_SubWindowEanble(void); 5651*53ee8cc1Swenshuai.xi 5652*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5653*53ee8cc1Swenshuai.xi /// Set Border format 5654*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5655*53ee8cc1Swenshuai.xi /// @param u8WidthIn \b IN: In-box width 5656*53ee8cc1Swenshuai.xi /// @param u8WidthOut \b IN: Out-box width 5657*53ee8cc1Swenshuai.xi /// @param u8color \b IN: border color 5658*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 5659*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5660*53ee8cc1Swenshuai.xi void MApi_XC_SetBorderFormat( MS_U8 u8Left, MS_U8 u8Right, MS_U8 u8Up, MS_U8 u8Down, MS_U8 u8color, SCALER_WIN eWindow ); 5661*53ee8cc1Swenshuai.xi 5662*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5663*53ee8cc1Swenshuai.xi /// enable or disable Border 5664*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5665*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 5666*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 5667*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5668*53ee8cc1Swenshuai.xi void MApi_XC_EnableBorder(MS_BOOL bEnable, SCALER_WIN eWindow); 5669*53ee8cc1Swenshuai.xi 5670*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5671*53ee8cc1Swenshuai.xi /// Set Z-order main window first or not 5672*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5673*53ee8cc1Swenshuai.xi /// @param bMainFirst \b IN: TRUE: Main window first; FALSE: Sub window first 5674*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5675*53ee8cc1Swenshuai.xi void MApi_XC_ZorderMainWindowFirst(MS_BOOL bMainFirst); 5676*53ee8cc1Swenshuai.xi 5677*53ee8cc1Swenshuai.xi //------------------------------ 5678*53ee8cc1Swenshuai.xi // PQ Load Function 5679*53ee8cc1Swenshuai.xi //------------------------------ 5680*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5681*53ee8cc1Swenshuai.xi /// Create a function for PQ in SC. 5682*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5683*53ee8cc1Swenshuai.xi /// @param PQ_Function_Info \b IN: the information of the function 5684*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 5685*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5686*53ee8cc1Swenshuai.xi void MApi_XC_PQ_LoadFunction(PQ_Function_Info* function_Info , MS_U32 u32InitDataLen); 5687*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5688*53ee8cc1Swenshuai.xi /// Return true if current status is H nonlinear scaling 5689*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 5690*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 5691*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 True: Using HNonLinearScaling False: Not in Nonlinear status 5692*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5693*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Check_HNonLinearScaling(void); 5694*53ee8cc1Swenshuai.xi 5695*53ee8cc1Swenshuai.xi //------------------------------ 5696*53ee8cc1Swenshuai.xi // EURO Function 5697*53ee8cc1Swenshuai.xi //------------------------------ 5698*53ee8cc1Swenshuai.xi 5699*53ee8cc1Swenshuai.xi // Enable/Disable Euro/Australia Hdtv Detection support in driver 5700*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5701*53ee8cc1Swenshuai.xi /// Enable/Disable Euro/Australia Hdtv Detection support in driver 5702*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5703*53ee8cc1Swenshuai.xi /// @param bEnable: 5704*53ee8cc1Swenshuai.xi /// - ENABLE : enable support 5705*53ee8cc1Swenshuai.xi /// - DISABLE : disable disable 5706*53ee8cc1Swenshuai.xi /// @return None. 5707*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5708*53ee8cc1Swenshuai.xi void MApi_XC_EnableEuroHdtvSupport(MS_BOOL bEnable); 5709*53ee8cc1Swenshuai.xi 5710*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5711*53ee8cc1Swenshuai.xi /// Enable Euro/Australia Hdtv Detection 5712*53ee8cc1Swenshuai.xi /// @ingroup XC_TIMING_DETECT 5713*53ee8cc1Swenshuai.xi /// @param bEnable: 5714*53ee8cc1Swenshuai.xi /// - ENABLE : enable detection 5715*53ee8cc1Swenshuai.xi /// - DISABLE : disable detection 5716*53ee8cc1Swenshuai.xi /// @return None. 5717*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 5718*53ee8cc1Swenshuai.xi void MApi_XC_EnableEuroHdtvDetection(MS_BOOL bEnable, SCALER_WIN eWindow); 5719*53ee8cc1Swenshuai.xi 5720*53ee8cc1Swenshuai.xi //------------------------------ 5721*53ee8cc1Swenshuai.xi // Genenal R/W Function 5722*53ee8cc1Swenshuai.xi //------------------------------ 5723*53ee8cc1Swenshuai.xi 5724*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5725*53ee8cc1Swenshuai.xi /// General Read Byte Function 5726*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5727*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 5728*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 5729*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5730*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ReadByte(MS_U32 u32Reg); 5731*53ee8cc1Swenshuai.xi 5732*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5733*53ee8cc1Swenshuai.xi /// General Write Byte Function 5734*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5735*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 5736*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 5737*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5738*53ee8cc1Swenshuai.xi void MApi_XC_WriteByte(MS_U32 u32Reg, MS_U8 u8Val); 5739*53ee8cc1Swenshuai.xi 5740*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5741*53ee8cc1Swenshuai.xi /// General Write Byte Function 5742*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5743*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 5744*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: setting value 5745*53ee8cc1Swenshuai.xi /// @param u8Msk \b IN: setting value 5746*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5747*53ee8cc1Swenshuai.xi void MApi_XC_WriteByteMask(MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk); 5748*53ee8cc1Swenshuai.xi 5749*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5750*53ee8cc1Swenshuai.xi /// General 2 Write Byte Function 5751*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5752*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 5753*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 5754*53ee8cc1Swenshuai.xi /// @param u16Msk \b IN: setting value 5755*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5756*53ee8cc1Swenshuai.xi void MApi_XC_Write2ByteMask(MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask); 5757*53ee8cc1Swenshuai.xi 5758*53ee8cc1Swenshuai.xi //------------------------------ 5759*53ee8cc1Swenshuai.xi // XC R/W Function, using mutex to protect 5760*53ee8cc1Swenshuai.xi //------------------------------ 5761*53ee8cc1Swenshuai.xi 5762*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5763*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Function, and use mutex to protect while switch bank and write address 5764*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5765*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5766*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 5767*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5768*53ee8cc1Swenshuai.xi void MApi_XC_W2BYTE(MS_U32 u32Reg, MS_U16 u16Val); 5769*53ee8cc1Swenshuai.xi 5770*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5771*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Function, and use mutex to protect while switch bank and write address 5772*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5773*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5774*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 5775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5776*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_R2BYTE(MS_U32 u32Reg); 5777*53ee8cc1Swenshuai.xi 5778*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5779*53ee8cc1Swenshuai.xi /// Scaler Write 4 Byte Function, and use mutex to protect while switch bank and write address 5780*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5781*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5782*53ee8cc1Swenshuai.xi /// @param u32Val \b IN: setting value 5783*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5784*53ee8cc1Swenshuai.xi void MApi_XC_W4BYTE(MS_U32 u32Reg, MS_U32 u32Val); 5785*53ee8cc1Swenshuai.xi 5786*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5787*53ee8cc1Swenshuai.xi /// Scaler Read 4 Byte Function, and use mutex to protect while switch bank and write address 5788*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5789*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5790*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 5791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5792*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_R4BYTE(MS_U32 u32Reg); 5793*53ee8cc1Swenshuai.xi 5794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5795*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Mask Function, and use mutex to protect while switch bank and write address 5796*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5797*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5798*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 5799*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 5800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5801*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_R2BYTEMSK(MS_U32 u32Reg, MS_U16 u16Mask); 5802*53ee8cc1Swenshuai.xi 5803*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5804*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Mask Function, and use mutex to protect while switch bank and write address 5805*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5806*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 5807*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Setting value 5808*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 5809*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5810*53ee8cc1Swenshuai.xi void MApi_XC_W2BYTEMSK(MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16Mask); 5811*53ee8cc1Swenshuai.xi 5812*53ee8cc1Swenshuai.xi //------------------------------ 5813*53ee8cc1Swenshuai.xi // MLoad Function, xc command burst 5814*53ee8cc1Swenshuai.xi //------------------------------ 5815*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5816*53ee8cc1Swenshuai.xi /// Initialize the Menuload 5817*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5818*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 5819*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 5820*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5821*53ee8cc1Swenshuai.xi void MApi_XC_MLoad_Init(MS_PHY PhyAddr, MS_U32 u32BufByteLen); 5822*53ee8cc1Swenshuai.xi 5823*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5824*53ee8cc1Swenshuai.xi /// Enable/Disable the MLoad 5825*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5826*53ee8cc1Swenshuai.xi /// @return void 5827*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5828*53ee8cc1Swenshuai.xi void MApi_XC_MLoad_Enable(MS_BOOL bEnable); 5829*53ee8cc1Swenshuai.xi 5830*53ee8cc1Swenshuai.xi /// Initialize the Menuload by different client 5831*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5832*53ee8cc1Swenshuai.xi /// @param eMloadSelect \b IN: the client id for the different Mload user 5833*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 5834*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 5835*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5836*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_MLoad_Cus_Init(EN_MLOAD_CLIENT_SELECT eMloadSelect, MS_PHY PhyAddr, MS_U32 u32BufByteLen); 5837*53ee8cc1Swenshuai.xi 5838*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5839*53ee8cc1Swenshuai.xi /// Enable/Disable the MLoad by different client 5840*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5841*53ee8cc1Swenshuai.xi /// @param eMloadSelect \b IN: the client id for the different Mload user 5842*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable 5843*53ee8cc1Swenshuai.xi /// @return void 5844*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5845*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_MLoad_Cus_Enable(EN_MLOAD_CLIENT_SELECT eMloadSelect, MS_BOOL bEnable); 5846*53ee8cc1Swenshuai.xi 5847*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5848*53ee8cc1Swenshuai.xi /// Get the status of MLoad 5849*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5850*53ee8cc1Swenshuai.xi /// @return @ref MLOAD_TYPE 5851*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5852*53ee8cc1Swenshuai.xi MLOAD_TYPE MApi_XC_MLoad_GetStatus(void); 5853*53ee8cc1Swenshuai.xi 5854*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5855*53ee8cc1Swenshuai.xi /// write signal command to Mload and fire 5856*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5857*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN: register 5858*53ee8cc1Swenshuai.xi /// @param u16Data \b IN: value 5859*53ee8cc1Swenshuai.xi /// @param u16Mask \b IN: mask 5860*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 5861*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5862*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_MLoad_WriteCmd_And_Fire(MS_U32 u32Addr, MS_U16 u16Data, MS_U16 u16Mask); 5863*53ee8cc1Swenshuai.xi 5864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5865*53ee8cc1Swenshuai.xi /// write multi commands to Mload and fire 5866*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5867*53ee8cc1Swenshuai.xi /// @param pu32Addr \b IN: buffer of register 5868*53ee8cc1Swenshuai.xi /// @param pu16Data \b IN: buffer of value 5869*53ee8cc1Swenshuai.xi /// @param pu16Mask \b IN: buffer of mask 5870*53ee8cc1Swenshuai.xi /// @param u16CmdCnt \b IN: counter of command 5871*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5872*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_MLoad_WriteCmds_And_Fire(MS_U32 *pu32Addr, MS_U16 *pu16Data, MS_U16 *pu16Mask, MS_U16 u16CmdCnt); 5873*53ee8cc1Swenshuai.xi 5874*53ee8cc1Swenshuai.xi //------------------------------ 5875*53ee8cc1Swenshuai.xi // Menuload Gamma Function 5876*53ee8cc1Swenshuai.xi //------------------------------ 5877*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5878*53ee8cc1Swenshuai.xi /// Initialize the Menuload Gamma 5879*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5880*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 5881*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 5882*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5883*53ee8cc1Swenshuai.xi void MApi_XC_MLG_Init(MS_PHY PhyAddr, MS_U32 u32BufByteLen); 5884*53ee8cc1Swenshuai.xi 5885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5886*53ee8cc1Swenshuai.xi /// Enable/Disable the Menuload Gamma 5887*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5888*53ee8cc1Swenshuai.xi /// @return void 5889*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5890*53ee8cc1Swenshuai.xi void MApi_XC_MLG_Enable(MS_BOOL bEnable); 5891*53ee8cc1Swenshuai.xi 5892*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5893*53ee8cc1Swenshuai.xi /// Get the caps of Menuload Gamma 5894*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5895*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 5896*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5897*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_MLG_GetCaps(void); 5898*53ee8cc1Swenshuai.xi 5899*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5900*53ee8cc1Swenshuai.xi /// Get the status of MLoad 5901*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 5902*53ee8cc1Swenshuai.xi /// @return @ref MLG_TYPE 5903*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5904*53ee8cc1Swenshuai.xi MLG_TYPE MApi_XC_MLG_GetStatus(void); 5905*53ee8cc1Swenshuai.xi 5906*53ee8cc1Swenshuai.xi //------------------------------ 5907*53ee8cc1Swenshuai.xi // For U4 set VOP data mux to VE 5908*53ee8cc1Swenshuai.xi //------------------------------ 5909*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5910*53ee8cc1Swenshuai.xi /// Select the source which need to connect to VE. 5911*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5912*53ee8cc1Swenshuai.xi /// @param eVOPSelOSD_MUX \b IN: The source need to connect to VE. 5913*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5914*53ee8cc1Swenshuai.xi void MApi_XC_SetOSD2VEMode(EN_VOP_SEL_OSD_XC2VE_MUX eVOPSelOSD_MUX); 5915*53ee8cc1Swenshuai.xi 5916*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5917*53ee8cc1Swenshuai.xi /// Enable or disable prefilter in Scaler. 5918*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5919*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable: pre-filter. Disable: pre-filter 5920*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5921*53ee8cc1Swenshuai.xi void MApi_XC_IP2_PreFilter_Enable(MS_BOOL bEnable); 5922*53ee8cc1Swenshuai.xi 5923*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5924*53ee8cc1Swenshuai.xi /// Get pixel data with RGB format. 5925*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5926*53ee8cc1Swenshuai.xi /// @param u16x \b IN: X coordinate 5927*53ee8cc1Swenshuai.xi /// @param u16Y \b IN: Y coordinate 5928*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window for retrieving data. 5929*53ee8cc1Swenshuai.xi /// @return @ref u32r return the R data 5930*53ee8cc1Swenshuai.xi /// @return @ref u32g return the G data 5931*53ee8cc1Swenshuai.xi /// @return @ref u32b return the B data 5932*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5933*53ee8cc1Swenshuai.xi E_APIXC_GET_PixelRGB_ReturnValue MApi_XC_Get_Pixel_RGB(XC_Get_Pixel_RGB *pData, SCALER_WIN eWindow); 5934*53ee8cc1Swenshuai.xi 5935*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5936*53ee8cc1Swenshuai.xi /// During retrieve pixel data, system have a cursor on the screen. This function can keep the cursor on the screen. 5937*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5938*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable if you want to keep cursor on the screen 5939*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5940*53ee8cc1Swenshuai.xi void MApi_XC_KeepPixelPointerAppear(MS_BOOL bEnable); 5941*53ee8cc1Swenshuai.xi 5942*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5943*53ee8cc1Swenshuai.xi /// @param eMemFmt \b IN: the format of memory 5944*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5945*53ee8cc1Swenshuai.xi /// Set memory format 5946*53ee8cc1Swenshuai.xi /// @ref MS_BOOL 5947*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5948*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_MemFmtEx(MS_XC_MEM_FMT eMemFmt, SCALER_WIN eWindow); 5949*53ee8cc1Swenshuai.xi 5950*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5951*53ee8cc1Swenshuai.xi /// Get frame buffer less mode status 5952*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5953*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL retun the status about FrameBufferLess mode 5954*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5955*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsRequestFrameBufferLessMode(void); 5956*53ee8cc1Swenshuai.xi 5957*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5958*53ee8cc1Swenshuai.xi /// Set Flag to bypass software reset in MApi_XC_Init() 5959*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5960*53ee8cc1Swenshuai.xi /// @param bFlag \b TRUE: initialize XC by skipping SW reset; FALSE: initialize XC in normal case 5961*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 5962*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5963*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SkipSWReset(MS_BOOL bFlag); 5964*53ee8cc1Swenshuai.xi 5965*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5966*53ee8cc1Swenshuai.xi /// MApi_XC_EnableRepWindowForFrameColor 5967*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5968*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable 5969*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5970*53ee8cc1Swenshuai.xi void MApi_XC_EnableRepWindowForFrameColor(MS_BOOL bEnable); 5971*53ee8cc1Swenshuai.xi 5972*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5973*53ee8cc1Swenshuai.xi /// Set VOP Video and OSD Laler 5974*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5975*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5976*53ee8cc1Swenshuai.xi /// Set OSD Layer in Box Project ( In TV chips, please use MApi_XC_SetVideoOnOSD) 5977*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5978*53ee8cc1Swenshuai.xi /// @param eVOPOSDLayer \b IN: OSD and Video layer selection 5979*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 5980*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5981*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayer(E_VOP_OSD_LAYER_SEL eVOPOSDLayer, SCALER_WIN eWindow); 5982*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5983*53ee8cc1Swenshuai.xi /// Get OSD Layer in Box Project 5984*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 5985*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 5986*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5987*53ee8cc1Swenshuai.xi E_VOP_OSD_LAYER_SEL MApi_XC_GetOSDLayer(SCALER_WIN eWindow); 5988*53ee8cc1Swenshuai.xi 5989*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5990*53ee8cc1Swenshuai.xi /// Set Constant Alpha of Video 5991*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5992*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5993*53ee8cc1Swenshuai.xi /// Set alpha value of video (now only support in box) 5994*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 5995*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The alpha value of video with specific window 5996*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be adjust 5997*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 5998*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetVideoAlpha(MS_U8 u8Val, SCALER_WIN eWindow); 5999*53ee8cc1Swenshuai.xi 6000*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6001*53ee8cc1Swenshuai.xi /// Get alpha value of video (now only support in box) 6002*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6003*53ee8cc1Swenshuai.xi /// @param pu8Val \b IN: The alpha value of video with specific window 6004*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The alpha value of a window. 6005*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6006*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetVideoAlpha(MS_U8 *pu8Val, SCALER_WIN eWindow); 6007*53ee8cc1Swenshuai.xi 6008*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6009*53ee8cc1Swenshuai.xi /// Skip Wait Vsync 6010*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 6011*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Enable 6012*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync \b IN: Disable wait Vsync 6013*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6014*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SkipWaitVsync( MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn); 6015*53ee8cc1Swenshuai.xi 6016*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6017*53ee8cc1Swenshuai.xi /// Set XC CMA Heap ID 6018*53ee8cc1Swenshuai.xi /// @param u8CMAHeapID \b IN: CMA Heap ID 6019*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6020*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6021*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetCMAHeapID(MS_U8 u8CMAHeapID, SCALER_WIN eWindow); 6022*53ee8cc1Swenshuai.xi 6023*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6024*53ee8cc1Swenshuai.xi /// Select which DE to vop 6025*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6026*53ee8cc1Swenshuai.xi /// @param bFlag \b IN: @ref E_OP2VOP_DE_SEL 6027*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6028*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6029*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OP2VOPDESel(E_OP2VOP_DE_SEL eVopDESel); 6030*53ee8cc1Swenshuai.xi 6031*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6032*53ee8cc1Swenshuai.xi /// Set FRC Window 6033*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6034*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: @ref E_XC_3D_INPUT_MODE 6035*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: @ref E_XC_3D_OUTPUT_MODE 6036*53ee8cc1Swenshuai.xi /// @param e3dPanelType \b IN: @ref E_XC_3D_PANEL_TYPE 6037*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6038*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); 6039*53ee8cc1Swenshuai.xi 6040*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6041*53ee8cc1Swenshuai.xi /// XC update bwd configuration 6042*53ee8cc1Swenshuai.xi /// @param eType \b IN: bwd configuration type 6043*53ee8cc1Swenshuai.xi /// @param pstParam \b IN: data 6044*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: window type 6045*53ee8cc1Swenshuai.xi /// @return result of power state control. 6046*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6047*53ee8cc1Swenshuai.xi #ifdef SUPPORT_BWD 6048*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_SetBwdConfig(E_XC_BWD_CONFIG_TYPE eType, void *pstParam, SCALER_WIN eWindow); 6049*53ee8cc1Swenshuai.xi #endif 6050*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6051*53ee8cc1Swenshuai.xi /// XC config cma configuration 6052*53ee8cc1Swenshuai.xi /// @param pstXC_CMA_Config \b IN: XC_CMA_CONFIG cma config struct 6053*53ee8cc1Swenshuai.xi /// @param enCmaClient \b IN: cma client 6054*53ee8cc1Swenshuai.xi /// @param u32DataLen \b IN: data len 6055*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: window type 6056*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6057*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ConfigCMA(XC_CMA_CONFIG *pstXC_CMA_Config, XC_CMA_CLIENT enCmaClient, MS_U32 u32DataLen, SCALER_WIN eWindow); 6058*53ee8cc1Swenshuai.xi 6059*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6060*53ee8cc1Swenshuai.xi /// Set two initial factors mode to improve quality in FBL 6061*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6062*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable two initial factors mode 6063*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 6064*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6065*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Enable_TwoInitFactor(MS_BOOL bEnable, SCALER_WIN eWindow); 6066*53ee8cc1Swenshuai.xi 6067*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6068*53ee8cc1Swenshuai.xi /// Get field packing mode support status 6069*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 6070*53ee8cc1Swenshuai.xi /// @return TRUE(success) or FALSE(fail) 6071*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6072*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsFieldPackingModeSupported(void); 6073*53ee8cc1Swenshuai.xi 6074*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6075*53ee8cc1Swenshuai.xi /// Pre Init before XC Init 6076*53ee8cc1Swenshuai.xi /// @ingroup XC_INIT 6077*53ee8cc1Swenshuai.xi /// @param u16Type \b IN: @ref E_OP2VOP_DE_SEL 6078*53ee8cc1Swenshuai.xi /// @param para \b IN: parameter 6079*53ee8cc1Swenshuai.xi /// @param u32Length \b IN: size of parameter 6080*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6081*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6082*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_PreInit( E_XC_PREINIT_t eType ,void* para, MS_U32 u32Length); 6083*53ee8cc1Swenshuai.xi 6084*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6085*53ee8cc1Swenshuai.xi /// Get RGB data from memory buffer 6086*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6087*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: get RGB 8 bits or 10 bits format data 6088*53ee8cc1Swenshuai.xi /// @param pRect \b IN: the widnow for getting data area in memory, need to refer to pre-scaling 6089*53ee8cc1Swenshuai.xi /// @param pRectBuf \b IN: the buffer for getting data, the buffer typs must be the same as eBufType 6090*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: get main or sub video data from memory 6091*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6092*53ee8cc1Swenshuai.xi void MApi_XC_Get_BufferData(E_XC_OUTPUTDATA_TYPE eBufType, MS_WINDOW_TYPE *pRect, void *pRectBuf, SCALER_WIN eWindow); 6093*53ee8cc1Swenshuai.xi 6094*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6095*53ee8cc1Swenshuai.xi /// Set RGB data to memory buffer 6096*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6097*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: set RGB 8 bits or 10 bits format data 6098*53ee8cc1Swenshuai.xi /// @param pDstRect \b IN: the widnow for setting data area in memory, need to refer to pre-scaling 6099*53ee8cc1Swenshuai.xi /// @param pSrcBuf \b IN: the buffer with RGB data for setting to memory, the buffer typs must be the same as eBufType 6100*53ee8cc1Swenshuai.xi /// @param pSrcRect \b IN: the widnow for picking data area in pSrcBuf 6101*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 6102*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6103*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); 6104*53ee8cc1Swenshuai.xi 6105*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6106*53ee8cc1Swenshuai.xi /// Control the main window on or off 6107*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 6108*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 6109*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6110*53ee8cc1Swenshuai.xi void MApi_XC_EnableMainWindow(MS_BOOL bEnable); // Turn on/off main/sub window 6111*53ee8cc1Swenshuai.xi 6112*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6113*53ee8cc1Swenshuai.xi /// Enable sub window and control the window size 6114*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6115*53ee8cc1Swenshuai.xi /// @param *pstDispWin \b IN: Window type 6116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6117*53ee8cc1Swenshuai.xi void MApi_XC_EnableSubWindow(MS_WINDOW_TYPE *pstDispWin); 6118*53ee8cc1Swenshuai.xi 6119*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6120*53ee8cc1Swenshuai.xi /// Disable sub window 6121*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6122*53ee8cc1Swenshuai.xi /// @param void \b IN: none 6123*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6124*53ee8cc1Swenshuai.xi void MApi_XC_DisableSubWindow(void); 6125*53ee8cc1Swenshuai.xi 6126*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6127*53ee8cc1Swenshuai.xi /// Set pixel shift 6128*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 6129*53ee8cc1Swenshuai.xi /// @param s8H \b IN: pixel shift H 6130*53ee8cc1Swenshuai.xi /// @param s8V \b IN: pixel shift V 6131*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6132*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6133*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetPixelShift(MS_S8 s8H, MS_S8 s8V); 6134*53ee8cc1Swenshuai.xi 6135*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6136*53ee8cc1Swenshuai.xi /// Set Pixel Shift Features 6137*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 6138*53ee8cc1Swenshuai.xi /// @param u16HPixelShiftRange \b IN: horizontal shift range, if it is +/- 4, please assign 4 to this parameter 6139*53ee8cc1Swenshuai.xi /// @param u16VPixelShiftRange \b IN: vertical shift range, if it is +/- 3, please assign 3 to this parameter 6140*53ee8cc1Swenshuai.xi /// @param ePixelShiftFeature \b IN: decide which feature to be used, use "|" for multiple features 6141*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6142*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6143*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetPixelShiftFeatures(MS_U16 u16HPixelShiftRange, 6144*53ee8cc1Swenshuai.xi MS_U16 u16VPixelShiftRange, 6145*53ee8cc1Swenshuai.xi PIXEL_SHIFT_FEATURE ePixelShiftFeature); 6146*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6147*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn 6148*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 6149*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: whether to menuload 6150*53ee8cc1Swenshuai.xi /// Do an example when you want to menuload OSDLayer : 6151*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn(TRUE) 6152*53ee8cc1Swenshuai.xi /// xc function 6153*53ee8cc1Swenshuai.xi /// MApi_XC_Combine_MLoadEn(FALSE) 6154*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6156*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Combine_MLoadEn(MS_BOOL bEn); 6157*53ee8cc1Swenshuai.xi 6158*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6159*53ee8cc1Swenshuai.xi /// MApi_XC_SetVideoOnOSD 6160*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6161*53ee8cc1Swenshuai.xi /// @param E_VDO_ON_OSD_LAYER \b IN: set video show on which osd layer 6162*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 6163*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6164*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6165*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetVideoOnOSD(E_VIDEO_ON_OSD_LAYER enlayer, SCALER_WIN eWindow); 6166*53ee8cc1Swenshuai.xi 6167*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6168*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDLayerBlending 6169*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6170*53ee8cc1Swenshuai.xi /// @param u8Layer \b IN: which osd layer will blend 6171*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: whether to blend 6172*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window blend with 6173*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6174*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6175*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayerBlending(MS_U8 u8Layer, MS_BOOL bEnable, SCALER_WIN eWindow); 6176*53ee8cc1Swenshuai.xi 6177*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6178*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDLayerAlpha 6179*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6180*53ee8cc1Swenshuai.xi /// @param u8Layer \b IN: which osd layer will blend 6181*53ee8cc1Swenshuai.xi /// @param u8Alpha \b IN: blending alpha 6182*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6183*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6184*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDLayerAlpha(MS_U8 u8Layer, MS_U8 u8Alpha); 6185*53ee8cc1Swenshuai.xi 6186*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6187*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDBlendingFormula 6188*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6189*53ee8cc1Swenshuai.xi /// @param enOsdIndex \b IN: osd index 6190*53ee8cc1Swenshuai.xi /// @param enType \b IN: osd blending type 6191*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: blending with main or sub video 6192*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6193*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6194*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOSDBlendingFormula(E_XC_OSD_INDEX enOsdIndex, E_XC_OSD_BlENDING_TYPE enType, SCALER_WIN eWindow); 6195*53ee8cc1Swenshuai.xi 6196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6197*53ee8cc1Swenshuai.xi // usage: 6198*53ee8cc1Swenshuai.xi // MS_XC_REPORT_PIXELINFO stRepPixInfo; 6199*53ee8cc1Swenshuai.xi // memset(&stRepPixInfo, 0, sizeof(MS_XC_REPORT_PIXELINFO)); 6200*53ee8cc1Swenshuai.xi // stRepPixInfo.u32ReportPixelInfo_Version = XC_REPORT_PIXELINFO_VERSION; 6201*53ee8cc1Swenshuai.xi // stRepPixInfo.u16ReportPixelInfo_Length = sizeof(MS_XC_REPORT_PIXELINFO); 6202*53ee8cc1Swenshuai.xi // stRepPixInfo.enStage = E_XC_GET_PIXEL_STAGE_AFTER_OSD; 6203*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XStart = xxxx; 6204*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XEnd = xxxx; 6205*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YStart = xxxx; 6206*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YEnd = xxxx; 6207*53ee8cc1Swenshuai.xi // MApi_XC_ReportPixelInfo(&stRepPixInfo); 6208*53ee8cc1Swenshuai.xi // 6209*53ee8cc1Swenshuai.xi /// Report Pixel Info 6210*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6211*53ee8cc1Swenshuai.xi /// @param pstRepPixInfo \b IN: pointer to struct MS_XC_REPORT_PIXELINFO 6212*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 6213*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6214*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ReportPixelInfo(MS_XC_REPORT_PIXELINFO *pstRepPixInfo); 6215*53ee8cc1Swenshuai.xi 6216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6217*53ee8cc1Swenshuai.xi /// MApi_XC_SetScaling 6218*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6219*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: set enable or disable 6220*53ee8cc1Swenshuai.xi /// @param eScaling_type \b IN: set scaling type, pre-scaling, post-scaling, both-scaling 6221*53ee8cc1Swenshuai.xi /// @param eVector_type \b IN: set H vector, v vector, and HV vector 6222*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 6223*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6224*53ee8cc1Swenshuai.xi void MApi_XC_SetScaling( MS_BOOL bEnable, E_XC_SCALING_TYPE eScaling_type, E_XC_VECTOR_TYPE eVector_type, SCALER_WIN eWindow ); 6225*53ee8cc1Swenshuai.xi 6226*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6227*53ee8cc1Swenshuai.xi /// MApi_XC_SetMCDIBufferAddress 6228*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6229*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: frame buffer base addr 6230*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: frame buffer size 6231*53ee8cc1Swenshuai.xi /// @param eType \b IN: set frame buffer for MCDI ME1 or ME2 6232*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6233*53ee8cc1Swenshuai.xi void MApi_XC_SetMCDIBufferAddress(MS_PHY u32FBAddress, MS_PHY u32FBSize, E_XC_MCDI_TYPE eType); 6234*53ee8cc1Swenshuai.xi 6235*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6236*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMCDI 6237*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6238*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable MCDI 6239*53ee8cc1Swenshuai.xi /// @param eType \b IN: control MCDI ME1 or ME2 or both 6240*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6241*53ee8cc1Swenshuai.xi void MApi_XC_EnableMCDI(MS_BOOL bEnable, E_XC_MCDI_TYPE eType); 6242*53ee8cc1Swenshuai.xi 6243*53ee8cc1Swenshuai.xi 6244*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6245*53ee8cc1Swenshuai.xi /// MApi_XC_SendCmdToFRC 6246*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6247*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 6248*53ee8cc1Swenshuai.xi /// @param count \b IN: parameter Counter 6249*53ee8cc1Swenshuai.xi /// @param pFRC_R2_Para \b IN: input parameter 6250*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 6251*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6252*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SendCmdToFRC( MS_U8 u8Cmd, MS_U8 count, FRC_R2_CMD_PARAMETER_t pFRC_R2_Para ); 6253*53ee8cc1Swenshuai.xi 6254*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6255*53ee8cc1Swenshuai.xi /// MApi_XC_GetMsgFromFRC 6256*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6257*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 6258*53ee8cc1Swenshuai.xi /// @param pu8ParaCount \b IN: Counter 6259*53ee8cc1Swenshuai.xi /// @param pu8Para \b IN: input parameter 6260*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 6261*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6262*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetMsgFromFRC(MS_U8* pu8Cmd, MS_U8* pu8ParaCount, MS_U8* pu8Para); 6263*53ee8cc1Swenshuai.xi 6264*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6265*53ee8cc1Swenshuai.xi /// Enable/Disable RW bank auto 6266*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6267*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 6268*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6269*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6270*53ee8cc1Swenshuai.xi void MApi_XC_EnableRWBankAuto(MS_BOOL bEnable, SCALER_WIN eWindow); 6271*53ee8cc1Swenshuai.xi 6272*53ee8cc1Swenshuai.xi void MApi_XC_Dump_SHM(void); 6273*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6274*53ee8cc1Swenshuai.xi /// Set XC W/R Bank Mapping Number 6275*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6276*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: W/R bank mapping value 6277*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6278*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6279*53ee8cc1Swenshuai.xi void MApi_XC_SetWRBankMappingNum(MS_U8 u8Val, SCALER_WIN eWindow); 6280*53ee8cc1Swenshuai.xi 6281*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6282*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number 6283*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6284*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 6285*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 6286*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6287*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetWRBankMappingNum(SCALER_WIN eWindow); 6288*53ee8cc1Swenshuai.xi 6289*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6290*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number for Zap (including UC effect) 6291*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6292*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 6293*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 6294*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6295*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_GetWRBankMappingNumForZap(SCALER_WIN eWindow); 6296*53ee8cc1Swenshuai.xi 6297*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6298*53ee8cc1Swenshuai.xi /// Set BOB mode 6299*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6300*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable BOB mode or not 6301*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6302*53ee8cc1Swenshuai.xi /// @return TRUE - succeed, FALSE - fail 6303*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6304*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_SetBOBMode(MS_BOOL bEnable, SCALER_WIN eWindow); 6305*53ee8cc1Swenshuai.xi 6306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6307*53ee8cc1Swenshuai.xi /// Set XC force read bank 6308*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6309*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable force read bank or not 6310*53ee8cc1Swenshuai.xi /// @param u8Bank \b IN: Force read bank index 6311*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6312*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6313*53ee8cc1Swenshuai.xi void MApi_XC_SetForceReadBank(MS_BOOL bEnable, MS_U8 u8Bank, SCALER_WIN eWindow); 6314*53ee8cc1Swenshuai.xi 6315*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6316*53ee8cc1Swenshuai.xi /// Set XC lock point 6317*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6318*53ee8cc1Swenshuai.xi /// @param u16LockPoint \b IN: lock point count 6319*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6320*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6321*53ee8cc1Swenshuai.xi void MApi_XC_SetLockPoint(MS_U16 u16LockPoint, SCALER_WIN eWindow); 6322*53ee8cc1Swenshuai.xi 6323*53ee8cc1Swenshuai.xi //------------------------------ 6324*53ee8cc1Swenshuai.xi // LD 6325*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6326*53ee8cc1Swenshuai.xi /// LD set panel type 6327*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6328*53ee8cc1Swenshuai.xi /// @param eLdPanelType \b IN: panel type 6329*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6330*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6331*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_Init(EN_LD_PANEL_TYPE eLDPanelType ); 6332*53ee8cc1Swenshuai.xi 6333*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6334*53ee8cc1Swenshuai.xi /// LD set memory address 6335*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6336*53ee8cc1Swenshuai.xi /// @param u8MIU \b IN: MIU Select 6337*53ee8cc1Swenshuai.xi /// @param u32LDFBase0 \b IN: LDF memeory0 address 6338*53ee8cc1Swenshuai.xi /// @param u32LDFBase1 \b IN: LDF memeory1 address 6339*53ee8cc1Swenshuai.xi /// @param u32LDBBase0 \b IN: LDB memeory0 address 6340*53ee8cc1Swenshuai.xi /// @param u32LDBBase1 \b IN: LDB memeory1 address 6341*53ee8cc1Swenshuai.xi /// @param u32EDGE2DBase \b IN: EDGE2D memeory address 6342*53ee8cc1Swenshuai.xi /// @param u32LEDoffset \b IN: LED data offset 6343*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6344*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6345*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); 6346*53ee8cc1Swenshuai.xi 6347*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6348*53ee8cc1Swenshuai.xi /// Get LD value 6349*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6350*53ee8cc1Swenshuai.xi /// @param pu8LDValue @ref MS_U8 \b OUT: get the LD back light value (The amount is u8WSize x u8HSize) 6351*53ee8cc1Swenshuai.xi /// @param u8WSize @ref MS_U8 \b IN: set the LD back light width 6352*53ee8cc1Swenshuai.xi /// @param u8HSize @ref MS_U8 \b IN: set the LD back light height 6353*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 6354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6355*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_Get_Value(MS_U8 *pu8LDValue, MS_U8 u8WSize, MS_U8 u8HSize); 6356*53ee8cc1Swenshuai.xi 6357*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6358*53ee8cc1Swenshuai.xi /// set LD Level 6359*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6360*53ee8cc1Swenshuai.xi /// @param eMode \b IN: LD level 6361*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6362*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6363*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_LD_SetLevel(EN_LD_MODE eMode); 6364*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6365*53ee8cc1Swenshuai.xi /// set LD backlight is zero flags 6366*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6367*53ee8cc1Swenshuai.xi /// @param eMode \b IN: backlight is zero flags 6368*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6369*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6370*53ee8cc1Swenshuai.xi MS_BOOL MApi_Set_TurnoffLDBL(MS_BOOL bturnoffbl); 6371*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6372*53ee8cc1Swenshuai.xi /// set not update SPI data Flags 6373*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6374*53ee8cc1Swenshuai.xi /// @param brefreshSpidata \b IN: refresh Spi data flags 6375*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6376*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6377*53ee8cc1Swenshuai.xi MS_BOOL MApi_Set_notUpdateSPIDataFlags(MS_BOOL brefreshSpidata); 6378*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6379*53ee8cc1Swenshuai.xi /// set User mode LD Flags 6380*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6381*53ee8cc1Swenshuai.xi /// @param buserLDFlags \b IN: User mode LD Flags 6382*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6383*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6384*53ee8cc1Swenshuai.xi MS_BOOL MApi_Set_UsermodeLDFlags(MS_BOOL buserLDFlags); 6385*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6386*53ee8cc1Swenshuai.xi /// set LD backlight level 6387*53ee8cc1Swenshuai.xi /// @ingroup XC_LD 6388*53ee8cc1Swenshuai.xi /// @param u8BLLeve \b IN: backlight level 6389*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6390*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6391*53ee8cc1Swenshuai.xi MS_BOOL MApi_Set_BLLevel(MS_U8 u8BLLeve); 6392*53ee8cc1Swenshuai.xi 6393*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6394*53ee8cc1Swenshuai.xi /// set XC bandwidth saving X-mode 6395*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6396*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 6397*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6398*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6399*53ee8cc1Swenshuai.xi void MApi_XC_Set_BWS_Mode(MS_BOOL bEnable, SCALER_WIN eWindow); 6400*53ee8cc1Swenshuai.xi 6401*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6402*53ee8cc1Swenshuai.xi /// set FRC ColorPathCtrl 6403*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6404*53ee8cc1Swenshuai.xi /// @param epath_type \b IN: Select one of path in the FRC_COLOR_PATH_TYPE 6405*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 6406*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6407*53ee8cc1Swenshuai.xi void MApi_XC_FRC_ColorPathCtrl(MS_U16 u16Path_sel, MS_BOOL bEnable); 6408*53ee8cc1Swenshuai.xi 6409*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6410*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBGain 6411*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6412*53ee8cc1Swenshuai.xi /// @param u16RedGain \b IN: Red Gain 6413*53ee8cc1Swenshuai.xi /// @param u16GreenGain \b IN: Green Gain 6414*53ee8cc1Swenshuai.xi /// @param u16BlueGain \b IN: Blue Gain 6415*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6416*53ee8cc1Swenshuai.xi void MApi_XC_FRC_OP2_SetRGBGain(MS_U16 u16RedGain, MS_U16 u16GreenGain, MS_U16 u16BlueGain); 6417*53ee8cc1Swenshuai.xi 6418*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6419*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBOffset 6420*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6421*53ee8cc1Swenshuai.xi /// @param u16RedOffset \b IN: Red Offset 6422*53ee8cc1Swenshuai.xi /// @param u16GreenOffset \b IN: Green Offset 6423*53ee8cc1Swenshuai.xi /// @param u16BlueOffset \b IN: Blue Offset 6424*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6425*53ee8cc1Swenshuai.xi void MApi_XC_FRC_OP2_SetRGBOffset(MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset); 6426*53ee8cc1Swenshuai.xi 6427*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6428*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetDither 6429*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6430*53ee8cc1Swenshuai.xi /// @param u16dither \b IN: Dither setting 6431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6432*53ee8cc1Swenshuai.xi void MApi_XC_FRC_OP2_SetDither(MS_U16 u16dither); 6433*53ee8cc1Swenshuai.xi 6434*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6435*53ee8cc1Swenshuai.xi /// set XC Bypass MFC 6436*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6437*53ee8cc1Swenshuai.xi /// @param eEnable \b IN: Enable or Disable 6438*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6439*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6440*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_FRC_BypassMFC(MS_BOOL bEnable); 6441*53ee8cc1Swenshuai.xi 6442*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6443*53ee8cc1Swenshuai.xi /// set XC FRC Mute 6444*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6445*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 6446*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6447*53ee8cc1Swenshuai.xi void MApi_XC_FRC_Mute(MS_BOOL bEnable); 6448*53ee8cc1Swenshuai.xi 6449*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6450*53ee8cc1Swenshuai.xi /// MApi_XC_ForceReadFrame 6451*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6452*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 6453*53ee8cc1Swenshuai.xi /// @param u16FrameIndex \b IN: control specified frame to show 6454*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6455*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_ForceReadFrame(MS_BOOL bEnable, MS_U16 u16FrameIndex); 6456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6457*53ee8cc1Swenshuai.xi /// MApi_XC_SetCsc 6458*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6459*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 6460*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6462*53ee8cc1Swenshuai.xi void MApi_XC_SetCsc( MS_BOOL bEnable, SCALER_WIN eWindow ); 6463*53ee8cc1Swenshuai.xi 6464*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6465*53ee8cc1Swenshuai.xi /// Register PQ Set FPLL thresh mode function 6466*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 6467*53ee8cc1Swenshuai.xi /// @param fpPQCB \b IN: function pointer of PQ set FPLL thresh mode 6468*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6469*53ee8cc1Swenshuai.xi void MApi_XC_RegisterPQSetFPLLThreshMode(void (*fpPQCB)(MS_U8 u8PQWin)); 6470*53ee8cc1Swenshuai.xi 6471*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6472*53ee8cc1Swenshuai.xi /// Get XC free run status 6473*53ee8cc1Swenshuai.xi /// @ingroup XC_DISPLAY 6474*53ee8cc1Swenshuai.xi /// @return TRUE if it is free run, FALSE if not 6475*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6476*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_GetFreeRunStatus(void); 6477*53ee8cc1Swenshuai.xi 6478*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6479*53ee8cc1Swenshuai.xi /// MApi_XC_Get_DSForceIndexSupported 6480*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 6481*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6482*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6483*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_DSForceIndexSupported(SCALER_WIN eWindow); 6484*53ee8cc1Swenshuai.xi 6485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6486*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 6487*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 6488*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 6489*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 6490*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6491*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6492*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_DSForceIndex(MS_BOOL bEnable, MS_U8 u8Index, SCALER_WIN eWindow); 6493*53ee8cc1Swenshuai.xi 6494*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6495*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSIndexSourceSelect 6496*53ee8cc1Swenshuai.xi /// @ingroup XC_DS 6497*53ee8cc1Swenshuai.xi /// @param eDSIdxSrc \b IN: choose where the DS index comes from. 6498*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6499*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6500*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_DSIndexSourceSelect(E_XC_DS_INDEX_SOURCE eDSIdxSrc, SCALER_WIN eWindow); 6501*53ee8cc1Swenshuai.xi 6502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6503*53ee8cc1Swenshuai.xi /// Use Dynamic Scaling to write register 6504*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable DS write reg mode 6505*53ee8cc1Swenshuai.xi /// @param u32Flag \b IN: options for this function 6506*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6507*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6508*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_EnableDSRegMode(MS_BOOL bEnable, SCALER_WIN eWindow); 6509*53ee8cc1Swenshuai.xi 6510*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6511*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 6512*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6513*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 6514*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 6515*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6516*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6517*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6518*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_InitSetting(E_XC_OSDC_TGEN_Type E_XC_OSDC_TGEN_Type, 6519*53ee8cc1Swenshuai.xi MS_XC_OSDC_TGEN_INFO *pstOC_Tgen_Cus, 6520*53ee8cc1Swenshuai.xi MS_XC_OSDC_CTRL_INFO *pstOC_Ctrl); 6521*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6522*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 6523*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6524*53ee8cc1Swenshuai.xi /// @param eCtrl_type \b IN: ENABLE/DISABLE force DS index or not 6525*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6526*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6527*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_Control(MS_U32 eCtrl_type); 6528*53ee8cc1Swenshuai.xi 6529*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6530*53ee8cc1Swenshuai.xi /// MApi_XC_OSDC_GetDstInfo 6531*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6532*53ee8cc1Swenshuai.xi /// @param pDstInfo \b IN: get the Desternation info 6533*53ee8cc1Swenshuai.xi /// @param u32SizeofDstInfo \b IN: size check 6534*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6535*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6536*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_OSDC_GetDstInfo(MS_OSDC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo); 6537*53ee8cc1Swenshuai.xi 6538*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6539*53ee8cc1Swenshuai.xi /// MApi_XC_OSDC_SetOutVfreqx10 6540*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6541*53ee8cc1Swenshuai.xi /// @param u16Vfreq \b IN: output V freq x10 6542*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6543*53ee8cc1Swenshuai.xi void MApi_XC_OSDC_SetOutVfreqx10(MS_U16 u16Vfreq); 6544*53ee8cc1Swenshuai.xi 6545*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6546*53ee8cc1Swenshuai.xi /// MApi_XC_SetByPassOSDVsyncPos 6547*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6548*53ee8cc1Swenshuai.xi /// @param u16VsyncStart \b IN: OSD vsync start 6549*53ee8cc1Swenshuai.xi /// @param u16VsyncEnd \b IN: OSD vsync end 6550*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6551*53ee8cc1Swenshuai.xi void MApi_XC_BYPASS_SetOSDVsyncPos(MS_U16 u16VsyncStart, MS_U16 u16VsyncEnd); 6552*53ee8cc1Swenshuai.xi 6553*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6554*53ee8cc1Swenshuai.xi /// MApi_XC_BYPASS_SetInputSrc 6555*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6556*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE bypass mode 6557*53ee8cc1Swenshuai.xi /// @param input \b IN: Select the input source for bypass mode 6558*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6559*53ee8cc1Swenshuai.xi void MApi_XC_BYPASS_SetInputSrc(MS_BOOL bEnable,E_XC_BYPASS_InputSource input); 6560*53ee8cc1Swenshuai.xi 6561*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6562*53ee8cc1Swenshuai.xi /// MApi_XC_BYPASS_SetCSC 6563*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6564*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE the color space convert 6565*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6566*53ee8cc1Swenshuai.xi void MApi_XC_BYPASS_SetCSC(MS_BOOL bEnable); 6567*53ee8cc1Swenshuai.xi 6568*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6569*53ee8cc1Swenshuai.xi /// MApi_XC_SetSeamlessZapping 6570*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 6571*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 6572*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE seamless zapping 6573*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6574*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6575*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetSeamlessZapping(SCALER_WIN eWindow, MS_BOOL bEnable); 6576*53ee8cc1Swenshuai.xi 6577*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6578*53ee8cc1Swenshuai.xi /// MApi_XC_GetSeamlessZappingStatus 6579*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 6580*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6581*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get status 6582*53ee8cc1Swenshuai.xi /// @param pbEnable \b IN: get current seamless zapping status 6583*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6584*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6585*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_GetSeamlessZappingStatus(SCALER_WIN eWindow, MS_BOOL* pbEnable); 6586*53ee8cc1Swenshuai.xi 6587*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6588*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_SetPayloadData 6589*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6590*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. 6591*53ee8cc1Swenshuai.xi /// @param u8ID \b IN: Operator ID 6592*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6593*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Vtrack_SetPayloadData(MS_U16 u16Timecode, MS_U8 u8OperatorID); 6594*53ee8cc1Swenshuai.xi 6595*53ee8cc1Swenshuai.xi 6596*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6597*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_SetUserDefindedSetting 6598*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6599*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Customized Setting 6600*53ee8cc1Swenshuai.xi /// @param pu8Setting \b IN: pointer to targert user definded setting data (include setting1 to setting3) 6601*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6602*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Vtrack_SetUserDefindedSetting(MS_BOOL bUserDefinded, MS_U8 *pu8Setting); 6603*53ee8cc1Swenshuai.xi 6604*53ee8cc1Swenshuai.xi 6605*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6606*53ee8cc1Swenshuai.xi /// MApi_XC_Vtrack_Enable 6607*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6608*53ee8cc1Swenshuai.xi /// @param u8FrameRate \b IN: ENABLE/DISABLE The FrameRateIn is based on the output format of the box 6609*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Vtrack 6610*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6611*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Vtrack_Enable(MS_U8 u8FrameRate, MS_BOOL bEnable); 6612*53ee8cc1Swenshuai.xi 6613*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6614*53ee8cc1Swenshuai.xi /// Pre-set the specific window with PQ info 6615*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6616*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 6617*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6618*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6619*53ee8cc1Swenshuai.xi void MApi_XC_PreSetPQInfo(XC_SETWIN_INFO *pstXC_SetWin_Info, SCALER_WIN eWindow); 6620*53ee8cc1Swenshuai.xi 6621*53ee8cc1Swenshuai.xi 6622*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6623*53ee8cc1Swenshuai.xi /// Mapi_XC_Is_OP1_TestPattern_Enabled 6624*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 6625*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - enabled, FALSED - disabled 6626*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6627*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is_OP1_TestPattern_Enabled(void); 6628*53ee8cc1Swenshuai.xi 6629*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6630*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OP1_TestPattern 6631*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 6632*53ee8cc1Swenshuai.xi /// @param ePattern \b IN: select test pattern 6633*53ee8cc1Swenshuai.xi /// @param eMode \b IN: choose the patgen mode (only support E_XC_OP1_PATGEN_DISP_LB_MODE now) 6634*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6635*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6636*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_OP1_TestPattern(EN_XC_OP1_PATTERN ePattern, EN_XC_OP1_PATGEN_MODE eMode); 6637*53ee8cc1Swenshuai.xi 6638*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6639*53ee8cc1Swenshuai.xi /// MApi_XC_CheckWhiteBalancePatternModeSupport 6640*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 6641*53ee8cc1Swenshuai.xi /// @param eWBPatternMode \b IN: White balance Pattern gen Mode 6642*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - support, FALSED - unsupport 6643*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6644*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_CheckWhiteBalancePatternModeSupport(EN_XC_WB_PATTERN_MODE enWBPatternMode); 6645*53ee8cc1Swenshuai.xi 6646*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6647*53ee8cc1Swenshuai.xi /// MApi_XC_SetHLinearScaling 6648*53ee8cc1Swenshuai.xi /// @ingroup XC_PQ 6649*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe h linear scaling 6650*53ee8cc1Swenshuai.xi /// @param bSign \b IN: sign of delta 6651*53ee8cc1Swenshuai.xi /// @param u16Delta \b IN: the slop of scaling 6652*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 6653*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6654*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6655*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetHLinearScaling(MS_BOOL bEnable, MS_BOOL bSign, MS_U16 u16Delta, SCALER_WIN eWindow); 6656*53ee8cc1Swenshuai.xi 6657*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6658*53ee8cc1Swenshuai.xi /// XC power state control for fastboot 6659*53ee8cc1Swenshuai.xi /// @ingroup XC_UTILITY 6660*53ee8cc1Swenshuai.xi /// @param u16PowerState \b IN: power state 6661*53ee8cc1Swenshuai.xi /// @return result of power state control. 6662*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6663*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_SetPowerState(EN_POWER_MODE enPowerState); 6664*53ee8cc1Swenshuai.xi 6665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6666*53ee8cc1Swenshuai.xi /// MApi_XC_EnableT3D 6667*53ee8cc1Swenshuai.xi /// @ingroup XC_3D 6668*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe T3D 6669*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6670*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6671*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_EnableT3D(MS_BOOL bEnable); 6672*53ee8cc1Swenshuai.xi 6673*53ee8cc1Swenshuai.xi 6674*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6675*53ee8cc1Swenshuai.xi /// MApi_XC_Set_FRC_InputTiming 6676*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6677*53ee8cc1Swenshuai.xi /// @param enFRC_InputTiming \b IN: FRC input timing 6678*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6679*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6680*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_FRC_InputTiming(E_XC_FRC_InputTiming enFRC_InputTiming); 6681*53ee8cc1Swenshuai.xi 6682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6683*53ee8cc1Swenshuai.xi /// MApi_XC_Get_FRC_InputTiming 6684*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6685*53ee8cc1Swenshuai.xi /// @param penFRC_InputTiming \b IN: FRC input timing 6686*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6687*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6688*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_FRC_InputTiming(E_XC_FRC_InputTiming *penFRC_InputTiming); 6689*53ee8cc1Swenshuai.xi 6690*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6691*53ee8cc1Swenshuai.xi /// MApi_XC_Get_VirtualBox_Info 6692*53ee8cc1Swenshuai.xi /// @ingroup XC_SCALER 6693*53ee8cc1Swenshuai.xi /// @param pstXC_VboxInfo \b IN: virtual box info 6694*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6695*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6696*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_VirtualBox_Info(XC_VBOX_INFO *pstXC_VboxInfo); 6697*53ee8cc1Swenshuai.xi 6698*53ee8cc1Swenshuai.xi 6699*53ee8cc1Swenshuai.xi 6700*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6701*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OSD_Detect 6702*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6703*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe OSD detect 6704*53ee8cc1Swenshuai.xi /// @param Threhold \b IN: setup the threashold 6705*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6706*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6707*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Set_OSD_Detect(MS_BOOL bEnable, MS_U32 Threhold); 6708*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6709*53ee8cc1Swenshuai.xi /// MApi_XC_Get_OSD_Detect 6710*53ee8cc1Swenshuai.xi /// @ingroup XC_OSD 6711*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe OSD detect 6712*53ee8cc1Swenshuai.xi /// @param Threhold \b IN: setup the threashold 6713*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6714*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6715*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Get_OSD_Detect(MS_BOOL *pbOSD); 6716*53ee8cc1Swenshuai.xi 6717*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6718*53ee8cc1Swenshuai.xi /// Get XC work mode: 2K2K mode or normal mode 6719*53ee8cc1Swenshuai.xi /// @ingroup XC_FRC 6720*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - 2K2K mode, FALSE - Normal mode 6721*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6722*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Is2K2KToFrcMode(void); 6723*53ee8cc1Swenshuai.xi 6724*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6725*53ee8cc1Swenshuai.xi /// The Main and Sub Window will switch zorder alternately. 6726*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe 6727*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6728*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6729*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue __attribute__((weak)) MApi_XC_EnableSwitchMainSubZorder(MS_BOOL bEnable); 6730*53ee8cc1Swenshuai.xi 6731*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6732*53ee8cc1Swenshuai.xi /// Set XC work mode: 2P mode or 4K2K@50/60Hz 6733*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - Success, FALSE - Fail 6734*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6735*53ee8cc1Swenshuai.xi //MS_BOOL MApi_XC_Set_2P_Mode(MS_BOOL bEnable,SCALER_WIN eWindow); 6736*53ee8cc1Swenshuai.xi 6737*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6738*53ee8cc1Swenshuai.xi /// MApi_XC_Enable_LockFreqOnly 6739*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disalbe LPLL LockFreqOnly mode 6740*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6741*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6742*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_Enable_LockFreqOnly(MS_BOOL bEnable); 6743*53ee8cc1Swenshuai.xi 6744*53ee8cc1Swenshuai.xi #ifdef UFO_XC_TEST_PATTERN 6745*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6746*53ee8cc1Swenshuai.xi /// To generate designated test pattern,you should follow the following example 6747*53ee8cc1Swenshuai.xi /// Ex: 6748*53ee8cc1Swenshuai.xi /// XC_SET_IPMUX_TESTPATTERN_t ipmux_test_pattern; 6749*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.bEnable = TRUE; 6750*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16R_CR_Data = xxx; 6751*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16G_Y_Data = xxx; 6752*53ee8cc1Swenshuai.xi /// ipmux_test_pattern.u16B_CB_Data = xxx; 6753*53ee8cc1Swenshuai.xi /// MApi_XC_GenerateTestPattern(E_XC_IPMUX_PATTERN_MODE,(void *)&ipmux_test_pattern,sizeof(XC_SET_IPMUX_TESTPATTERN_t)); 6754*53ee8cc1Swenshuai.xi /// ------------------------------------------------------------------------------------------------ 6755*53ee8cc1Swenshuai.xi /// @param ePatternMode \b IN: pattern type 6756*53ee8cc1Swenshuai.xi /// @param para \b IN: test pattern struct point 6757*53ee8cc1Swenshuai.xi /// @param u16Length \b IN: data length 6758*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_ADC_PATTERN_MODE; para = p_XC_SET_ADC_TESTPATTERN_t struct point; 6759*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_IPMUX_PATTERN_MODE; para = p_XC_SET_IPMUX_TESTPATTERN_t struct point; 6760*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_IP1_PATTERN_MODE; para = p_XC_SET_IP1_TESTPATTERN_t struct point; 6761*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_OP_PATTERN_MODE; para = p_XC_SET_OP_TESTPATTERN_t struct point; 6762*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_VOP_PATTERN_MODE; para = p_XC_SET_VOP_TESTPATTERN_t struct point; 6763*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_VOP2_PATTERN_MODE; para = p_XC_SET_VOP2_TESTPATTERN_t struct point; 6764*53ee8cc1Swenshuai.xi /// ePatternMode = E_XC_MOD_PATTERN_MODE; para = p_XC_SET_MOD_TESTPATTERN_t struct point; 6765*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6766*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_GenerateTestPattern (EN_XC_TEST_PATTERN_MODE ePatternMode,void* para, MS_U16 u16Length); 6767*53ee8cc1Swenshuai.xi #endif 6768*53ee8cc1Swenshuai.xi 6769*53ee8cc1Swenshuai.xi //================================ Obsolete Function Start ======================================= 6770*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6771*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6772*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6773*53ee8cc1Swenshuai.xi /// !!! below function will be "REMOVED" or "REFACTORING" later, please do not use it !!!!!!!!! 6774*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6775*53ee8cc1Swenshuai.xi 6776*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6777*53ee8cc1Swenshuai.xi /// mvideo_sc_get_output_vfreq 6778*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6779*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6780*53ee8cc1Swenshuai.xi MS_U16 mvideo_sc_get_output_vfreq(void); //Replaced by MApi_XC_GetOutputVFreqX100 6781*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6782*53ee8cc1Swenshuai.xi /// MApi_XC_Get_Current_OutputVFreqX100 6783*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6784*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6785*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_Get_Current_OutputVFreqX100(void); //Replaced by MApi_XC_GetOutputVFreqX100 6786*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6787*53ee8cc1Swenshuai.xi /// MApi_XC_SetMemoryWriteRequest 6788*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6789*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6790*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetMemoryWriteRequest(MS_BOOL bEnable); //Replaced by MApi_XC_SetScalerMemoryRequest 6791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6792*53ee8cc1Swenshuai.xi /// MApi_XC_Set_MemFmt 6793*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6795*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Set_MemFmt(MS_XC_MEM_FMT eMemFmt); 6796*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6797*53ee8cc1Swenshuai.xi /// MApi_XC_SetOutputAdjustSetting 6798*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6799*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6800*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue MApi_XC_SetOutputAdjustSetting(XC_OUTPUT_TIMING_ADJUST_SETTING *stAdjSetting); // Replaced by MApi_XC_SetExPanelInfo 6801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6802*53ee8cc1Swenshuai.xi /// msAPI_Scaler_FPLL_FSM 6803*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6804*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6805*53ee8cc1Swenshuai.xi void msAPI_Scaler_FPLL_FSM(SCALER_WIN eWindow); 6806*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6807*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMirrorMode 6808*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6809*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6810*53ee8cc1Swenshuai.xi void MApi_XC_EnableMirrorMode( MS_BOOL bEnable ); 6811*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6812*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMirrorMode2 6813*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6814*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6815*53ee8cc1Swenshuai.xi void MApi_XC_EnableMirrorMode2( MirrorMode_t eMirrorMode ); 6816*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6817*53ee8cc1Swenshuai.xi /// MApi_XC_GetMirrorModeType 6818*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6819*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6820*53ee8cc1Swenshuai.xi MirrorMode_t MApi_XC_GetMirrorModeType( void ); 6821*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6822*53ee8cc1Swenshuai.xi /// MApi_XC_set_FD_Mask 6823*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6824*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6825*53ee8cc1Swenshuai.xi void MApi_XC_set_FD_Mask(MS_BOOL bEnable); 6826*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6827*53ee8cc1Swenshuai.xi /// MApi_XC_Get_FD_Mask 6828*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6829*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6830*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_Get_FD_Mask(void); 6831*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6832*53ee8cc1Swenshuai.xi /// MApi_XC_GetAccurateVFreqx1K is obsolete, please use MApi_XC_CalculateVFreqx10 instead! 6833*53ee8cc1Swenshuai.xi /// the return vfreq of this function is not accurate when signal is not stable or have noise, so it's not 6834*53ee8cc1Swenshuai.xi /// suitable as interface for Ap use at any time. 6835*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeRemove 6836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6837*53ee8cc1Swenshuai.xi 6838*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6839*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetAccurateVFreqx1K(SCALER_WIN eWindow); 6840*53ee8cc1Swenshuai.xi //================================ Obsolete Function End ======================================= 6841*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6842*53ee8cc1Swenshuai.xi /// Handler xc customer request. 6843*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:cmd type 6844*53ee8cc1Swenshuai.xi /// @param pbuf \b IN:input value depend on cmd type 6845*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:input structure size for validatition 6846*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - Success, FALSE - Fail 6847*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6848*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_S_Disp_Ctrl(MS_U32 u32Cmd,void *pbuf,MS_U32 u32BufSize); 6849*53ee8cc1Swenshuai.xi 6850*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SETBLACKVIDEOBYMODE 6851*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6852*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern by mode 6853*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 6854*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 6855*53ee8cc1Swenshuai.xi /// @param eMode \b IN: which black video mode we are going to use 6856*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6857*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_GenerateBlackVideoByMode(MS_BOOL bEnable, SCALER_WIN eWindow, EN_XC_BLACK_VIDEO_MODE eMode); 6858*53ee8cc1Swenshuai.xi #endif 6859*53ee8cc1Swenshuai.xi 6860*53ee8cc1Swenshuai.xi //================================ Obsolete Function End ======================================= 6861*53ee8cc1Swenshuai.xi 6862*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6863*53ee8cc1Swenshuai.xi /// MApi_XC_IsSupport2StepScaling 6864*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - Support 2 Step Scaling, FALSE - Not Support 2 Step Scaling 6865*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6866*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_IsSupport2StepScaling(void); 6867*53ee8cc1Swenshuai.xi 6868*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6869*53ee8cc1Swenshuai.xi /// MApi_XC_GetPQFlowStatus 6870*53ee8cc1Swenshuai.xi /// @param u16Width \b IN: timing width 6871*53ee8cc1Swenshuai.xi /// @param u16Height \b IN: timing height 6872*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - is 4k timing, FALSE - Not 4k timing 6873*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6874*53ee8cc1Swenshuai.xi #ifdef UFO_XC_PQ_PATH 6875*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_GetPQPathStatus(E_XC_PQ_Path_Type ePqPathType, MS_U16 u16Width, MS_U16 u16Height); 6876*53ee8cc1Swenshuai.xi #endif 6877*53ee8cc1Swenshuai.xi 6878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6879*53ee8cc1Swenshuai.xi /// Set Scaler IP input test pattern. 6880*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 6881*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: Set 1 to enable. Bit(0) is horizontal pattern and Bit(1) is vertical pattern 6882*53ee8cc1Swenshuai.xi /// @param u6Pattern_type \b IN: The pattern type. (the width of each pattern) 6883*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref SCALER_WIN 6884*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6885*53ee8cc1Swenshuai.xi void MApi_XC_SetIP1TestPattern(MS_U8 u8Enable, MS_U16 u16Pattern_type, SCALER_WIN eWindow); 6886*53ee8cc1Swenshuai.xi 6887*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6888*53ee8cc1Swenshuai.xi /// MApi_XC_Set_OP2_Pattern 6889*53ee8cc1Swenshuai.xi /// @ingroup XC_TEST_PATTERN 6890*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable OP2 pattern 6891*53ee8cc1Swenshuai.xi /// @param u16R_Data \b IN: when enable OP2 patter ,Data Generator for r_cr constant 6892*53ee8cc1Swenshuai.xi /// @param u16G_Data \b IN: when enable OP2 patter ,Data Generator for g_y constant 6893*53ee8cc1Swenshuai.xi /// @param u16B_Data \b IN: when enable OP2 patter ,Data Generator for b_cb constant 6894*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 6895*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6896*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); 6897*53ee8cc1Swenshuai.xi 6898*53ee8cc1Swenshuai.xi #ifdef UFO_XC_FORCEWRITE_V2 6899*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6900*53ee8cc1Swenshuai.xi /// When the muteType is enabled, the vsync will be skipped and the registers will be written directly 6901*53ee8cc1Swenshuai.xi /// @param enMuteType \b IN: the mute type could be MainWindow, SubWindow and Panel 6902*53ee8cc1Swenshuai.xi /// @param bIsForceWrite \b IN: Force write or not 6903*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6904*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_SetForceWrite( EN_MUTE_TYPE enMuteType, MS_BOOL bIsForceWrite); 6905*53ee8cc1Swenshuai.xi 6906*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6907*53ee8cc1Swenshuai.xi /// Get the status of enMuteType which is writen directly or not. 6908*53ee8cc1Swenshuai.xi /// @param enMuteType \b IN: the mute type could be MainWindow, SubWindow and Panel 6909*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6910*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_GetForceWrite( EN_MUTE_TYPE enMuteType); 6911*53ee8cc1Swenshuai.xi #endif 6912*53ee8cc1Swenshuai.xi 6913*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6914*53ee8cc1Swenshuai.xi /// Video Playback Controller. 6915*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:cmd type 6916*53ee8cc1Swenshuai.xi /// @param pbuf \b IN:input value depend on cmd type 6917*53ee8cc1Swenshuai.xi /// @param u32Cmd \b IN:input structure size for validatition 6918*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6919*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6920*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_VideoPlaybackCtrl(MS_U32 u32Cmd,void *pCmdArgs,MS_U32 u32CmdArgsSize); 6921*53ee8cc1Swenshuai.xi 6922*53ee8cc1Swenshuai.xi #ifdef UFO_XC_AUTO_DOWNLOAD 6923*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6924*53ee8cc1Swenshuai.xi /// Config auto download. 6925*53ee8cc1Swenshuai.xi /// note: 6926*53ee8cc1Swenshuai.xi /// Please call MApi_XC_GetChipCaps(E_XC_SUPPORT_AUTODOWNLOAD_CLIENT) before calling the api. 6927*53ee8cc1Swenshuai.xi /// if the client is supported, and then call the api, otherwise, it would be fail. 6928*53ee8cc1Swenshuai.xi /// @param pstConfigInfo \b IN: pointer to config info, refer to XC_AUTODOWNLOAD_CONFIG_INFO 6929*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6930*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6931*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_AutoDownload_Config(XC_AUTODOWNLOAD_CONFIG_INFO *pstConfigInfo); 6932*53ee8cc1Swenshuai.xi 6933*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6934*53ee8cc1Swenshuai.xi /// Write data to auto download. 6935*53ee8cc1Swenshuai.xi /// note: 6936*53ee8cc1Swenshuai.xi /// Please call MApi_XC_GetChipCaps(E_XC_SUPPORT_AUTODOWNLOAD_CLIENT) before calling the api. 6937*53ee8cc1Swenshuai.xi /// if the client is supported, and then call the api, otherwise, it would be fail. 6938*53ee8cc1Swenshuai.xi /// @param pstConfigInfo \b IN: pointer to data info, refer to XC_AUTODOWNLOAD_DATA_INFO 6939*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6940*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6941*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_AutoDownload_Write(XC_AUTODOWNLOAD_DATA_INFO *pstDataInfo); 6942*53ee8cc1Swenshuai.xi 6943*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6944*53ee8cc1Swenshuai.xi /// fire auto download for writting data into SRAM. 6945*53ee8cc1Swenshuai.xi /// note: 6946*53ee8cc1Swenshuai.xi /// Please call MApi_XC_GetChipCaps(E_XC_SUPPORT_AUTODOWNLOAD_CLIENT) before calling the api. 6947*53ee8cc1Swenshuai.xi /// if the client is supported, and then call the api, otherwise, it would be fail. 6948*53ee8cc1Swenshuai.xi /// @param enClient \b IN: current client 6949*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 6950*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6951*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_AutoDownload_Fire(EN_XC_AUTODOWNLOAD_CLIENT enClient); 6952*53ee8cc1Swenshuai.xi #endif 6953*53ee8cc1Swenshuai.xi 6954*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR 6955*53ee8cc1Swenshuai.xi #if (UFO_XC_HDR_VERSION == 2) 6956*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 6957*53ee8cc1Swenshuai.xi /// Control HDR. 6958*53ee8cc1Swenshuai.xi /// HDMI dobly case usage: 6959*53ee8cc1Swenshuai.xi /// 6960*53ee8cc1Swenshuai.xi /// FILE * pFile = fopen("/xxx/3d_lut.bin","rw"); 6961*53ee8cc1Swenshuai.xi /// MS_U32 u32ReadSize = 0; 6962*53ee8cc1Swenshuai.xi /// MS_U32 u32Size = ftell (pFile); 6963*53ee8cc1Swenshuai.xi /// MS_U8 *pu8Data = (MS_U8 *)malloc(u32Size); 6964*53ee8cc1Swenshuai.xi /// u32ReadSize = fread(pData, 1, u32Size, pFile); 6965*53ee8cc1Swenshuai.xi /// 6966*53ee8cc1Swenshuai.xi /// XC_HDR_3DLUT_INFO st3DLutInfo; 6967*53ee8cc1Swenshuai.xi /// memset(&st3DLutInfo, 0, sizeof(XC_HDR_3DLUT_INFO)); 6968*53ee8cc1Swenshuai.xi /// st3DLutInfo.u323DLutInfo_Version = HDR_3DLUT_INFO_VERSION; 6969*53ee8cc1Swenshuai.xi /// st3DLutInfo.u163DLutInfo_Length = sizeof(XC_HDR_3DLUT_INFO); 6970*53ee8cc1Swenshuai.xi /// st3DLutInfo.pu8Data = pu8Data; 6971*53ee8cc1Swenshuai.xi /// st3DLutInfo.u32Size = u32ReadSize; 6972*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_3DLUT, &st3DLutInfo); 6973*53ee8cc1Swenshuai.xi /// 6974*53ee8cc1Swenshuai.xi /// EN_XC_HDR_TYPE enType = E_XC_HDR_TYPE_DOLBY; 6975*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_TYPE, &enType); 6976*53ee8cc1Swenshuai.xi /// 6977*53ee8cc1Swenshuai.xi /// MMapInfo_t *minfo = MMAPInfo::GetInstance()->get_mmap(MMAPInfo::GetInstance()->StrToMMAPID("XXXX")); 6978*53ee8cc1Swenshuai.xi /// 6979*53ee8cc1Swenshuai.xi /// XC_HDR_DMA_INIT_INFO stDMAInitInfo; 6980*53ee8cc1Swenshuai.xi /// memset(&stDMAInitInfo, 0, sizeof(XC_HDR_DMA_INIT_INFO)); 6981*53ee8cc1Swenshuai.xi /// stDMAInitInfo.u32DMAInitInfo_Version = HDR_DMA_INIT_INFO_VERSION; 6982*53ee8cc1Swenshuai.xi /// stDMAInitInfo.u16DMAInitInfo_Length = sizeof(XC_HDR_DMA_INIT_INFO); 6983*53ee8cc1Swenshuai.xi /// stDMAInitInfo.phyBaseAddr = minfo->u32Addr; 6984*53ee8cc1Swenshuai.xi /// stDMAInitInfo.u32Size = minfo->u32Size; 6985*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_INIT_DMA, &stDMAInitInfo); 6986*53ee8cc1Swenshuai.xi /// 6987*53ee8cc1Swenshuai.xi /// EN_XC_HDR_COLOR_FORMAT enColorFormat = E_XC_HDR_COLOR_YUV422; 6988*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_COLOR_FORMAT, &enColorFormat); 6989*53ee8cc1Swenshuai.xi /// 6990*53ee8cc1Swenshuai.xi /// XC_HDR_DMA_CONFIG_INFO stDMAConfigInfo; 6991*53ee8cc1Swenshuai.xi /// memset(&stDMAConfigInfo, 0, sizeof(XC_HDR_DMA_CONFIG_INFO)); 6992*53ee8cc1Swenshuai.xi /// stDMAConfigInfo.u32DMAConfigInfo_Version = HDR_DMA_CONFIG_INFO_VERSION; 6993*53ee8cc1Swenshuai.xi /// stDMAConfigInfo.u16DMAConfigInfo_Length = sizeof(XC_HDR_DMA_CONFIG_INFO); 6994*53ee8cc1Swenshuai.xi /// stDMAConfigInfo.eMode = E_XC_HDR_DMA_MODE_12BIT; 6995*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_CONFIG_DMA, &stDMAConfigInfo); 6996*53ee8cc1Swenshuai.xi /// 6997*53ee8cc1Swenshuai.xi /// MS_BOOL bEnable = TRUE; 6998*53ee8cc1Swenshuai.xi /// //after these previous API are called, then call it. 6999*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_ENABLE, &bEnable); 7000*53ee8cc1Swenshuai.xi /// 7001*53ee8cc1Swenshuai.xi /// HDMI open case usage: 7002*53ee8cc1Swenshuai.xi /// EN_XC_HDR_TYPE enType = E_XC_HDR_TYPE_OPEN; 7003*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_TYPE, &enType); 7004*53ee8cc1Swenshuai.xi /// 7005*53ee8cc1Swenshuai.xi /// EN_XC_HDR_COLOR_FORMAT enColorFormat = E_XC_HDR_COLOR_YUV422; 7006*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_COLOR_FORMAT, &enColorFormat); 7007*53ee8cc1Swenshuai.xi /// 7008*53ee8cc1Swenshuai.xi /// XC_HDR_OPEN_METADATA_INFO stOpenMetadtaInfo; 7009*53ee8cc1Swenshuai.xi /// ...... 7010*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_SET_OPEN_METADATA, &stOpenMetadtaInfo); 7011*53ee8cc1Swenshuai.xi /// 7012*53ee8cc1Swenshuai.xi /// MS_BOOL bEnable = TRUE; 7013*53ee8cc1Swenshuai.xi /// //after these previous API are called, then call it. 7014*53ee8cc1Swenshuai.xi /// MApi_XC_HDR_Control(E_XC_HDR_CTRL_ENABLE, &bEnable); 7015*53ee8cc1Swenshuai.xi /// 7016*53ee8cc1Swenshuai.xi /// @param enCtrlType \b IN: ctrl type 7017*53ee8cc1Swenshuai.xi /// @param pParam \b IN: param, refer to EN_XC_HDR_CTRL_TYPE 7018*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 7019*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7020*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_HDR_Control(EN_XC_HDR_CTRL_TYPE enCtrlType, void *pParam); 7021*53ee8cc1Swenshuai.xi #endif 7022*53ee8cc1Swenshuai.xi #endif 7023*53ee8cc1Swenshuai.xi 7024*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SCAN_TYPE 7025*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7026*53ee8cc1Swenshuai.xi /// Set different scan type. 7027*53ee8cc1Swenshuai.xi /// @param enScanType \b IN: scan type. Normal/ForceP/ForceI 7028*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 7029*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7030*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_SetScanType(E_XC_SCAN_TYPE enScanType); 7031*53ee8cc1Swenshuai.xi #endif 7032*53ee8cc1Swenshuai.xi 7033*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7034*53ee8cc1Swenshuai.xi /// This function will set FB level which decide the method of how to use xc buffer 7035*53ee8cc1Swenshuai.xi /// @param eFBLevel \b IN: FB level 7036*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 7037*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 7038*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7039*53ee8cc1Swenshuai.xi E_APIXC_ReturnValue SYMBOL_WEAK MApi_XC_Set_FB_Level(E_XC_FB_LEVEL eFBLevel, SCALER_WIN eWindow); 7040*53ee8cc1Swenshuai.xi 7041*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------------------------------- 7042*53ee8cc1Swenshuai.xi /// This function will get current FB level which decide the method of how to use xc buffer 7043*53ee8cc1Swenshuai.xi /// @param peFBLevel \b OUT: FB level 7044*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 7045*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 7046*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7047*53ee8cc1Swenshuai.xi E_XC_FB_LEVEL SYMBOL_WEAK MApi_XC_Get_FB_Level(SCALER_WIN eWindow); 7048*53ee8cc1Swenshuai.xi 7049*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7050*53ee8cc1Swenshuai.xi /// fire DS comment 7051*53ee8cc1Swenshuai.xi /// @param eWindow \b IN:main win / sub win 7052*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7053*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_SWDS_Fire(SCALER_WIN eWindow ); 7054*53ee8cc1Swenshuai.xi 7055*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7056*53ee8cc1Swenshuai.xi /// OPTEE secure lock xc 7057*53ee8cc1Swenshuai.xi /// note: 7058*53ee8cc1Swenshuai.xi /// @param u32PipeID \b IN: pipeline ID 7059*53ee8cc1Swenshuai.xi /// @param U32RetResNum \b IN: RetResNum 7060*53ee8cc1Swenshuai.xi /// @param pResource \b IN: Resource 7061*53ee8cc1Swenshuai.xi /// @return U32 7062*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7063*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_GetResourceByPipeID(MS_U32 u32PipeID, MS_U32* u32RetResNum, RESOURCE* pResource); 7064*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7065*53ee8cc1Swenshuai.xi /// OPTEE secure update xc setting 7066*53ee8cc1Swenshuai.xi /// note: 7067*53ee8cc1Swenshuai.xi /// @param u32PipeID \b IN: pipeline ID 7068*53ee8cc1Swenshuai.xi /// @param u32SecureDMA \b IN: SecureDMA 7069*53ee8cc1Swenshuai.xi /// @param u32OperationMode \b IN: OperationMode 7070*53ee8cc1Swenshuai.xi /// @return U32 7071*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7072*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_OPTEE_CheckRBase(SCALER_WIN eWindow); 7073*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7074*53ee8cc1Swenshuai.xi /// OPTEE secure check memory access is legal 7075*53ee8cc1Swenshuai.xi /// note: 7076*53ee8cc1Swenshuai.xi /// @param eWindow \b IN:main win / sub win 7077*53ee8cc1Swenshuai.xi /// @return BOOL 7078*53ee8cc1Swenshuai.xi 7079*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7080*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_ConfigPipe(MS_U32 u32PipeID, MS_U32 u32SecureDMA, MS_U32 u32OperationMode); 7081*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7082*53ee8cc1Swenshuai.xi /// OPTEE check pipleline ID 7083*53ee8cc1Swenshuai.xi /// note: 7084*53ee8cc1Swenshuai.xi /// @param u32PipeID \b IN: pipeline ID 7085*53ee8cc1Swenshuai.xi /// @param u32SecureDMA \b IN: SecureDMA 7086*53ee8cc1Swenshuai.xi /// @param u32OperationMode \b IN: OperationMode 7087*53ee8cc1Swenshuai.xi /// @return U32 7088*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7089*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_CheckPipe(MS_U32 u32PipeID, MS_U32 u32SecureDMA, MS_U32 u32OperationMode); 7090*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7091*53ee8cc1Swenshuai.xi /// Set OPTEE control action for xc part 7092*53ee8cc1Swenshuai.xi /// note: 7093*53ee8cc1Swenshuai.xi /// @param action \b IN: control action type 7094*53ee8cc1Swenshuai.xi /// @param xc_handler \b IN: xc handler data 7095*53ee8cc1Swenshuai.xi /// @return BOOL 7096*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7097*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_OPTEE_Control(EN_XC_OPTEE_ACTION action,XC_OPTEE_HANDLER* xc_handler); 7098*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7099*53ee8cc1Swenshuai.xi /// Set OPTEE control action for ipmux part 7100*53ee8cc1Swenshuai.xi /// note: 7101*53ee8cc1Swenshuai.xi /// @param action \b IN: control action type 7102*53ee8cc1Swenshuai.xi /// @param xc_mux_data \b IN: ipmux handler data 7103*53ee8cc1Swenshuai.xi /// @return BOOL 7104*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7105*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_OPTEE_Mux(EN_XC_OPTEE_ACTION action,XC_OPTEE_MUX_DATA xc_mux_data); 7106*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------------------------------- 7107*53ee8cc1Swenshuai.xi /// This function is uesd for Poll kernel event 7108*53ee8cc1Swenshuai.xi /// @return TURE/FALSE 7109*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7110*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_PollEvent(void); 7111*53ee8cc1Swenshuai.xi 7112*53ee8cc1Swenshuai.xi #ifdef UFO_XC_DE_MODE 7113*53ee8cc1Swenshuai.xi void SYMBOL_WEAK MApi_XC_Set_HandshakeMode(MS_U8 u8MD, SCALER_WIN eWindow); 7114*53ee8cc1Swenshuai.xi #endif 7115*53ee8cc1Swenshuai.xi 7116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7117*53ee8cc1Swenshuai.xi /// XC scmi dual miu control 7118*53ee8cc1Swenshuai.xi /// @param bEnable \b IN:Disable or enable Dual. 7119*53ee8cc1Swenshuai.xi /// @param u32LeftFactor \b IN:Dual bw ratio left factor. XC BW use will be u32LeftFactor:u32RightFactor 7120*53ee8cc1Swenshuai.xi /// @param u32RightFactor \b IN:Dual bw ratio right factor. This Ratio should is recomanded between 1:3 and 3:1. 7121*53ee8cc1Swenshuai.xi /// @param eWindow \b IN:main win / sub win 7122*53ee8cc1Swenshuai.xi /// @return TRUE or FALSE 7123*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7124*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_EnableMiuDualMode(MS_BOOL bEnable, MS_U32 u32LeftFactor, MS_U32 u32RightFactor, SCALER_WIN eWindow); 7125*53ee8cc1Swenshuai.xi 7126*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 7127*53ee8cc1Swenshuai.xi /// MApi_XC_Get3DFormat 7128*53ee8cc1Swenshuai.xi /// @param e3DAttrType \b IN: The attribute of 3D 7129*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass value according to attribute type 7130*53ee8cc1Swenshuai.xi /// @param p3DFormat \b out: A pointer points to 3D format. It may input 3D format or output 3D format depending 7131*53ee8cc1Swenshuai.xi /// value of para. If value of para is HW IP, the 3D format is input 3D format. If value of para is HW OP, the 3D format is 7132*53ee8cc1Swenshuai.xi /// output 3D format. 7133*53ee8cc1Swenshuai.xi /// example: 7134*53ee8cc1Swenshuai.xi /// 1 *para == E_XC_3D_OSD_BLENDING_SC_IP or E_XC_3D_OSD_BLENDING_FRC_IP 7135*53ee8cc1Swenshuai.xi /// => *p3DFormat == E_XC_3D_INPUT_MODE 7136*53ee8cc1Swenshuai.xi /// 2 *para == E_XC_3D_OSD_BLENDING_SC_OP or E_XC_3D_OSD_BLENDING_FRC_OP 7137*53ee8cc1Swenshuai.xi /// => *p3DFormat == E_XC_3D_OUTPUT_MODE 7138*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE->get 3D format successfully, FALSE->fail to get 3D format 7139*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 7140*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_Get3DFormat(E_XC_3D_ATTRIBUTE_TYPE e3DAttrType, void* para, void* p3DFormat); 7141*53ee8cc1Swenshuai.xi 7142*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7143*53ee8cc1Swenshuai.xi /// Set SWDR Information 7144*53ee8cc1Swenshuai.xi /// @ingroup CFD 7145*53ee8cc1Swenshuai.xi /// @param pSWDR_INFO \b IN: SWDR information 7146*53ee8cc1Swenshuai.xi /// @return TRUE or FALSE 7147*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7148*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_SetSWDRInfo(XC_SWDR_INFO *pSWDR_INFO); 7149*53ee8cc1Swenshuai.xi 7150*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7151*53ee8cc1Swenshuai.xi /// Get SWDR Information 7152*53ee8cc1Swenshuai.xi /// @ingroup CFD 7153*53ee8cc1Swenshuai.xi /// @param pSWDR_INFO \b IN: SWDR information 7154*53ee8cc1Swenshuai.xi /// @return TRUE or FALSE 7155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7156*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_GetSWDRInfo(XC_SWDR_INFO *pSWDR_INFO); 7157*53ee8cc1Swenshuai.xi 7158*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SUPPORT_HDMI_DOWNSCALE_OUTPUT_POLICY 7159*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7160*53ee8cc1Swenshuai.xi /// Get policy Information 7161*53ee8cc1Swenshuai.xi /// @ingroup OPTEE 7162*53ee8cc1Swenshuai.xi /// @return policy information 7163*53ee8cc1Swenshuai.xi // +-----+-----+-----+-----+ 7164*53ee8cc1Swenshuai.xi // |8bits|8bits|8bits|8bits| 7165*53ee8cc1Swenshuai.xi // +-----+-----+-----+-----+ 7166*53ee8cc1Swenshuai.xi // | 4K | FHD | HD | SD | 7167*53ee8cc1Swenshuai.xi // +-----+-----+-----+-----+ 7168*53ee8cc1Swenshuai.xi // 8bits info: 0->none, 1->BLUESCREEN, 2->SD, 3->HD, 4->FHD, 5->4K2K 7169*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 7170*53ee8cc1Swenshuai.xi MS_U32 SYMBOL_WEAK MApi_XC_GetHDMIPolicy(void); 7171*53ee8cc1Swenshuai.xi #endif 7172*53ee8cc1Swenshuai.xi 7173*53ee8cc1Swenshuai.xi #undef INTERFACE 7174*53ee8cc1Swenshuai.xi #ifdef __cplusplus 7175*53ee8cc1Swenshuai.xi } 7176*53ee8cc1Swenshuai.xi #endif 7177*53ee8cc1Swenshuai.xi 7178*53ee8cc1Swenshuai.xi #endif /* _API_XC_H_ */ 7179*53ee8cc1Swenshuai.xi 7180*53ee8cc1Swenshuai.xi 7181