1 //<MStar Software> 2 //****************************************************************************** 3 // MStar Software 4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5 // All software, firmware and related documentation herein ("MStar Software") are 6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7 // law, including, but not limited to, copyright law and international treaties. 8 // Any use, modification, reproduction, retransmission, or republication of all 9 // or part of MStar Software is expressly prohibited, unless prior written 10 // permission has been granted by MStar. 11 // 12 // By accessing, browsing and/or using MStar Software, you acknowledge that you 13 // have read, understood, and agree, to be bound by below terms ("Terms") and to 14 // comply with all applicable laws and regulations 15 // 16 // 1. MStar shall retain any and all right, ownership and interest to MStar 17 // Software and any modification/derivatives thereof. 18 // No right, ownership, or interest to MStar Software and any 19 // modification/derivatives thereof is transferred to you under Terms. 20 // 21 // 2. You understand that MStar Software might include, incorporate or be 22 // supplied together with third party`s software and the use of MStar 23 // Software may require additional licenses from third parties. 24 // Therefore, you hereby agree it is your sole responsibility to separately 25 // obtain any and all third party right and license necessary for your use of 26 // such third party`s software. 27 // 28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29 // MStar`s confidential information and you agree to keep MStar`s 30 // confidential information in strictest confidence and not disclose to any 31 // third party. 32 // 33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34 // kind. Any warranties are hereby expressly disclaimed by MStar, including 35 // without limitation, any warranties of merchantability, non-infringement of 36 // intellectual property rights, fitness for a particular purpose, error free 37 // and in conformity with any international standard. You agree to waive any 38 // claim against MStar for any loss, damage, cost or expense that you may 39 // incur related to your use of MStar Software. 40 // In no event shall MStar be liable for any direct, indirect, incidental or 41 // consequential damages, including without limitation, lost of profit or 42 // revenues, lost or damage of data, and unauthorized system use. 43 // You agree that this Section 4 shall still apply without being affected 44 // even if MStar Software has been modified by MStar in accordance with your 45 // request or instruction for your use, except otherwise agreed by both 46 // parties in writing. 47 // 48 // 5. If requested, MStar may from time to time provide technical supports or 49 // services in relation with MStar Software to you for your use of 50 // MStar Software in conjunction with your or your customer`s product 51 // ("Services"). 52 // You understand and agree that, except otherwise agreed by both parties in 53 // writing, Services are provided on an "AS IS" basis and the warranty 54 // disclaimer set forth in Section 4 above shall apply. 55 // 56 // 6. Nothing contained herein shall be construed as by implication, estoppels 57 // or otherwise 58 // (a) conferring any license or right to use MStar name, trademark, service 59 // mark, symbol or any other identification; 60 // (b) obligating MStar or any of its affiliates to furnish any person, 61 // including without limitation, you and your customers, any assistance 62 // of any kind whatsoever, or any information; or 63 // (c) conferring any license or right under any intellectual property right. 64 // 65 // 7. These terms shall be governed by and construed in accordance with the laws 66 // of Taiwan, R.O.C., excluding its conflict of law rules. 67 // Any and all dispute arising out hereof or related hereto shall be finally 68 // settled by arbitration referred to the Chinese Arbitration Association, 69 // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70 // Rules of the Association by three (3) arbitrators appointed in accordance 71 // with the said Rules. 72 // The place of arbitration shall be in Taipei, Taiwan and the language shall 73 // be English. 74 // The arbitration award shall be final and binding to both parties. 75 // 76 //****************************************************************************** 77 78 #ifndef _APIXC_DLC_PRIV_H_ 79 #define _APIXC_DLC_PRIV_H_ 80 81 82 //////////////////////////////////////////////////////////////////////////////// 83 // Header Files 84 //////////////////////////////////////////////////////////////////////////////// 85 #ifdef __cplusplus 86 extern "C" 87 { 88 #endif 89 90 typedef struct 91 { 92 MS_U32 Dummy; 93 }DLC_RESOURCE_PRIVATE; 94 95 typedef struct 96 { 97 MS_U32 DLC_Reg[2]; 98 }DLC_REGS_SAVE_AREA; 99 100 typedef MS_BOOL (*IOCTL_DLC_INIT_EX) (void*, XC_DLC_init * ,MS_U32); 101 typedef void (*IOCTL_DLC_SETSETTING_EX) (void*, XC_DLC_MFinit_Ex*); 102 typedef void (*IOCTL_DLC_SETCURVE) (void*, MS_U8* ,MS_U8* ,MS_U8* ); 103 typedef void (*IOCTL_DLC_SETBLESLOPPOINT) (void*, MS_U16*); 104 typedef MS_BOOL (*IOCTL_DLC_SETHDRINFO) (void*, XC_DLC_HDRinit* ); 105 #if defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2) 106 typedef MS_BOOL (*IOCTL_DLC_SETTMOINFO) (void*, ST_XC_DLC_TMO_INFO* ); 107 #endif 108 typedef MS_BOOL (*IOCTL_DLC_EXIT) (void*); 109 typedef void (*IOCTL_DLC_SETONOFF) (void*, MS_BOOL ,MS_BOOL); 110 typedef MS_BOOL (*IOCTL_DLC_SETHANDLERONOFF) (void*, MS_BOOL); 111 typedef MS_BOOL (*IOCTL_DLC_SETBLEONOFF) (void*, MS_BOOL); 112 typedef void (*IOCTL_DLC_ENABLEMAINSUBCURVESYNCHRONIZATION) (void*, MS_BOOL); 113 typedef void (*IOCTL_DLC_HANDLER) (void*, MS_BOOL); 114 typedef MS_BOOL (*IOCTL_DLC_GETHISTOGRAMHANDLER) (void*, MS_BOOL); 115 typedef MS_U8 (*IOCTL_DLC_GETAVERAGEVALUE) (void*); 116 typedef MS_U16 (*IOCTL_DLC_GETAVERAGEVALUE_EX) (void*); 117 typedef void (*IOCTL_DLC_INITCURVE) (void*, MS_U16 ,MS_U16 ,MS_U16 ,MS_U16); 118 typedef void (*IOCTL_DLC_SPEEDUPTRIGGER) (void*, MS_U8); 119 typedef MS_BOOL (*IOCTL_DLC_GETLUMACURVESTATUS) (void*); 120 typedef void (*IOCTL_DLC_CGC_RESETCGAIN) (void*); 121 typedef void (*IOCTL_DLC_CGC_CHECKCGAININPQCOM) (void*); 122 typedef void (*IOCTL_DLC_CGC_RESETYGAIN) (void*); 123 typedef void (*IOCTL_DLC_CGC_CHECKYGAININPQCOM) (void*); 124 typedef void (*IOCTL_DLC_CGC_RESET) (void*); 125 typedef void (*IOCTL_DLC_CGC_INIT) (void*); 126 typedef void (*IOCTL_DLC_CGC_REINIT) (void*); 127 typedef void (*IOCTL_DLC_CGC_HANDLER) (void*); 128 typedef E_XC_DLC_RESULT (*IOCTL_DLC_GETLIBVER) (void*, const MSIF_Version**); 129 typedef const XC_DLC_ApiInfo * (*IOCTL_DLC_GETINFO) (void*); 130 typedef MS_BOOL (*IOCTL_DLC_GETSTATUS_EX) (void*, XC_DLC_ApiStatus* ,MS_BOOL); 131 typedef MS_BOOL (*IOCTL_DLC_SETDBGLEVEL) (void*, MS_U16); 132 typedef MS_BOOL (*IOCTL_DLC_WRITECURVE) (void*, MS_U8*); 133 typedef MS_BOOL (*IOCTL_DLC_WRITECURVE_SUB) (void*, MS_U8*); 134 typedef MS_BOOL (*IOCTL_DLC_GETHISTOGRAM) (void*, MS_U16* ,E_XC_DLC_HISTOGRAM_TYPE); 135 typedef void (*IOCTL_DLC_DECODEEXTCMD) (void*, tDLC_CONTROL_PARAMS*); 136 typedef void (*IOCTL_DLC_SETCAPTURERANGE) (void*, XC_DLC_CAPTURE_Range*); 137 typedef void (*IOCTL_DLC_SETSETTING) (void*, XC_DLC_MFinit); 138 typedef MS_BOOL (*IOCTL_DLC_INIT) (void*, XC_DLC_init* ,MS_U32); 139 typedef MS_BOOL (*IOCTL_DLC_GETSTATUS) (void*, XC_DLC_ApiStatus* ,MS_BOOL); 140 typedef MS_U32 (*IOCTL_DLC_SET_POWERSTATE) (void*, EN_POWER_MODE); 141 typedef void (*IOCTL_DBC_DLC_INIT) (void*, XC_DLC_DBC_MFinit); 142 typedef void (*IOCTL_DBC_INIT) (void*); 143 typedef void (*IOCTL_DBC_SETSTATUS) (void*, MS_BOOL); 144 typedef MS_BOOL (*IOCTL_DBC_GETSTATUS) (void*); 145 typedef void (*IOCTL_DBC_SET_READY) (void*, MS_BOOL); 146 typedef void (*IOCTL_DBC_SET_DEBUGMODE) (void*, MS_U8); 147 typedef MS_U8 (*IOCTL_DBC_GET_DEBUGMODE) (void*); 148 typedef void (*IOCTL_DBC_UPDATEPWM) (void*, MS_U8); 149 typedef MS_U16 (*IOCTL_DBC_HANDLER) (void*); 150 typedef void (*IOCTL_DBC_ADJUSTYCGAIN) (void*); 151 typedef void (*IOCTL_DBC_YCGAININIT) (void*, MS_U8 ,MS_U8 ,MS_U8,MS_U8); 152 typedef void (*IOCTL_DBC_RESET) (void*); 153 typedef void (*IOCTL_DBC_DECODEEXTCMD) (void*, tDBC_CONTROL_PARAMS*); 154 typedef struct 155 { 156 IOCTL_DLC_INIT_EX fpDLC_Init_Ex; 157 IOCTL_DLC_SETSETTING_EX fpDLC_SetSetting_Ex; 158 IOCTL_DLC_SETCURVE fpDLC_SetCurve; 159 IOCTL_DLC_SETBLESLOPPOINT fpDLC_SetBleSlopPoint; 160 IOCTL_DLC_SETHDRINFO fpDLC_SetHDRInit; 161 #if defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2) 162 IOCTL_DLC_SETTMOINFO fpDLC_SetTMOInfo; 163 #endif 164 IOCTL_DLC_EXIT fpDLC_Exit; 165 IOCTL_DLC_SETONOFF fpDLC_SetOnOff; 166 IOCTL_DLC_SETHANDLERONOFF fpDLC_SetDlcHandlerOnOff; 167 IOCTL_DLC_SETBLEONOFF fpDLC_SetBleOnOff; 168 IOCTL_DLC_ENABLEMAINSUBCURVESYNCHRONIZATION fpDLC_EnableMainSubCurveSynchronization; 169 IOCTL_DLC_HANDLER fpDLC_Handler; 170 IOCTL_DLC_GETHISTOGRAMHANDLER fpDLC_GetHistogramHandler; 171 IOCTL_DLC_GETAVERAGEVALUE fpDLC_GetAverageValue; 172 IOCTL_DLC_GETAVERAGEVALUE_EX fpDLC_GetAverageValue_Ex; 173 IOCTL_DLC_INITCURVE fpDLC_InitCurve; 174 IOCTL_DLC_SPEEDUPTRIGGER fpDLC_SpeedupTrigger; 175 IOCTL_DLC_GETLUMACURVESTATUS fpDLC_GetLumaCurveStatus; 176 IOCTL_DLC_CGC_RESETCGAIN fpDLC_CGC_ResetCGain; 177 IOCTL_DLC_CGC_CHECKCGAININPQCOM fpDLC_CGC_CheckCGainInPQCom; 178 IOCTL_DLC_CGC_RESETYGAIN fpDLC_CGC_ResetYGain; 179 IOCTL_DLC_CGC_CHECKYGAININPQCOM fpDLC_CGC_CheckYGainInPQCom; 180 IOCTL_DLC_CGC_RESET fpDLC_CGC_Reset; 181 IOCTL_DLC_CGC_INIT fpDLC_CGC_Init; 182 IOCTL_DLC_CGC_REINIT fpDLC_CGC_ReInit; 183 IOCTL_DLC_CGC_HANDLER fpDLC_CGC_Handler; 184 IOCTL_DLC_GETLIBVER fpDLC_GetLibVer; 185 IOCTL_DLC_GETINFO fpDLC_GetInfo; 186 IOCTL_DLC_GETSTATUS_EX fpDLC_GetStatus_Ex; 187 IOCTL_DLC_SETDBGLEVEL fpDLC_SetDbgLevel; 188 IOCTL_DLC_WRITECURVE fpDLC_WriteCurve; 189 IOCTL_DLC_WRITECURVE_SUB fpDLC_WriteCurve_Sub; 190 IOCTL_DLC_GETHISTOGRAM fpDLC_GetHistogram; 191 IOCTL_DLC_DECODEEXTCMD fpDLC_DecodeExtCmd; 192 IOCTL_DLC_SETCAPTURERANGE fpDLC_SetCaptureRange; 193 IOCTL_DLC_SETSETTING fpDLC_SetSetting; 194 IOCTL_DLC_INIT fpDLC_Init; 195 IOCTL_DLC_GETSTATUS fpDLC_GetStatus; 196 IOCTL_DLC_SET_POWERSTATE fpDLC_SetPowerState; 197 IOCTL_DBC_DLC_INIT fpDBC_DLC_Init; 198 IOCTL_DBC_INIT fpDBC_Init; 199 IOCTL_DBC_SETSTATUS fpDBC_Setstatus; 200 IOCTL_DBC_GETSTATUS fpDBC_Getstatus; 201 IOCTL_DBC_SET_READY fpDBC_SetReady; 202 IOCTL_DBC_SET_DEBUGMODE fpDBC_SetDebugMode; 203 IOCTL_DBC_GET_DEBUGMODE fpDBC_GetDebugMode; 204 IOCTL_DBC_UPDATEPWM fpDBC_UpdatePWM; 205 IOCTL_DBC_HANDLER fpDBC_Handler; 206 IOCTL_DBC_ADJUSTYCGAIN fpDBC_AdjustYCGain; 207 IOCTL_DBC_YCGAININIT fpDBC_YCGainInit; 208 IOCTL_DBC_RESET fpDBC_Reset; 209 IOCTL_DBC_DECODEEXTCMD fpDBC_DecodeExtCmd; 210 }DLC_INSTANCE_PRIVATE; 211 212 213 MS_BOOL MApi_XC_DLC_Init_Ex_U2(void *pInstance, XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen); 214 void MApi_XC_DLC_SetSetting_Ex_U2(void *pInstance, XC_DLC_MFinit_Ex *DLC_MFinit_Ex ); 215 void MApi_XC_DLC_SetCurve_U2(void *pInstance, MS_U8 *pNormal, MS_U8 *pLight, MS_U8 *pDark); 216 void MApi_XC_DLC_SetBleSlopPoint_U2(void *pInstance, MS_U16 *pBLESlopPoint); 217 MS_BOOL MApi_XC_DLC_SetHDRInit_U2(void * pInstance,XC_DLC_HDRinit * pstDLC_HDRInitData); 218 #if defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2) 219 MS_BOOL MApi_XC_DLC_SetTMOInfo_U2(void * pInstance, ST_XC_DLC_TMO_INFO *pstDLCTmoInfo); 220 #endif 221 MS_BOOL MApi_XC_DLC_Exit_U2(void *pInstance ); 222 void MApi_XC_DLC_SetOnOff_U2(void *pInstance, MS_BOOL bSwitch, MS_BOOL bWindow); 223 MS_BOOL MApi_XC_DLC_SetDlcHandlerOnOff_U2(void *pInstance, MS_BOOL bDlcEnable ); 224 MS_BOOL MApi_XC_DLC_SetBleOnOff_U2( void *pInstance, MS_BOOL bSwitch ); 225 void MApi_XC_DLC_EnableMainSubCurveSynchronization_U2( void *pInstance, MS_BOOL bEnable); 226 void MApi_XC_DLC_Handler_U2(void *pInstance, MS_BOOL bWindow); 227 MS_BOOL MApi_XC_DLC_GetHistogramHandler_U2(void *pInstance, MS_BOOL bWindow); 228 MS_U8 MApi_XC_DLC_GetAverageValue_U2(void *pInstance); 229 MS_U16 MApi_XC_DLC_GetAverageValue_Ex_U2(void *pInstance); 230 void MApi_XC_DLC_InitCurve_U2(void *pInstance, MS_U16 u16HStart, MS_U16 u16HEnd, MS_U16 u16VStart, MS_U16 u16VEnd); 231 void MApi_XC_DLC_SpeedupTrigger_U2( void *pInstance, MS_U8 u8Loop); 232 MS_BOOL MApi_XC_DLC_GetLumaCurveStatus_U2( void *pInstance ); 233 void MApi_XC_DLC_CGC_ResetCGain_U2(void *pIstance); 234 void MApi_XC_DLC_CGC_CheckCGainInPQCom_U2(void *pInstance); 235 void MApi_XC_DLC_CGC_ResetYGain_U2(void *pInstance); 236 void MApi_XC_DLC_CGC_CheckYGainInPQCom_U2(void *pInstance); 237 void MApi_XC_DLC_CGC_Reset_U2(void *pInstance); 238 void MApi_XC_DLC_CGC_Init_U2(void *pInstance); 239 void MApi_XC_DLC_CGC_ReInit_U2(void *pInstance); 240 void MApi_XC_DLC_CGC_Handler_U2(void *pInstance); 241 E_XC_DLC_RESULT MApi_XC_DLC_GetLibVer_U2(void *pInstance, const MSIF_Version **ppVersion) ; 242 const XC_DLC_ApiInfo * MApi_XC_DLC_GetInfo_U2(void *pInstance); ///< Get info from driver (without Mutex protect) 243 MS_BOOL MApi_XC_DLC_GetStatus_Ex_U2(void *pInstance, XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow); ///< Get panel current status 244 MS_BOOL MApi_XC_DLC_SetDbgLevel_U2(void *pInstance, MS_U16 u16DbgSwitch); ///< Set debug level (without Mutex protect), refer to XC_DBGLEVEL_OFF 245 MS_BOOL MApi_XC_DLC_WriteCurve_U2(void *pInstance, MS_U8 *pu8Table); 246 MS_BOOL MApi_XC_DLC_WriteCurve_Sub_U2(void *pInstance, MS_U8 *pu8Table); 247 MS_BOOL MApi_XC_DLC_GetHistogram_U2(void *pInstance, MS_U16 *pu16Histogram, E_XC_DLC_HISTOGRAM_TYPE enHistogramType); 248 void MApi_XC_DLC_DecodeExtCmd_U2(void *pInstance, tDLC_CONTROL_PARAMS *params); 249 void MApi_XC_DLC_SetCaptureRange_U2(void *pInstance, XC_DLC_CAPTURE_Range *pu16_Range); 250 void MApi_XC_DLC_SetSetting_U2(void *pInstance, XC_DLC_MFinit DLC_MFinit ); // Setting DLC 251 MS_BOOL MApi_XC_DLC_Init_U2(void *pInstance, XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen); // DLC initiation 252 MS_BOOL MApi_XC_DLC_GetStatus_U2(void *pInstance, XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow); // Get DLC current status 253 MS_U32 MApi_XC_DLC_SetPowerState_U2(void* pInstance, EN_POWER_MODE enPowerState); 254 void MApi_XC_DLC_DBC_Init_U2(void *pInstance, XC_DLC_DBC_MFinit DLC_DBC_MFinit); 255 void MApi_XC_DBC_Init_U2(void *pInstance ); 256 void MApi_XC_DLC_DBC_Setstatus_U2(void *pInstance, MS_BOOL bDBCEnable); 257 MS_BOOL MApi_XC_DLC_DBC_Getstatus_U2(void *pInstance); 258 void MApi_XC_DLC_DBC_SetReady_U2(void *pInstance, MS_BOOL bDBCReady); 259 void MApi_XC_DLC_DBC_SetDebugMode_U2(void *pInstance, MS_U8 ucDBC_DebugMode); 260 MS_U8 MApi_XC_DLC_DBC_GetDebugMode_U2(void *pInstance ); 261 void MApi_XC_DLC_DBC_UpdatePWM_U2(void *pInstance, MS_U8 u8PWMvalue); 262 MS_U16 MApi_XC_DLC_DBC_Handler_U2(void *pInstance ); 263 void MApi_XC_DLC_DBC_AdjustYCGain_U2(void *pInstance); 264 void MApi_XC_DLC_DBC_YCGainInit_U2(void *pInstance, MS_U8 u8YGain_M, MS_U8 u8YGain_L, MS_U8 u8CGain_M, MS_U8 u8CGain_L); 265 void MApi_XC_DLC_DBC_Reset_U2(void *pInstance); 266 void MApi_XC_DBC_DecodeExtCmd_U2(void *pInstance, tDBC_CONTROL_PARAMS *params ); 267 268 269 void DLCRegisterToUtopia(FUtopiaOpen ModuleType); 270 MS_U32 DLCOpen(void** ppInstance, const void* const pAttribute); 271 MS_U32 DLCClose(void* pInstance); 272 MS_U32 DLCIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs); 273 #ifdef __cplusplus 274 } 275 #endif 276 277 #undef _APIXC_DLC_PRIV_H_ 278 #endif // _APIXC_DLC_PRIV_H_ 279