xref: /utopia/UTPA2-700.0.x/modules/xc/utopia_adaption/xc/XC_ADC_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// file    XC_adp.c
80 /// @brief  Main API in XC library.
81 /// @author MStar Semiconductor Inc.
82 ////////////////////////////////////////////////////////////////////////////////
83 
84 #ifndef _XC_ADP_C_
85 #define _XC_ADP_C_
86 
87 //------------------------------------------------------------------------------
88 //  Include Files
89 //------------------------------------------------------------------------------
90 // Common Definition
91 #include <linux/kernel.h>
92 #include <linux/string.h>
93 #include <linux/sched.h>
94 #include <linux/slab.h>
95 #include "MsTypes.h"
96 #include "utopia.h"
97 #include "utopia_adp.h"
98 #include "MsOS.h"
99 
100 // Internal Definition
101 #include "drvXC_IOPort.h"
102 #include "apiXC.h"
103 #include "apiXC_Adc.h"
104 #include "apiXC_Adc_v2.h"
105 #include "apiXC_v2.h"
106 #include "XC_ADC_adp.h"
107 #include "XC_adp.h"
108 
109 //------------------------------------------------------------------------------
110 //  Driver Compiler Options
111 //------------------------------------------------------------------------------
112 
113 //------------------------------------------------------------------------------
114 //  Local Defines
115 //------------------------------------------------------------------------------
116 
117 //------------------------------------------------------------------------------
118 //  Local Structurs
119 //------------------------------------------------------------------------------
120 
121 //------------------------------------------------------------------------------
122 //  Global Variables
123 //------------------------------------------------------------------------------
124 //Function parameter
125 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETCVBSOUT[5];
126 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_ISCVBSOUTENABLED[5];
127 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETPCCLOCK[5];
128 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETPHASE[5];
129 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETPHASEEX[5];
130 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETPHASERANGE[5];
131 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETPHASE[5];
132 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETPHASEEX[5];
133 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_ISSCARTRGB[5];
134 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETPCCLOCK[5];
135 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETSOGLEVELRANGE[5];
136 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETSOGLEVEL[5];
137 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETDEFAULTGAINOFFSET[5];
138 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETMAXIMALOFFSETVALUE[5];
139 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETMAXIMALGAINVALUE[5];
140 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETCENTERGAIN[5];
141 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_GETCENTEROFFSET[5];
142 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETGAIN[5];
143 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETOFFSET[5];
144 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_ADJUSTGAINOFFSET[5];
145 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SOURCE_CALIBRATE[5];
146 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETRGB_PIPE_DELAY[5];
147 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SCARTRGB_SOG_CLAMPDELAY[5];
148 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SET_YPBPRLOOSELPF[5];
149 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SET_SOGBW[5];
150 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_SETCLAMPDURATION[5];
151 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_ENABLEHWCALIBRATION[5];
152 
153 
154 //Function parameter's pointer
155 UADP_STRUCT_POINTER_TABLE spt_XC_ADC_TYPE_U32[5];
156 UADP_STRUCT_POINTER_TABLE spt_XC_AdcGainOffsetSetting[5];
157 
158 //------------------------------------------------------------------------------
159 //  Local Variables
160 //------------------------------------------------------------------------------
161 
162 //------------------------------------------------------------------------------
163 //  Debug Functions
164 //------------------------------------------------------------------------------
165 
166 //------------------------------------------------------------------------------
167 //  Local Functions
168 //------------------------------------------------------------------------------
169 
170 //------------------------------------------------------------------------------
171 //  Global Functions
172 //------------------------------------------------------------------------------
XC_ADC_adp_Init(void)173 MS_U32 XC_ADC_adp_Init(void)
174 {
175 
176 //set table
177     MS_U32 temp=0;
178 
179     //Function parameter
180     //pstXC_ADC_SETCVBSOUT          pXC_ADC_SETCVBSOUT       = (pstXC_ADC_SETCVBSOUT)temp;
181 	//pstXC_ADC_ISCVBSOUTENABLED    pXC_ADC_ISCVBSOUTENABLED = (pstXC_ADC_ISCVBSOUTENABLED)temp;
182 	//pstXC_ADC_SETPCCLOCK          pXC_ADC_SETPCCLOCK       = (pstXC_ADC_SETPCCLOCK)temp;
183 	//pstXC_ADC_SETPHASE            pXC_ADC_SETPHASE         = (pstXC_ADC_SETPHASE)temp;
184 	//pstXC_ADC_SETPHASEEX          pXC_ADC_SETPHASEEX       = (pstXC_ADC_SETPHASEEX)temp;
185 	//pstXC_ADC_GETPHASERANGE       pXC_ADC_GETPHASERANGE    = (pstXC_ADC_GETPHASERANGE)temp;
186 	//pstXC_ADC_GETPHASE            pXC_ADC_GETPHASE         = (pstXC_ADC_GETPHASE)temp;
187 	//pstXC_ADC_GETPHASEEX          pXC_ADC_GETPHASEEX       = (pstXC_ADC_GETPHASEEX)temp;
188 	//pstXC_ADC_ISSCARTRGB          pXC_ADC_ISSCARTRGB       = (pstXC_ADC_ISSCARTRGB)temp;
189 	//pstXC_ADC_GETPCCLOCK          pXC_ADC_GETPCCLOCK       = (pstXC_ADC_GETPCCLOCK)temp;
190 	pstXC_ADC_GETSOGLEVELRANGE    pXC_ADC_GETSOGLEVELRANGE = (pstXC_ADC_GETSOGLEVELRANGE)temp;
191 	//pstXC_ADC_SETSOGLEVEL         pXC_ADC_SETSOGLEVEL      = (pstXC_ADC_SETSOGLEVEL)temp;
192 	pstXC_ADC_GETDEFAULTGAINOFFSET  pXC_ADC_GETDEFAULTGAINOFFSET  = (pstXC_ADC_GETDEFAULTGAINOFFSET)temp;
193 	//pstXC_ADC_GETMAXIMALOFFSETVALUE pXC_ADC_GETMAXIMALOFFSETVALUE = (pstXC_ADC_GETMAXIMALOFFSETVALUE)temp;
194 	//pstXC_ADC_GETMAXIMALGAINVALUE   pXC_ADC_GETMAXIMALGAINVALUE   = (pstXC_ADC_GETMAXIMALGAINVALUE)temp;
195 	//pstXC_ADC_GETCENTERGAIN         pXC_ADC_GETCENTERGAIN         = (pstXC_ADC_GETCENTERGAIN)temp;
196 	//pstXC_ADC_GETCENTEROFFSET       pXC_ADC_GETCENTEROFFSET       = (pstXC_ADC_GETCENTEROFFSET)temp;
197 	//pstXC_ADC_SETGAIN               pXC_ADC_SETGAIN               = (pstXC_ADC_SETGAIN)temp;
198 	//pstXC_ADC_SETOFFSET             pXC_ADC_SETOFFSET             = (pstXC_ADC_SETOFFSET)temp;
199 	pstXC_ADC_ADJUSTGAINOFFSET      pXC_ADC_ADJUSTGAINOFFSET      = (pstXC_ADC_ADJUSTGAINOFFSET)temp;
200 	//pstXC_ADC_SOURCE_CALIBRATE      pXC_ADC_SOURCE_CALIBRATE      = (pstXC_ADC_SOURCE_CALIBRATE)temp;
201 	//pstXC_ADC_SETRGB_PIPE_DELAY     pXC_ADC_SETRGB_PIPE_DELAY     = (pstXC_ADC_SETRGB_PIPE_DELAY)temp;
202 	//pstXC_ADC_SCARTRGB_SOG_CLAMPDELAY pXC_ADC_SCARTRGB_SOG_CLAMPDELAY = (pstXC_ADC_SCARTRGB_SOG_CLAMPDELAY)temp;
203 	//pstXC_ADC_SET_YPBPRLOOSELPF       pXC_ADC_SET_YPBPRLOOSELPF       = (pstXC_ADC_SET_YPBPRLOOSELPF)temp;
204 	//pstXC_ADC_SET_SOGBW               pXC_ADC_SET_SOGBW               = (pstXC_ADC_SET_SOGBW)temp;
205 	//pstXC_ADC_SETCLAMPDURATION        pXC_ADC_SETCLAMPDURATION        = (pstXC_ADC_SETCLAMPDURATION)temp;
206 	//pstXC_ADC_ENABLEHWCALIBRATION     pXC_ADC_ENABLEHWCALIBRATION     = (pstXC_ADC_ENABLEHWCALIBRATION)temp;
207 
208 	//Function parameter's pointer
209 	//MS_U32* pstXC_ADC_TYPE_U32 = (MS_U32*)temp;
210     //APIXC_AdcGainOffsetSetting* pstADCSetting = (APIXC_AdcGainOffsetSetting*)temp;
211 
212     //Function parameter's pointer
213     UADPBypassSetSPT(&spt_XC_ADC_TYPE_U32[0],UADP_SPT_SELF_SIZE,0, sizeof(MS_U32));
214     UADPBypassSetSPT(&spt_XC_ADC_TYPE_U32[1],UADP_SPT_END , 0, 0);
215 
216     UADPBypassSetSPT(&spt_XC_AdcGainOffsetSetting[0],UADP_SPT_SELF_SIZE,0, sizeof(APIXC_AdcGainOffsetSetting));
217     UADPBypassSetSPT(&spt_XC_AdcGainOffsetSetting[1],UADP_SPT_END , 0, 0);
218 
219     //Function parameter
220     UADPBypassSetSPT(&spt_XC_ADC_SETCVBSOUT[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETCVBSOUT));
221     UADPBypassSetSPT(&spt_XC_ADC_SETCVBSOUT[1],UADP_SPT_END , 0, 0);
222 
223     UADPBypassSetSPT(&spt_XC_ADC_ISCVBSOUTENABLED[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_ISCVBSOUTENABLED));
224     UADPBypassSetSPT(&spt_XC_ADC_ISCVBSOUTENABLED[1],UADP_SPT_END , 0, 0);
225 
226     UADPBypassSetSPT(&spt_XC_ADC_SETPCCLOCK[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETPCCLOCK));
227     UADPBypassSetSPT(&spt_XC_ADC_SETPCCLOCK[1],UADP_SPT_END , 0, 0);
228 
229 	UADPBypassSetSPT(&spt_XC_ADC_SETPHASE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETPHASE));
230     UADPBypassSetSPT(&spt_XC_ADC_SETPHASE[1],UADP_SPT_END , 0, 0);
231 
232     UADPBypassSetSPT(&spt_XC_ADC_SETPHASEEX[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETPHASEEX));
233     UADPBypassSetSPT(&spt_XC_ADC_SETPHASEEX[1],UADP_SPT_END , 0, 0);
234 
235     UADPBypassSetSPT(&spt_XC_ADC_GETPHASERANGE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETPHASERANGE));
236     UADPBypassSetSPT(&spt_XC_ADC_GETPHASERANGE[1],UADP_SPT_END , 0, 0);
237 
238 	UADPBypassSetSPT(&spt_XC_ADC_GETPHASE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETPHASE));
239     UADPBypassSetSPT(&spt_XC_ADC_GETPHASE[1],UADP_SPT_END , 0, 0);
240 
241 	UADPBypassSetSPT(&spt_XC_ADC_GETPHASEEX[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETPHASEEX));
242 	UADPBypassSetSPT(&spt_XC_ADC_GETPHASEEX[1],UADP_SPT_END , 0, 0);
243 
244 	UADPBypassSetSPT(&spt_XC_ADC_ISSCARTRGB[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_ISSCARTRGB));
245     UADPBypassSetSPT(&spt_XC_ADC_ISSCARTRGB[1],UADP_SPT_END , 0, 0);
246 
247     UADPBypassSetSPT(&spt_XC_ADC_GETPCCLOCK[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETPCCLOCK));
248 	UADPBypassSetSPT(&spt_XC_ADC_GETPCCLOCK[1],UADP_SPT_END , 0, 0);
249 
250 
251     UADPBypassSetSPT(&spt_XC_ADC_GETSOGLEVELRANGE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETSOGLEVELRANGE));
252     UADPBypassSetSPT(&spt_XC_ADC_GETSOGLEVELRANGE[1],UADP_SPT_POINTER_TO_NEXT,
253         ((unsigned long)(&(pXC_ADC_GETSOGLEVELRANGE->u32min)) - (unsigned long)pXC_ADC_GETSOGLEVELRANGE), (unsigned long)spt_XC_ADC_TYPE_U32);
254     UADPBypassSetSPT(&spt_XC_ADC_GETSOGLEVELRANGE[2],UADP_SPT_POINTER_TO_NEXT,
255         ((unsigned long)(&(pXC_ADC_GETSOGLEVELRANGE->u32max)) - (unsigned long)pXC_ADC_GETSOGLEVELRANGE), (unsigned long)spt_XC_ADC_TYPE_U32);
256     UADPBypassSetSPT(&spt_XC_ADC_GETSOGLEVELRANGE[3],UADP_SPT_POINTER_TO_NEXT,
257         ((unsigned long)(&(pXC_ADC_GETSOGLEVELRANGE->u32Recommend_value)) - (unsigned long)pXC_ADC_GETSOGLEVELRANGE), (unsigned long)spt_XC_ADC_TYPE_U32);
258 	UADPBypassSetSPT(&spt_XC_ADC_GETSOGLEVELRANGE[4],UADP_SPT_END , 0, 0);
259 
260     UADPBypassSetSPT(&spt_XC_ADC_SETSOGLEVEL[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETSOGLEVEL));
261 	UADPBypassSetSPT(&spt_XC_ADC_SETSOGLEVEL[1],UADP_SPT_END , 0, 0);
262 
263     UADPBypassSetSPT(&spt_XC_ADC_GETDEFAULTGAINOFFSET[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETDEFAULTGAINOFFSET));
264     UADPBypassSetSPT(&spt_XC_ADC_GETDEFAULTGAINOFFSET[1],UADP_SPT_POINTER_TO_NEXT,
265         ((unsigned long)(&(pXC_ADC_GETDEFAULTGAINOFFSET->pstADCSetting)) - (unsigned long)pXC_ADC_GETDEFAULTGAINOFFSET), (unsigned long)spt_XC_AdcGainOffsetSetting);
266 	UADPBypassSetSPT(&spt_XC_ADC_GETDEFAULTGAINOFFSET[2],UADP_SPT_END , 0, 0);
267 
268     UADPBypassSetSPT(&spt_XC_ADC_GETMAXIMALOFFSETVALUE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETMAXIMALOFFSETVALUE));
269 	UADPBypassSetSPT(&spt_XC_ADC_GETMAXIMALOFFSETVALUE[1],UADP_SPT_END , 0, 0);
270 
271     UADPBypassSetSPT(&spt_XC_ADC_GETMAXIMALGAINVALUE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETMAXIMALGAINVALUE));
272 	UADPBypassSetSPT(&spt_XC_ADC_GETMAXIMALGAINVALUE[1],UADP_SPT_END , 0, 0);
273 
274     UADPBypassSetSPT(&spt_XC_ADC_GETCENTERGAIN[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETCENTERGAIN));
275 	UADPBypassSetSPT(&spt_XC_ADC_GETCENTERGAIN[1],UADP_SPT_END , 0, 0);
276 
277     UADPBypassSetSPT(&spt_XC_ADC_GETCENTEROFFSET[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_GETCENTEROFFSET));
278 	UADPBypassSetSPT(&spt_XC_ADC_GETCENTEROFFSET[1],UADP_SPT_END , 0, 0);
279 
280     UADPBypassSetSPT(&spt_XC_ADC_SETGAIN[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETGAIN));
281 	UADPBypassSetSPT(&spt_XC_ADC_SETGAIN[1],UADP_SPT_END , 0, 0);
282 
283     UADPBypassSetSPT(&spt_XC_ADC_SETOFFSET[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETOFFSET));
284 	UADPBypassSetSPT(&spt_XC_ADC_SETOFFSET[1],UADP_SPT_END , 0, 0);
285 
286     UADPBypassSetSPT(&spt_XC_ADC_ADJUSTGAINOFFSET[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_ADJUSTGAINOFFSET));
287     UADPBypassSetSPT(&spt_XC_ADC_ADJUSTGAINOFFSET[1],UADP_SPT_POINTER_TO_NEXT,
288         ((unsigned long)(&(pXC_ADC_ADJUSTGAINOFFSET->pstADCSetting)) - (unsigned long)pXC_ADC_ADJUSTGAINOFFSET), (unsigned long)spt_XC_AdcGainOffsetSetting);
289 	UADPBypassSetSPT(&spt_XC_ADC_ADJUSTGAINOFFSET[2],UADP_SPT_END , 0, 0);
290 
291     UADPBypassSetSPT(&spt_XC_ADC_SOURCE_CALIBRATE[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SOURCE_CALIBRATE));
292 	UADPBypassSetSPT(&spt_XC_ADC_SOURCE_CALIBRATE[1],UADP_SPT_END , 0, 0);
293 
294     UADPBypassSetSPT(&spt_XC_ADC_SETRGB_PIPE_DELAY[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETRGB_PIPE_DELAY));
295 	UADPBypassSetSPT(&spt_XC_ADC_SETRGB_PIPE_DELAY[1],UADP_SPT_END , 0, 0);
296 
297     UADPBypassSetSPT(&spt_XC_ADC_SCARTRGB_SOG_CLAMPDELAY[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SCARTRGB_SOG_CLAMPDELAY));
298 	UADPBypassSetSPT(&spt_XC_ADC_SCARTRGB_SOG_CLAMPDELAY[1],UADP_SPT_END , 0, 0);
299 
300     UADPBypassSetSPT(&spt_XC_ADC_SET_YPBPRLOOSELPF[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SET_YPBPRLOOSELPF));
301 	UADPBypassSetSPT(&spt_XC_ADC_SET_YPBPRLOOSELPF[1],UADP_SPT_END , 0, 0);
302 
303     UADPBypassSetSPT(&spt_XC_ADC_SET_SOGBW[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SET_SOGBW));
304 	UADPBypassSetSPT(&spt_XC_ADC_SET_SOGBW[1],UADP_SPT_END , 0, 0);
305 
306     UADPBypassSetSPT(&spt_XC_ADC_SETCLAMPDURATION[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_SETCLAMPDURATION));
307     UADPBypassSetSPT(&spt_XC_ADC_SETCLAMPDURATION[1],UADP_SPT_END , 0, 0);
308 
309     UADPBypassSetSPT(&spt_XC_ADC_ENABLEHWCALIBRATION[0],UADP_SPT_SELF_SIZE,0, sizeof(stXC_ADC_ENABLEHWCALIBRATION));
310 	UADPBypassSetSPT(&spt_XC_ADC_ENABLEHWCALIBRATION[1],UADP_SPT_END , 0, 0);
311 
312 
313 
314     return 0;
315 
316 }
317 
XC_ADC_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)318 MS_U32 XC_ADC_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
319 {
320     MS_U32 u32Ret;
321     char buffer_arg[2];
322 
323     switch(u32Cmd)
324     {
325 
326         case E_XC_ADC_CMD_SETCVBSOUT :
327         {
328             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETCVBSOUT, NULL,buffer_arg,sizeof(buffer_arg));
329             break;
330         }
331 
332         case E_XC_ADC_CMD_ISCVBSOUTENABLED:
333         {
334             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_ISCVBSOUTENABLED, spt_XC_ADC_ISCVBSOUTENABLED,buffer_arg,sizeof(buffer_arg));
335             break;
336         }
337 
338         case E_XC_ADC_CMD_SETPCCLOCK:
339         {
340             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETPCCLOCK, NULL,buffer_arg,sizeof(buffer_arg));
341             break;
342         }
343 
344         case E_XC_ADC_CMD_SETPHASE:
345         {
346             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETPHASE, NULL,buffer_arg,sizeof(buffer_arg));
347             break;
348         }
349 
350         case E_XC_ADC_CMD_SETPHASEEX:
351         {
352             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETPHASEEX, NULL,buffer_arg,sizeof(buffer_arg));
353             break;
354         }
355 
356         case E_XC_ADC_CMD_GETPHASERANGE:
357         {
358 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETPHASERANGE,buffer_arg,sizeof(buffer_arg));
359             break;
360         }
361 
362         case E_XC_ADC_CMD_GETPHASE:
363         {
364             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETPHASE,buffer_arg,sizeof(buffer_arg));
365             break;
366         }
367 
368         case E_XC_ADC_CMD_GETPHASEEX:
369         {
370             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETPHASEEX,buffer_arg,sizeof(buffer_arg));
371             break;
372         }
373 
374         case E_XC_ADC_CMD_ISSCARTRGB:
375         {
376             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_ISSCARTRGB,buffer_arg,sizeof(buffer_arg));
377             break;
378         }
379 
380         case E_XC_ADC_CMD_GETPCCLOCK:
381         {
382             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETPCCLOCK,buffer_arg,sizeof(buffer_arg));
383             break;
384         }
385 
386         case E_XC_ADC_CMD_GETSOGLEVELRANGE:
387         {
388             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETSOGLEVELRANGE,buffer_arg,sizeof(buffer_arg));
389             break;
390         }
391 
392         case E_XC_ADC_CMD_SETSOGLEVEL:
393         {
394             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETSOGLEVEL,NULL,buffer_arg,sizeof(buffer_arg));
395             break;
396         }
397 
398         case E_XC_ADC_CMD_POWEROFF:
399         {
400             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
401             break;
402         }
403 
404         case E_XC_ADC_CMD_GETDEFAULTGAINOFFSET:
405         {
406             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_GETDEFAULTGAINOFFSET,spt_XC_ADC_GETDEFAULTGAINOFFSET,buffer_arg,sizeof(buffer_arg));
407             break;
408         }
409 
410         case E_XC_ADC_CMD_GETMAXIMALOFFSETVALUE:
411         {
412             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETMAXIMALOFFSETVALUE,buffer_arg,sizeof(buffer_arg));
413             break;
414         }
415 
416         case E_XC_ADC_CMD_GETMAXIMALGAINVALUE:
417         {
418             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETMAXIMALGAINVALUE,buffer_arg,sizeof(buffer_arg));
419             break;
420         }
421 
422         case E_XC_ADC_CMD_GETCENTERGAIN:
423         {
424             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETCENTERGAIN,buffer_arg,sizeof(buffer_arg));
425             break;
426         }
427 
428         case E_XC_ADC_CMD_GETCENTEROFFSET:
429         {
430             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,spt_XC_ADC_GETCENTEROFFSET,buffer_arg,sizeof(buffer_arg));
431             break;
432         }
433 
434         case E_XC_ADC_CMD_SETGAIN:
435         {
436             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETGAIN,NULL,buffer_arg,sizeof(buffer_arg));
437             break;
438         }
439 
440         case E_XC_ADC_CMD_SETOFFSET:
441         {
442             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETOFFSET,NULL,buffer_arg,sizeof(buffer_arg));
443             break;
444         }
445 
446         case E_XC_ADC_CMD_ADJUSTGAINOFFSET:
447         {
448             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_ADJUSTGAINOFFSET,NULL,buffer_arg,sizeof(buffer_arg));
449             break;
450         }
451 
452         case E_XC_ADC_CMD_SOURCE_CALIBRATE:
453         {
454             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SOURCE_CALIBRATE,NULL,buffer_arg,sizeof(buffer_arg));
455 		    break;
456         }
457 
458         case E_XC_ADC_CMD_SETSOGCAL:
459         {
460             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,pArgs);
461             break;
462         }
463 
464         case E_XC_ADC_CMD_SETRGB_PIPE_DELAY:
465         {
466             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETRGB_PIPE_DELAY,NULL,buffer_arg,sizeof(buffer_arg));
467             break;
468         }
469 
470         case E_XC_ADC_CMD_SCARTRGB_SOG_CLAMPDELAY:
471         {
472             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SCARTRGB_SOG_CLAMPDELAY,NULL,buffer_arg,sizeof(buffer_arg));
473             break;
474         }
475 
476         case E_XC_ADC_CMD_SET_YPBPRLOOSELPF:
477         {
478             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SET_YPBPRLOOSELPF,NULL,buffer_arg,sizeof(buffer_arg));
479             break;
480         }
481 
482         case E_XC_ADC_CMD_SET_SOGBW:
483         {
484             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SET_SOGBW,NULL,buffer_arg,sizeof(buffer_arg));
485             break;
486         }
487 
488         case E_XC_ADC_CMD_SETCLAMPDURATION:
489         {
490             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_SETCLAMPDURATION,NULL,buffer_arg,sizeof(buffer_arg));
491             break;
492         }
493 
494         case E_XC_ADC_CMD_ENABLEHWCALIBRATION:
495         {
496             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_XC_ADC_ENABLEHWCALIBRATION,spt_XC_ADC_ENABLEHWCALIBRATION,buffer_arg,sizeof(buffer_arg));
497             break;
498         }
499 
500         case E_XC_ADC_CMD_NONE:
501         case E_XC_ADC_CMD_MAX:
502         default:
503         {
504             printf("Command %ld is not existed\n",u32Cmd);
505             u32Ret = UTOPIA_STATUS_ERR_INVALID_HANDLE;
506             break;
507         }
508 
509     }
510 
511 	return u32Ret;
512    // return UtopiaIoctl(pModuleDDI->pInstant,u32Cmd,arg);
513 }
514 
515 #endif
516 
517 
518