1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi // such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi // third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any
38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi // parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi // ("Services").
52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi // or otherwise:
58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi // with the said Rules.
72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi // be English.
74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// file apiXC_Adc.c
98*53ee8cc1Swenshuai.xi /// brief Scaler API layer Interface
99*53ee8cc1Swenshuai.xi /// author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi
102*53ee8cc1Swenshuai.xi #ifndef _API_XC_ADC_C_
103*53ee8cc1Swenshuai.xi #define _API_XC_ADC_C_
104*53ee8cc1Swenshuai.xi
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi // Include Files
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi // Common Definition
109*53ee8cc1Swenshuai.xi
110*53ee8cc1Swenshuai.xi // Common
111*53ee8cc1Swenshuai.xi #include "MsCommon.h"
112*53ee8cc1Swenshuai.xi #include "utopia.h"
113*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
114*53ee8cc1Swenshuai.xi #include "mhal_xc_chip_config.h"
115*53ee8cc1Swenshuai.xi #include "drvXC_IOPort.h"
116*53ee8cc1Swenshuai.xi #include "apiXC.h"
117*53ee8cc1Swenshuai.xi
118*53ee8cc1Swenshuai.xi #include "apiXC_Adc.h"
119*53ee8cc1Swenshuai.xi #include "apiXC_Auto.h"
120*53ee8cc1Swenshuai.xi #include "drv_sc_display.h"
121*53ee8cc1Swenshuai.xi #include "drv_sc_isr.h"
122*53ee8cc1Swenshuai.xi #include "apiXC_PCMonitor.h"
123*53ee8cc1Swenshuai.xi #include "apiXC_ModeParse.h"
124*53ee8cc1Swenshuai.xi #include "drvXC_HDMI_if.h"
125*53ee8cc1Swenshuai.xi #include "mvideo_context.h"
126*53ee8cc1Swenshuai.xi #if (LD_ENABLE==1)
127*53ee8cc1Swenshuai.xi #include "mdrv_ld.h"
128*53ee8cc1Swenshuai.xi #include "mdrv_ldalgo.h"
129*53ee8cc1Swenshuai.xi #endif
130*53ee8cc1Swenshuai.xi #include "mdrv_sc_3d.h"
131*53ee8cc1Swenshuai.xi #include "drv_sc_menuload.h"
132*53ee8cc1Swenshuai.xi #include "drvXC_ADC_Internal.h"
133*53ee8cc1Swenshuai.xi #include "drv_sc_ip.h"
134*53ee8cc1Swenshuai.xi #include "mhal_sc.h"
135*53ee8cc1Swenshuai.xi #if FRC_INSIDE
136*53ee8cc1Swenshuai.xi #include "mdrv_frc.h"
137*53ee8cc1Swenshuai.xi #include "mhal_frc.h"
138*53ee8cc1Swenshuai.xi #endif
139*53ee8cc1Swenshuai.xi #include "XC_private.h"
140*53ee8cc1Swenshuai.xi #include "apiXC_v2.h"
141*53ee8cc1Swenshuai.xi #include "apiXC_Adc_v2.h"
142*53ee8cc1Swenshuai.xi #include "xc_hwreg_utility2.h"
143*53ee8cc1Swenshuai.xi
144*53ee8cc1Swenshuai.xi // Internal Definition
145*53ee8cc1Swenshuai.xi
146*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
147*53ee8cc1Swenshuai.xi // Driver Compiler Options
148*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi
151*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
152*53ee8cc1Swenshuai.xi // Local Defines
153*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
154*53ee8cc1Swenshuai.xi
155*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
156*53ee8cc1Swenshuai.xi // Local Structurs
157*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
158*53ee8cc1Swenshuai.xi
159*53ee8cc1Swenshuai.xi
160*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
161*53ee8cc1Swenshuai.xi // Global Variables
162*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
163*53ee8cc1Swenshuai.xi
164*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
165*53ee8cc1Swenshuai.xi // Local Variables
166*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
167*53ee8cc1Swenshuai.xi
168*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
169*53ee8cc1Swenshuai.xi // Debug Functions
170*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
171*53ee8cc1Swenshuai.xi
172*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
173*53ee8cc1Swenshuai.xi // Local Functions
174*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
175*53ee8cc1Swenshuai.xi
176*53ee8cc1Swenshuai.xi //******************************************************************************
177*53ee8cc1Swenshuai.xi /// Enable and Disable CVBS out. This will setup ADC part for CVBS out (monitor out).
178*53ee8cc1Swenshuai.xi /// @param bEnable \b IN Enable CVBS Out
179*53ee8cc1Swenshuai.xi /// @param enInputPortType \b IN The source need to monitor out.
180*53ee8cc1Swenshuai.xi /// @param isDigitalSource \b IN Tell the driver current source is digital source or not. (ex. If internal VIF used in ATV, it will be digital source)
181*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_SetCVBSOut_U2(void * pInstance,MS_BOOL bEnable,E_DEST_TYPE enOutputType,INPUT_SOURCE_TYPE_t enInputPortType,MS_BOOL isDigitalSource)182*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetCVBSOut_U2(void* pInstance, MS_BOOL bEnable, E_DEST_TYPE enOutputType , INPUT_SOURCE_TYPE_t enInputPortType, MS_BOOL isDigitalSource)
183*53ee8cc1Swenshuai.xi {
184*53ee8cc1Swenshuai.xi E_ADC_CVBSOUT_TYPE enCVBSoutType = ADC_CVBSOUT_DISABLE_1;
185*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
186*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
187*53ee8cc1Swenshuai.xi XC_RESOURCE_PRIVATE* pXCResourcePrivate = NULL;
188*53ee8cc1Swenshuai.xi E_XC_SOURCE_TO_VE eSourceToVE = E_XC_NONE;
189*53ee8cc1Swenshuai.xi /*
190*53ee8cc1Swenshuai.xi printf("====>CVBS out is %s", (bEnable) ?("ENABLE"):("DISABLE"));
191*53ee8cc1Swenshuai.xi printf(" and Output is from =%s(%x), eSourceToVE=%x, enInputPortType=%u\n", (enOutputType==20)?("CVBS_OUT1"):
192*53ee8cc1Swenshuai.xi (enOutputType==21)?("CVBS_OUT2"):("Others"), enOutputType, gSrcInfo[MAIN_WINDOW].Status2.eSourceToVE, enInputPortType);
193*53ee8cc1Swenshuai.xi */
194*53ee8cc1Swenshuai.xi if ( bEnable )
195*53ee8cc1Swenshuai.xi {
196*53ee8cc1Swenshuai.xi if ( enOutputType == OUTPUT_CVBS1)
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
199*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
200*53ee8cc1Swenshuai.xi eSourceToVE = gSrcInfo[MAIN_WINDOW].Status2.eSourceToVE;
201*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
202*53ee8cc1Swenshuai.xi if (IsSrcTypeDTV(enInputPortType) ||
203*53ee8cc1Swenshuai.xi ( eSourceToVE!= E_XC_NONE))
204*53ee8cc1Swenshuai.xi {
205*53ee8cc1Swenshuai.xi //IP/DI/OP2 to VE case, need goes with VIF_VE path
206*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_VIF_VE_1;
207*53ee8cc1Swenshuai.xi }
208*53ee8cc1Swenshuai.xi else if ( IsSrcTypeATV(enInputPortType) && isDigitalSource )
209*53ee8cc1Swenshuai.xi {
210*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_VIF_VIF_1; // VIF source.
211*53ee8cc1Swenshuai.xi }
212*53ee8cc1Swenshuai.xi else if ( IsSrcTypeSV(enInputPortType) )
213*53ee8cc1Swenshuai.xi {
214*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_SV_ON_1;
215*53ee8cc1Swenshuai.xi }
216*53ee8cc1Swenshuai.xi else
217*53ee8cc1Swenshuai.xi {
218*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_CVBS_ON_1;
219*53ee8cc1Swenshuai.xi }
220*53ee8cc1Swenshuai.xi }
221*53ee8cc1Swenshuai.xi else if ( enOutputType == OUTPUT_CVBS2)
222*53ee8cc1Swenshuai.xi {
223*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
224*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(g_pXCResource[_XC_SELECT_INTERNAL_VARIABLE(psXCInstPri->u32DeviceID)],(void**)(&pXCResourcePrivate));
225*53ee8cc1Swenshuai.xi eSourceToVE = gSrcInfo[MAIN_WINDOW].Status2.eSourceToVE;
226*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
227*53ee8cc1Swenshuai.xi
228*53ee8cc1Swenshuai.xi if (IsSrcTypeDTV(enInputPortType) ||
229*53ee8cc1Swenshuai.xi (eSourceToVE != E_XC_NONE))
230*53ee8cc1Swenshuai.xi {
231*53ee8cc1Swenshuai.xi //IP/DI/OP2 to VE case, need goes with VIF_VE path
232*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_VIF_VE_2;
233*53ee8cc1Swenshuai.xi }
234*53ee8cc1Swenshuai.xi else if ( IsSrcTypeATV(enInputPortType) && isDigitalSource )
235*53ee8cc1Swenshuai.xi {
236*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_VIF_VIF_2; // VIF source.
237*53ee8cc1Swenshuai.xi }
238*53ee8cc1Swenshuai.xi else if ( IsSrcTypeSV(enInputPortType) )
239*53ee8cc1Swenshuai.xi {
240*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_SV_ON_2;
241*53ee8cc1Swenshuai.xi }
242*53ee8cc1Swenshuai.xi else
243*53ee8cc1Swenshuai.xi {
244*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_CVBS_ON_2;
245*53ee8cc1Swenshuai.xi }
246*53ee8cc1Swenshuai.xi }
247*53ee8cc1Swenshuai.xi }
248*53ee8cc1Swenshuai.xi else
249*53ee8cc1Swenshuai.xi {
250*53ee8cc1Swenshuai.xi if ( enOutputType == OUTPUT_CVBS1)
251*53ee8cc1Swenshuai.xi {
252*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_DISABLE_1;
253*53ee8cc1Swenshuai.xi }
254*53ee8cc1Swenshuai.xi else if ( enOutputType == OUTPUT_CVBS2)
255*53ee8cc1Swenshuai.xi {
256*53ee8cc1Swenshuai.xi enCVBSoutType = ADC_CVBSOUT_DISABLE_2;
257*53ee8cc1Swenshuai.xi }
258*53ee8cc1Swenshuai.xi }
259*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
260*53ee8cc1Swenshuai.xi _XC_ENTRY(pInstance);
261*53ee8cc1Swenshuai.xi MDrv_XC_ADC_set_cvbs_out(pInstance, enCVBSoutType );
262*53ee8cc1Swenshuai.xi _XC_RETURN(pInstance);
263*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
264*53ee8cc1Swenshuai.xi
265*53ee8cc1Swenshuai.xi }
266*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetCVBSOut(MS_BOOL bEnable,E_DEST_TYPE enOutputType,INPUT_SOURCE_TYPE_t enInputPortType,MS_BOOL isDigitalSource)267*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetCVBSOut(MS_BOOL bEnable, E_DEST_TYPE enOutputType , INPUT_SOURCE_TYPE_t enInputPortType, MS_BOOL isDigitalSource)
268*53ee8cc1Swenshuai.xi {
269*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
270*53ee8cc1Swenshuai.xi {
271*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
272*53ee8cc1Swenshuai.xi return;
273*53ee8cc1Swenshuai.xi }
274*53ee8cc1Swenshuai.xi
275*53ee8cc1Swenshuai.xi stXC_ADC_SETCVBSOUT XCArgs;
276*53ee8cc1Swenshuai.xi XCArgs.bEnable = bEnable;
277*53ee8cc1Swenshuai.xi XCArgs.enOutputType = enOutputType;
278*53ee8cc1Swenshuai.xi XCArgs.enInputPortType = enInputPortType;
279*53ee8cc1Swenshuai.xi XCArgs.isDigitalSource = isDigitalSource;
280*53ee8cc1Swenshuai.xi
281*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETCVBSOUT, (void*)&XCArgs) != 0)
282*53ee8cc1Swenshuai.xi {
283*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
284*53ee8cc1Swenshuai.xi return;
285*53ee8cc1Swenshuai.xi }
286*53ee8cc1Swenshuai.xi else
287*53ee8cc1Swenshuai.xi {
288*53ee8cc1Swenshuai.xi return;
289*53ee8cc1Swenshuai.xi }
290*53ee8cc1Swenshuai.xi }
291*53ee8cc1Swenshuai.xi
MApi_XC_ADC_IsCVBSOutEnabled_U2(void * pInstance,E_DEST_TYPE enOutputType)292*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsCVBSOutEnabled_U2(void* pInstance, E_DEST_TYPE enOutputType)
293*53ee8cc1Swenshuai.xi {
294*53ee8cc1Swenshuai.xi if (enOutputType == OUTPUT_CVBS1 || enOutputType == OUTPUT_CVBS2)
295*53ee8cc1Swenshuai.xi {
296*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_Is_cvbs_out_enabled(pInstance, enOutputType);
297*53ee8cc1Swenshuai.xi }
298*53ee8cc1Swenshuai.xi else
299*53ee8cc1Swenshuai.xi return FALSE;
300*53ee8cc1Swenshuai.xi
301*53ee8cc1Swenshuai.xi }
302*53ee8cc1Swenshuai.xi
MApi_XC_ADC_IsCVBSOutEnabled(E_DEST_TYPE enOutputType)303*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsCVBSOutEnabled(E_DEST_TYPE enOutputType)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
306*53ee8cc1Swenshuai.xi {
307*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
308*53ee8cc1Swenshuai.xi return FALSE;
309*53ee8cc1Swenshuai.xi }
310*53ee8cc1Swenshuai.xi
311*53ee8cc1Swenshuai.xi stXC_ADC_ISCVBSOUTENABLED XCArgs;
312*53ee8cc1Swenshuai.xi XCArgs.enOutputType = enOutputType;
313*53ee8cc1Swenshuai.xi XCArgs.bReturnValue = FALSE;
314*53ee8cc1Swenshuai.xi
315*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_ISCVBSOUTENABLED, (void*)&XCArgs) != 0)
316*53ee8cc1Swenshuai.xi {
317*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
318*53ee8cc1Swenshuai.xi return FALSE;
319*53ee8cc1Swenshuai.xi }
320*53ee8cc1Swenshuai.xi else
321*53ee8cc1Swenshuai.xi {
322*53ee8cc1Swenshuai.xi return XCArgs.bReturnValue;
323*53ee8cc1Swenshuai.xi }
324*53ee8cc1Swenshuai.xi }
325*53ee8cc1Swenshuai.xi
326*53ee8cc1Swenshuai.xi /******************************************************************************/
327*53ee8cc1Swenshuai.xi /// Set ADC Sample clock
328*53ee8cc1Swenshuai.xi /// @param u16Value \b IN value need to be set.
329*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_SetPcClock_U2(void * pInstance,MS_U16 u16Value)330*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPcClock_U2( void* pInstance, MS_U16 u16Value )
331*53ee8cc1Swenshuai.xi {
332*53ee8cc1Swenshuai.xi //add for mantis 0513674
333*53ee8cc1Swenshuai.xi _XC_ENTRY(pInstance);
334*53ee8cc1Swenshuai.xi MDrv_XC_wait_input_vsync(pInstance, 1, 50, MAIN_WINDOW);
335*53ee8cc1Swenshuai.xi _XC_RETURN(pInstance);
336*53ee8cc1Swenshuai.xi
337*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetPcClock(pInstance, u16Value);
338*53ee8cc1Swenshuai.xi }
339*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetPcClock(MS_U16 u16Value)340*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPcClock( MS_U16 u16Value )
341*53ee8cc1Swenshuai.xi {
342*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
343*53ee8cc1Swenshuai.xi {
344*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
345*53ee8cc1Swenshuai.xi return;
346*53ee8cc1Swenshuai.xi }
347*53ee8cc1Swenshuai.xi
348*53ee8cc1Swenshuai.xi stXC_ADC_SETPCCLOCK XCArgs;
349*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
350*53ee8cc1Swenshuai.xi
351*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETPCCLOCK, (void*)&XCArgs) != 0)
352*53ee8cc1Swenshuai.xi {
353*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
354*53ee8cc1Swenshuai.xi return;
355*53ee8cc1Swenshuai.xi }
356*53ee8cc1Swenshuai.xi else
357*53ee8cc1Swenshuai.xi {
358*53ee8cc1Swenshuai.xi return;
359*53ee8cc1Swenshuai.xi }
360*53ee8cc1Swenshuai.xi }
361*53ee8cc1Swenshuai.xi
362*53ee8cc1Swenshuai.xi /******************************************************************************/
363*53ee8cc1Swenshuai.xi /// Set ADC Phase, pls use MApi_XC_ADC_SetPhaseEx instead
364*53ee8cc1Swenshuai.xi /// @param u8Value \b IN The adc phase need to be update
365*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_SetPhase_U2(void * pInstance,MS_U8 u8Value)366*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhase_U2(void* pInstance, MS_U8 u8Value)
367*53ee8cc1Swenshuai.xi {
368*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetPhaseWithVSync(pInstance, (MS_U16)u8Value);
369*53ee8cc1Swenshuai.xi }
370*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetPhase(MS_U8 u8Value)371*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhase(MS_U8 u8Value)
372*53ee8cc1Swenshuai.xi {
373*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
374*53ee8cc1Swenshuai.xi {
375*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
376*53ee8cc1Swenshuai.xi return;
377*53ee8cc1Swenshuai.xi }
378*53ee8cc1Swenshuai.xi
379*53ee8cc1Swenshuai.xi stXC_ADC_SETPHASE XCArgs;
380*53ee8cc1Swenshuai.xi XCArgs.u8Value = u8Value;
381*53ee8cc1Swenshuai.xi
382*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETPHASE, (void*)&XCArgs) != 0)
383*53ee8cc1Swenshuai.xi {
384*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
385*53ee8cc1Swenshuai.xi return;
386*53ee8cc1Swenshuai.xi }
387*53ee8cc1Swenshuai.xi else
388*53ee8cc1Swenshuai.xi {
389*53ee8cc1Swenshuai.xi return;
390*53ee8cc1Swenshuai.xi }
391*53ee8cc1Swenshuai.xi }
392*53ee8cc1Swenshuai.xi
393*53ee8cc1Swenshuai.xi
394*53ee8cc1Swenshuai.xi /******************************************************************************/
395*53ee8cc1Swenshuai.xi /// Set ADC Phase Ex
396*53ee8cc1Swenshuai.xi /// @param u16Value \b IN The adc phase need to be update
397*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_SetPhaseEx_U2(void * pInstance,MS_U16 u16Value)398*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhaseEx_U2( void* pInstance, MS_U16 u16Value )
399*53ee8cc1Swenshuai.xi {
400*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetPhaseWithVSync(pInstance, u16Value);
401*53ee8cc1Swenshuai.xi }
402*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetPhaseEx(MS_U16 u16Value)403*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetPhaseEx( MS_U16 u16Value )
404*53ee8cc1Swenshuai.xi {
405*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
406*53ee8cc1Swenshuai.xi {
407*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
408*53ee8cc1Swenshuai.xi return;
409*53ee8cc1Swenshuai.xi }
410*53ee8cc1Swenshuai.xi
411*53ee8cc1Swenshuai.xi stXC_ADC_SETPHASEEX XCArgs;
412*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
413*53ee8cc1Swenshuai.xi
414*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETPHASEEX, (void*)&XCArgs) != 0)
415*53ee8cc1Swenshuai.xi {
416*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
417*53ee8cc1Swenshuai.xi return;
418*53ee8cc1Swenshuai.xi }
419*53ee8cc1Swenshuai.xi else
420*53ee8cc1Swenshuai.xi {
421*53ee8cc1Swenshuai.xi return;
422*53ee8cc1Swenshuai.xi }
423*53ee8cc1Swenshuai.xi }
424*53ee8cc1Swenshuai.xi
425*53ee8cc1Swenshuai.xi //******************************************************************************
426*53ee8cc1Swenshuai.xi /// Get current ADC Phase set
427*53ee8cc1Swenshuai.xi /// @return Current Phase
428*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetPhaseRange_U2(void * pInstance)429*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseRange_U2( void* pInstance )
430*53ee8cc1Swenshuai.xi {
431*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetPhaseRange(pInstance);
432*53ee8cc1Swenshuai.xi }
433*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPhaseRange(void)434*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseRange( void )
435*53ee8cc1Swenshuai.xi {
436*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
437*53ee8cc1Swenshuai.xi {
438*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
439*53ee8cc1Swenshuai.xi return 0;
440*53ee8cc1Swenshuai.xi }
441*53ee8cc1Swenshuai.xi
442*53ee8cc1Swenshuai.xi stXC_ADC_GETPHASERANGE XCArgs;
443*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
444*53ee8cc1Swenshuai.xi
445*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETPHASERANGE, (void*)&XCArgs) != 0)
446*53ee8cc1Swenshuai.xi {
447*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
448*53ee8cc1Swenshuai.xi return 0;
449*53ee8cc1Swenshuai.xi }
450*53ee8cc1Swenshuai.xi else
451*53ee8cc1Swenshuai.xi {
452*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
453*53ee8cc1Swenshuai.xi }
454*53ee8cc1Swenshuai.xi }
455*53ee8cc1Swenshuai.xi
456*53ee8cc1Swenshuai.xi //******************************************************************************
457*53ee8cc1Swenshuai.xi /// Get current ADC Phase set
458*53ee8cc1Swenshuai.xi /// @return Current Phase
459*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetPhase_U2(void * pInstance)460*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ADC_GetPhase_U2( void* pInstance )
461*53ee8cc1Swenshuai.xi {
462*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetPhase(pInstance);
463*53ee8cc1Swenshuai.xi }
464*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPhase(void)465*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ADC_GetPhase( void )
466*53ee8cc1Swenshuai.xi {
467*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
468*53ee8cc1Swenshuai.xi {
469*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
470*53ee8cc1Swenshuai.xi return 0;
471*53ee8cc1Swenshuai.xi }
472*53ee8cc1Swenshuai.xi
473*53ee8cc1Swenshuai.xi stXC_ADC_GETPHASE XCArgs;
474*53ee8cc1Swenshuai.xi XCArgs.u8ReturnValue = 0;
475*53ee8cc1Swenshuai.xi
476*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETPHASE, (void*)&XCArgs) != 0)
477*53ee8cc1Swenshuai.xi {
478*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
479*53ee8cc1Swenshuai.xi return 0;
480*53ee8cc1Swenshuai.xi }
481*53ee8cc1Swenshuai.xi else
482*53ee8cc1Swenshuai.xi {
483*53ee8cc1Swenshuai.xi return XCArgs.u8ReturnValue;
484*53ee8cc1Swenshuai.xi }
485*53ee8cc1Swenshuai.xi }
486*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPhaseEx_U2(void * pInstance)487*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseEx_U2( void* pInstance )
488*53ee8cc1Swenshuai.xi {
489*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetPhaseEx(pInstance);
490*53ee8cc1Swenshuai.xi }
491*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPhaseEx(void)492*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPhaseEx( void )
493*53ee8cc1Swenshuai.xi {
494*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
495*53ee8cc1Swenshuai.xi {
496*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
497*53ee8cc1Swenshuai.xi return 0;
498*53ee8cc1Swenshuai.xi }
499*53ee8cc1Swenshuai.xi
500*53ee8cc1Swenshuai.xi stXC_ADC_GETPHASEEX XCArgs;
501*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
502*53ee8cc1Swenshuai.xi
503*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETPHASEEX, (void*)&XCArgs) != 0)
504*53ee8cc1Swenshuai.xi {
505*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
506*53ee8cc1Swenshuai.xi return 0;
507*53ee8cc1Swenshuai.xi }
508*53ee8cc1Swenshuai.xi else
509*53ee8cc1Swenshuai.xi {
510*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
511*53ee8cc1Swenshuai.xi }
512*53ee8cc1Swenshuai.xi }
513*53ee8cc1Swenshuai.xi
514*53ee8cc1Swenshuai.xi
MApi_XC_ADC_IsScartRGB_U2(void * pInstance)515*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsScartRGB_U2(void* pInstance)
516*53ee8cc1Swenshuai.xi {
517*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_IsScartRGB(pInstance);
518*53ee8cc1Swenshuai.xi }
519*53ee8cc1Swenshuai.xi
MApi_XC_ADC_IsScartRGB(void)520*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_IsScartRGB(void)
521*53ee8cc1Swenshuai.xi {
522*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
523*53ee8cc1Swenshuai.xi {
524*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
525*53ee8cc1Swenshuai.xi return FALSE;
526*53ee8cc1Swenshuai.xi }
527*53ee8cc1Swenshuai.xi
528*53ee8cc1Swenshuai.xi stXC_ADC_ISSCARTRGB XCArgs;
529*53ee8cc1Swenshuai.xi XCArgs.bReturnValue = FALSE;
530*53ee8cc1Swenshuai.xi
531*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_ISSCARTRGB, (void*)&XCArgs) != 0)
532*53ee8cc1Swenshuai.xi {
533*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
534*53ee8cc1Swenshuai.xi return FALSE;
535*53ee8cc1Swenshuai.xi }
536*53ee8cc1Swenshuai.xi else
537*53ee8cc1Swenshuai.xi {
538*53ee8cc1Swenshuai.xi return XCArgs.bReturnValue;
539*53ee8cc1Swenshuai.xi }
540*53ee8cc1Swenshuai.xi }
541*53ee8cc1Swenshuai.xi
542*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPcClock_U2(void * pInstance)543*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPcClock_U2(void* pInstance)
544*53ee8cc1Swenshuai.xi {
545*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetPcClock(pInstance);
546*53ee8cc1Swenshuai.xi }
547*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetPcClock(void)548*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetPcClock(void)
549*53ee8cc1Swenshuai.xi {
550*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
551*53ee8cc1Swenshuai.xi {
552*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
553*53ee8cc1Swenshuai.xi return 0;
554*53ee8cc1Swenshuai.xi }
555*53ee8cc1Swenshuai.xi
556*53ee8cc1Swenshuai.xi stXC_ADC_GETPCCLOCK XCArgs;
557*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
558*53ee8cc1Swenshuai.xi
559*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETPCCLOCK, (void*)&XCArgs) != 0)
560*53ee8cc1Swenshuai.xi {
561*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
562*53ee8cc1Swenshuai.xi return 0;
563*53ee8cc1Swenshuai.xi }
564*53ee8cc1Swenshuai.xi else
565*53ee8cc1Swenshuai.xi {
566*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
567*53ee8cc1Swenshuai.xi }
568*53ee8cc1Swenshuai.xi }
569*53ee8cc1Swenshuai.xi
570*53ee8cc1Swenshuai.xi /******************************************************************************/
571*53ee8cc1Swenshuai.xi ///Get SOG level range
572*53ee8cc1Swenshuai.xi ///@param u32Min \b OUT: min of SOG level
573*53ee8cc1Swenshuai.xi ///@param u32Max \b OUT: max of SOG level
574*53ee8cc1Swenshuai.xi ///@param u32Recommend_value \b OUT: recommend value
575*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_GetSoGLevelRange_U2(void * pInstance,MS_U32 * u32min,MS_U32 * u32max,MS_U32 * u32Recommend_value)576*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetSoGLevelRange_U2(void* pInstance, MS_U32 *u32min, MS_U32 *u32max, MS_U32 *u32Recommend_value)
577*53ee8cc1Swenshuai.xi {
578*53ee8cc1Swenshuai.xi MDrv_XC_ADC_GetSoGLevelRange(pInstance, u32min, u32max, u32Recommend_value);
579*53ee8cc1Swenshuai.xi }
580*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetSoGLevelRange(MS_U32 * u32min,MS_U32 * u32max,MS_U32 * u32Recommend_value)581*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetSoGLevelRange(MS_U32 *u32min, MS_U32 *u32max, MS_U32 *u32Recommend_value)
582*53ee8cc1Swenshuai.xi {
583*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
584*53ee8cc1Swenshuai.xi {
585*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
586*53ee8cc1Swenshuai.xi return;
587*53ee8cc1Swenshuai.xi }
588*53ee8cc1Swenshuai.xi
589*53ee8cc1Swenshuai.xi stXC_ADC_GETSOGLEVELRANGE XCArgs;
590*53ee8cc1Swenshuai.xi XCArgs.u32min = u32min;
591*53ee8cc1Swenshuai.xi XCArgs.u32max = u32max;
592*53ee8cc1Swenshuai.xi XCArgs.u32Recommend_value = u32Recommend_value;
593*53ee8cc1Swenshuai.xi
594*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETSOGLEVELRANGE, (void*)&XCArgs) != 0)
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
597*53ee8cc1Swenshuai.xi return;
598*53ee8cc1Swenshuai.xi }
599*53ee8cc1Swenshuai.xi else
600*53ee8cc1Swenshuai.xi {
601*53ee8cc1Swenshuai.xi return;
602*53ee8cc1Swenshuai.xi }
603*53ee8cc1Swenshuai.xi }
604*53ee8cc1Swenshuai.xi
605*53ee8cc1Swenshuai.xi
606*53ee8cc1Swenshuai.xi /******************************************************************************/
607*53ee8cc1Swenshuai.xi ///Set SOG level
608*53ee8cc1Swenshuai.xi ///@param u32Min \b IN: set SOG level
609*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_SetSoGLevel_U2(void * pInstance,MS_U32 u32Value)610*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGLevel_U2(void* pInstance, MS_U32 u32Value)
611*53ee8cc1Swenshuai.xi {
612*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetSoGLevel(pInstance, u32Value);
613*53ee8cc1Swenshuai.xi }
614*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetSoGLevel(MS_U32 u32Value)615*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGLevel(MS_U32 u32Value)
616*53ee8cc1Swenshuai.xi {
617*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
618*53ee8cc1Swenshuai.xi {
619*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
620*53ee8cc1Swenshuai.xi return;
621*53ee8cc1Swenshuai.xi }
622*53ee8cc1Swenshuai.xi
623*53ee8cc1Swenshuai.xi stXC_ADC_SETSOGLEVEL XCArgs;
624*53ee8cc1Swenshuai.xi XCArgs.u32Value = u32Value;
625*53ee8cc1Swenshuai.xi
626*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETSOGLEVEL, (void*)&XCArgs) != 0)
627*53ee8cc1Swenshuai.xi {
628*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
629*53ee8cc1Swenshuai.xi return;
630*53ee8cc1Swenshuai.xi }
631*53ee8cc1Swenshuai.xi else
632*53ee8cc1Swenshuai.xi {
633*53ee8cc1Swenshuai.xi return;
634*53ee8cc1Swenshuai.xi }
635*53ee8cc1Swenshuai.xi }
636*53ee8cc1Swenshuai.xi
637*53ee8cc1Swenshuai.xi //******************************************************************************
638*53ee8cc1Swenshuai.xi /// Turn off ADC
639*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_PowerOff_U2(void * pInstance)640*53ee8cc1Swenshuai.xi void MApi_XC_ADC_PowerOff_U2(void* pInstance)
641*53ee8cc1Swenshuai.xi {
642*53ee8cc1Swenshuai.xi MDrv_XC_ADC_PowerOff(pInstance);
643*53ee8cc1Swenshuai.xi }
644*53ee8cc1Swenshuai.xi
MApi_XC_ADC_PowerOff(void)645*53ee8cc1Swenshuai.xi void MApi_XC_ADC_PowerOff(void)
646*53ee8cc1Swenshuai.xi {
647*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
648*53ee8cc1Swenshuai.xi {
649*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
650*53ee8cc1Swenshuai.xi return;
651*53ee8cc1Swenshuai.xi }
652*53ee8cc1Swenshuai.xi
653*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_POWEROFF, NULL) != 0)
654*53ee8cc1Swenshuai.xi {
655*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
656*53ee8cc1Swenshuai.xi return;
657*53ee8cc1Swenshuai.xi }
658*53ee8cc1Swenshuai.xi else
659*53ee8cc1Swenshuai.xi {
660*53ee8cc1Swenshuai.xi return;
661*53ee8cc1Swenshuai.xi }
662*53ee8cc1Swenshuai.xi }
663*53ee8cc1Swenshuai.xi
664*53ee8cc1Swenshuai.xi
665*53ee8cc1Swenshuai.xi //******************************************************************************
666*53ee8cc1Swenshuai.xi /// Get ADC Default gain / offset by referring input structure.
667*53ee8cc1Swenshuai.xi /// @param eSource \b IN The input source
668*53ee8cc1Swenshuai.xi /// @param pstADCSetting \b IN gain / offset need to be set
669*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetDefaultGainOffset_U2(void * pInstance,INPUT_SOURCE_TYPE_t enSource,APIXC_AdcGainOffsetSetting * pstADCSetting)670*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetDefaultGainOffset_U2(void* pInstance, INPUT_SOURCE_TYPE_t enSource , APIXC_AdcGainOffsetSetting* pstADCSetting)
671*53ee8cc1Swenshuai.xi {
672*53ee8cc1Swenshuai.xi MDrv_XC_ADC_GetDefaultGainOffset(pInstance, enSource, pstADCSetting);
673*53ee8cc1Swenshuai.xi }
674*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetDefaultGainOffset(INPUT_SOURCE_TYPE_t enSource,APIXC_AdcGainOffsetSetting * pstADCSetting)675*53ee8cc1Swenshuai.xi void MApi_XC_ADC_GetDefaultGainOffset(INPUT_SOURCE_TYPE_t enSource , APIXC_AdcGainOffsetSetting* pstADCSetting)
676*53ee8cc1Swenshuai.xi {
677*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
678*53ee8cc1Swenshuai.xi {
679*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
680*53ee8cc1Swenshuai.xi return;
681*53ee8cc1Swenshuai.xi }
682*53ee8cc1Swenshuai.xi
683*53ee8cc1Swenshuai.xi stXC_ADC_GETDEFAULTGAINOFFSET XCArgs;
684*53ee8cc1Swenshuai.xi XCArgs.enSource = enSource;
685*53ee8cc1Swenshuai.xi XCArgs.pstADCSetting = pstADCSetting;
686*53ee8cc1Swenshuai.xi
687*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETDEFAULTGAINOFFSET, (void*)&XCArgs) != 0)
688*53ee8cc1Swenshuai.xi {
689*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
690*53ee8cc1Swenshuai.xi return;
691*53ee8cc1Swenshuai.xi }
692*53ee8cc1Swenshuai.xi else
693*53ee8cc1Swenshuai.xi {
694*53ee8cc1Swenshuai.xi return;
695*53ee8cc1Swenshuai.xi }
696*53ee8cc1Swenshuai.xi }
697*53ee8cc1Swenshuai.xi
698*53ee8cc1Swenshuai.xi //******************************************************************************
699*53ee8cc1Swenshuai.xi /// get maximal value of offset
700*53ee8cc1Swenshuai.xi /// @param
701*53ee8cc1Swenshuai.xi /// @return maximal value of offset
702*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetMaximalOffsetValue_U2(void * pInstance)703*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalOffsetValue_U2(void* pInstance)
704*53ee8cc1Swenshuai.xi {
705*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetMaximalOffsetValue(pInstance);
706*53ee8cc1Swenshuai.xi }
707*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetMaximalOffsetValue(void)708*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalOffsetValue(void)
709*53ee8cc1Swenshuai.xi {
710*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
711*53ee8cc1Swenshuai.xi {
712*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
713*53ee8cc1Swenshuai.xi return 0;
714*53ee8cc1Swenshuai.xi }
715*53ee8cc1Swenshuai.xi
716*53ee8cc1Swenshuai.xi stXC_ADC_GETMAXIMALOFFSETVALUE XCArgs;
717*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
718*53ee8cc1Swenshuai.xi
719*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETMAXIMALOFFSETVALUE, (void*)&XCArgs) != 0)
720*53ee8cc1Swenshuai.xi {
721*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
722*53ee8cc1Swenshuai.xi return 0;
723*53ee8cc1Swenshuai.xi }
724*53ee8cc1Swenshuai.xi else
725*53ee8cc1Swenshuai.xi {
726*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
727*53ee8cc1Swenshuai.xi }
728*53ee8cc1Swenshuai.xi }
729*53ee8cc1Swenshuai.xi
730*53ee8cc1Swenshuai.xi
731*53ee8cc1Swenshuai.xi //******************************************************************************
732*53ee8cc1Swenshuai.xi /// get maximal value of gain
733*53ee8cc1Swenshuai.xi /// @param
734*53ee8cc1Swenshuai.xi /// @return maximal value of gain
735*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetMaximalGainValue_U2(void * pInstance)736*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalGainValue_U2(void* pInstance)
737*53ee8cc1Swenshuai.xi {
738*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetMaximalGainValue(pInstance);
739*53ee8cc1Swenshuai.xi }
740*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetMaximalGainValue(void)741*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetMaximalGainValue(void)
742*53ee8cc1Swenshuai.xi {
743*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
744*53ee8cc1Swenshuai.xi {
745*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
746*53ee8cc1Swenshuai.xi return 0;
747*53ee8cc1Swenshuai.xi }
748*53ee8cc1Swenshuai.xi
749*53ee8cc1Swenshuai.xi stXC_ADC_GETMAXIMALGAINVALUE XCArgs;
750*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
751*53ee8cc1Swenshuai.xi
752*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETMAXIMALGAINVALUE, (void*)&XCArgs) != 0)
753*53ee8cc1Swenshuai.xi {
754*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
755*53ee8cc1Swenshuai.xi return 0;
756*53ee8cc1Swenshuai.xi }
757*53ee8cc1Swenshuai.xi else
758*53ee8cc1Swenshuai.xi {
759*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
760*53ee8cc1Swenshuai.xi }
761*53ee8cc1Swenshuai.xi
762*53ee8cc1Swenshuai.xi }
763*53ee8cc1Swenshuai.xi
764*53ee8cc1Swenshuai.xi //******************************************************************************
765*53ee8cc1Swenshuai.xi /// get HW center Gain value
766*53ee8cc1Swenshuai.xi /// @param
767*53ee8cc1Swenshuai.xi /// @return HW default Gain value
768*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetCenterGain_U2(void * pInstance)769*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterGain_U2(void* pInstance)
770*53ee8cc1Swenshuai.xi {
771*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetCenterGain(pInstance);
772*53ee8cc1Swenshuai.xi }
773*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetCenterGain(void)774*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterGain(void)
775*53ee8cc1Swenshuai.xi {
776*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
777*53ee8cc1Swenshuai.xi {
778*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
779*53ee8cc1Swenshuai.xi return 0;
780*53ee8cc1Swenshuai.xi }
781*53ee8cc1Swenshuai.xi
782*53ee8cc1Swenshuai.xi stXC_ADC_GETCENTERGAIN XCArgs;
783*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
784*53ee8cc1Swenshuai.xi
785*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETCENTERGAIN, (void*)&XCArgs) != 0)
786*53ee8cc1Swenshuai.xi {
787*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
788*53ee8cc1Swenshuai.xi return 0;
789*53ee8cc1Swenshuai.xi }
790*53ee8cc1Swenshuai.xi else
791*53ee8cc1Swenshuai.xi {
792*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
793*53ee8cc1Swenshuai.xi }
794*53ee8cc1Swenshuai.xi }
795*53ee8cc1Swenshuai.xi
796*53ee8cc1Swenshuai.xi //******************************************************************************
797*53ee8cc1Swenshuai.xi /// get HW center Gain value
798*53ee8cc1Swenshuai.xi /// @param
799*53ee8cc1Swenshuai.xi /// @return HW default Gain value
800*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_GetCenterOffset_U2(void * pInstance)801*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterOffset_U2(void* pInstance)
802*53ee8cc1Swenshuai.xi {
803*53ee8cc1Swenshuai.xi return MDrv_XC_ADC_GetCenterOffset(pInstance);
804*53ee8cc1Swenshuai.xi }
805*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetCenterOffset(void)806*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ADC_GetCenterOffset(void)
807*53ee8cc1Swenshuai.xi {
808*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
809*53ee8cc1Swenshuai.xi {
810*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
811*53ee8cc1Swenshuai.xi return 0;
812*53ee8cc1Swenshuai.xi }
813*53ee8cc1Swenshuai.xi
814*53ee8cc1Swenshuai.xi stXC_ADC_GETCENTEROFFSET XCArgs;
815*53ee8cc1Swenshuai.xi XCArgs.u16ReturnValue = 0;
816*53ee8cc1Swenshuai.xi
817*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GETCENTEROFFSET, (void*)&XCArgs) != 0)
818*53ee8cc1Swenshuai.xi {
819*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
820*53ee8cc1Swenshuai.xi return 0;
821*53ee8cc1Swenshuai.xi }
822*53ee8cc1Swenshuai.xi else
823*53ee8cc1Swenshuai.xi {
824*53ee8cc1Swenshuai.xi return XCArgs.u16ReturnValue;
825*53ee8cc1Swenshuai.xi }
826*53ee8cc1Swenshuai.xi }
827*53ee8cc1Swenshuai.xi
828*53ee8cc1Swenshuai.xi //******************************************************************************
829*53ee8cc1Swenshuai.xi /// Set Gain value
830*53ee8cc1Swenshuai.xi /// @param u8color \b IN The channel type need to be set
831*53ee8cc1Swenshuai.xi /// @param u16value \b IN The value need to be set.
832*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_SetGain_U2(void * pInstance,MS_U8 u8Color,MS_U16 u16Value)833*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetGain_U2(void* pInstance, MS_U8 u8Color, MS_U16 u16Value)
834*53ee8cc1Swenshuai.xi {
835*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetGain(pInstance, u8Color, u16Value);
836*53ee8cc1Swenshuai.xi }
837*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetGain(MS_U8 u8Color,MS_U16 u16Value)838*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetGain(MS_U8 u8Color, MS_U16 u16Value)
839*53ee8cc1Swenshuai.xi {
840*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
841*53ee8cc1Swenshuai.xi {
842*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
843*53ee8cc1Swenshuai.xi return;
844*53ee8cc1Swenshuai.xi }
845*53ee8cc1Swenshuai.xi
846*53ee8cc1Swenshuai.xi stXC_ADC_SETGAIN XCArgs;
847*53ee8cc1Swenshuai.xi XCArgs.u8Color = u8Color;
848*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
849*53ee8cc1Swenshuai.xi
850*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETGAIN, (void*)&XCArgs) != 0)
851*53ee8cc1Swenshuai.xi {
852*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
853*53ee8cc1Swenshuai.xi return;
854*53ee8cc1Swenshuai.xi }
855*53ee8cc1Swenshuai.xi else
856*53ee8cc1Swenshuai.xi {
857*53ee8cc1Swenshuai.xi return;
858*53ee8cc1Swenshuai.xi }
859*53ee8cc1Swenshuai.xi }
860*53ee8cc1Swenshuai.xi
861*53ee8cc1Swenshuai.xi //******************************************************************************
862*53ee8cc1Swenshuai.xi /// Set offset value
863*53ee8cc1Swenshuai.xi /// @param u8color \b IN The channel type need to be set
864*53ee8cc1Swenshuai.xi /// @param u16Value \b IN The value need to be set.
865*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_SetOffset_U2(void * pInstance,MS_U8 u8Color,MS_U16 u16Value)866*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetOffset_U2(void* pInstance, MS_U8 u8Color, MS_U16 u16Value)
867*53ee8cc1Swenshuai.xi {
868*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetOffset(pInstance, u8Color, u16Value);
869*53ee8cc1Swenshuai.xi }
870*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetOffset(MS_U8 u8Color,MS_U16 u16Value)871*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetOffset(MS_U8 u8Color, MS_U16 u16Value)
872*53ee8cc1Swenshuai.xi {
873*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
874*53ee8cc1Swenshuai.xi {
875*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
876*53ee8cc1Swenshuai.xi return;
877*53ee8cc1Swenshuai.xi }
878*53ee8cc1Swenshuai.xi
879*53ee8cc1Swenshuai.xi stXC_ADC_SETOFFSET XCArgs;
880*53ee8cc1Swenshuai.xi XCArgs.u8Color = u8Color;
881*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
882*53ee8cc1Swenshuai.xi
883*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETOFFSET, (void*)&XCArgs) != 0)
884*53ee8cc1Swenshuai.xi {
885*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
886*53ee8cc1Swenshuai.xi return;
887*53ee8cc1Swenshuai.xi }
888*53ee8cc1Swenshuai.xi else
889*53ee8cc1Swenshuai.xi {
890*53ee8cc1Swenshuai.xi return;
891*53ee8cc1Swenshuai.xi }
892*53ee8cc1Swenshuai.xi }
893*53ee8cc1Swenshuai.xi
894*53ee8cc1Swenshuai.xi //******************************************************************************
895*53ee8cc1Swenshuai.xi /// Set ADC gain / offset by referring input structure.
896*53ee8cc1Swenshuai.xi /// @param pstADCSetting \b IN gain / offset need to be set
897*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_AdjustGainOffset_U2(void * pInstance,APIXC_AdcGainOffsetSetting * pstADCSetting)898*53ee8cc1Swenshuai.xi void MApi_XC_ADC_AdjustGainOffset_U2(void* pInstance, APIXC_AdcGainOffsetSetting* pstADCSetting)
899*53ee8cc1Swenshuai.xi {
900*53ee8cc1Swenshuai.xi if(pstADCSetting == NULL)
901*53ee8cc1Swenshuai.xi {
902*53ee8cc1Swenshuai.xi return;
903*53ee8cc1Swenshuai.xi }
904*53ee8cc1Swenshuai.xi _XC_ENTRY(pInstance);
905*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetOffsetSetting(pInstance, pstADCSetting);
906*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetGainSetting(pInstance, pstADCSetting);
907*53ee8cc1Swenshuai.xi _XC_RETURN(pInstance);
908*53ee8cc1Swenshuai.xi }
909*53ee8cc1Swenshuai.xi
MApi_XC_ADC_AdjustGainOffset(APIXC_AdcGainOffsetSetting * pstADCSetting)910*53ee8cc1Swenshuai.xi void MApi_XC_ADC_AdjustGainOffset(APIXC_AdcGainOffsetSetting* pstADCSetting)
911*53ee8cc1Swenshuai.xi {
912*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
913*53ee8cc1Swenshuai.xi {
914*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
915*53ee8cc1Swenshuai.xi return;
916*53ee8cc1Swenshuai.xi }
917*53ee8cc1Swenshuai.xi
918*53ee8cc1Swenshuai.xi stXC_ADC_ADJUSTGAINOFFSET XCArgs;
919*53ee8cc1Swenshuai.xi XCArgs.pstADCSetting = pstADCSetting;
920*53ee8cc1Swenshuai.xi
921*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_ADJUSTGAINOFFSET, (void*)&XCArgs) != 0)
922*53ee8cc1Swenshuai.xi {
923*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
924*53ee8cc1Swenshuai.xi return;
925*53ee8cc1Swenshuai.xi }
926*53ee8cc1Swenshuai.xi else
927*53ee8cc1Swenshuai.xi {
928*53ee8cc1Swenshuai.xi return;
929*53ee8cc1Swenshuai.xi }
930*53ee8cc1Swenshuai.xi }
931*53ee8cc1Swenshuai.xi
932*53ee8cc1Swenshuai.xi //******************************************************************************
933*53ee8cc1Swenshuai.xi /// Set ADC calibration for each input source
934*53ee8cc1Swenshuai.xi /// @param enInputSource \b IN The source array.
935*53ee8cc1Swenshuai.xi //******************************************************************************
MApi_XC_ADC_Source_Calibrate_U2(void * pInstance,INPUT_SOURCE_TYPE_t enInputSourceType)936*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Source_Calibrate_U2(void* pInstance, INPUT_SOURCE_TYPE_t enInputSourceType)
937*53ee8cc1Swenshuai.xi {
938*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
939*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
940*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
941*53ee8cc1Swenshuai.xi MDrv_XC_ADC_Source_Calibrate(pInstance, MDrv_XC_ADC_ConvertSrcToADCSrc(pInstance, enInputSourceType));
942*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
943*53ee8cc1Swenshuai.xi }
944*53ee8cc1Swenshuai.xi
MApi_XC_ADC_Source_Calibrate(INPUT_SOURCE_TYPE_t enInputSourceType)945*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Source_Calibrate(INPUT_SOURCE_TYPE_t enInputSourceType)
946*53ee8cc1Swenshuai.xi {
947*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
948*53ee8cc1Swenshuai.xi {
949*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
950*53ee8cc1Swenshuai.xi return;
951*53ee8cc1Swenshuai.xi }
952*53ee8cc1Swenshuai.xi
953*53ee8cc1Swenshuai.xi stXC_ADC_SOURCE_CALIBRATE XCArgs;
954*53ee8cc1Swenshuai.xi XCArgs.enInputSourceType = enInputSourceType;
955*53ee8cc1Swenshuai.xi
956*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SOURCE_CALIBRATE, (void*)&XCArgs) != 0)
957*53ee8cc1Swenshuai.xi {
958*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
959*53ee8cc1Swenshuai.xi return;
960*53ee8cc1Swenshuai.xi }
961*53ee8cc1Swenshuai.xi else
962*53ee8cc1Swenshuai.xi {
963*53ee8cc1Swenshuai.xi return;
964*53ee8cc1Swenshuai.xi }
965*53ee8cc1Swenshuai.xi }
966*53ee8cc1Swenshuai.xi
967*53ee8cc1Swenshuai.xi /******************************************************************************/
968*53ee8cc1Swenshuai.xi ///Set SOG level
969*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ADC_SetSoGCal_U2(void * pInstance)970*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGCal_U2(void* pInstance)
971*53ee8cc1Swenshuai.xi {
972*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetSoGCal(pInstance);
973*53ee8cc1Swenshuai.xi }
974*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetSoGCal(void)975*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetSoGCal(void)
976*53ee8cc1Swenshuai.xi {
977*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
978*53ee8cc1Swenshuai.xi {
979*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
980*53ee8cc1Swenshuai.xi return;
981*53ee8cc1Swenshuai.xi }
982*53ee8cc1Swenshuai.xi
983*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETSOGCAL, NULL) != 0)
984*53ee8cc1Swenshuai.xi {
985*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
986*53ee8cc1Swenshuai.xi return;
987*53ee8cc1Swenshuai.xi }
988*53ee8cc1Swenshuai.xi else
989*53ee8cc1Swenshuai.xi {
990*53ee8cc1Swenshuai.xi return;
991*53ee8cc1Swenshuai.xi }
992*53ee8cc1Swenshuai.xi }
993*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetRGB_PIPE_Delay_U2(void * pInstance,MS_U8 u8Value)994*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetRGB_PIPE_Delay_U2(void* pInstance, MS_U8 u8Value)
995*53ee8cc1Swenshuai.xi {
996*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetRGB_PIPE_Delay(pInstance, u8Value);
997*53ee8cc1Swenshuai.xi }
998*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetRGB_PIPE_Delay(MS_U8 u8Value)999*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetRGB_PIPE_Delay(MS_U8 u8Value)
1000*53ee8cc1Swenshuai.xi {
1001*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1002*53ee8cc1Swenshuai.xi {
1003*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1004*53ee8cc1Swenshuai.xi return;
1005*53ee8cc1Swenshuai.xi }
1006*53ee8cc1Swenshuai.xi
1007*53ee8cc1Swenshuai.xi stXC_ADC_SETRGB_PIPE_DELAY XCArgs;
1008*53ee8cc1Swenshuai.xi XCArgs.u8Value = u8Value;
1009*53ee8cc1Swenshuai.xi
1010*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETRGB_PIPE_DELAY, (void*)&XCArgs) != 0)
1011*53ee8cc1Swenshuai.xi {
1012*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1013*53ee8cc1Swenshuai.xi return;
1014*53ee8cc1Swenshuai.xi }
1015*53ee8cc1Swenshuai.xi else
1016*53ee8cc1Swenshuai.xi {
1017*53ee8cc1Swenshuai.xi return;
1018*53ee8cc1Swenshuai.xi }
1019*53ee8cc1Swenshuai.xi }
1020*53ee8cc1Swenshuai.xi
MApi_XC_ADC_ScartRGB_SOG_ClampDelay_U2(void * pInstance,MS_U16 u16Clpdly,MS_U16 u16Caldur)1021*53ee8cc1Swenshuai.xi void MApi_XC_ADC_ScartRGB_SOG_ClampDelay_U2(void* pInstance, MS_U16 u16Clpdly, MS_U16 u16Caldur)
1022*53ee8cc1Swenshuai.xi {
1023*53ee8cc1Swenshuai.xi MDrv_XC_ADC_ScartRGB_SOG_ClampDelay(pInstance, u16Clpdly, u16Caldur);
1024*53ee8cc1Swenshuai.xi }
1025*53ee8cc1Swenshuai.xi
MApi_XC_ADC_ScartRGB_SOG_ClampDelay(MS_U16 u16Clpdly,MS_U16 u16Caldur)1026*53ee8cc1Swenshuai.xi void MApi_XC_ADC_ScartRGB_SOG_ClampDelay(MS_U16 u16Clpdly, MS_U16 u16Caldur)
1027*53ee8cc1Swenshuai.xi {
1028*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1029*53ee8cc1Swenshuai.xi {
1030*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1031*53ee8cc1Swenshuai.xi return;
1032*53ee8cc1Swenshuai.xi }
1033*53ee8cc1Swenshuai.xi
1034*53ee8cc1Swenshuai.xi stXC_ADC_SCARTRGB_SOG_CLAMPDELAY XCArgs;
1035*53ee8cc1Swenshuai.xi XCArgs.u16Clpdly = u16Clpdly;
1036*53ee8cc1Swenshuai.xi XCArgs.u16Caldur = u16Caldur;
1037*53ee8cc1Swenshuai.xi
1038*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SCARTRGB_SOG_CLAMPDELAY, (void*)&XCArgs) != 0)
1039*53ee8cc1Swenshuai.xi {
1040*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1041*53ee8cc1Swenshuai.xi return;
1042*53ee8cc1Swenshuai.xi }
1043*53ee8cc1Swenshuai.xi else
1044*53ee8cc1Swenshuai.xi {
1045*53ee8cc1Swenshuai.xi return;
1046*53ee8cc1Swenshuai.xi }
1047*53ee8cc1Swenshuai.xi }
1048*53ee8cc1Swenshuai.xi
MApi_XC_ADC_Set_YPbPrLooseLPF_U2(void * pInstance,MS_BOOL bEnable)1049*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_YPbPrLooseLPF_U2(void* pInstance, MS_BOOL bEnable)
1050*53ee8cc1Swenshuai.xi {
1051*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1052*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1053*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1054*53ee8cc1Swenshuai.xi MDrv_XC_ADC_Set_YPbPrLooseLPF(pInstance, bEnable);
1055*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1056*53ee8cc1Swenshuai.xi }
1057*53ee8cc1Swenshuai.xi
MApi_XC_ADC_Set_YPbPrLooseLPF(MS_BOOL bEnable)1058*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_YPbPrLooseLPF(MS_BOOL bEnable)
1059*53ee8cc1Swenshuai.xi {
1060*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1061*53ee8cc1Swenshuai.xi {
1062*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1063*53ee8cc1Swenshuai.xi return;
1064*53ee8cc1Swenshuai.xi }
1065*53ee8cc1Swenshuai.xi
1066*53ee8cc1Swenshuai.xi stXC_ADC_SET_YPBPRLOOSELPF XCArgs;
1067*53ee8cc1Swenshuai.xi XCArgs.bEnable = bEnable;
1068*53ee8cc1Swenshuai.xi
1069*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SET_YPBPRLOOSELPF, (void*)&XCArgs) != 0)
1070*53ee8cc1Swenshuai.xi {
1071*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1072*53ee8cc1Swenshuai.xi return;
1073*53ee8cc1Swenshuai.xi }
1074*53ee8cc1Swenshuai.xi else
1075*53ee8cc1Swenshuai.xi {
1076*53ee8cc1Swenshuai.xi return;
1077*53ee8cc1Swenshuai.xi }
1078*53ee8cc1Swenshuai.xi }
1079*53ee8cc1Swenshuai.xi
MApi_XC_ADC_Set_SOGBW_U2(void * pInstance,MS_U16 u16Value)1080*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_SOGBW_U2(void* pInstance, MS_U16 u16Value)
1081*53ee8cc1Swenshuai.xi {
1082*53ee8cc1Swenshuai.xi _XC_ENTRY(pInstance);
1083*53ee8cc1Swenshuai.xi MDrv_XC_ADC_Set_SOGBW(pInstance, u16Value);
1084*53ee8cc1Swenshuai.xi _XC_RETURN(pInstance);
1085*53ee8cc1Swenshuai.xi }
1086*53ee8cc1Swenshuai.xi
MApi_XC_ADC_Set_SOGBW(MS_U16 u16Value)1087*53ee8cc1Swenshuai.xi void MApi_XC_ADC_Set_SOGBW(MS_U16 u16Value)
1088*53ee8cc1Swenshuai.xi {
1089*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1090*53ee8cc1Swenshuai.xi {
1091*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1092*53ee8cc1Swenshuai.xi return;
1093*53ee8cc1Swenshuai.xi }
1094*53ee8cc1Swenshuai.xi
1095*53ee8cc1Swenshuai.xi stXC_ADC_SET_SOGBW XCArgs;
1096*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
1097*53ee8cc1Swenshuai.xi
1098*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SET_SOGBW, (void*)&XCArgs) != 0)
1099*53ee8cc1Swenshuai.xi {
1100*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1101*53ee8cc1Swenshuai.xi return;
1102*53ee8cc1Swenshuai.xi }
1103*53ee8cc1Swenshuai.xi else
1104*53ee8cc1Swenshuai.xi {
1105*53ee8cc1Swenshuai.xi return;
1106*53ee8cc1Swenshuai.xi }
1107*53ee8cc1Swenshuai.xi }
1108*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetClampDuration_U2(void * pInstance,MS_U16 u16Value)1109*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetClampDuration_U2(void* pInstance, MS_U16 u16Value)
1110*53ee8cc1Swenshuai.xi {
1111*53ee8cc1Swenshuai.xi MDrv_XC_ADC_SetClampDuration(pInstance, u16Value);
1112*53ee8cc1Swenshuai.xi }
1113*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetClampDuration(MS_U16 u16Value)1114*53ee8cc1Swenshuai.xi void MApi_XC_ADC_SetClampDuration(MS_U16 u16Value)
1115*53ee8cc1Swenshuai.xi {
1116*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1117*53ee8cc1Swenshuai.xi {
1118*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1119*53ee8cc1Swenshuai.xi return;
1120*53ee8cc1Swenshuai.xi }
1121*53ee8cc1Swenshuai.xi
1122*53ee8cc1Swenshuai.xi stXC_ADC_SETCLAMPDURATION XCArgs;
1123*53ee8cc1Swenshuai.xi XCArgs.u16Value = u16Value;
1124*53ee8cc1Swenshuai.xi
1125*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SETCLAMPDURATION, (void*)&XCArgs) != 0)
1126*53ee8cc1Swenshuai.xi {
1127*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1128*53ee8cc1Swenshuai.xi return;
1129*53ee8cc1Swenshuai.xi }
1130*53ee8cc1Swenshuai.xi else
1131*53ee8cc1Swenshuai.xi {
1132*53ee8cc1Swenshuai.xi return;
1133*53ee8cc1Swenshuai.xi }
1134*53ee8cc1Swenshuai.xi }
1135*53ee8cc1Swenshuai.xi
1136*53ee8cc1Swenshuai.xi
MApi_XC_ADC_EnableHWCalibration_U2(void * pInstance,MS_BOOL bEnable)1137*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_EnableHWCalibration_U2(void* pInstance, MS_BOOL bEnable)
1138*53ee8cc1Swenshuai.xi {
1139*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1140*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1141*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1142*53ee8cc1Swenshuai.xi MDrv_XC_ADC_EnableHWCalibration(pInstance, bEnable);
1143*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1144*53ee8cc1Swenshuai.xi return TRUE;
1145*53ee8cc1Swenshuai.xi }
1146*53ee8cc1Swenshuai.xi
MApi_XC_ADC_EnableHWCalibration(MS_BOOL bEnable)1147*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_EnableHWCalibration(MS_BOOL bEnable)
1148*53ee8cc1Swenshuai.xi {
1149*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1150*53ee8cc1Swenshuai.xi {
1151*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1152*53ee8cc1Swenshuai.xi return FALSE;
1153*53ee8cc1Swenshuai.xi }
1154*53ee8cc1Swenshuai.xi
1155*53ee8cc1Swenshuai.xi stXC_ADC_ENABLEHWCALIBRATION XCArgs;
1156*53ee8cc1Swenshuai.xi XCArgs.bEnable = bEnable;
1157*53ee8cc1Swenshuai.xi XCArgs.bReturnValue = FALSE;
1158*53ee8cc1Swenshuai.xi
1159*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_ENABLEHWCALIBRATION, (void*)&XCArgs) != 0)
1160*53ee8cc1Swenshuai.xi {
1161*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1162*53ee8cc1Swenshuai.xi return FALSE;
1163*53ee8cc1Swenshuai.xi }
1164*53ee8cc1Swenshuai.xi else
1165*53ee8cc1Swenshuai.xi {
1166*53ee8cc1Swenshuai.xi return XCArgs.bReturnValue;
1167*53ee8cc1Swenshuai.xi }
1168*53ee8cc1Swenshuai.xi }
1169*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetIdacCurrentMode_U2(void * pInstance,ADC_DacCurrentMode_t eMode)1170*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_SetIdacCurrentMode_U2(void* pInstance, ADC_DacCurrentMode_t eMode)
1171*53ee8cc1Swenshuai.xi {
1172*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1173*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1174*53ee8cc1Swenshuai.xi MS_BOOL bReturn = FALSE;
1175*53ee8cc1Swenshuai.xi
1176*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1177*53ee8cc1Swenshuai.xi bReturn = MDrv_XC_ADC_SetIdacCurrentMode(pInstance, eMode);
1178*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1179*53ee8cc1Swenshuai.xi
1180*53ee8cc1Swenshuai.xi return bReturn;
1181*53ee8cc1Swenshuai.xi }
1182*53ee8cc1Swenshuai.xi
MApi_XC_ADC_SetIdacCurrentMode(ADC_DacCurrentMode_t eMode)1183*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ADC_SetIdacCurrentMode(ADC_DacCurrentMode_t eMode)
1184*53ee8cc1Swenshuai.xi {
1185*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1186*53ee8cc1Swenshuai.xi {
1187*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1188*53ee8cc1Swenshuai.xi return FALSE;
1189*53ee8cc1Swenshuai.xi }
1190*53ee8cc1Swenshuai.xi
1191*53ee8cc1Swenshuai.xi stXC_ADC_SETIDACCURRENTMODE XCArgs;
1192*53ee8cc1Swenshuai.xi XCArgs.eMode = eMode;
1193*53ee8cc1Swenshuai.xi XCArgs.bReturnValue = FALSE;
1194*53ee8cc1Swenshuai.xi
1195*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_SET_IDACCURRENTMODE, (void*)&XCArgs) != 0)
1196*53ee8cc1Swenshuai.xi {
1197*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1198*53ee8cc1Swenshuai.xi return FALSE;
1199*53ee8cc1Swenshuai.xi }
1200*53ee8cc1Swenshuai.xi else
1201*53ee8cc1Swenshuai.xi {
1202*53ee8cc1Swenshuai.xi return XCArgs.bReturnValue;
1203*53ee8cc1Swenshuai.xi }
1204*53ee8cc1Swenshuai.xi }
1205*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetIdacCurrentMode_U2(void * pInstance)1206*53ee8cc1Swenshuai.xi ADC_DacCurrentMode_t MApi_XC_ADC_GetIdacCurrentMode_U2(void* pInstance)
1207*53ee8cc1Swenshuai.xi {
1208*53ee8cc1Swenshuai.xi ADC_DacCurrentMode_t eReturnMode = E_ADC_IDAC_FULL_MODE;
1209*53ee8cc1Swenshuai.xi XC_INSTANCE_PRIVATE *psXCInstPri = NULL;
1210*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psXCInstPri);
1211*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_ENTRY(pInstance,E_XC_ID_VAR);
1212*53ee8cc1Swenshuai.xi eReturnMode = MDrv_XC_ADC_GetIdacCurrentMode(pInstance);
1213*53ee8cc1Swenshuai.xi _XC_SEMAPHORE_RETURN(pInstance,E_XC_ID_VAR);
1214*53ee8cc1Swenshuai.xi
1215*53ee8cc1Swenshuai.xi return eReturnMode;
1216*53ee8cc1Swenshuai.xi }
1217*53ee8cc1Swenshuai.xi
MApi_XC_ADC_GetIdacCurrentMode(void)1218*53ee8cc1Swenshuai.xi ADC_DacCurrentMode_t MApi_XC_ADC_GetIdacCurrentMode(void)
1219*53ee8cc1Swenshuai.xi {
1220*53ee8cc1Swenshuai.xi if (pu32XCInst == NULL)
1221*53ee8cc1Swenshuai.xi {
1222*53ee8cc1Swenshuai.xi printf("[%s,%5d]No instance existed, please get an instance by calling MApi_XC_Init() first\n",__FUNCTION__,__LINE__);
1223*53ee8cc1Swenshuai.xi return FALSE;
1224*53ee8cc1Swenshuai.xi }
1225*53ee8cc1Swenshuai.xi
1226*53ee8cc1Swenshuai.xi stXC_ADC_GETIDACCURRENTMODE XCArgs;
1227*53ee8cc1Swenshuai.xi XCArgs.eReturnMode = E_ADC_IDAC_FULL_MODE;
1228*53ee8cc1Swenshuai.xi
1229*53ee8cc1Swenshuai.xi if(UtopiaIoctl(pu32XCInst, E_XC_ADC_CMD_GET_IDACCURRENTMODE, (void*)&XCArgs) != 0)
1230*53ee8cc1Swenshuai.xi {
1231*53ee8cc1Swenshuai.xi printf("Obtain XC engine fail\n");
1232*53ee8cc1Swenshuai.xi return FALSE;
1233*53ee8cc1Swenshuai.xi }
1234*53ee8cc1Swenshuai.xi else
1235*53ee8cc1Swenshuai.xi {
1236*53ee8cc1Swenshuai.xi return XCArgs.eReturnMode;
1237*53ee8cc1Swenshuai.xi }
1238*53ee8cc1Swenshuai.xi }
1239*53ee8cc1Swenshuai.xi
1240*53ee8cc1Swenshuai.xi #undef _API_XC_ADC_C_
1241*53ee8cc1Swenshuai.xi #endif // _API_XC_ADC_C_
1242