xref: /utopia/UTPA2-700.0.x/modules/dlc/api/dlc/apiXC_Dlc_v2.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #include "MsTypes.h"
2*53ee8cc1Swenshuai.xi #include "MsCommon.h"
3*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX_KERNEL
4*53ee8cc1Swenshuai.xi #include <stdio.h>
5*53ee8cc1Swenshuai.xi #include <string.h>
6*53ee8cc1Swenshuai.xi #endif
7*53ee8cc1Swenshuai.xi 
8*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
9*53ee8cc1Swenshuai.xi #include "apiXC_Dlc.h"
10*53ee8cc1Swenshuai.xi #include "apiXC_DBC.h"
11*53ee8cc1Swenshuai.xi #include "apiXC_DLC_private.h"
12*53ee8cc1Swenshuai.xi #include "apiXC_Dlc_v2.h"
13*53ee8cc1Swenshuai.xi #include "utopia.h"
14*53ee8cc1Swenshuai.xi 
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi 
17*53ee8cc1Swenshuai.xi // ========== Global definition ==========
18*53ee8cc1Swenshuai.xi void* pModuleDLC = NULL;
19*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
20*53ee8cc1Swenshuai.xi void* pInstanceDLCStr = NULL;
DLCStr(MS_U32 u32PowerState,void * pModule)21*53ee8cc1Swenshuai.xi MS_U32 DLCStr(MS_U32 u32PowerState, void* pModule)
22*53ee8cc1Swenshuai.xi {
23*53ee8cc1Swenshuai.xi     MS_U32 u32Return=UTOPIA_STATUS_FAIL;
24*53ee8cc1Swenshuai.xi     stDLC_SetPowerState DBCArgs;
25*53ee8cc1Swenshuai.xi 
26*53ee8cc1Swenshuai.xi     switch(u32PowerState)
27*53ee8cc1Swenshuai.xi     {
28*53ee8cc1Swenshuai.xi         case E_POWER_SUSPEND:
29*53ee8cc1Swenshuai.xi             if (pInstanceDLCStr == NULL)
30*53ee8cc1Swenshuai.xi             {
31*53ee8cc1Swenshuai.xi                 if(UtopiaOpen(MODULE_DLC, &pInstanceDLCStr, 0, NULL) != UTOPIA_STATUS_SUCCESS)
32*53ee8cc1Swenshuai.xi                 {
33*53ee8cc1Swenshuai.xi                     printf("UtopiaOpen DBC failed\n");
34*53ee8cc1Swenshuai.xi                     return UTOPIA_STATUS_FAIL;
35*53ee8cc1Swenshuai.xi                 }
36*53ee8cc1Swenshuai.xi             }
37*53ee8cc1Swenshuai.xi             DBCArgs.enPowerState = u32PowerState;
38*53ee8cc1Swenshuai.xi             DBCArgs.u32Return = UTOPIA_STATUS_FAIL;
39*53ee8cc1Swenshuai.xi             if(UtopiaIoctl(pInstanceDLCStr, E_DLC_CMD_SET_POWERSTATE, (void*)&DBCArgs) != UTOPIA_STATUS_SUCCESS)
40*53ee8cc1Swenshuai.xi             {
41*53ee8cc1Swenshuai.xi                 printf("Obtain DBC engine fail\n");
42*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_FAIL;
43*53ee8cc1Swenshuai.xi             }
44*53ee8cc1Swenshuai.xi             u32Return=DBCArgs.u32Return;
45*53ee8cc1Swenshuai.xi             break;
46*53ee8cc1Swenshuai.xi         case E_POWER_RESUME:
47*53ee8cc1Swenshuai.xi             if (pInstanceDLCStr == NULL)
48*53ee8cc1Swenshuai.xi             {
49*53ee8cc1Swenshuai.xi                 if(UtopiaOpen(MODULE_DLC, &pInstanceDLCStr, 0, NULL) != UTOPIA_STATUS_SUCCESS)
50*53ee8cc1Swenshuai.xi                 {
51*53ee8cc1Swenshuai.xi                     printf("UtopiaOpen DBC failed\n");
52*53ee8cc1Swenshuai.xi                     return UTOPIA_STATUS_FAIL;
53*53ee8cc1Swenshuai.xi                 }
54*53ee8cc1Swenshuai.xi             }
55*53ee8cc1Swenshuai.xi             DBCArgs.enPowerState = u32PowerState;
56*53ee8cc1Swenshuai.xi             DBCArgs.u32Return = UTOPIA_STATUS_FAIL;
57*53ee8cc1Swenshuai.xi             if(UtopiaIoctl(pInstanceDLCStr, E_DLC_CMD_SET_POWERSTATE, (void*)&DBCArgs) != UTOPIA_STATUS_SUCCESS)
58*53ee8cc1Swenshuai.xi             {
59*53ee8cc1Swenshuai.xi                 printf("Obtain DBC engine fail\n");
60*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_FAIL;
61*53ee8cc1Swenshuai.xi             }
62*53ee8cc1Swenshuai.xi             u32Return=DBCArgs.u32Return;
63*53ee8cc1Swenshuai.xi             break;
64*53ee8cc1Swenshuai.xi         default:
65*53ee8cc1Swenshuai.xi             printf("[%s][%d] PowerState:%lx not Implement now!!!\n",__FUNCTION__,__LINE__,u32PowerState);
66*53ee8cc1Swenshuai.xi             break;
67*53ee8cc1Swenshuai.xi     }
68*53ee8cc1Swenshuai.xi     return u32Return;
69*53ee8cc1Swenshuai.xi }
70*53ee8cc1Swenshuai.xi #endif
DLCRegisterToUtopia(FUtopiaOpen ModuleType)71*53ee8cc1Swenshuai.xi void DLCRegisterToUtopia(FUtopiaOpen ModuleType)
72*53ee8cc1Swenshuai.xi {
73*53ee8cc1Swenshuai.xi     // 1. deal with module
74*53ee8cc1Swenshuai.xi     UtopiaModuleCreate(MODULE_DLC, 0, &pModuleDLC);
75*53ee8cc1Swenshuai.xi     UtopiaModuleRegister(pModuleDLC);
76*53ee8cc1Swenshuai.xi     // register func for module, after register here, then ap call UtopiaOpen/UtopiaIoctl/UtopiaClose can call to these registered standard func
77*53ee8cc1Swenshuai.xi     UtopiaModuleSetupFunctionPtr(pModuleDLC, (FUtopiaOpen)DLCOpen, (FUtopiaClose)DLCClose, (FUtopiaIOctl)DLCIoctl);
78*53ee8cc1Swenshuai.xi 
79*53ee8cc1Swenshuai.xi     // 2. deal with resource  , XCݥiݭnresourceA䤤@ӬOreadonlyAt~@ӬOXCӥ]resource
80*53ee8cc1Swenshuai.xi     void* psResource = NULL;
81*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL)
82*53ee8cc1Swenshuai.xi     UtopiaModuleSetupSTRFunctionPtr(pModuleDLC, (FUtopiaSTR)DLCStr);
83*53ee8cc1Swenshuai.xi     UtopiaModuleSetSTRPrivate(pModuleDLC, sizeof(DLC_REGS_SAVE_AREA));
84*53ee8cc1Swenshuai.xi #endif
85*53ee8cc1Swenshuai.xi     // 3. resource can allocate private for internal use
86*53ee8cc1Swenshuai.xi     UtopiaModuleAddResourceStart(pModuleDLC, E_DLC_POOL_ID_INTERNAL);
87*53ee8cc1Swenshuai.xi     UtopiaResourceCreate("DLC", sizeof(DLC_RESOURCE_PRIVATE), &psResource);
88*53ee8cc1Swenshuai.xi     UtopiaResourceRegister(pModuleDLC, psResource, E_DLC_POOL_ID_INTERNAL);
89*53ee8cc1Swenshuai.xi     UtopiaModuleAddResourceEnd(pModuleDLC, E_DLC_POOL_ID_INTERNAL);
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi     // shall we init first?
92*53ee8cc1Swenshuai.xi }
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi 
DLCOpen(void ** ppInstance,const void * const pAttribute)95*53ee8cc1Swenshuai.xi MS_U32 DLCOpen(void** ppInstance, const void* const pAttribute)
96*53ee8cc1Swenshuai.xi {
97*53ee8cc1Swenshuai.xi     DLC_INSTANCE_PRIVATE *psDLCInstPri = NULL;
98*53ee8cc1Swenshuai.xi     UtopiaInstanceCreate(sizeof(DLC_INSTANCE_PRIVATE), ppInstance);
99*53ee8cc1Swenshuai.xi     UtopiaInstanceGetPrivate(*ppInstance, (void**)&psDLCInstPri);
100*53ee8cc1Swenshuai.xi 
101*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_Init_Ex = MApi_XC_DLC_Init_Ex_U2;
102*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetSetting_Ex = MApi_XC_DLC_SetSetting_Ex_U2;
103*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetCurve = MApi_XC_DLC_SetCurve_U2;
104*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetBleSlopPoint = MApi_XC_DLC_SetBleSlopPoint_U2;
105*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetHDRInit = MApi_XC_DLC_SetHDRInit_U2;
106*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR
107*53ee8cc1Swenshuai.xi #if (UFO_XC_HDR_VERSION == 2)
108*53ee8cc1Swenshuai.xi //MApi_XC_DLC_SetTMOInfo_U2 is defined by (UFO_XC_HDR_VERSION == 2)
109*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetTMOInfo = MApi_XC_DLC_SetTMOInfo_U2;
110*53ee8cc1Swenshuai.xi #endif
111*53ee8cc1Swenshuai.xi #endif
112*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_Exit = MApi_XC_DLC_Exit_U2;
113*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetOnOff = MApi_XC_DLC_SetOnOff_U2;
114*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetDlcHandlerOnOff = MApi_XC_DLC_SetDlcHandlerOnOff_U2;
115*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetBleOnOff = MApi_XC_DLC_SetBleOnOff_U2;
116*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_EnableMainSubCurveSynchronization = MApi_XC_DLC_EnableMainSubCurveSynchronization_U2;
117*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_Handler = MApi_XC_DLC_Handler_U2;
118*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetHistogramHandler = MApi_XC_DLC_GetHistogramHandler_U2;
119*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetAverageValue = MApi_XC_DLC_GetAverageValue_U2;
120*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetAverageValue_Ex = MApi_XC_DLC_GetAverageValue_Ex_U2;
121*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_InitCurve = MApi_XC_DLC_InitCurve_U2;
122*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SpeedupTrigger = MApi_XC_DLC_SpeedupTrigger_U2;
123*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetLumaCurveStatus = MApi_XC_DLC_GetLumaCurveStatus_U2;
124*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_ResetCGain = MApi_XC_DLC_CGC_ResetCGain_U2;
125*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_CheckCGainInPQCom = MApi_XC_DLC_CGC_CheckCGainInPQCom_U2;
126*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_ResetYGain = MApi_XC_DLC_CGC_ResetYGain_U2;
127*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_CheckYGainInPQCom = MApi_XC_DLC_CGC_CheckYGainInPQCom_U2;
128*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_Reset = MApi_XC_DLC_CGC_Reset_U2;
129*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_Init = MApi_XC_DLC_CGC_Init_U2;
130*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_ReInit = MApi_XC_DLC_CGC_ReInit_U2;
131*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_CGC_Handler = MApi_XC_DLC_CGC_Handler_U2;
132*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetLibVer = MApi_XC_DLC_GetLibVer_U2;
133*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetInfo = MApi_XC_DLC_GetInfo_U2;
134*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetStatus_Ex = MApi_XC_DLC_GetStatus_Ex_U2;
135*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetDbgLevel = MApi_XC_DLC_SetDbgLevel_U2;
136*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_WriteCurve = MApi_XC_DLC_WriteCurve_U2;
137*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_WriteCurve_Sub = MApi_XC_DLC_WriteCurve_Sub_U2;
138*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetHistogram = MApi_XC_DLC_GetHistogram_U2;
139*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_DecodeExtCmd = MApi_XC_DLC_DecodeExtCmd_U2;
140*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetCaptureRange = MApi_XC_DLC_SetCaptureRange_U2;
141*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetSetting = MApi_XC_DLC_SetSetting_U2;
142*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_Init = MApi_XC_DLC_Init_U2;
143*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_GetStatus = MApi_XC_DLC_GetStatus_U2;
144*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDLC_SetPowerState = MApi_XC_DLC_SetPowerState_U2;
145*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_DLC_Init =MApi_XC_DLC_DBC_Init_U2 ;
146*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_Init =MApi_XC_DBC_Init_U2 ;
147*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_Setstatus= MApi_XC_DLC_DBC_Setstatus_U2;
148*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_Getstatus =MApi_XC_DLC_DBC_Getstatus_U2 ;
149*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_SetReady = MApi_XC_DLC_DBC_SetReady_U2;
150*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_SetDebugMode =MApi_XC_DLC_DBC_SetDebugMode_U2 ;
151*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_GetDebugMode = MApi_XC_DLC_DBC_GetDebugMode_U2;
152*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_UpdatePWM =MApi_XC_DLC_DBC_UpdatePWM_U2 ;
153*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_Handler =MApi_XC_DLC_DBC_Handler_U2 ;
154*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_AdjustYCGain = MApi_XC_DLC_DBC_AdjustYCGain_U2;
155*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_YCGainInit = MApi_XC_DLC_DBC_YCGainInit_U2;
156*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_Reset = MApi_XC_DLC_DBC_Reset_U2;
157*53ee8cc1Swenshuai.xi     psDLCInstPri->fpDBC_DecodeExtCmd = MApi_XC_DBC_DecodeExtCmd_U2;
158*53ee8cc1Swenshuai.xi     return UTOPIA_STATUS_SUCCESS;
159*53ee8cc1Swenshuai.xi }
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi 
DLCIoctl(void * pInstance,MS_U32 u32Cmd,void * pArgs)162*53ee8cc1Swenshuai.xi MS_U32 DLCIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs)
163*53ee8cc1Swenshuai.xi {
164*53ee8cc1Swenshuai.xi     void* pModule = NULL;
165*53ee8cc1Swenshuai.xi     void* pResource = NULL;
166*53ee8cc1Swenshuai.xi     DLC_INSTANCE_PRIVATE* psDLCInstPri = NULL;
167*53ee8cc1Swenshuai.xi     UtopiaInstanceGetPrivate(pInstance, (void*)&psDLCInstPri);
168*53ee8cc1Swenshuai.xi     UtopiaInstanceGetModule(pInstance, &pModule);
169*53ee8cc1Swenshuai.xi     //printf("[%s,%5d] u32Cmd type = %ld\n",__FUNCTION__,__LINE__,u32Cmd);
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi     switch(u32Cmd)
173*53ee8cc1Swenshuai.xi     {
174*53ee8cc1Swenshuai.xi         case E_DLC_CMD_INIT_EX:
175*53ee8cc1Swenshuai.xi         {
176*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
177*53ee8cc1Swenshuai.xi             {
178*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
179*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
180*53ee8cc1Swenshuai.xi             }
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi             pstDLC_Init_Ex pDLCArgs = (pstDLC_Init_Ex)pArgs;
183*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_Init_Ex(pInstance, pDLCArgs->pstXC_DLC_InitData ,pDLCArgs->u32InitDataLen);
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
186*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
187*53ee8cc1Swenshuai.xi             break;
188*53ee8cc1Swenshuai.xi         }
189*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_SETTING_EX:
190*53ee8cc1Swenshuai.xi         {
191*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
192*53ee8cc1Swenshuai.xi             {
193*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
194*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
195*53ee8cc1Swenshuai.xi             }
196*53ee8cc1Swenshuai.xi 
197*53ee8cc1Swenshuai.xi             pstDLC_SetSetting_Ex pDLCArgs = (pstDLC_SetSetting_Ex)pArgs;
198*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetSetting_Ex(pInstance, pDLCArgs->DLC_MFinit_Ex);
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
201*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
202*53ee8cc1Swenshuai.xi             break;
203*53ee8cc1Swenshuai.xi         }
204*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_CURVE:
205*53ee8cc1Swenshuai.xi         {
206*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
207*53ee8cc1Swenshuai.xi             {
208*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
209*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
210*53ee8cc1Swenshuai.xi             }
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi             pstDLC_SetCurve pDLCArgs = (pstDLC_SetCurve)pArgs;
213*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetCurve(pInstance, pDLCArgs->pNormal ,pDLCArgs->pLight ,pDLCArgs->pDark);
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
216*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
217*53ee8cc1Swenshuai.xi             break;
218*53ee8cc1Swenshuai.xi         }
219*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_BLE_SLOP_POINT:
220*53ee8cc1Swenshuai.xi         {
221*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
222*53ee8cc1Swenshuai.xi             {
223*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
224*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
225*53ee8cc1Swenshuai.xi             }
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi             pstDLC_SetBleSlopPoint pDLCArgs = (pstDLC_SetBleSlopPoint)pArgs;
228*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetBleSlopPoint(pInstance, pDLCArgs->pBLESlopPoint );
229*53ee8cc1Swenshuai.xi 
230*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
231*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
232*53ee8cc1Swenshuai.xi             break;
233*53ee8cc1Swenshuai.xi         }
234*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_HDR_INFO:
235*53ee8cc1Swenshuai.xi         {
236*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
237*53ee8cc1Swenshuai.xi             {
238*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
239*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
240*53ee8cc1Swenshuai.xi             }
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi             pstDLC_HDRInitData pDLCArgs = (pstDLC_HDRInitData)pArgs;
243*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_SetHDRInit(pInstance, pDLCArgs->pstDLC_HDRInitData );
244*53ee8cc1Swenshuai.xi 
245*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
246*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
247*53ee8cc1Swenshuai.xi             break;
248*53ee8cc1Swenshuai.xi         }
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_TMOINFO:
251*53ee8cc1Swenshuai.xi         {
252*53ee8cc1Swenshuai.xi             #if defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2)
253*53ee8cc1Swenshuai.xi                 if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
254*53ee8cc1Swenshuai.xi                 {
255*53ee8cc1Swenshuai.xi                     printf("UtopiaDlcResourceObtain fail\n");
256*53ee8cc1Swenshuai.xi                     return UTOPIA_STATUS_ERR_RESOURCE;
257*53ee8cc1Swenshuai.xi                 }
258*53ee8cc1Swenshuai.xi 
259*53ee8cc1Swenshuai.xi                 pstDLC_SetTMOInfo pDLCArgs = (pstDLC_SetTMOInfo)pArgs;
260*53ee8cc1Swenshuai.xi                 pDLCArgs->bReturn = psDLCInstPri->fpDLC_SetTMOInfo(pInstance, pDLCArgs->pstDLC_TMOInfo );
261*53ee8cc1Swenshuai.xi 
262*53ee8cc1Swenshuai.xi                 UtopiaResourceRelease(pResource);
263*53ee8cc1Swenshuai.xi             #endif
264*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
265*53ee8cc1Swenshuai.xi             break;
266*53ee8cc1Swenshuai.xi         }
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi         case E_DLC_CMD_EXIT:
269*53ee8cc1Swenshuai.xi         {
270*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
271*53ee8cc1Swenshuai.xi             {
272*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
273*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
274*53ee8cc1Swenshuai.xi             }
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi             pstDLC_Exit pDLCArgs = (pstDLC_Exit)pArgs;
277*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_Exit(pInstance);
278*53ee8cc1Swenshuai.xi 
279*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
280*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
281*53ee8cc1Swenshuai.xi             break;
282*53ee8cc1Swenshuai.xi         }
283*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_ON_OFF:
284*53ee8cc1Swenshuai.xi         {
285*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
286*53ee8cc1Swenshuai.xi             {
287*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
288*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
289*53ee8cc1Swenshuai.xi             }
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi             pstDLC_SetOnOff pDLCArgs = (pstDLC_SetOnOff)pArgs;
292*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetOnOff(pInstance, pDLCArgs->bSwitch ,pDLCArgs->bWindow);
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
295*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
296*53ee8cc1Swenshuai.xi             break;
297*53ee8cc1Swenshuai.xi         }
298*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_HANDLER_ON_OFF:
299*53ee8cc1Swenshuai.xi         {
300*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
301*53ee8cc1Swenshuai.xi             {
302*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
303*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
304*53ee8cc1Swenshuai.xi             }
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi             pstDLC_SetDlcHandlerOnOff pDLCArgs = (pstDLC_SetDlcHandlerOnOff)pArgs;
307*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetDlcHandlerOnOff(pInstance, pDLCArgs->bDlcEnable );
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
310*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
311*53ee8cc1Swenshuai.xi             break;
312*53ee8cc1Swenshuai.xi         }
313*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_BLE_ON_OFF:
314*53ee8cc1Swenshuai.xi         {
315*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
316*53ee8cc1Swenshuai.xi             {
317*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
318*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
319*53ee8cc1Swenshuai.xi             }
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi             pstDLC_SetBleOnOff pDLCArgs = (pstDLC_SetBleOnOff)pArgs;
322*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_SetBleOnOff(pInstance, pDLCArgs->bSwitch );
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
325*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
326*53ee8cc1Swenshuai.xi             break;
327*53ee8cc1Swenshuai.xi         }
328*53ee8cc1Swenshuai.xi         case E_DLC_CMD_ENABLE_MAIN_SUB_CURVE_SYNCHRONIZATION:
329*53ee8cc1Swenshuai.xi         {
330*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
331*53ee8cc1Swenshuai.xi             {
332*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
333*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
334*53ee8cc1Swenshuai.xi             }
335*53ee8cc1Swenshuai.xi 
336*53ee8cc1Swenshuai.xi              pstDLC_EnableMainSubCurveSynchronization pDLCArgs = (pstDLC_EnableMainSubCurveSynchronization)pArgs;
337*53ee8cc1Swenshuai.xi              psDLCInstPri->fpDLC_EnableMainSubCurveSynchronization(pInstance, pDLCArgs->bEnable );
338*53ee8cc1Swenshuai.xi 
339*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
340*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
341*53ee8cc1Swenshuai.xi             break;
342*53ee8cc1Swenshuai.xi         }
343*53ee8cc1Swenshuai.xi         case E_DLC_CMD_HANDLER:
344*53ee8cc1Swenshuai.xi         {
345*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
346*53ee8cc1Swenshuai.xi             {
347*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
348*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
349*53ee8cc1Swenshuai.xi             }
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi             pstDLC_Handler pDLCArgs = (pstDLC_Handler)pArgs;
352*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_Handler(pInstance, pDLCArgs->bWindow);
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
355*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
356*53ee8cc1Swenshuai.xi             break;
357*53ee8cc1Swenshuai.xi         }
358*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_HISTOGRAM_HANDLER:
359*53ee8cc1Swenshuai.xi         {
360*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
361*53ee8cc1Swenshuai.xi             {
362*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
363*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
364*53ee8cc1Swenshuai.xi             }
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi             pstDLC_GetHistogramHandler pDLCArgs = (pstDLC_GetHistogramHandler)pArgs;
367*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_GetHistogramHandler(pInstance, pDLCArgs->bWindow );
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
370*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
371*53ee8cc1Swenshuai.xi             break;
372*53ee8cc1Swenshuai.xi         }
373*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_AVERAGE_VALUE:
374*53ee8cc1Swenshuai.xi         {
375*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
376*53ee8cc1Swenshuai.xi             {
377*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
378*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
379*53ee8cc1Swenshuai.xi             }
380*53ee8cc1Swenshuai.xi 
381*53ee8cc1Swenshuai.xi             pstDLC_GetAverageValue pDLCArgs = (pstDLC_GetAverageValue)pArgs;
382*53ee8cc1Swenshuai.xi             pDLCArgs->u8Return = psDLCInstPri->fpDLC_GetAverageValue(pInstance);
383*53ee8cc1Swenshuai.xi 
384*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
385*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
386*53ee8cc1Swenshuai.xi             break;
387*53ee8cc1Swenshuai.xi         }
388*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_AVERAGE_VALUE_EX:
389*53ee8cc1Swenshuai.xi         {
390*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
391*53ee8cc1Swenshuai.xi             {
392*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
393*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
394*53ee8cc1Swenshuai.xi             }
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi             pstDLC_GetAverageValue_Ex pDLCArgs = (pstDLC_GetAverageValue_Ex)pArgs;
397*53ee8cc1Swenshuai.xi             pDLCArgs->u16Return = psDLCInstPri->fpDLC_GetAverageValue_Ex(pInstance);
398*53ee8cc1Swenshuai.xi 
399*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
400*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
401*53ee8cc1Swenshuai.xi             break;
402*53ee8cc1Swenshuai.xi         }
403*53ee8cc1Swenshuai.xi         case E_DLC_CMD_INIT_CURVE:
404*53ee8cc1Swenshuai.xi         {
405*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
406*53ee8cc1Swenshuai.xi             {
407*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
408*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
409*53ee8cc1Swenshuai.xi             }
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi              pstDLC_InitCurve pDLCArgs = (pstDLC_InitCurve)pArgs;
413*53ee8cc1Swenshuai.xi              psDLCInstPri->fpDLC_InitCurve(pInstance, pDLCArgs->u16HStart , pDLCArgs->u16HEnd , pDLCArgs->u16VStart , pDLCArgs->u16VEnd );
414*53ee8cc1Swenshuai.xi 
415*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
416*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
417*53ee8cc1Swenshuai.xi             break;
418*53ee8cc1Swenshuai.xi         }
419*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SPEEDUP_TRIGGER:
420*53ee8cc1Swenshuai.xi         {
421*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
422*53ee8cc1Swenshuai.xi             {
423*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
424*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
425*53ee8cc1Swenshuai.xi             }
426*53ee8cc1Swenshuai.xi 
427*53ee8cc1Swenshuai.xi             pstDLC_SpeedupTrigger pDLCArgs = (pstDLC_SpeedupTrigger)pArgs;
428*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SpeedupTrigger(pInstance, pDLCArgs->u8Loop );
429*53ee8cc1Swenshuai.xi 
430*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
431*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
432*53ee8cc1Swenshuai.xi             break;
433*53ee8cc1Swenshuai.xi         }
434*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_LUMA_CURVE_STATUS:
435*53ee8cc1Swenshuai.xi         {
436*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
437*53ee8cc1Swenshuai.xi             {
438*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
439*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
440*53ee8cc1Swenshuai.xi             }
441*53ee8cc1Swenshuai.xi 
442*53ee8cc1Swenshuai.xi             pstDLC_GetLumaCurveStatus pDLCArgs = (pstDLC_GetLumaCurveStatus)pArgs;
443*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_GetLumaCurveStatus(pInstance);
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
446*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
447*53ee8cc1Swenshuai.xi             break;
448*53ee8cc1Swenshuai.xi         }
449*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_RESET_C_GAIN:
450*53ee8cc1Swenshuai.xi         {
451*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
452*53ee8cc1Swenshuai.xi             {
453*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
454*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
455*53ee8cc1Swenshuai.xi             }
456*53ee8cc1Swenshuai.xi 
457*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_ResetCGain(pInstance);
458*53ee8cc1Swenshuai.xi 
459*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
460*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
461*53ee8cc1Swenshuai.xi             break;
462*53ee8cc1Swenshuai.xi         }
463*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_CHECK_C_GAIN_IN_PQ_COM:
464*53ee8cc1Swenshuai.xi         {
465*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
466*53ee8cc1Swenshuai.xi             {
467*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
468*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
469*53ee8cc1Swenshuai.xi             }
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_CheckCGainInPQCom(pInstance);
472*53ee8cc1Swenshuai.xi 
473*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
474*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
475*53ee8cc1Swenshuai.xi             break;
476*53ee8cc1Swenshuai.xi         }
477*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_RESET_Y_GAIN:
478*53ee8cc1Swenshuai.xi         {
479*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
480*53ee8cc1Swenshuai.xi             {
481*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
482*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
483*53ee8cc1Swenshuai.xi             }
484*53ee8cc1Swenshuai.xi 
485*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_ResetYGain(pInstance);
486*53ee8cc1Swenshuai.xi 
487*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
488*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
489*53ee8cc1Swenshuai.xi             break;
490*53ee8cc1Swenshuai.xi         }
491*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_CHECK_Y_GAIN_IN_PQ_COM:
492*53ee8cc1Swenshuai.xi         {
493*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
494*53ee8cc1Swenshuai.xi             {
495*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
496*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
497*53ee8cc1Swenshuai.xi             }
498*53ee8cc1Swenshuai.xi 
499*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_CheckYGainInPQCom(pInstance);
500*53ee8cc1Swenshuai.xi 
501*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
502*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
503*53ee8cc1Swenshuai.xi             break;
504*53ee8cc1Swenshuai.xi         }
505*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_RESET:
506*53ee8cc1Swenshuai.xi         {
507*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
508*53ee8cc1Swenshuai.xi             {
509*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
510*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
511*53ee8cc1Swenshuai.xi             }
512*53ee8cc1Swenshuai.xi 
513*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_Reset(pInstance);
514*53ee8cc1Swenshuai.xi 
515*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
516*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
517*53ee8cc1Swenshuai.xi             break;
518*53ee8cc1Swenshuai.xi         }
519*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_INIT:
520*53ee8cc1Swenshuai.xi         {
521*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
522*53ee8cc1Swenshuai.xi             {
523*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
524*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
525*53ee8cc1Swenshuai.xi             }
526*53ee8cc1Swenshuai.xi 
527*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_Init(pInstance);
528*53ee8cc1Swenshuai.xi 
529*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
530*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
531*53ee8cc1Swenshuai.xi             break;
532*53ee8cc1Swenshuai.xi         }
533*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_REINIT:
534*53ee8cc1Swenshuai.xi         {
535*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
536*53ee8cc1Swenshuai.xi             {
537*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
538*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
539*53ee8cc1Swenshuai.xi             }
540*53ee8cc1Swenshuai.xi 
541*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_ReInit(pInstance);
542*53ee8cc1Swenshuai.xi 
543*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
544*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
545*53ee8cc1Swenshuai.xi             break;
546*53ee8cc1Swenshuai.xi         }
547*53ee8cc1Swenshuai.xi         case E_DLC_CMD_CGC_HANDLER:
548*53ee8cc1Swenshuai.xi         {
549*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
550*53ee8cc1Swenshuai.xi             {
551*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
552*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
553*53ee8cc1Swenshuai.xi             }
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_CGC_Handler(pInstance);
556*53ee8cc1Swenshuai.xi 
557*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
558*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
559*53ee8cc1Swenshuai.xi             break;
560*53ee8cc1Swenshuai.xi         }
561*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_LIB_VER:
562*53ee8cc1Swenshuai.xi         {
563*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
564*53ee8cc1Swenshuai.xi             {
565*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
566*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
567*53ee8cc1Swenshuai.xi             }
568*53ee8cc1Swenshuai.xi 
569*53ee8cc1Swenshuai.xi             pstDLC_GetLibVer pDLCArgs = (pstDLC_GetLibVer)pArgs;
570*53ee8cc1Swenshuai.xi             pDLCArgs->eResult = psDLCInstPri->fpDLC_GetLibVer(pInstance, pDLCArgs->ppVersion);
571*53ee8cc1Swenshuai.xi 
572*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
573*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
574*53ee8cc1Swenshuai.xi             break;
575*53ee8cc1Swenshuai.xi         }
576*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_INFO:
577*53ee8cc1Swenshuai.xi         {
578*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
579*53ee8cc1Swenshuai.xi             {
580*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
581*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
582*53ee8cc1Swenshuai.xi             }
583*53ee8cc1Swenshuai.xi 
584*53ee8cc1Swenshuai.xi             pstDLC_GetInfo pDLCArgs = (pstDLC_GetInfo)pArgs;
585*53ee8cc1Swenshuai.xi             pDLCArgs->eResult = psDLCInstPri->fpDLC_GetInfo(pInstance);
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
588*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
589*53ee8cc1Swenshuai.xi             break;
590*53ee8cc1Swenshuai.xi         }
591*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_STATUS_EX:
592*53ee8cc1Swenshuai.xi         {
593*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
594*53ee8cc1Swenshuai.xi             {
595*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
596*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
597*53ee8cc1Swenshuai.xi             }
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi             pstDLC_GetStatus_Ex pDLCArgs = (pstDLC_GetStatus_Ex)pArgs;
600*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_GetStatus_Ex(pInstance, pDLCArgs->pDrvStatus ,pDLCArgs->bWindow);
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
603*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
604*53ee8cc1Swenshuai.xi             break;
605*53ee8cc1Swenshuai.xi         }
606*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_DBG_LEVEL:
607*53ee8cc1Swenshuai.xi         {
608*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
609*53ee8cc1Swenshuai.xi             {
610*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
611*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
612*53ee8cc1Swenshuai.xi             }
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi             pstDLC_SetDbgLevel pDLCArgs = (pstDLC_SetDbgLevel)pArgs;
615*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_SetDbgLevel(pInstance, pDLCArgs->u16DbgSwitch);
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
618*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
619*53ee8cc1Swenshuai.xi             break;
620*53ee8cc1Swenshuai.xi         }
621*53ee8cc1Swenshuai.xi         case E_DLC_CMD_WRITE_CURVE:
622*53ee8cc1Swenshuai.xi         {
623*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
624*53ee8cc1Swenshuai.xi             {
625*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
626*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
627*53ee8cc1Swenshuai.xi             }
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi             pstDLC_WriteCurve pDLCArgs = (pstDLC_WriteCurve)pArgs;
630*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_WriteCurve(pInstance, pDLCArgs->pu8Table );
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
633*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
634*53ee8cc1Swenshuai.xi             break;
635*53ee8cc1Swenshuai.xi         }
636*53ee8cc1Swenshuai.xi         case E_DLC_CMD_WRITE_CURVE_SUB:
637*53ee8cc1Swenshuai.xi         {
638*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
639*53ee8cc1Swenshuai.xi             {
640*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
641*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
642*53ee8cc1Swenshuai.xi             }
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi             pstDLC_WriteCurve_Sub pDLCArgs = (pstDLC_WriteCurve_Sub)pArgs;
645*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_WriteCurve_Sub(pInstance, pDLCArgs->pu8Table );
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
648*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
649*53ee8cc1Swenshuai.xi             break;
650*53ee8cc1Swenshuai.xi         }
651*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_HISTOGRAM:
652*53ee8cc1Swenshuai.xi         {
653*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
654*53ee8cc1Swenshuai.xi             {
655*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
656*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
657*53ee8cc1Swenshuai.xi             }
658*53ee8cc1Swenshuai.xi 
659*53ee8cc1Swenshuai.xi             pstDLC_GetHistogram pDLCArgs = (pstDLC_GetHistogram)pArgs;
660*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_GetHistogram(pInstance, pDLCArgs->pu16Histogram ,pDLCArgs->enHistogramType);
661*53ee8cc1Swenshuai.xi 
662*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
663*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
664*53ee8cc1Swenshuai.xi             break;
665*53ee8cc1Swenshuai.xi         }
666*53ee8cc1Swenshuai.xi         case E_DLC_CMD_DECODE_EXT_CMD:
667*53ee8cc1Swenshuai.xi         {
668*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
669*53ee8cc1Swenshuai.xi             {
670*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
671*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
672*53ee8cc1Swenshuai.xi             }
673*53ee8cc1Swenshuai.xi 
674*53ee8cc1Swenshuai.xi             pstDLC_DecodeExtCmd pDLCArgs = (pstDLC_DecodeExtCmd)pArgs;
675*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_DecodeExtCmd(pInstance, pDLCArgs->params );
676*53ee8cc1Swenshuai.xi 
677*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
678*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
679*53ee8cc1Swenshuai.xi             break;
680*53ee8cc1Swenshuai.xi         }
681*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_CAPTURE_RANGE:
682*53ee8cc1Swenshuai.xi         {
683*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
684*53ee8cc1Swenshuai.xi             {
685*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
686*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
687*53ee8cc1Swenshuai.xi             }
688*53ee8cc1Swenshuai.xi 
689*53ee8cc1Swenshuai.xi             pstDLC_SetCaptureRange pDLCArgs = (pstDLC_SetCaptureRange)pArgs;
690*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetCaptureRange(pInstance, pDLCArgs->pu16_Range );
691*53ee8cc1Swenshuai.xi 
692*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
693*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
694*53ee8cc1Swenshuai.xi             break;
695*53ee8cc1Swenshuai.xi         }
696*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_SETTING:
697*53ee8cc1Swenshuai.xi         {
698*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
699*53ee8cc1Swenshuai.xi             {
700*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
701*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
702*53ee8cc1Swenshuai.xi             }
703*53ee8cc1Swenshuai.xi 
704*53ee8cc1Swenshuai.xi             pstDLC_SetSetting pDLCArgs = (pstDLC_SetSetting)pArgs;
705*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDLC_SetSetting(pInstance, pDLCArgs->DLC_MFinit);
706*53ee8cc1Swenshuai.xi 
707*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
708*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
709*53ee8cc1Swenshuai.xi             break;
710*53ee8cc1Swenshuai.xi         }
711*53ee8cc1Swenshuai.xi         case E_DLC_CMD_INIT:
712*53ee8cc1Swenshuai.xi         {
713*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
714*53ee8cc1Swenshuai.xi             {
715*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
716*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
717*53ee8cc1Swenshuai.xi             }
718*53ee8cc1Swenshuai.xi 
719*53ee8cc1Swenshuai.xi             pstDLC_Init pDLCArgs = (pstDLC_Init)pArgs;
720*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_Init(pInstance, pDLCArgs->pstXC_DLC_InitData ,pDLCArgs->u32InitDataLen);
721*53ee8cc1Swenshuai.xi 
722*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
723*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
724*53ee8cc1Swenshuai.xi             break;
725*53ee8cc1Swenshuai.xi         }
726*53ee8cc1Swenshuai.xi         case E_DLC_CMD_GET_STATUS:
727*53ee8cc1Swenshuai.xi         {
728*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
729*53ee8cc1Swenshuai.xi             {
730*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
731*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
732*53ee8cc1Swenshuai.xi             }
733*53ee8cc1Swenshuai.xi 
734*53ee8cc1Swenshuai.xi             pstDLC_GetStatus pDLCArgs = (pstDLC_GetStatus)pArgs;
735*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDLC_GetStatus(pInstance, pDLCArgs->pDrvStatus ,pDLCArgs->bWindow);
736*53ee8cc1Swenshuai.xi 
737*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
738*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
739*53ee8cc1Swenshuai.xi             break;
740*53ee8cc1Swenshuai.xi         }
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi         case E_DLC_CMD_SET_POWERSTATE:
743*53ee8cc1Swenshuai.xi         {
744*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
745*53ee8cc1Swenshuai.xi             {
746*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
747*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
748*53ee8cc1Swenshuai.xi             }
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi             pstDLC_SetPowerState pDLCArgs = (pstDLC_SetPowerState)pArgs;
751*53ee8cc1Swenshuai.xi             pDLCArgs->u32Return = psDLCInstPri->fpDLC_SetPowerState(pInstance, pDLCArgs->enPowerState);
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
754*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
755*53ee8cc1Swenshuai.xi             break;
756*53ee8cc1Swenshuai.xi         }
757*53ee8cc1Swenshuai.xi 
758*53ee8cc1Swenshuai.xi         case E_DBC_CMD_DLC_INIT:
759*53ee8cc1Swenshuai.xi         {
760*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
761*53ee8cc1Swenshuai.xi             {
762*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
763*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
764*53ee8cc1Swenshuai.xi             }
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi             pstDBC_DLC_Init pDLCArgs = (pstDBC_DLC_Init)pArgs;
767*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_DLC_Init(pInstance, pDLCArgs->DLC_DBC_MFinit );
768*53ee8cc1Swenshuai.xi 
769*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
770*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
771*53ee8cc1Swenshuai.xi             break;
772*53ee8cc1Swenshuai.xi         }
773*53ee8cc1Swenshuai.xi         case E_DBC_CMD_INIT:
774*53ee8cc1Swenshuai.xi         {
775*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
776*53ee8cc1Swenshuai.xi             {
777*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
778*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
779*53ee8cc1Swenshuai.xi             }
780*53ee8cc1Swenshuai.xi 
781*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_Init(pInstance );
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
784*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
785*53ee8cc1Swenshuai.xi             break;
786*53ee8cc1Swenshuai.xi         }
787*53ee8cc1Swenshuai.xi         case E_DBC_CMD_SET_STATUS:
788*53ee8cc1Swenshuai.xi         {
789*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
790*53ee8cc1Swenshuai.xi             {
791*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
792*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
793*53ee8cc1Swenshuai.xi             }
794*53ee8cc1Swenshuai.xi 
795*53ee8cc1Swenshuai.xi             pstDBC_Setstatus pDLCArgs = (pstDBC_Setstatus)pArgs;
796*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_Setstatus(pInstance,  pDLCArgs->bDBCEnable );
797*53ee8cc1Swenshuai.xi 
798*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
799*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
800*53ee8cc1Swenshuai.xi             break;
801*53ee8cc1Swenshuai.xi         }
802*53ee8cc1Swenshuai.xi         case E_DBC_CMD_GET_STATUS:
803*53ee8cc1Swenshuai.xi         {
804*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
805*53ee8cc1Swenshuai.xi             {
806*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
807*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
808*53ee8cc1Swenshuai.xi             }
809*53ee8cc1Swenshuai.xi 
810*53ee8cc1Swenshuai.xi             pstDBC_Getstatus pDLCArgs = (pstDBC_Getstatus)pArgs;
811*53ee8cc1Swenshuai.xi             pDLCArgs->bReturn = psDLCInstPri->fpDBC_Getstatus(pInstance);
812*53ee8cc1Swenshuai.xi 
813*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
814*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
815*53ee8cc1Swenshuai.xi             break;
816*53ee8cc1Swenshuai.xi         }
817*53ee8cc1Swenshuai.xi         case E_DBC_CMD_SET_READY:
818*53ee8cc1Swenshuai.xi         {
819*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
820*53ee8cc1Swenshuai.xi             {
821*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
822*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
823*53ee8cc1Swenshuai.xi             }
824*53ee8cc1Swenshuai.xi 
825*53ee8cc1Swenshuai.xi             pstDBC_SetReady pDLCArgs = (pstDBC_SetReady)pArgs;
826*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_SetReady(pInstance,  pDLCArgs->bDBCReady);
827*53ee8cc1Swenshuai.xi 
828*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
829*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
830*53ee8cc1Swenshuai.xi             break;
831*53ee8cc1Swenshuai.xi         }
832*53ee8cc1Swenshuai.xi         case E_DBC_CMD_SET_DEBUG_MODE:
833*53ee8cc1Swenshuai.xi         {
834*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
835*53ee8cc1Swenshuai.xi             {
836*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
837*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
838*53ee8cc1Swenshuai.xi             }
839*53ee8cc1Swenshuai.xi 
840*53ee8cc1Swenshuai.xi             pstDBC_SetDebugMode pDLCArgs = (pstDBC_SetDebugMode)pArgs;
841*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_SetDebugMode(pInstance,  pDLCArgs->ucDBC_DebugMode);
842*53ee8cc1Swenshuai.xi 
843*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
844*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
845*53ee8cc1Swenshuai.xi             break;
846*53ee8cc1Swenshuai.xi         }
847*53ee8cc1Swenshuai.xi         case E_DBC_CMD_GET_DEBUG_MODE:
848*53ee8cc1Swenshuai.xi         {
849*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
850*53ee8cc1Swenshuai.xi             {
851*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
852*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
853*53ee8cc1Swenshuai.xi             }
854*53ee8cc1Swenshuai.xi 
855*53ee8cc1Swenshuai.xi             pstDBC_GetDebugMode pDLCArgs = (pstDBC_GetDebugMode)pArgs;
856*53ee8cc1Swenshuai.xi             pDLCArgs->u8Return = psDLCInstPri->fpDBC_GetDebugMode(pInstance);
857*53ee8cc1Swenshuai.xi 
858*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
859*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
860*53ee8cc1Swenshuai.xi             break;
861*53ee8cc1Swenshuai.xi         }
862*53ee8cc1Swenshuai.xi         case E_DBC_CMD_UPDATE_PWM:
863*53ee8cc1Swenshuai.xi         {
864*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
865*53ee8cc1Swenshuai.xi             {
866*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
867*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
868*53ee8cc1Swenshuai.xi             }
869*53ee8cc1Swenshuai.xi 
870*53ee8cc1Swenshuai.xi             pstDBC_UpdatePWM pDLCArgs = (pstDBC_UpdatePWM)pArgs;
871*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_UpdatePWM(pInstance ,pDLCArgs->u8PWMvalue);
872*53ee8cc1Swenshuai.xi 
873*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
874*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
875*53ee8cc1Swenshuai.xi             break;
876*53ee8cc1Swenshuai.xi         }
877*53ee8cc1Swenshuai.xi         case E_DBC_CMD_HANDLER:
878*53ee8cc1Swenshuai.xi         {
879*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
880*53ee8cc1Swenshuai.xi             {
881*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
882*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
883*53ee8cc1Swenshuai.xi             }
884*53ee8cc1Swenshuai.xi 
885*53ee8cc1Swenshuai.xi             pstDBC_Handler pDLCArgs = (pstDBC_Handler)pArgs;
886*53ee8cc1Swenshuai.xi             pDLCArgs->u16Return = psDLCInstPri->fpDBC_Handler(pInstance );
887*53ee8cc1Swenshuai.xi 
888*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
889*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
890*53ee8cc1Swenshuai.xi             break;
891*53ee8cc1Swenshuai.xi         }
892*53ee8cc1Swenshuai.xi         case E_DBC_CMD_ADJUST_YC_GAIN:
893*53ee8cc1Swenshuai.xi         {
894*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
895*53ee8cc1Swenshuai.xi             {
896*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
897*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
898*53ee8cc1Swenshuai.xi             }
899*53ee8cc1Swenshuai.xi 
900*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_AdjustYCGain(pInstance );
901*53ee8cc1Swenshuai.xi 
902*53ee8cc1Swenshuai.xi 
903*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
904*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
905*53ee8cc1Swenshuai.xi             break;
906*53ee8cc1Swenshuai.xi         }
907*53ee8cc1Swenshuai.xi         case E_DBC_CMD_YC_GAIN_INIT:
908*53ee8cc1Swenshuai.xi         {
909*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
910*53ee8cc1Swenshuai.xi             {
911*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
912*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
913*53ee8cc1Swenshuai.xi             }
914*53ee8cc1Swenshuai.xi 
915*53ee8cc1Swenshuai.xi             pstDBC_YCGainInit pDLCArgs = (pstDBC_YCGainInit)pArgs;
916*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_YCGainInit(pInstance ,pDLCArgs->u8YGain_M ,pDLCArgs->u8YGain_L ,pDLCArgs->u8CGain_M ,pDLCArgs->u8CGain_L );
917*53ee8cc1Swenshuai.xi 
918*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
919*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
920*53ee8cc1Swenshuai.xi             break;
921*53ee8cc1Swenshuai.xi         }
922*53ee8cc1Swenshuai.xi         case E_DBC_CMD_RESET:
923*53ee8cc1Swenshuai.xi         {
924*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
925*53ee8cc1Swenshuai.xi             {
926*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
927*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
928*53ee8cc1Swenshuai.xi             }
929*53ee8cc1Swenshuai.xi 
930*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_Reset(pInstance );
931*53ee8cc1Swenshuai.xi 
932*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
933*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
934*53ee8cc1Swenshuai.xi             break;
935*53ee8cc1Swenshuai.xi         }
936*53ee8cc1Swenshuai.xi         case E_DBC_CMD_DECODE_EXT_CMD:
937*53ee8cc1Swenshuai.xi         {
938*53ee8cc1Swenshuai.xi             if (UtopiaResourceObtain(pModule, E_DLC_POOL_ID_INTERNAL, &pResource) != UTOPIA_STATUS_SUCCESS)
939*53ee8cc1Swenshuai.xi             {
940*53ee8cc1Swenshuai.xi                 printf("UtopiaDlcResourceObtain fail\n");
941*53ee8cc1Swenshuai.xi                 return UTOPIA_STATUS_ERR_RESOURCE;
942*53ee8cc1Swenshuai.xi             }
943*53ee8cc1Swenshuai.xi 
944*53ee8cc1Swenshuai.xi             pstDBC_DecodeExtCmd pDLCArgs = (pstDBC_DecodeExtCmd)pArgs;
945*53ee8cc1Swenshuai.xi             psDLCInstPri->fpDBC_DecodeExtCmd(pInstance ,pDLCArgs->params );
946*53ee8cc1Swenshuai.xi 
947*53ee8cc1Swenshuai.xi             UtopiaResourceRelease(pResource);
948*53ee8cc1Swenshuai.xi             return UTOPIA_STATUS_SUCCESS;
949*53ee8cc1Swenshuai.xi             break;
950*53ee8cc1Swenshuai.xi         }
951*53ee8cc1Swenshuai.xi 
952*53ee8cc1Swenshuai.xi         default:
953*53ee8cc1Swenshuai.xi             printf("Error DLC Command = %td\n",(ptrdiff_t)u32Cmd);
954*53ee8cc1Swenshuai.xi             break;
955*53ee8cc1Swenshuai.xi     }
956*53ee8cc1Swenshuai.xi 	return UTOPIA_STATUS_SUCCESS;
957*53ee8cc1Swenshuai.xi }
958*53ee8cc1Swenshuai.xi 
959*53ee8cc1Swenshuai.xi 
DLCClose(void * pInstance)960*53ee8cc1Swenshuai.xi MS_U32 DLCClose(void* pInstance)
961*53ee8cc1Swenshuai.xi {
962*53ee8cc1Swenshuai.xi 	UtopiaInstanceDelete(pInstance);
963*53ee8cc1Swenshuai.xi 
964*53ee8cc1Swenshuai.xi 	return TRUE;
965*53ee8cc1Swenshuai.xi }
966*53ee8cc1Swenshuai.xi 
967*53ee8cc1Swenshuai.xi 
968