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