xref: /utopia/UTPA2-700.0.x/modules/dlc/api/dlc/apiXC_DLC_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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