xref: /utopia/UTPA2-700.0.x/modules/njpd/utopia_adaption/njpeg_ex/NJPEG_EX_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include <linux/kernel.h>
2 #include <linux/string.h>
3 #include <linux/slab.h>
4 #include <asm/uaccess.h>
5 
6 #include "NJPEG_EX_adp.h"
7 #include "utopia.h"
8 #include "utopia_adp.h"
9 
10 #include "apiJPEG.h"
11 #include "apiJPEG_v2.h"
12 
13 #include "MsDevice.h"
14 
15 
16 #ifdef MSOS_TYPE_LINUX_KERNEL
17 
18 #ifndef CPY_FROM_USER
19 #define CPY_FROM_USER                   copy_from_user
20 #endif
21 #ifndef CPY_to_USER
22 #define CPY_to_USER                     copy_to_user
23 #endif
24 
25 #else
26 #ifndef CPY_FROM_USER
27 #define CPY_FROM_USER                   memcpy
28 #endif
29 #ifndef CPY_to_USER
30 #define CPY_to_USER                     memcpy
31 #endif
32 
33 #endif
34 
35 
36 
37 UADP_SDT_0_DEF(NJPEG_MS_PHY);
38 UADP_SDT_0_DEF(NJPEG_MS_VIRT);
39 UADP_SDT_0_DEF(NJPEG_POINTER);
40 
41 
42 
43 UADP_SPT_NAMEnNXT_DEF(NJPEG_BOOL,0);
44 UADP_SPT_NAMEnNXT_DEF(NJPEG_U8,0);
45 UADP_SPT_NAMEnNXT_DEF(NJPEG_U16,0);
46 UADP_SPT_NAMEnNXT_DEF(NJPEG_U32,0);
47 
48 
49 
50 UADP_SPT_NAMEnNXT_DEF(NJPEG_BOOL_PARAM,0);
51 
52 
53 #ifdef BIFROST_32BIT_MODE
54 UADP_SDT_4_DEF(NJPEG_InitParam);
55 #else
56 UADP_SDT_1_DEF(NJPEG_InitParam);
57 #endif
58 UADP_SDT_1_DEF(NJPEG_INIT_PARAM);
59 
60 
61 UADP_SDT_3_DEF(NJPEG_GETAPP0INFO_PARAM);
62 
63 UADP_SPT_NAMEnNXT_DEF(NJPEG_RESULT_PARAM,0);
64 
65 UADP_SPT_NAMEnNXT_DEF(NJPEG_GETERRORCODE_PARAM,0);
66 
67 UADP_SPT_NAMEnNXT_DEF(NJPEG_JPEGEVENT_PARAM,0);
68 
69 UADP_SPT_NAMEnNXT_DEF(NJPEG_SETMBUFFERVALID_PARAM,0);
70 
71 UADP_SPT_NAMEnNXT_DEF(NJPEG_UPDATEREADINFO_PARAM,0);
72 
73 UADP_SPT_NAMEnNXT_DEF(NJPEG_PROCESSEOF_PARAM,0);
74 
75 UADP_SPT_NAMEnNXT_DEF(NJPEG_SETERRORCODE_PARAM,0);
76 
77 UADP_SPT_NAMEnNXT_DEF(NJPEG_RESOLUTION_PARAM,0);
78 
79 
80 UADP_SDT_0_DEF(NJPEG_MSIF_Version);
81 UADP_SDT_3_DEF(NJPEG_Info);
82 UADP_SDT_1_DEF(NJPEG_GETINFO_PARAM);
83 
84 
85 UADP_SPT_NAMEnNXT_DEF(NJPEG_Status,0);
86 UADP_SPT_NAMEnNXT_DEF(NJPEG_GETSTATUS_PARAM,1);
87 
88 typedef struct
89 {
90     MSIF_Version* pMSIF_Version;
91 }PMSIF_Version;
92 UADP_SDT_1_DEF(NJPEG_PMSIF_Version);
93 UADP_SDT_1_DEF(NJPEG_GETLIBVER_PARAM);
94 
95 
96 UADP_SPT_NAMEnNXT_DEF(NJPEG_BuffLoadType,0);
97 UADP_SPT_NAMEnNXT_DEF(NJPEG_GETBUFFLOADTYPE_PARAM,1);
98 
99 UADP_SPT_NAMEnNXT_DEF(NJPEG_WAITDONE_PARAM,0);
100 
101 UADP_SPT_NAMEnNXT_DEF(NJPEG_EXIF_DateTime,0);
102 UADP_SPT_NAMEnNXT_DEF(NJPEG_GETEXIFDATETIME_PARAM,1);
103 
104 UADP_SDT_0_DEF(NJPEG_EXIF_Orientation);
105 UADP_SDT_1_DEF(NJPEG_GETEXIFORIENTATION_PARAM);
106 
107 UADP_SDT_0_DEF(NJPEG_EXIF_STRING);
108 UADP_SDT_1_DEF(NJPEG_GETEXIFSTRING_PARAM);
109 
110 UADP_SDT_1_DEF(NJPEG_GETEXIFU16_PARAM);
111 
112 UADP_SDT_1_DEF(NJPEG_GETEXIFU32_PARAM);
113 
114 UADP_SDT_0_DEF(NJPEG_RATIONAL);
115 UADP_SDT_1_DEF(NJPEG_GETEXIFRATIONAL_PARAM);
116 
117 #ifdef BIFROST_32BIT_MODE
118 UADP_SDT_1_DEF(NJPEG_GETFREEMEMORY_PARAM);
119 #else
120 UADP_SDT_0_DEF(NJPEG_GETFREEMEMORY_PARAM);
121 #endif
122 
123 UADP_SPT_NAMEnNXT_DEF(NJPEG_SUPPORTCMYK_PARAM,0);
124 
125 
126 typedef struct DLL_PACKED
127 {
128     JPEG_MPO_INDEX_INFO* pMPOIndex;
129 }PJPEG_MPO_INDEX_INFO;
130 
131 UADP_SDT_0_DEF(NJPEG_MPO_INDEX_INFO);
132 //UADP_SDT_1_DEF(NJPEG_PJPEG_MPO_INDEX_INFO);
133 UADP_SDT_1_DEF(NJPEG_GETMPOINDEX_PARAM);
134 
135 typedef struct DLL_PACKED
136 {
137     JPEG_MPO_ATTRIBUTE_INFO* pMPOAttr;
138 }PJPEG_MPO_ATTRIBUTE_INFO;
139 
140 UADP_SDT_0_DEF(NJPEG_MPO_ATTRIBUTE_INFO);
141 //UADP_SDT_1_DEF(NJPEG_PJPEG_MPO_ATTRIBUTE_INFO);
142 UADP_SDT_1_DEF(NJPEG_GETMPOATTR_PARAM);
143 
144 UADP_SPT_NAMEnNXT_DEF(NJPEG_SETMPOBUFFER_PARAM,0);
145 
146 UADP_SPT_NAMEnNXT_DEF(NJPEG_VERIFICATION_PARAM,0);
147 
148 UADP_SPT_NAMEnNXT_DEF(NJPEG_GET_CTRL_PARAM,1);
149 
150 typedef struct DLL_PACKED
151 {
152     char info[128];
153 }JPEG_INFO_128BYTE;
154 UADP_SPT_NAMEnNXT_DEF(NJPEG_EXIF_MANUFACTURER,0);
155 UADP_SPT_NAMEnNXT_DEF(NJPEG_GET_EXIF_MANUFACTURER,1);
156 
157 typedef struct DLL_PACKED
158 {
159     char info[8];
160 }JPEG_INFO_8BYTE;
161 UADP_SPT_NAMEnNXT_DEF(NJPEG_EXIF_SHUTTER_SPEED_VALUE,0);
162 UADP_SPT_NAMEnNXT_DEF(NJPEG_GET_EXIF_SHUTTER_SPEED_VALUE,1);
163 
164 
165 #ifdef BIFROST_32BIT_MODE
166 UADP_SDT_1_DEF(NJPEG_CB_CTRL_PARAM);
167 #else
168 UADP_SDT_0_DEF(NJPEG_CB_CTRL_PARAM);
169 #endif
170 
171 UADP_SDT_1_DEF(NJPEG_ENABLE_ISR);
172 
173 
174 
175 
176 
177 
NJPEG_EX_adp_Init(FUtopiaIOctl * pIoctl)178 MS_U32 NJPEG_EX_adp_Init(FUtopiaIOctl* pIoctl)
179 {
180 
181     UADP_SDT_NAME0(NJPEG_MS_PHY,MS_PHY);
182     UADP_SDT_NAME0(NJPEG_MS_VIRT,MS_VIRT);
183     UADP_SDT_NAME0(NJPEG_POINTER,unsigned char);
184 
185     UADP_SPT_NAME0NXT(NJPEG_BOOL,MS_BOOL);
186     UADP_SPT_NAME0NXT(NJPEG_U8,MS_U8);
187     UADP_SPT_NAME0NXT(NJPEG_U16,MS_U16);
188     UADP_SPT_NAME0NXT(NJPEG_U32,MS_U32);
189 
190     UADP_SPT_NAME0NXT(NJPEG_BOOL_PARAM,JPEG_BOOL_PARAM);
191 
192 #ifdef BIFROST_32BIT_MODE
193     UADP_SDT_NAME4(NJPEG_InitParam,JPEG_InitParam,
194         UADP_SDT_AT, u32MRCBufAddr, NJPEG_MS_PHY,
195         UADP_SDT_AT, u32MWCBufAddr, NJPEG_MS_PHY,
196         UADP_SDT_AT, u32InternalBufAddr, NJPEG_MS_PHY,
197         UADP_SDT_AT, pFillHdrFunc, NJPEG_POINTER);
198 #else
199     UADP_SDT_NAME1(NJPEG_InitParam,JPEG_InitParam,
200         UADP_SDT_AT, pFillHdrFunc, NJPEG_POINTER);
201 #endif
202     UADP_SDT_NAME1(NJPEG_INIT_PARAM, JPEG_INIT_PARAM,
203         UADP_SDT_P2N, pInitParam, NJPEG_InitParam);
204 
205     UADP_SDT_NAME3(NJPEG_GETAPP0INFO_PARAM,JPEG_GETAPP0INFO_PARAM,
206         UADP_SDT_P2N, unit, NJPEG_U8,
207         UADP_SDT_P2N, x, NJPEG_U16,
208         UADP_SDT_P2N, y, NJPEG_U16);
209 
210     UADP_SPT_NAME0NXT(NJPEG_RESULT_PARAM,JPEG_RESULT_PARAM);
211 
212     UADP_SPT_NAME0NXT(NJPEG_GETERRORCODE_PARAM,JPEG_GETERRORCODE_PARAM);
213 
214     UADP_SPT_NAME0NXT(NJPEG_JPEGEVENT_PARAM,JPEG_JPEGEVENT_PARAM);
215 
216     UADP_SPT_NAME0NXT(NJPEG_SETMBUFFERVALID_PARAM,JPEG_SETMBUFFERVALID_PARAM);
217 
218     UADP_SPT_NAME0NXT(NJPEG_UPDATEREADINFO_PARAM,JPEG_UPDATEREADINFO_PARAM);
219 
220     UADP_SPT_NAME0NXT(NJPEG_PROCESSEOF_PARAM,JPEG_PROCESSEOF_PARAM);
221 
222     UADP_SPT_NAME0NXT(NJPEG_SETERRORCODE_PARAM,JPEG_SETERRORCODE_PARAM);
223 
224     UADP_SPT_NAME0NXT(NJPEG_RESOLUTION_PARAM,JPEG_RESOLUTION_PARAM);
225 
226     UADP_SDT_NAME0(NJPEG_MSIF_Version, MSIF_Version);
227     UADP_SDT_NAME3(NJPEG_Info,JPEG_Info,
228         UADP_SDT_AT, pu8DrvVer, NJPEG_MSIF_Version,
229         UADP_SDT_AT, pu8HalVer, NJPEG_U8,
230         UADP_SDT_AT, pu8FwVer, NJPEG_U8);
231     UADP_SDT_NAME1(NJPEG_GETINFO_PARAM, JPEG_GETINFO_PARAM,
232         UADP_SDT_P2N, pJPEG_Info, NJPEG_Info);
233 
234     UADP_SDT_NAME0(NJPEG_Status, JPEG_Status);
235     UADP_SDT_NAME1(NJPEG_GETSTATUS_PARAM, JPEG_GETSTATUS_PARAM,
236         UADP_SDT_P2N, pJPEG_Status, NJPEG_Status);
237 
238     UADP_SDT_NAME1(NJPEG_PMSIF_Version, PMSIF_Version,
239         UADP_SDT_P2N, pMSIF_Version, NJPEG_MSIF_Version);
240     UADP_SDT_NAME1(NJPEG_GETLIBVER_PARAM, JPEG_GETLIBVER_PARAM,
241         UADP_SDT_AT, ppVersion, NJPEG_PMSIF_Version);
242 
243     UADP_SDT_NAME0(NJPEG_BuffLoadType, JPEG_BuffLoadType);
244     UADP_SDT_NAME1(NJPEG_GETBUFFLOADTYPE_PARAM, JPEG_GETBUFFLOADTYPE_PARAM,
245         UADP_SDT_P2N, pBuffLoadType, NJPEG_BuffLoadType);
246 
247     UADP_SPT_NAME0NXT(NJPEG_WAITDONE_PARAM,JPEG_WAITDONE_PARAM);
248 
249     UADP_SDT_NAME0(NJPEG_EXIF_DateTime, JPEG_EXIF_DateTime);
250     UADP_SDT_NAME1(NJPEG_GETEXIFDATETIME_PARAM, JPEG_GETEXIFDATETIME_PARAM,
251         UADP_SDT_P2N, DateTime, NJPEG_EXIF_DateTime);
252 
253     UADP_SDT_NAME0(NJPEG_EXIF_Orientation, JPEG_EXIF_Orientation);
254     UADP_SDT_NAME1(NJPEG_GETEXIFORIENTATION_PARAM, JPEG_GETEXIFORIENTATION_PARAM,
255         UADP_SDT_P2N, eOrientation, NJPEG_EXIF_Orientation);
256 
257     UADP_SDT_NAME0(NJPEG_EXIF_STRING, JPEG_INFO_128BYTE);
258     UADP_SDT_NAME1(NJPEG_GETEXIFSTRING_PARAM, JPEG_GETEXIFSTRING_PARAM,
259         UADP_SDT_P2N, pu8String, NJPEG_EXIF_STRING);
260 
261     UADP_SDT_NAME1(NJPEG_GETEXIFU16_PARAM, JPEG_GETEXIFU16_PARAM,
262         UADP_SDT_P2N, pu16Value, NJPEG_U16);
263 
264     UADP_SDT_NAME1(NJPEG_GETEXIFU32_PARAM, JPEG_GETEXIFU32_PARAM,
265         UADP_SDT_P2N, pu32Value, NJPEG_U32);
266 
267     UADP_SDT_NAME0(NJPEG_RATIONAL, JPEG_RATIONAL);
268     UADP_SDT_NAME1(NJPEG_GETEXIFRATIONAL_PARAM, JPEG_GETEXIFRATIONAL_PARAM,
269         UADP_SDT_P2N, pRational, NJPEG_RATIONAL);
270 
271 #ifdef BIFROST_32BIT_MODE
272     UADP_SDT_NAME1(NJPEG_GETFREEMEMORY_PARAM, JPEG_GETFREEMEMORY_PARAM,
273         UADP_SDT_AT, addr, NJPEG_MS_PHY);
274 #else
275     UADP_SDT_NAME0(NJPEG_GETFREEMEMORY_PARAM, JPEG_GETFREEMEMORY_PARAM);
276 #endif
277 
278     UADP_SPT_NAME0NXT(NJPEG_SUPPORTCMYK_PARAM,JPEG_SUPPORTCMYK_PARAM);
279 
280     UADP_SDT_NAME0(NJPEG_MPO_INDEX_INFO, JPEG_MPO_INDEX_INFO);
281 //    UADP_SDT_NAME1(NJPEG_PJPEG_MPO_INDEX_INFO, PJPEG_MPO_INDEX_INFO,
282 //        UADP_SDT_P2N, pMPOIndex, NJPEG_MPO_INDEX_INFO);
283     UADP_SDT_NAME1(NJPEG_GETMPOINDEX_PARAM, JPEG_GETMPOINDEX_PARAM,
284         UADP_SDT_AT, pMPOIndex, NJPEG_MPO_INDEX_INFO);
285 
286     UADP_SDT_NAME0(NJPEG_MPO_ATTRIBUTE_INFO, JPEG_MPO_ATTRIBUTE_INFO);
287 //    UADP_SDT_NAME1(NJPEG_PJPEG_MPO_ATTRIBUTE_INFO, PJPEG_MPO_ATTRIBUTE_INFO,
288 //        UADP_SDT_P2N, pMPOAttr, NJPEG_MPO_ATTRIBUTE_INFO);
289     UADP_SDT_NAME1(NJPEG_GETMPOATTR_PARAM, JPEG_GETMPOATTR_PARAM,
290         UADP_SDT_AT, pMPOAttr, NJPEG_MPO_ATTRIBUTE_INFO);
291 
292     UADP_SPT_NAME0NXT(NJPEG_SETMPOBUFFER_PARAM,JPEG_SETMPOBUFFER_PARAM);
293 
294     UADP_SPT_NAME0NXT(NJPEG_VERIFICATION_PARAM,JPEG_VERIFICATION_PARAM);
295 
296     UADP_SDT_NAME1(NJPEG_GET_CTRL_PARAM, JPEG_GET_CTRL_PARAM,
297         UADP_SDT_AT, param, NJPEG_POINTER);
298 
299     UADP_SDT_NAME0(NJPEG_EXIF_MANUFACTURER, JPEG_INFO_128BYTE);
300     UADP_SDT_NAME1(NJPEG_GET_EXIF_MANUFACTURER, JPEG_GET_CTRL_PARAM,
301         UADP_SDT_P2N, param,NJPEG_EXIF_MANUFACTURER);
302 
303     UADP_SDT_NAME0(NJPEG_EXIF_SHUTTER_SPEED_VALUE, JPEG_INFO_128BYTE);
304     UADP_SDT_NAME1(NJPEG_GET_EXIF_SHUTTER_SPEED_VALUE, JPEG_GET_CTRL_PARAM,
305         UADP_SDT_P2N, param,NJPEG_EXIF_SHUTTER_SPEED_VALUE);
306 
307 #ifdef BIFROST_32BIT_MODE
308     UADP_SDT_NAME1(NJPEG_CB_CTRL_PARAM, JPEG_CB_EVENT_PARAM,
309         UADP_SDT_AT, BufAddr,NJPEG_MS_PHY);
310 #else
311     UADP_SDT_NAME0(NJPEG_CB_CTRL_PARAM, JPEG_CB_EVENT_PARAM);
312 #endif
313 
314     UADP_SDT_NAME1(NJPEG_ENABLE_ISR, JPEG_ENABLEISR_PARAM,
315         UADP_SDT_AT, IsrCb,NJPEG_POINTER);
316 
317 
318 
319 	*pIoctl= (FUtopiaIOctl)NJPEG_EX_adp_Ioctl;
320 
321     return 0;
322 }
323 
324 
NJPEG_EX_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)325 MS_U32 NJPEG_EX_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
326 {
327     MS_U32 u32Ret;
328     char buffer_arg[2048];
329 
330     switch(u32Cmd)
331     {
332         case MApi_CMD_JPEG_EnableOJPD:
333         case MApi_CMD_JPEG_IsProgressive:
334         case MApi_CMD_JPEG_ThumbnailFound:
335         case MApi_CMD_JPEG_SetMHEG5:
336         case MApi_CMD_JPEG_IsMPOFormat:
337             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_BOOL_PARAM, spt_NJPEG_BOOL_PARAM,buffer_arg,sizeof(buffer_arg));
338             break;
339         case MApi_CMD_JPEG_Init_UsingOJPD:
340         case MApi_CMD_JPEG_Init:// TODO: there is callback inside
341             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_INIT_PARAM, spt_NJPEG_INIT_PARAM,buffer_arg,sizeof(buffer_arg));
342             break;
343         case MApi_CMD_JPEG_get_APP0_info:
344             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETAPP0INFO_PARAM, spt_NJPEG_GETAPP0INFO_PARAM,buffer_arg,sizeof(buffer_arg));
345             break;
346         case MApi_CMD_JPEG_DecodeHdr:
347         case MApi_CMD_JPEG_Decode:
348         case MApi_CMD_JPEG_HdlVidxChk:
349         case MApi_CMD_JPEG_DisableISR:
350             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_RESULT_PARAM, spt_NJPEG_RESULT_PARAM,buffer_arg,sizeof(buffer_arg));
351             break;
352         case MApi_CMD_JPEG_SetMaxDecodeResolution:
353         case MApi_CMD_JPEG_SetProMaxDecodeResolution:
354         case MApi_CMD_JPEG_SetMPOMaxDecodeResolution:
355         case MApi_CMD_JPEG_SetMPOProMaxDecodeResolution:
356             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_RESOLUTION_PARAM, spt_NJPEG_RESOLUTION_PARAM,buffer_arg,sizeof(buffer_arg));
357             break;
358         case MApi_CMD_JPEG_Exit:
359         case MApi_CMD_JPEG_Rst:
360         case MApi_CMD_JPEG_PowerOn:
361         case MApi_CMD_JPEG_PowerOff:
362         case MApi_CMD_JPEG_DumpMPO:
363         case MApi_CMD_JPEG_Debug:
364             u32Ret=UtopiaIoctl(pInstanceTmp,u32Cmd, NULL);
365             break;
366         case MApi_CMD_JPEG_GetErrorCode:
367             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETERRORCODE_PARAM, spt_NJPEG_GETERRORCODE_PARAM,buffer_arg,sizeof(buffer_arg));
368             break;
369         case MApi_CMD_JPEG_GetJPDEventFlag:
370         case MApi_CMD_JPEG_SetJPDEventFlag:
371             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_JPEGEVENT_PARAM, spt_NJPEG_JPEGEVENT_PARAM,buffer_arg,sizeof(buffer_arg));
372             break;
373         case MApi_CMD_JPEG_GetCurVidx:
374         case MApi_CMD_JPEG_GetWidth:
375         case MApi_CMD_JPEG_GetHeight:
376         case MApi_CMD_JPEG_GetOriginalWidth:
377         case MApi_CMD_JPEG_GetOriginalHeight:
378         case MApi_CMD_JPEG_GetNonAlignmentWidth:
379         case MApi_CMD_JPEG_GetNonAlignmentHeight:
380         case MApi_CMD_JPEG_GetAlignedPitch:
381         case MApi_CMD_JPEG_GetAlignedPitch_H:
382         case MApi_CMD_JPEG_GetAlignedWidth:
383         case MApi_CMD_JPEG_GetAlignedHeight:
384             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_U16, spt_NJPEG_U16,buffer_arg,sizeof(buffer_arg));
385             break;
386         case MApi_CMD_JPEG_GetScaleDownFactor:
387         case MApi_CMD_JPEG_SetDbgLevel:
388         case MApi_CMD_JPEG_GetDbgLevel:
389         case MApi_CMD_JPEG_SetNJPDInstance:
390             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_U8, spt_NJPEG_U8,buffer_arg,sizeof(buffer_arg));
391             break;
392         case MApi_CMD_JPEG_SetMRBufferValid:
393             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_SETMBUFFERVALID_PARAM, spt_NJPEG_SETMBUFFERVALID_PARAM,buffer_arg,sizeof(buffer_arg));
394             break;
395         case MApi_CMD_JPEG_UpdateReadInfo:
396             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_UPDATEREADINFO_PARAM, spt_NJPEG_UPDATEREADINFO_PARAM,buffer_arg,sizeof(buffer_arg));
397             break;
398         case MApi_CMD_JPEG_ProcessEOF:
399             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_PROCESSEOF_PARAM, spt_NJPEG_PROCESSEOF_PARAM,buffer_arg,sizeof(buffer_arg));
400             break;
401         case MApi_CMD_JPEG_SetErrCode:
402             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_SETERRORCODE_PARAM, spt_NJPEG_SETERRORCODE_PARAM,buffer_arg,sizeof(buffer_arg));
403             break;
404         case MApi_CMD_JPEG_GetInfo:
405             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETINFO_PARAM, spt_NJPEG_GETINFO_PARAM,buffer_arg,sizeof(buffer_arg));
406             break;
407         case MApi_CMD_JPEG_GetStatus:
408             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETSTATUS_PARAM, spt_NJPEG_GETSTATUS_PARAM,buffer_arg,sizeof(buffer_arg));
409             break;
410         case MApi_CMD_JPEG_GetLibVer:
411             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETLIBVER_PARAM, spt_NJPEG_GETLIBVER_PARAM,buffer_arg,sizeof(buffer_arg));
412             break;
413         case MApi_CMD_JPEG_GetBuffLoadType:
414             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETBUFFLOADTYPE_PARAM, spt_NJPEG_GETBUFFLOADTYPE_PARAM,buffer_arg,sizeof(buffer_arg));
415             break;
416         case MApi_CMD_JPEG_EnableISR:// TODO: callback
417             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_ENABLE_ISR, spt_NJPEG_ENABLE_ISR,buffer_arg,sizeof(buffer_arg));
418             break;
419         case MApi_CMD_JPEG_WaitDone:
420             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_WAITDONE_PARAM, spt_NJPEG_WAITDONE_PARAM,buffer_arg,sizeof(buffer_arg));
421             break;
422         case MApi_CMD_JPEG_GetEXIFDateTime:
423             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFDATETIME_PARAM, spt_NJPEG_GETEXIFDATETIME_PARAM,buffer_arg,sizeof(buffer_arg));
424             break;
425         case MApi_CMD_JPEG_GetEXIFOrientation:
426             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFORIENTATION_PARAM, spt_NJPEG_GETEXIFORIENTATION_PARAM,buffer_arg,sizeof(buffer_arg));
427             break;
428         case MApi_CMD_JPEG_GetEXIFManufacturer:
429         case MApi_CMD_JPEG_GetEXIFModel:
430             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFSTRING_PARAM, spt_NJPEG_GETEXIFSTRING_PARAM,buffer_arg,sizeof(buffer_arg));
431 //            u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GET_EXIF_MANUFACTURER, spt_NJPEG_GET_EXIF_MANUFACTURER,buffer_arg,sizeof(buffer_arg));
432             break;
433         case MApi_CMD_JPEG_GetEXIFFlash:
434             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFU16_PARAM, spt_NJPEG_GETEXIFU16_PARAM,buffer_arg,sizeof(buffer_arg));
435             break;
436         case MApi_CMD_JPEG_GetEXIFISOSpeedRatings:
437         case MApi_CMD_JPEG_GetEXIFImageWidth:
438         case MApi_CMD_JPEG_GetEXIFImageHeight:
439             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFU32_PARAM, spt_NJPEG_GETEXIFU32_PARAM,buffer_arg,sizeof(buffer_arg));
440             break;
441         case MApi_CMD_JPEG_GetEXIFShutterSpeedValue:
442         case MApi_CMD_JPEG_GetEXIFApertureValue:
443         case MApi_CMD_JPEG_GetEXIFExposureBiasValue:
444         case MApi_CMD_JPEG_GetEXIFFocalLength:
445         case MApi_CMD_JPEG_GetEXIFExposureTime:
446         case MApi_CMD_JPEG_GetEXIFFNumber:
447             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETEXIFRATIONAL_PARAM, spt_NJPEG_GETEXIFRATIONAL_PARAM,buffer_arg,sizeof(buffer_arg));
448             break;
449         case MApi_CMD_JPEG_GetFreeMemory:
450             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETFREEMEMORY_PARAM, spt_NJPEG_GETFREEMEMORY_PARAM,buffer_arg,sizeof(buffer_arg));
451             break;
452         case MApi_CMD_JPEG_GetDataOffset:
453         case MApi_CMD_JPEG_GetSOFOffset:
454             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_U32, spt_NJPEG_U32,buffer_arg,sizeof(buffer_arg));
455             break;
456         case MApi_CMD_JPEG_SupportCMYK:
457         case MApi_CMD_JPEG_SupportRGB:
458             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_SUPPORTCMYK_PARAM, spt_NJPEG_SUPPORTCMYK_PARAM,buffer_arg,sizeof(buffer_arg));
459             break;
460         case MApi_CMD_JPEG_GetMPOIndex:
461             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETMPOINDEX_PARAM, spt_NJPEG_GETMPOINDEX_PARAM,buffer_arg,sizeof(buffer_arg));
462             break;
463         case MApi_CMD_JPEG_GetMPOAttr:
464             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GETMPOATTR_PARAM, spt_NJPEG_GETMPOATTR_PARAM,buffer_arg,sizeof(buffer_arg));
465             break;
466         case MApi_CMD_JPEG_SetMPOBuffer:
467             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_SETMPOBUFFER_PARAM, spt_NJPEG_SETMPOBUFFER_PARAM,buffer_arg,sizeof(buffer_arg));
468             break;
469         case MApi_CMD_JPEG_SetVerificationMode:
470         case MApi_CMD_JPEG_GetVerificationMode:
471             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_VERIFICATION_PARAM, spt_NJPEG_VERIFICATION_PARAM,buffer_arg,sizeof(buffer_arg));
472             break;
473         case MApi_CMD_JPEG_GetControl:
474             {
475             JPEG_GET_CTRL_PARAM jpegGetCtrlParam;
476             CPY_FROM_USER((void*)(&jpegGetCtrlParam), (JPEG_GET_CTRL_PARAM*)pArgs, sizeof(JPEG_GET_CTRL_PARAM));
477             switch(jpegGetCtrlParam.eGetID)
478             {
479                 case E_JPEG_GET_EXIF_MANUFACTURER://96
480                 case E_JPEG_GET_EXIF_MODEL:
481                     u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GET_EXIF_MANUFACTURER, spt_NJPEG_GET_EXIF_MANUFACTURER,buffer_arg,sizeof(buffer_arg));
482                     break;
483                 case E_JPEG_GET_EXIF_FLASH://32
484                 case E_JPEG_GET_EXIF_ISO_SPEED_RATINGS:
485                 case E_JPEG_GET_EXIF_IMAGE_WIDTH:
486                 case E_JPEG_GET_EXIF_IMAGE_HEIGHT:
487                 case E_JPEG_GET_EXIF_EXPOSURE_PROGRAM:
488                 case E_JPEG_GET_Y_SAMPLING_FACTOR_HORIZONTAL:
489                 case E_JPEG_GET_Y_SAMPLING_FACTOR_VERTICAL:
490                 case E_JPEG_GET_COMPONENTS_NUM:
491                 case E_JPEG_GET_IS_PROGRESSIVE:
492                 case E_JPEG_GET_COLOR_FORMAT:
493                     u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GET_CTRL_PARAM, spt_NJPEG_GET_CTRL_PARAM,buffer_arg,sizeof(buffer_arg));
494                     break;
495                 case E_JPEG_GET_EXIF_SHUTTER_SPEED_VALUE://64
496                 case E_JPEG_GET_EXIF_APERTURE_VALUE:
497                 case E_JPEG_GET_EXIF_EXPOSURE_BIAS_VALUE:
498                 case E_JPEG_GET_EXIF_FOCAL_LENGTH:
499                 case E_JPEG_GET_EXIF_EXPOSURE_TIME:
500                 case E_JPEG_GET_EXIF_F_NUMBER:
501                     u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_GET_EXIF_SHUTTER_SPEED_VALUE, spt_NJPEG_GET_EXIF_SHUTTER_SPEED_VALUE,buffer_arg,sizeof(buffer_arg));
502                     break;
503             }
504             }
505             break;
506         case MApi_CMD_JPEG_GetCbEvent:
507         case MApi_CMD_JPEG_SetCbEvent:
508             u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_NJPEG_CB_CTRL_PARAM, spt_NJPEG_CB_CTRL_PARAM,buffer_arg,sizeof(buffer_arg));
509             break;
510 
511         default:
512             break;
513     }
514 
515     return u32Ret;
516 }
517 
518 
519 
520 
521