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