xref: /utopia/UTPA2-700.0.x/modules/audio/utopia_adaption/audio/AUDIO_adp.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2014 - 2016 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 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2014-2016 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ////////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// file  DMX_adp.c
98 /// @brief  Demux adaption API
99 /// @author MStar Semiconductor,Inc.
100 ////////////////////////////////////////////////////////////////////////////////////////////////////
101 #ifdef MSOS_TYPE_LINUX_KERNEL
102 #include <linux/uaccess.h>
103 #include <linux/kernel.h>
104 #include <linux/string.h>
105 #include <linux/slab.h>
106 
107 #include "MsTypes.h"
108 #include "utopia.h"
109 #include "apiAUDIO.h"
110 #include "apiAUDIO_v2.h"
111 #include "drvAUDIO_if.h"
112 
113 #include "utopia_adp.h"
114 #include "AUDIO_adp.h"
115 
116 //-------------------------------------------------------------------------------------------------
117 //  Driver Compiler Options
118 //-------------------------------------------------------------------------------------------------
119 
120 //-------------------------------------------------------------------------------------------------
121 //  Global Variables
122 //-------------------------------------------------------------------------------------------------
123 extern UADP_STRUCT_POINTER_TABLE spt_MS_U32[];
124 extern UADP_STRUCT_POINTER_TABLE spt_MS_U16[];
125 extern UADP_STRUCT_POINTER_TABLE spt_MS_U8[];
126 extern UADP_STRUCT_POINTER_TABLE spt_MS_NULL[];
127 
128 
129 //-------------------------------------------------------------------------------------------------
130 //  Local Defines
131 //-------------------------------------------------------------------------------------------------
132 #ifdef MSOS_TYPE_LINUX_KERNEL
133 #define CPY_FROM_USER                   copy_from_user
134 #define CPY_to_USER                     copy_to_user
135 #else
136 #define CPY_FROM_USER                   memcpy
137 #define CPY_to_USER                     memcpy
138 #endif
139 
140 #define AUDIO_ADP_MSG(_f, _a...)                             //printf("\033[1;35m"_f"\033[0m", ##_a)
141 
142 UADP_SPT_NAMEnNXT_DEF(MS_PHY_AUDIO,0);
143 
144 //-------------------------------------------------------------------------------------------------
145 //  Local Structures
146 //-------------------------------------------------------------------------------------------------
147 typedef struct __attribute__((packed)) {
148 	MS_U32		value1;
149 	MS_U32		value2;
150 } u32param2_t;
151 
152 typedef struct __attribute__((packed)) {
153 	MS_U32		value1;
154 	MS_U32		value2;
155 	MS_U32		value3;
156 	MS_U32		value4;
157 } u32param4_t;
158 
159 #define SIF_THRTBL_LENGTH  74
160 #define AUDIO_STRING_NAME_MAX_LENGTH 64
161 
162 //-------------------------------------------------------------------------------------------------
163 //  Local Variables
164 //-------------------------------------------------------------------------------------------------
165 
166 
167 //-------------------------------------------------------------------------------------------------
168 //  Local Functions
169 //-------------------------------------------------------------------------------------------------
170 
171 
172 //-------------------------------------------------------------------------------------------------
173 //  Global Functions
174 //-------------------------------------------------------------------------------------------------
AUDIO_adp_Init(FUtopiaIOctl * pIoctl)175 MS_U32 AUDIO_adp_Init(FUtopiaIOctl *pIoctl)
176 {
177     UADP_SDT_NAME0(MS_PHY_AUDIO, MS_PHY);
178     *pIoctl= (FUtopiaIOctl)AUDIO_adp_Ioctl;
179     return 0;
180 }
181 
AUDIO_adp_Ioctl(void * pInstanceTmp,MS_U32 u32Cmd,void * const pArgs)182 MS_U32 AUDIO_adp_Ioctl(void* pInstanceTmp, MS_U32 u32Cmd, void* const pArgs)
183 {
184     MS_U32 						u32Ret = UTOPIA_STATUS_FAIL, u32data = 1;
185 
186     char 						buffer_arg[1024];
187     PAUDIO_ST_DECODER_COMMAND   pDecodeCommandSrc                   = NULL, pDecodeCommandDes                       = NULL;
188     PAUDIO_ST_SPDIF_OP          pSPDIF_OpSrc                        = NULL, pSPDIF_OpDes                            = NULL;
189     PAUDIO_ST_SPDIF_SCMS        pSPDIF_SCMSSrc                      = NULL, pSPDIF_SCMSDes                          = NULL;
190     PAUDIO_ST_HDMI_NONPCM_OP    pHDMI_NonPCM_OpSrc                  = NULL, pHDMI_NonPCM_OpDes                      = NULL;
191     PAUDIO_ST_KTV_OP            pKTV_OpSrc                          = NULL, pKTV_OpDes                              = NULL;
192     PAUDIO_ST_DMAREADER_WRITEPCM pDMAReader_WritePCMSrc             = NULL, pDMAReader_WrtiePCMDes                  = NULL;
193     PAUDIO_ST_PCMCAPTURE_READ   pPCMCaptureReadSrc                  = NULL, pPCMCaptureReadDes                      = NULL;
194     PAUDIO_ST_GETAUDIOINFO2     pGetAudioInfo2Src                   = NULL, pGetAudioInfo2Des                       = NULL;
195     PAUDIO_ST_OUTPUT_SOURCE     pOutputSourceSrc                    = NULL, pOutputSourceDes                        = NULL;
196     PAUDIO_ST_COPY_PARAMETER    pCopyParamterSrc                    = NULL, pCopyParamterDes                        = NULL;
197     PAUDIO_ST_SET_AUDIOPARAM2   pSetAudioParam2Src                  = NULL, pSetAudioParam2Des                      = NULL;
198     PAUDIO_ST_PCM_GET           pPcmGetSrc                          = NULL, pPcmGetDes                              = NULL;
199     PAUDIO_ST_PCM_READ          pPcmReadSrc                         = NULL, pPcmReadDes                             = NULL;
200     PAUDIO_ST_PCM_WRITE         pPcmWriteSrc                        = NULL, pPcmWriteDes                            = NULL;
201     PAUDIO_ST_ENCODER_READ      pEncoderReadSrc                     = NULL, pEncoderReadDes                         = NULL;
202 
203     UADP_STRUCT_POINTER_TABLE spt_AUDIO_tmp[10];
204     UADP_STRUCT_POINTER_TABLE spt_AUDIO_tmp1[10];
205     UADP_STRUCT_POINTER_TABLE spt_AUDIO_tmp2[10];
206 
207 #if 0
208     char 						buffer_array0[1024];
209     MS_U32 						*pu32Src                            = NULL, *pu32Des                                = NULL;
210     MS_S32 						*ps32Src                            = NULL, *ps32Des                                = NULL;
211     PAUDIO_ST_DECODESYSTEM      pDecodeSystemSrc                    = NULL, pDecodeSystemDes                        = NULL;
212     PAUDIO_ST_DIGITALOUT_GETCHANNELSTATUS   pDigitalOut_GetChannelStatusSrc = NULL, pDigitalOut_GetChannelStatusDes = NULL;
213     PAUDIO_ST_SETDECODEPARAM    pSetDecodeParamSrc                  = NULL, pSetDecodeParamDes                      = NULL;
214 	PAUDIO_ST_SPDIF_CHANNELSTATUS pSPDIF_ChannelStatusSrc           = NULL , pSPDIF_ChannelStatusDes                = NULL;
215 #endif
216 
217 	AUDIO_ADP_MSG("[V] ADA Cmd %d \n", (int)u32Cmd);
218 
219     switch(u32Cmd)
220     {
221         //============================================================
222         // AUDIO_SYSTEM RELATIONAL API FUNCTION
223         //============================================================
224 
225         case MApi_CMD_AUDIO_Initialize:
226             // void MApi_AUDIO_Initialize(void)
227             AUDIO_ADP_MSG("MApi_CMD_AUDIO_Initialize cmd %d\n", (int)u32Cmd);
228 
229 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
230 
231             break;
232 
233         case MApi_CMD_AUDIO_SetPowerOn:
234             //void MApi_AUDIO_SetPowerOn(MS_BOOL bFlag)
235 
236 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
237 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
238 
239 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
240             break;
241 
242         case MApi_CMD_AUDIO_SetDSPBaseAddr:
243             AUDIO_ADP_MSG("MApi_CMD_AUDIO_SetDSPBaseAddr cmd %d\n", (int)u32Cmd);
244 
245 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_DSPBASEADDR));
246 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
247 
248 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
249             break;
250 
251         case MApi_CMD_AUDIO_GetDSPBaseAddr:
252 
253 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_DSPBASEADDR));
254 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
255 
256 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
257             break;
258 
259         case MApi_CMD_AUDIO_WriteDecMailBox:
260 
261 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_WRITE_DECMAILBOX));
262 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
263 
264 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
265             break;
266 
267         case MApi_CMD_AUDIO_TriggerSIFPLL:
268 
269 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
270             break;
271 
272         case MApi_CMD_AUDIO_Monitor:
273             //void MApi_Audio_Monitor(void)
274 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
275             break;
276 
277         case MApi_CMD_AUDIO_SetSystemInfo:
278             AUDIO_ADP_MSG("MApi_CMD_AUDIO_SetDSPBaseAddr cmd %d\n", (int)u32Cmd);
279             //void MApi_AUDIO_SetSystemInfo(AUDIO_INIT_INFO *pau_info)
280             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_AUDIO_INIT_INFO, NULL, buffer_arg,sizeof(buffer_arg));
281 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_INIT_INFO));
282 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
283 
284 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
285             break;
286 
287         case MApi_CMD_AUDIO_ASF_Data_To_DDR:
288 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
289 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
290 
291 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
292             break;
293 
294         case MApi_CMD_AUDIO_R2_DEBUG_MSG:
295 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
296 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
297 
298 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
299             break;
300 
301         case MApi_CMD_AUDIO_R2_DDR_LETENCY_MSG:
302 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
303 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
304 
305 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
306             break;
307 
308         case MApi_CMD_AUDIO_SetOutConnectivity:
309             //void MApi_AUDIO_SetOutConnectivity(void)
310 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
311             break;
312 
313         case MApi_CMD_AUDIO_SetPathInfo:
314             //void MApi_AUDIO_SetPathInfo(AUDIO_PATH_INFO *path_info)
315             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_AUDIO_PATH_INFO, NULL, buffer_arg,sizeof(buffer_arg));
316 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_PATH_INFO));
317 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
318 
319 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
320             break;
321 
322         case MApi_CMD_AUDIO_GetPathInfo:
323             //void MApi_AUDIO_GetPathInfo(AUDIO_PATH_INFO *path_info)
324             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_AUDIO_PATH_INFO, NULL, buffer_arg,sizeof(buffer_arg));
325 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_PATH_INFO));
326 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
327 
328 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
329             break;
330 
331         case MApi_CMD_AUDIO_SetOutputInfo:
332             //void MApi_AUDIO_SetOutputInfo(AUDIO_OUT_INFO *pout_info)
333 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_OUT_INFO));
334 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
335 
336 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
337             break;
338 
339         case MApi_CMD_AUDIO_SetSourceInfo:
340             //void MApi_AUDIO_SetSourceInfo(AUDIO_SOURCE_INFO_TYPE eSourceType)
341 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
342 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
343 
344 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
345             break;
346 
347         case MApi_CMD_AUDIO_InputSwitch:
348             //void MApi_AUDIO_InputSwitch(AUDIO_INPUT_TYPE enSource, AUDIO_SWITCH_GROUP enGroup)
349 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_INPUTSWITCH));
350 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
351 
352 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
353             break;
354 
355         case MApi_CMD_AUDIO_Set_Input_Scale:
356             //void MApi_AUDIO_SetInputScale(int Step)
357 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
358 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
359 
360 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
361             break;
362 
363         case MApi_CMD_AUDIO_Set_Scart_Scale:
364             //void MApi_AUDIO_SetScartScale(int Step)
365 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
366 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
367 
368 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
369             break;
370 
371 #if 0
372         case MApi_CMD_AUDIO_AUDYSSEY_VXT_SET_THRESH_LEVEL_TABLE:
373             //MS_BOOL MApi_AUDIO_Audyssey_VXT_Set_THRESH_LEVEL_TABLE(int *thresh_level_table)
374             pAudysseyVXTSetThreshLevelTableSrc = (PAUDIO_ST_AUDYSSEY_VXT_SET_THRESH_LEVEL_TABLE)pArgs;
375             pAudysseyVXTSetThreshLevelTableDes = (PAUDIO_ST_AUDYSSEY_VXT_SET_THRESH_LEVEL_TABLE)buffer_arg;
376             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_AUDYSSEY_VXT_SET_THRESH_LEVEL_TABLE));
377 
378             pAudysseyVXTSetThreshLevelTableDes->pthresh_level_table = (int*)buffer_array0;
379             CPY_FROM_USER((void*)buffer_array0, (void*)pAudysseyVXTSetThreshLevelTableSrc->pthresh_level_table, sizeof(int)); //Fix me
380 
381             u32Ret = UtopiaIoctl(pInstanceTmp, u32Cmd, (void*)buffer_arg);
382             CPY_to_USER((void*)(&(pAudysseyVXTSetThreshLevelTableSrc->bStatus)), (void*)(&pAudysseyVXTSetThreshLevelTableDes->bStatus), sizeof(MS_BOOL));
383             break;
384 #endif
385         case MApi_CMD_AUDIO_SPDIF_CHANNELSTATUS:
386 #if 0
387 			// todo stanley
388             pSPDIF_ChannelStatusSrc = (PAUDIO_ST_SPDIF_CHANNELSTATUS)pArgs;
389             pSPDIF_ChannelStatusDes = (PAUDIO_ST_SPDIF_CHANNELSTATUS)buffer_arg;
390             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_SPDIF_CHANNELSTATUS));
391             u32Ret = UtopiaIoctl(pInstanceTmp, u32Cmd, (void*)buffer_arg);
392 
393             if(pSPDIF_ChannelStatusSrc->bSet== FALSE)
394             {
395                 CPY_to_USER((void*)(&(pSPDIF_ChannelStatusSrc->u32Ret)), (void*)(&(pSPDIF_ChannelStatusDes->u32Ret)), sizeof(MS_U32));
396             }
397 #endif
398             break;
399 
400         case MApi_CMD_AUDIO_SetDataCaptureSource:
401             //MS_BOOL MApi_AUDIO_SetDataCaptureSource(AUDIO_DEVICE_TYPE eID, AUDIO_CAPTURE_SOURCE_TYPE eSource)
402             // u32Param[0] = 0(MS_BOOL); u32Param[1] = ((MS_U32)eID) & 0xFFFF;  u32Param[2] = ((MS_U32)eSource) & 0xFFFF;
403 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_DATACAPTURESOURCE));
404 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
405 
406 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
407             break;
408 
409         case MApi_CMD_AUDIO_OutputSourceInfo:
410             //void MApi_AUDIO_SetOutputSourceInfo(OUTPUT_SOURCE_INFO *pSourceInfo)
411             //Status.bSet = TRUE/FALSE; Status.stOutputSourceInfo = pSourceInfo;
412             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_OUTPUT_SOURCE, NULL, buffer_arg,sizeof(buffer_arg));
413 			pOutputSourceSrc = (PAUDIO_ST_OUTPUT_SOURCE)pArgs;
414             pOutputSourceDes = (PAUDIO_ST_OUTPUT_SOURCE)buffer_arg;
415             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_OUTPUT_SOURCE));
416 
417 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(OUTPUT_SOURCE_INFO));
418 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
419 
420 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_OUTPUT_SOURCE));
421 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_OUTPUT_SOURCE, UADP_SDT_P2N, stOutputSourceInfo, spt_AUDIO_tmp1);
422 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
423 
424 			if (pOutputSourceDes->bSet == FALSE)
425 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
426 			else
427 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
428             break;
429 
430         case MApi_CMD_AUDIO_ReadMailBox:
431             //MS_U16 MApi_AUDIO_ReadMailBox(MS_BOOL bDspType, MS_U8 u8ParamNum)
432             //u32Param[0] = return; u32Param[1] = bDspType; u32Param[2] = u8ParamNum;
433 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_READ_MAILBOX));
434 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
435 
436 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
437             break;
438 
439         case MApi_CMD_AUDIO_WriteMailBox:
440             //void MApi_AUDIO_WriteMailBox(MS_BOOL bDspType, MS_U8 u8ParamNum, MS_U16 u16Data)
441             //u32Param[0] = bDspType; u32Param[1] = u8ParamNum; u32Param[2] = u16Data;
442 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_WRITE_MAILBOX));
443 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
444 
445 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
446             break;
447 
448         case MApi_CMD_AUDIO_FwTriggerDSP:
449             //void MApi_AUDIO_FwTriggerDSP(MS_U16 u16Cmd)
450 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
451 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
452 
453 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
454             break;
455 
456         case MApi_CMD_AUDIO_SetFwStatus:
457             //void MApi_AUDIO_SetFwStatus(MS_BOOL bBootOnDDR)
458 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
459 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
460 
461 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
462             break;
463 
464         case MApi_CMD_AUDIO_ExitAudioSystem:
465             //void MApi_AUDIO_ExitAudioSystem(void)
466 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
467             break;
468 
469         case MApi_CMD_AUDIO_RebootDSP:
470             //void MApi_AUDIO_RebootDsp(MS_BOOL bDspType)
471 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
472 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
473 
474 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
475             break;
476 
477         case MApi_CMD_AUDIO_SendIntrupt:
478             //void MApi_AUDIO_SendIntrupt(MS_BOOL bDspType,MS_U8 u8Cmd)
479             //u32Param[0] = bDspType;u32Param[1] = u8Cmd);
480 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SEND_INTERRUPT));
481 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
482 
483 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
484             break;
485 
486         case MApi_CMD_AUDIO_I2S_SetMode:
487             //void MApi_AUDIO_I2S_SetMode(AUDIO_I2S_MODE_TYPE u8Mode, AUDIO_I2S_MODE_VALUE  u8Val)
488             //u32Param[0] = u8Mode; u32Param[1] = u8Val;
489 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_I2S_SETMODE));
490 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
491 
492 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
493             break;
494 
495         case MApi_CMD_AUDIO_WritePreInitTable:
496             //void MApi_AUDIO_WritePreInitTable(void)
497             AUDIO_ADP_MSG("MApi_CMD_AUDIO_WritePreInitTable cmd %d\n", (int)u32Cmd);
498 
499 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
500             break;
501 
502         case MApi_CMD_AUDIO_EnaEarphone_LowPower_Stage:
503             //void MApi_AUDIO_EnaEarphone_LowPower_Stage(void)
504 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
505 
506             break;
507 
508         case MApi_CMD_AUDIO_EnaEarphone_HighDriving_Stage:
509             //void MApi_AUDIO_EnaEarphone_HighDriving_Stage(void)
510 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
511 
512             break;
513 
514         //=============================================================
515         // AUDIO_SOUND RELATIONAL API FUNCTION
516         //=============================================================
517         case MApi_CMD_SND_ProcessEnable:
518             //MS_BOOL MApi_SND_ProcessEnable(Sound_ENABLE_Type Type, MS_BOOL enable)
519             //u32Param[0] = return, u32Param[1] = Type; u32Param[2] = enable;
520 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SND_PROCESSENABLE));
521 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
522 
523 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
524 
525             break;
526 
527         case MApi_CMD_SND_SetParam1:
528             //MS_BOOL MApi_SND_SetParam1( Sound_SET_PARAM_Type Type, MS_U16 param1, MS_U16 param2)
529             //u32Param[0] = return; u32Param[1] = Type; u32Param[2] = param1; u32Param[3] = param2;
530 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SND_SETPARAM1));
531 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
532 
533 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
534 
535             break;
536 
537         case MApi_CMD_SND_GetParam1:
538             //MS_U16 MApi_SND_GetParam1( Sound_GET_PARAM_Type Type, MS_U16 param1)
539             //u32Param[0] = return; u32Param[1] = Type; u32Param[2] = param1;
540 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SND_GETPARAM1));
541 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
542 
543 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
544             break;
545 
546         case MApi_CMD_AUDIO_Sound_SetParam:
547             //MS_BOOL MApi_AUDIO_SOUND_SetParam(Sound_SET_Type Type, MS_U32 *p_param )
548 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(u32param4_t));
549 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
550 
551 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SOUND_SETPARAM));
552 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SOUND_SETPARAM, UADP_SDT_P2N, pParam, spt_AUDIO_tmp1);
553 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
554 
555 
556 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
557 
558             break;
559 
560         case MApi_CMD_AUDIO_SetEq_7band:
561             //void MApi_AUDIO_SetEq_7band(MS_U8 u8band, MS_U8 u8level)
562             //u32Param[0] = u8band; u32Param[1] = u8level;
563 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SETEQ_7BAND));
564 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
565 
566 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
567 
568             break;
569 
570         case MApi_CMD_AUDIO_SetAvcThreshold:
571             //void _MApi_AUDIO_SetAvcThreshold(MS_U8 Level);
572 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
573 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
574 
575 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
576 
577             break;
578 
579         case MApi_CMD_AUDIO_SetAvcMode:
580             //void _MApi_AUDIO_SetAvcMode(MS_U8 AvcMode);
581 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
582 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
583 
584 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
585             break;
586 
587         case MApi_CMD_AUDIO_SetAvcAT:
588             //void _MApi_AUDIO_SetAvcAT(MS_U8 AvcAT);
589 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
590 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
591 
592 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
593             break;
594 
595         case MApi_CMD_AUDIO_SetAvcRT:
596             //void _MApi_AUDIO_SetAvcRT(MS_U8 AvcRT);
597 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
598 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
599 
600 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
601             break;
602 
603         case MApi_CMD_AUDIO_SetSurroundXA:
604             //void _MApi_AUDIO_SetSurroundXA(MS_U8 mode);
605 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
606 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
607 
608 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
609             break;
610 
611         case MApi_CMD_AUDIO_SetSurroundXB:
612             //void _MApi_AUDIO_SetSurroundXB(MS_U8 mode);
613 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
614 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
615 
616 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
617             break;
618 
619         case MApi_CMD_AUDIO_SetSurroundXK:
620             //void _MApi_AUDIO_SetSurroundXK(MS_U8 mode);
621 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
622 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
623 
624 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
625             break;
626 
627         case MApi_CMD_AUDIO_SetSurroundLPFGain:
628             //void _MApi_AUDIO_SetSurroundLPFGain(MS_U8 mode);
629 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
630 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
631 
632 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
633             break;
634 
635         case MApi_CMD_AUDIO_SetAbsoluteVolume:
636             //void MApi_AUDIO_SetAbsoluteVolume(MS_U8 u8Path, MS_U8 u8Vol1, MS_U8 u8Vol2)
637             //u32Param[0] = u8Path; u32Param[1] = u8Vol1; u32Param[2] = u8Vol2;
638 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_ABSOLUTEVOLUME));
639 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
640 
641 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
642             break;
643 
644         case MApi_CMD_AUDIO_SourceConnect:
645             //void MApi_AUDIO_SourceConnect(AUDIO_OUTPORT_SOURCE_TYPE eConnectSourceType, MS_BOOL bConnect )
646             //u32Param[0] = eConnectSourceType; u32Param[1] = bConnect;
647 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SOURCECONNECT));
648 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
649 
650 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
651             break;
652 
653         case MApi_CMD_AUDIO_SetDynamicBass:
654             //void MApi_AUDIO_SetDynamicBass(MS_U8 u8DynamicBass )
655 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
656 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
657 
658 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
659             break;
660 
661         case MApi_CMD_AUDIO_AbsoluteTreble:
662             //void MApi_AUDIO_AbsoluteTreble(MS_U8 u8Treble )
663 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
664 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
665 
666 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
667             break;
668 
669         case MApi_CMD_AUDIO_SetBufferProcess:
670             //void MApi_AUDIO_SetBufferProcess(MS_U8 DelayTime)
671 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
672 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
673 
674 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
675             break;
676 
677         case MApi_CMD_AUDIO_ConvertVolumeUnit:
678             //MS_U8 MApi_AUDIO_ConvertVolumeUnit(MS_U8 UiVolume)
679             //u32Param[0] = return; u32Param[1] = UiVolume;
680 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_CONVERT_VOLUMEUNIT));
681 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
682 
683 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
684             break;
685 
686         case MApi_CMD_AUDIO_SetPEQCoef:
687             //void MApi_AUDIO_SetPEQCoef(AUDIO_PEQ_COEF *peq_coef)
688             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_AUDIO_PEQ_COEF, NULL, buffer_arg,sizeof(buffer_arg));
689 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_PEQ_COEF));
690 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
691 
692 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
693             break;
694 
695         case MApi_CMD_AUDIO_EnableDcRemove:
696             //MS_BOOL MApi_AUDIO_EnableDcRemove(MS_BOOL EnDcRemove)
697             //u32Param[0] = return; u32Param[1] = EnDcRemove;
698 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENABLE_DCREMOVE));
699 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
700 
701 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
702             break;
703         //============================================================
704         // AUDIO_DTV RELATIONAL API FUNCTION
705         //============================================================
706 #if 0
707         case MApi_CMD_AUDIO_DecodeSystem:
708             //MS_BOOL MApi_AUDIO_ReleaseDecodeSystem(AUDIO_DEC_ID DecId)
709             //Status.bStatus = return; Status.eType = DECODE_SYS_RELEASE; Status.DecId = DecId;
710             pDecodeSystemSrc = (PAUDIO_ST_DECODESYSTEM)pArgs;
711             pDecodeSystemDes = (PAUDIO_ST_DECODESYSTEM)buffer_arg;
712 
713             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_DECODESYSTEM));
714             u32Ret = UtopiaIoctl(pInstanceTmp, u32Cmd, (void*)buffer_arg);
715             if(pDecodeSystemSrc->eType == DECODE_SYS_GET)
716             {
717                 CPY_to_USER((void*)(&(pDecodeSystemSrc->p_AudioDecStatus)), (void*)(&(pDecodeSystemDes->p_AudioDecStatus)), sizeof(AudioDecStatus_t));
718             }
719             CPY_to_USER((void*)(&(pDecodeSystemSrc->bStatus)), (void*)(&(pDecodeSystemDes->bStatus)), sizeof(MS_BOOL));
720             break;
721 #endif
722 
723         case MApi_CMD_AUDIO_OpenDecodeSystem:
724 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AudioDecStatus_t));
725 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
726 
727 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_OPEN_DECODESYSTEM));
728 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_OPEN_DECODESYSTEM, UADP_SDT_P2N, p_AudioDecStatus, spt_AUDIO_tmp1);
729 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
730 
731 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
732 
733         	break;
734 
735         case MApi_CMD_AUDIO_ReleaseDecodeSystem:
736 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_RELEASE_DECODESYSTEM));
737 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
738 
739 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
740         	break;
741 
742         case MApi_CMD_AUDIO_GetDecodeSystem:
743 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AudioDecStatus_t));
744 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
745 
746 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_DECODESYSTEM));
747 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_GET_DECODESYSTEM, UADP_SDT_P2N, p_AudioDecStatus, spt_AUDIO_tmp1);
748 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
749 
750 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
751 	        break;
752 
753         case MApi_CMD_AUDIO_SetDecodeSystem:
754 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AudioDecStatus_t));
755 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
756 
757 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_DECODESYSTEM));
758 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_DECODESYSTEM, UADP_SDT_P2N, p_AudioDecStatus, spt_AUDIO_tmp1);
759 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
760 
761 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
762 	        break;
763 
764         case MApi_CMD_AUDIO_SetDecodeCmd:
765             //MS_BOOL MApi_AUDIO_SetDecodeCmd(AUDIO_DEC_ID DecId, En_DVB_decCmdType enDecComamnd)
766             //u32Param[0] = return; u32Param[1] = DecId; u32Param[2] = enDecComamnd;
767 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_DECCMD));
768 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
769 
770 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
771             break;
772 
773         case MApi_CMD_AUDIO_SetSystem:
774             //MS_BOOL MApi_AUDIO_SetSystem(En_DVB_decSystemType enDecSystem)
775             //u32Param[0] = return; u32Param[1] = enDecSystem;
776 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_SYSTEM));
777 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
778 
779 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
780             break;
781 
782         case MApi_CMD_AUDIO_GetDecSysSupportStatus:
783             //MS_BOOL MApi_AUDIO_GetDecSysSupportStatus(En_DVB_decSystemType enDecSystem)
784             //u32Param[0] = return; u32Param[1] = enDecSystem;
785 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_DECSYSSUPPORTSTATUS));
786 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
787 
788 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
789             break;
790 
791         case MApi_CMD_AUDIO_IsMadLock:
792             //MS_BOOL MApi_AUDIO_IsMadLock(void)
793             //u32param[1] = return;
794 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
795 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
796 
797 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
798             break;
799 
800         case MApi_CMD_AUDIO_GetDecStatus:
801             //En_DVB_decCmdType MApi_AUDIO_GetDecStatus(void)
802             //u32param[1] = return;
803 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
804 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
805 
806 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
807             break;
808 
809         case MApi_CMD_AUDIO_Decode_Command:
810             //AU_DVB_DECCMD MApi_AUDIO_GetCommand(En_DVB_AudioDecoder AdoDecoderNo)
811             //Status.bSet = TRUE/FALSE; Status.eDecCmd = Return; Status.eAdoDecoderNo = AdoDecoderNo;
812 			pDecodeCommandSrc = (PAUDIO_ST_DECODER_COMMAND)pArgs;
813             pDecodeCommandDes = (PAUDIO_ST_DECODER_COMMAND)buffer_arg;
814 
815             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_DECODER_COMMAND));
816 
817             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_DECODER_COMMAND));
818 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
819 
820 			if(pDecodeCommandDes->bSet == FALSE)
821 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
822 			else
823 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
824             break;
825 
826         case MApi_CMD_AUDIO_GetMAD_Lock:
827             //MS_BOOL MApi_AUDIO_GetMAD_LOCK(void)
828             //u32param[1] = return;
829 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
830 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
831 
832 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
833             break;
834 
835         case MApi_CMD_AUDIO_SETAD:
836             //void MApi_AUDIO_SetADOutputMode(MS_U8 out_mode)
837             //Status.eType = AD_OUTPUT_MODE; Status.u8Data = out_mode/AD_ABSOLUTE_VOLUME/AD_SET_MUTE/SET_MAIN_VOLUME ; Status.bMute = FALSE;
838 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AD));
839 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
840 
841 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
842             break;
843 
844         //============================================================
845         // AUDIO_PVR RELATED FUNCTIONS
846         //============================================================
847         case MApi_CMD_AUDIO_SetEncInit:
848             //void MApi_AUDIO_SetEncInit(AU_DVB_ENCBR BitRate, MS_U8 u8EncFrameNum)
849             //u32Param[0] = BitRate; u32Param[1] = u8EncFrameNum;
850 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_ENCINIT));
851 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
852 
853 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
854             break;
855 
856         case MApi_CMD_AUDIO_SetEncCommand:
857             //void MApi_AUDIO_SetEncCommand(AU_DVB_ENCCMD enEncComamnd)
858 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
859 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
860 
861 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
862             break;
863 
864         case MApi_CMD_AUDIO_GetEncodeFrameInfo:     //HAL is empty
865             //void MApi_AUDIO_GetEncodeFrameInfo(AU_DVB_ENC_FRAME_INFO *EncFrameInfo)
866 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AU_DVB_ENC_FRAME_INFO));
867 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
868 
869 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
870             break;
871 
872         case MApi_CMD_AUDIO_GetEncodeDoneFlag:
873             //MS_BOOL MApi_AUDIO_GetEncodeDoneFlag(void)
874             //u32param[1] = return;
875 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
876 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
877 
878 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
879             break;
880 
881         //============================================================
882         // AUDIO_ATV RELATIONAL API FUNCTION
883         //============================================================
884         case MApi_CMD_AUDIO_SIF_SetStandard:
885             //void MApi_AUDIO_SIF_SetStandard(AUDIOSTANDARD_TYPE standard_type)
886 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
887 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
888 
889 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
890             break;
891 
892         case MApi_CMD_AUDIO_SIF_GetSoundMode:
893             //MS_U8 MApi_AUDIO_SIF_GetSoundMode(void)
894             //u32param[1] = return;
895 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
896 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
897 
898 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
899             break;
900 
901         case MApi_CMD_AUDIO_SIF_SetSoundMode:
902             //MS_BOOL MApi_AUDIO_SIF_SetSoundMode(MS_U8 u8SifSoundMode)
903             //u32Param[0] = return; u32Param[1] = u8SifSoundMode;
904 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_SET_SOUNDMODE));
905 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
906 
907 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
908             break;
909 
910         case MApi_CMD_AUDIO_SIF_GetAudioStatus:
911             //MS_BOOL MApi_AUDIO_SIF_GetAudioStatus(AUDIOSTATUS * eAudioStatus)
912             //Status.bStatus = return;  Status.p_eAudioStatus = E_STATE_AUDIO_NO_CARRIER;
913 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AUDIOSTATUS));
914 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
915 
916 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_GET_AUDIO_STATUS));
917 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SIF_GET_AUDIO_STATUS, UADP_SDT_P2N, p_eAudioStatus, spt_AUDIO_tmp1);
918 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
919 
920 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
921             break;
922 
923         case MApi_CMD_AUDIO_SIF_StartAutoStandardDetection:
924             //void MApi_AUDIO_SIF_StartAutoStandardDetection(void)
925 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
926             break;
927 
928         case MApi_CMD_AUDIO_SIF_GetResultOfAutoStandardDetection:
929             //AUDIOSTANDARD_TYPE MApi_AUDIO_SIF_GetResultOfAutoStandardDetection(void)
930             //u32param[1] = return;
931 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
932 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
933 
934 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
935             break;
936 
937         case MApi_CMD_AUDIO_SIF_ConvertToBasicAudioStandard:
938             //AUDIOSTANDARD_TYPE MApi_AUDIO_SIF_ConvertToBasicAudioStandard(AUDIOSTANDARD_TYPE eStandard)
939             //u32Param[0] = return; u32param[1] = eStandard;
940 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_SIF_CONVERTTOBASICAUDIOSTANDARD));
941 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
942 
943 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
944             break;
945 
946         case MApi_CMD_AUDIO_SIF_SetThreshold:
947             //void MApi_AUDIO_SIF_SetThreshold(THR_TBL_TYPE code *ThrTbl)
948             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_THR_TBLL_TYPE, NULL, buffer_arg,sizeof(buffer_arg));
949 			//UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(THR_TBL_TYPE));
950 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U16) * SIF_THRTBL_LENGTH);
951 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
952 
953 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
954             break;
955 
956         case MApi_CMD_AUDIO_SIF_SetPrescale:
957             //void MApi_AUDIO_SIF_SetPrescale(MS_U8 gain_type, int db_value)
958             //u32Param[0] = gain_type; u32Param[1] = db_value;
959 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_SETPRESCALE));
960 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
961 
962 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
963             break;
964 
965         case MApi_CMD_AUDIO_SIF_IsPALType:
966             //MS_BOOL MApi_AUDIO_SIF_IsPALType(AUDIO_SIF_PAL_TYPE pal_type)
967             //u32Param[0] = return; u32param[1] = pal_type;
968 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_SIF_ISPALTYPE));
969 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
970 
971 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
972             break;
973 
974         case MApi_CMD_AUDIO_SIF_SetPALType:
975             //void MApi_AUDIO_SIF_SetPALType(AUDIO_SIF_PAL_TYPE pal_type)
976 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
977 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
978 
979 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
980             break;
981 
982         case MApi_CMD_AUDIO_SIF_SendCmd:
983             //void MApi_AUDIO_SIF_SendCmd(En_AUD_SIF_CmdType enAudSifCommand, MS_U8 comm_arg1, MS_U8 comm_arg2)
984             //u32Param[0] = enAudSifCommand; u32Param[1] = comm_arg1; u32Param[2] = comm_arg2;
985 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SIF_SENDCMD));
986 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
987 
988 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
989             break;
990 
991         case MApi_CMD_AUDIO_SIF_Shift:
992             //void MApi_AUDIO_SIF_Shift(En_AUD_VIF_Type type)
993 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
994 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
995 
996 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
997             break;
998 
999         //============================================================
1000         // AUDIO_FM_RADIO RELATIONAL API FUNCTION
1001         //============================================================
1002         case MApi_CMD_AUDIO_FM_RADIO_GetSoundMode:
1003             //MS_U8 MApi_AUDIO_FM_RADIO_GetSoundMode(void)
1004             //u32param[1] = return;
1005 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1006 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1007 
1008 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1009             break;
1010 
1011         case MApi_CMD_AUDIO_FM_RADIO_SetSoundMode:
1012             //void MApi_AUDIO_FM_RADIO_SetSoundMode(MS_U8 u8FMRadioSoundMode)
1013 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1014 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1015 
1016 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1017             break;
1018 
1019         case MApi_CMD_AUDIO_FM_RADIO_DeEmphassisOption:
1020             //void MApi_AUDIO_FM_RADIO_DeEmphassisOption(MS_BOOL Is_Europe)
1021 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1022 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1023 
1024 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1025             break;
1026 
1027         case MApi_CMD_AUDIO_FM_RADIO_GetDC_Amp:
1028             //MS_S8 MApi_AUDIO_FM_RADIO_GET_DC_AMP(void)
1029             //u32param[1] = return;
1030 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1031 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1032 
1033 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1034             break;
1035 
1036         case MApi_CMD_AUDIO_FM_RADIO_Get_NSR:
1037             //MS_U8 MApi_AUDIO_FM_RADIO_GET_NSR(void)
1038             //u32param[1] = return;
1039 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1040 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1041 
1042 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1043             break;
1044 
1045         case MApi_CMD_AUDIO_FM_RADIO_Reset:
1046             //void MApi_AUDIO_FM_RADIO_RESET(void)
1047 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1048             break;
1049 
1050         //=============================================================
1051         // AUDIO_SPDIF RELATIONAL API FUNCTION
1052         //=============================================================
1053         case MApi_CMD_AUDIO_SPDIF_OP:
1054             //void MApi_AUDIO_SPDIF_HWEN(MS_BOOL spdif_en)
1055             //Status.eType = SPDIF_HWEN/SPDIF_SETMUTE/SPDIF_SETMODE/SPDIF_GETMODE; Status.spdif_hwen = spdif_en; Status.mute_en = FALSE; Status.spdif_mode = SPDIF_OUT_NONE;
1056 			pSPDIF_OpSrc = (PAUDIO_ST_SPDIF_OP)pArgs;
1057             pSPDIF_OpDes = (PAUDIO_ST_SPDIF_OP)buffer_arg;
1058             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_SPDIF_OP));
1059 
1060 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SPDIF_OP));
1061 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1062 
1063 			if (pSPDIF_OpDes->eType == SPDIF_GETMODE)
1064 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1065 			else
1066 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1067 
1068             break;
1069 
1070         case MApi_CMD_AUDIO_SPDIF_SCMS:
1071             //void MApi_AUDIO_SPDIF_SetSCMS(MS_U8 C_bit_en, MS_U8 L_bit_en)
1072             //Status.bSetSCMS = TRUE/FALSE; Status.C_bit_en = C_bit_en; Status.L_bit_en = L_bit_en; Status.Ret_bit = 0;
1073             pSPDIF_SCMSSrc = (PAUDIO_ST_SPDIF_SCMS)pArgs;
1074             pSPDIF_SCMSDes = (PAUDIO_ST_SPDIF_SCMS)buffer_arg;
1075             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_SPDIF_SCMS));
1076 
1077 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SPDIF_SCMS));
1078 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1079 
1080 			if (pSPDIF_SCMSDes->bSetSCMS == FALSE)
1081 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1082 			else
1083 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1084             break;
1085         case MApi_CMD_AUDIO_SPDIF_Monitor:
1086             //void MApi_Audio_SPDIF_Monitor(void)
1087 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1088             break;
1089 
1090         case MApi_CMD_AUDIO_SPDIF_ChannelStatus_CTRL:
1091             //MS_BOOL MApi_AUDIO_SPDIF_ChannelStatus_CTRL(AUDIO_SPDIF_CS_TYPE cs_mode, AUDIO_SPDIF_CS_TYPE_STATUS status)
1092             //u32Param[0] = return; u32param[1] = cs_mode; u32param[2] = status;
1093 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SPDIF_CHANNELSTATUS_CTRL));
1094 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1095 
1096 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1097             break;
1098 
1099         case MApi_CMD_AUDIO_DigitalOut_SetChannelStatus:
1100             //MS_BOOL MApi_AUDIO_DigitalOut_SetChannelStatus(DIGITAL_OUTPUT_TYPE ePath, Digital_Out_Channel_Status_t *stChannelStatus)
1101             //Status.bStatus = return; Status.ePath = ePath; Status.stChannelStatus = stChannelStatus;
1102 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(Digital_Out_Channel_Status_t));
1103 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1104 
1105 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_DIGITALOUT_SETCHANNELSTATUS));
1106 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_DIGITALOUT_SETCHANNELSTATUS, UADP_SDT_P2N, stChannelStatus, spt_AUDIO_tmp1);
1107 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1108 
1109 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1110             break;
1111 
1112         case MApi_CMD_AUDIO_DigitalOut_SetDeviceCapability:
1113             //MS_BOOL _MApi_AUDIO_DigitalOut_SetDeviceCapability(DIGITAL_OUTPUT_TYPE eoutType, AUDIO_FORMAT_CODE ecodecType, Digital_Out_Device_Capability_t *p_codecCapability)
1114 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(Digital_Out_Device_Capability_t));
1115 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1116 
1117 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_DIGITALOUT_SETDEVICECAP));
1118 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_DIGITALOUT_SETDEVICECAP, UADP_SDT_P2N, p_codecCapability, spt_AUDIO_tmp1);
1119 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1120 
1121 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1122             break;
1123 
1124         case MApi_CMD_AUDIO_DigitalOut_GetChannelStatus:
1125 #if 0
1126 			// todo stanley
1127             pDigitalOut_GetChannelStatusSrc = (PAUDIO_ST_DIGITALOUT_GETCHANNELSTATUS)pArgs;
1128             pDigitalOut_GetChannelStatusDes = (PAUDIO_ST_DIGITALOUT_GETCHANNELSTATUS)buffer_arg;
1129             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_DIGITALOUT_GETCHANNELSTATUS));
1130             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1131             CPY_to_USER((void*)(&(pDigitalOut_GetChannelStatusSrc->stChannelStatus->u8Category)), (void*)(&(pDigitalOut_GetChannelStatusDes->stChannelStatus->u8Category)), sizeof(MS_U8));
1132             CPY_to_USER((void*)(&(pDigitalOut_GetChannelStatusSrc->stChannelStatus->stCopyRight.CBit)), (void*)(&(pDigitalOut_GetChannelStatusDes->stChannelStatus->stCopyRight.CBit)), sizeof(MS_BOOL));
1133             CPY_to_USER((void*)(&(pDigitalOut_GetChannelStatusSrc->stChannelStatus->stCopyRight.LBit)), (void*)(&(pDigitalOut_GetChannelStatusDes->stChannelStatus->stCopyRight.LBit)), sizeof(MS_BOOL));
1134 #endif
1135             break;
1136 
1137         //=============================================================
1138         // AUDIO_HDMI RELATIONAL API FUNCTION
1139         //=============================================================
1140         case MApi_CMD_AUDIO_HDMI_Tx_SetMute:
1141             //void MApi_AUDIO_HDMI_Tx_SetMute(MS_BOOL mute_en)
1142 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1143 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1144 
1145 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1146             break;
1147 
1148         case MApi_CMD_AUDIO_HDMI_Tx_GetStatus:
1149             //void MApi_AUDIO_HDMI_Tx_GetStatus(MS_BOOL *onOff, AUDIO_FS_TYPE *hdmi_SmpFreq, HDMI_TX_OUTPUT_TYPE *outType )
1150             //Status.onOff = return; Status.hdmi_smpFreq = return; Status.outType = return;
1151 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_HDMI_TX_GETSTATUS));
1152 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1153 
1154 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1155             break;
1156 
1157         case MApi_CMD_AUDIO_HDMI_Monitor:
1158             //MS_U8 MApi_AUDIO_HDMI_Monitor(void)
1159             //u32param[1] = return;
1160 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1161 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1162 
1163 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1164             break;
1165 
1166         case MApi_CMD_AUDIO_HDMI_GetNonpcmFlag:
1167             //MS_BOOL MApi_AUDIO_HDMI_GetNonpcmFlag(void)
1168             //u32param[1] = return;
1169 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1170 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1171 
1172 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1173             break;
1174 
1175         case MApi_CMD_AUDIO_HDMI_SetNonpcm:
1176             //void MApi_AUDIO_HDMI_SetNonpcm(MS_U8 nonPCM_en)
1177 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1178 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1179 
1180 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1181             break;
1182 
1183         case MApi_CMD_AUDIO_HDMI_Nonpcm_OP:
1184             //AUDIO_HDMI_RX_TYPE MApi_AUDIO_HDMI_RX_SetNonpcm(MS_U8 nonPCM_en)
1185             //Status.bSet = TRUE/FALSE; Status.nonPCM_en = nonPCM_en;Status.eRet = return;
1186             pHDMI_NonPCM_OpSrc = (PAUDIO_ST_HDMI_NONPCM_OP)pArgs;
1187             pHDMI_NonPCM_OpDes = (PAUDIO_ST_HDMI_NONPCM_OP)buffer_arg;
1188             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_HDMI_NONPCM_OP));
1189 
1190 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_HDMI_NONPCM_OP));
1191 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1192 
1193             if(pHDMI_NonPCM_OpDes->bSet == FALSE)
1194             	u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1195             else
1196             	u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1197 
1198             break;
1199 
1200         case MApi_CMD_AUDIO_DTV_HDMI_CFG:
1201             //void MApi_AUDIO_DTV_HDMI_CFG(MS_U8 ctrl)
1202 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1203 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1204 
1205 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1206             break;
1207 
1208         case MApi_CMD_AUDIO_HDMI_GetSynthFreq:
1209             //MS_U16 MApi_AUDIO_HDMI_GetSynthFreq(void)
1210             //u32param[1] = return;
1211 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1212 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1213 
1214 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1215             break;
1216 
1217         case MApi_CMD_AUDIO_HDMI_SetDownSample:
1218             //void MApi_AUDIO_HDMI_SetDownSample(MS_U8 ratio)
1219 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1220 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1221 
1222 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1223             break;
1224 
1225         case MApi_CMD_AUDIO_HDMI_TX_SetMode:
1226             //void MApi_AUDIO_HDMI_TX_SetMode(HDMI_TX_OUTPUT_TYPE outType)
1227 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1228 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1229 
1230 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1231             break;
1232 
1233         case MApi_CMD_AUDIO_HDMI_RX_GetHdmiInAudioStatus:
1234             //MS_BOOL MApi_AUDIO_HDMI_RX_GetHdmiInAudioStatus(ST_HDMI_AUDIO_STATUS *p_hdmiAudioSts)
1235             //Status.bStatus = Return;  Status.pHdmi_status = p_hdmiAudioSts;
1236 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(ST_HDMI_AUDIO_STATUS));
1237 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1238 
1239 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_RX_HDMI_AUDIO_STATUS));
1240 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_RX_HDMI_AUDIO_STATUS, UADP_SDT_P2N, pHdmi_status, spt_AUDIO_tmp1);
1241 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1242 
1243 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1244             break;
1245         //=============================================================
1246         // AUDIO_ADVANCE_SOUND RELATIONAL API FUNCTION
1247         //=============================================================
1248         case MApi_CMD_AUDIO_ADVSOUND_ProcessEnable:
1249             //pAdvSound_ProcessEnable = (PAUDIO_ST_ADVSOUND_PROCESSENABLE)pArgs;
1250             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(char)*AUDIO_STRING_NAME_MAX_LENGTH);
1251             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1252             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ADVSOUND_PROCESSENABLE));
1253             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ADVSOUND_PROCESSENABLE, UADP_SDT_P2N, eType, spt_AUDIO_tmp1);
1254             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1255 
1256             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1257             break;
1258 
1259         case MApi_CMD_AUDIO_ADVSOUND_SubProcessEnable:
1260             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(char)*AUDIO_STRING_NAME_MAX_LENGTH);
1261             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1262             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ADVSOUND_SUBPROCESSENABLE));
1263             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ADVSOUND_SUBPROCESSENABLE, UADP_SDT_P2N, eProc, spt_AUDIO_tmp1);
1264             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1265             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1266             break;
1267 
1268         case MApi_CMD_AUDIO_ADVSOUND_SetParam:
1269             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(char)*AUDIO_STRING_NAME_MAX_LENGTH);
1270             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1271             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ADVSOUND_SETPARAM));
1272             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ADVSOUND_SETPARAM, UADP_SDT_P2N, eParam, spt_AUDIO_tmp1);
1273             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1274 
1275             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1276             break;
1277 
1278         case MApi_CMD_AUDIO_ADVSND_SetParam:
1279             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(char)*AUDIO_STRING_NAME_MAX_LENGTH);
1280             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1281             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ADVSND_SETPARAM));
1282             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ADVSND_SETPARAM, UADP_SDT_P2N, eParam, spt_AUDIO_tmp1);
1283             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1284 
1285             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1286             break;
1287 #if 0
1288         case MApi_CMD_AUDIO_ADVSOUND_GetParam:
1289             //MS_U32 MApi_AUDIO_ADVSOUND_GetParam(ADVSND_GET_PARAM param)
1290             //u32Param[0] = return; u32param[1] = param;
1291             pu32Src = (MS_U32*)pArgs;
1292             pu32Des = (MS_U32*)buffer_arg;
1293             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(MS_U32) * 2);
1294             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1295             CPY_to_USER((void*)(&(pu32Src[0])), (void*)(&(pu32Des[0])), sizeof(MS_U32));
1296             break;
1297 #endif
1298 
1299         case MApi_CMD_AUDIO_SetVDS:
1300             //void MApi_AUDIO_SetVDS(MS_U8 u8enVDS)
1301 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1302 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1303 
1304 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1305             break;
1306 
1307         case MApi_CMD_AUDIO_SetVSPK:
1308             //void MApi_AUDIO_SetVSPK(MS_U8 u8enVSPK)
1309 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1310 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1311 
1312 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1313             break;
1314 
1315         case MApi_CMD_AUDIO_SetSRS:
1316             //void MApi_AUDIO_SetSRS(MS_U8 u8enSRS)
1317 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1318 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1319 
1320 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1321             break;
1322 
1323         case MApi_CMD_AUDIO_SetBBE:
1324             //void MApi_AUDIO_SetBBE(MS_U8 u8enBBE , MS_U8 u8BBEMode)
1325 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SETBBE));
1326 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1327 
1328 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1329             break;
1330 
1331         case MApi_CMD_AUDIO_VSPK_WMod:
1332             //void MApi_AUDIO_VSPK_WMod(MS_U8 u8VSPK_WMode)
1333 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1334 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1335 
1336 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1337             break;
1338 
1339         case MApi_CMD_AUDIO_VSPK_SMod:
1340             //void MApi_AUDIO_VSPK_SMod(MS_U8 u8VSPK_SMode)
1341 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1342 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1343 
1344 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1345             break;
1346 
1347         case MApi_CMD_AUDIO_SRS_DC:
1348             //void MApi_AUDIO_SRS_DC(MS_U8 u8SRSenDC)
1349 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1350 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1351 
1352 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1353             break;              //void MApi_AUDIO_SRS_DC(MS_U8 u8SRSenDC)
1354 
1355         case MApi_CMD_AUDIO_SRS_TruBass:
1356             //void MApi_AUDIO_SRS_TruBass(MS_U8 u8SRSenTruBass)
1357 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1358 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1359 
1360 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1361             break;
1362 
1363         case MApi_CMD_AUDIO_SRSTsxtPara:
1364             //void  MApi_AUDIO_SRS_SetTsxtPara(MS_U8 u8mode, MS_U8 u8value)
1365 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SRS_SETTSXTPARA));
1366 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1367 
1368 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1369             break;
1370 
1371         case MApi_CMD_AUDIO_SetSRSTSHD:
1372             //void MApi_AUDIO_SetSRSTSHD(MS_U8 u8enTSHD)
1373 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1374 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1375 
1376 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1377             break;
1378 
1379         case MApi_CMD_AUDIO_TSHD_TruBass:
1380             //void  MApi_AUDIO_TSHD_TruBass(MS_U8 u8TSHDenTruBass)
1381 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1382 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1383 
1384 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1385             break;
1386 
1387         case MApi_CMD_AUDIO_TSHD_Definition:
1388             //void  MApi_AUDIO_TSHD_Definition(MS_U8 u8TSHDenDefinition)
1389 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1390 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1391 
1392 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1393             break;
1394 
1395         case MApi_CMD_AUDIO_TSHD_Clarity:
1396             //void  MApi_AUDIO_TSHD_Clarity(MS_U8 u8TSHDenClarity)
1397 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1398 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1399 
1400 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1401             break;
1402 
1403         case MApi_CMD_AUDIO_SRSSetTshdPara:
1404             //void  MApi_AUDIO_SRS_SetTshdPara(MS_U8 u8mode, MS_U8 u8value)
1405 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SRS_SETTSHDPARA));
1406 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1407 
1408 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1409             break;
1410 
1411         case MApi_CMD_AUDIO_ADVSOUND_SET_ASF_PARAM:
1412             //MS_BOOL MApi_AUDIO_ADVSOUND_SetASFParam(ADVSND_PARAM param, MS_S16 s16value1, MS_S16 s16value2)
1413             //s32Param[0] = return; s32param[1] = param; s32param[2] = s16value1; s32param[3] = s16value2
1414 #if 0
1415 			// todo stanley
1416             ps32Src = (MS_S32*)pArgs;
1417             ps32Des = (MS_S32*)buffer_arg;
1418             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(MS_S32) * 4);
1419             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1420             CPY_to_USER((void*)(&(ps32Src[0])), (void*)(&(ps32Des[0])), sizeof(MS_S32));
1421 #endif
1422             break;
1423 #if 0
1424         case MApi_CMD_AUDIO_ADVSOUND_GET_ASF_PARAM:
1425             //MS_U32 MApi_AUDIO_ADVSOUND_GetASFParam(ADVSND_GET_PARAM param)
1426             //u32Param[0] = return; u32param[1] = param;
1427             pu32Src = (MS_U32*)pArgs;
1428             pu32Des = (MS_U32*)buffer_arg;
1429             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(MS_U32) * 2);
1430             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1431             CPY_to_USER((void*)(&(pu32Src[0])), (void*)(&(pu32Des[0])), sizeof(MS_U32));
1432             break;
1433 #endif
1434         case MApi_CMD_AUDIO_ADVSOUND_GetInfo:
1435             //MS_U32 MApi_AUDIO_ADVSOUND_GetInfo(AdvSound_GET_Type Type)
1436             //u32Param[0] = return; u32param[1] = Type;
1437 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SRS_ADVSOUND_GETINFO));
1438 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1439 
1440 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1441             break;
1442 
1443         case MApi_CMD_AUDIO_DBXTV_SetMode:
1444             //void MApi_DBXTV_SetMode(EN_DBXTV_TotSonMode totsonmode, EN_DBXTV_TotVolMode totvolmode, EN_DBXTV_TotSurMode totsurmode,MS_U32 enable)
1445 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_DBXTV_SETMODE));
1446 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1447 
1448 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1449             break;
1450 
1451         case MApi_CMD_AUDIO_SeInit:
1452             //void MApi_AUDIO_SeInit(void)
1453 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1454             break;
1455 
1456         case MApi_CMD_AUDIO_SetAdvSndSys:
1457             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(char)*AUDIO_STRING_NAME_MAX_LENGTH);
1458             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1459             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SETADVSNDSYS));
1460             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SETADVSNDSYS, UADP_SDT_P2N, eType, spt_AUDIO_tmp1);
1461             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1462 
1463             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1464             break;
1465 
1466         /*case MApi_CMD_AUDIO_ADV_SOUND_SET:
1467             //void MApi_AUDIO_ADVSND_Set_Sound_Param(AdvSound_SET_Type Type, MS_U32 *pParam) // New api for cover below functions
1468             pADV_Sound_SetParamSrc = (PAUDIO_ST_ADV_SOUND_SETPARAM)pArgs;
1469             pADV_Sound_SetParamDes = (PAUDIO_ST_ADV_SOUND_SETPARAM)buffer_arg;
1470             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_ADV_SOUND_SETPARAM));
1471 
1472             pADV_Sound_SetParamDes->pParam = (MS_U32*)buffer_array0;
1473             CPY_FROM_USER((void*)buffer_array0, (void*)pADV_Sound_SetParamSrc->pParam, sizeof(MS_U32) * 2);
1474 
1475             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1476             break;*/
1477 
1478         case MApi_CMD_AUDIO_Copy_Parameter:
1479             pCopyParamterSrc = (PAUDIO_ST_COPY_PARAMETER)pArgs;
1480             pCopyParamterDes = (PAUDIO_ST_COPY_PARAMETER)buffer_arg;
1481             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_COPY_PARAMETER));
1482             // printf("\n AUDIO_ST_COPY_PARAMETER size:%d at kernel mode.\n", sizeof(AUDIO_ST_COPY_PARAMETER));
1483 
1484             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], (pCopyParamterDes->parameter_size+pCopyParamterDes->type_size));
1485             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1486             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_COPY_PARAMETER));
1487             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_COPY_PARAMETER, UADP_SDT_P2N, Parameter_ptr, spt_AUDIO_tmp1);
1488             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1489             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1490             break;
1491         //=============================================================
1492         // AUDIO_KTV RELATIONAL API FUNCTION
1493         //=============================================================
1494         case MApi_CMD_AUDIO_KTV_OP:
1495             //MS_BOOL MApi_AUDIO_SetKTVInfo(AUDIO_KTV_MODEL modelType, AUDIO_KTV_PARAMTYPE paramType, MS_U32 param1, MS_U32 param2)
1496             //Status.eType = KTV_SET_INFO; Status.modelType = modelType; Status.paramType = AUD_KTV_ParamType1; Status.param1 = param1; Status.param2 = param2; Status.bRet = Return;
1497             pKTV_OpSrc = (PAUDIO_ST_KTV_OP)pArgs;
1498             pKTV_OpDes = (PAUDIO_ST_KTV_OP)buffer_arg;
1499             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_KTV_OP));
1500 
1501 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_KTV_OP));
1502 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1503 
1504 			if(pKTV_OpDes->eType == KTV_SET_INFO || pKTV_OpDes->eType == KTV_GET_INFO)
1505 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1506 			else
1507 				u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1508             break;
1509 
1510         case MApi_CMD_AUDIO_PlayMenuSound:
1511             //void MApi_AUDIO_PlayMenuSound(void)
1512 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1513             break;
1514         //=============================================================
1515         // AUDIO_MM RELATIONAL API FUNCTION
1516         //=============================================================
1517         case MApi_CMD_AUDIO_SetCommAudioInfo:
1518             //MS_BOOL MApi_AUDIO_SetCommAudioInfo( Audio_COMM_infoType infoType, MS_U32 param1, MS_U32 param2 )
1519             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1520 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_COMMAUDIOINFO));
1521 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_COMMAUDIOINFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1522 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_COMMAUDIOINFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1523 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1524 
1525 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1526             break;
1527 #if 0
1528         case MApi_CMD_AUDIO_SetDecodeParam:
1529             //MS_BOOL MApi_ADEC_SetDecodeParam( AUDIO_DEC_ID DecId, Audio_ParamType paramType, MS_U32* Param )
1530             //Status.DecID = DecId; Status.paramType = paramType; Status.Param = Param;
1531             pSetDecodeParamSrc = (PAUDIO_ST_SETDECODEPARAM)pArgs;
1532             pSetDecodeParamDes = (PAUDIO_ST_SETDECODEPARAM)buffer_arg;
1533             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_SETDECODEPARAM));
1534 
1535             pSetDecodeParamDes->Param = (MS_U32*)buffer_array0;
1536             CPY_FROM_USER((void*)buffer_array0, (void*)pSetDecodeParamSrc->Param, sizeof(MS_U32) * 6);
1537 
1538             u32Ret = UtopiaIoctl(pInstanceTmp,u32Cmd,(void*)buffer_arg);
1539             if(!(pSetDecodeParamSrc->paramType == Audio_ParamType_setXPCMDecParam))
1540             {
1541                 CPY_to_USER((void*)(&(pSetDecodeParamSrc->bStatus)), (void*)(&(pSetDecodeParamDes->bStatus)), sizeof(MS_BOOL));
1542             }
1543             break;
1544 #endif
1545         case MApi_CMD_AUDIO_SetMpegInfo:
1546             //MS_BOOL _MApi_AUDIO_SetMpegInfo( Audio_MPEG_infoType infoType, MS_U32 param1, MS_U32 param2 );
1547             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1548 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_MPEGINFO));
1549 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_MPEGINFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1550 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_MPEGINFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1551 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1552 
1553 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1554             break;
1555 
1556         case MApi_CMD_AUDIO_SetAC3Info:
1557             //MS_BOOL _MApi_AUDIO_SetAC3Info(Audio_AC3_infoType infoType, MS_U32 param1, MS_U32 param2 )
1558             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1559 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AC3INFO));
1560 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_AC3INFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1561 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_AC3INFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1562 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1563 
1564 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1565             break;
1566 
1567         case MApi_CMD_AUDIO_SetAC3PInfo:
1568             //MS_BOOL _MApi_AUDIO_SetAC3PInfo(Audio_AC3P_infoType infoType, MS_U32 param1, MS_U32 param2 );
1569             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1570 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AC3PINFO));
1571 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_AC3PINFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1572 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_AC3PINFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1573 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1574 
1575 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1576             break;
1577 
1578         case MApi_CMD_AUDIO_SetAACInfo:
1579             //MS_BOOL _MApi_AUDIO_SetAACInfo( Audio_AAC_infoType infoType, MS_U32 param1, MS_U32 param2 );
1580             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1581 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AACINFO));
1582 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_AACINFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1583 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_AACINFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1584 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1585 
1586 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1587             break;
1588 
1589         case MApi_CMD_AUDIO_SetWMAInfo:
1590             //MS_BOOL _MApi_AUDIO_SetWmaInfo(Audio_WMA_infoType infoType, MS_U32 param1, MS_U32 param2 );
1591             //u32Param[0] = return u32param[1] = infoType; u32param[2] = param1; u32param[3] = param2;
1592 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_WMAINFO));
1593 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_WMAINFO, UADP_SDT_AT, Param1, spt_MS_NULL);
1594 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_SET_WMAINFO, UADP_SDT_AT, Param2, spt_MS_NULL);
1595 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1596 
1597 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1598             break;
1599 
1600         case MApi_CMD_AUDIO_SetDTSCommonCtrl:
1601             //MS_BOOL _MApi_AUDIO_SetDTSCommonCtrl( Audio_DTS_infoType infoType, Audio_DTS_CtrlType ctrl_type );
1602             //u32Param[0] = return u32param[1] = infoType u32param[2] = ctrl_type
1603 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_DTSCOMMONCTRL));
1604 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1605 
1606 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1607             break;
1608 
1609         case MApi_CMD_AUDIO_MM2_InitAesInfo:
1610             //MS_BOOL _MApi_AUDIO_MM2_initAesInfo( AUDIO_DEC_ID dec_id );
1611             //u32Param[0] = return u32param[1] = dec_id
1612 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM2_INITAESINFO));
1613 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1614 
1615 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1616             break;
1617 
1618         case MApi_CMD_AUDIO_SetXPCMParam:
1619             //void _MApi_AUDIO_SetXPCMParam(XPCM_TYPE audioType, MS_U8 channels, MS_U16 sampleRate, MS_U8 bitsPerSample, MS_U16 blockSize, MS_U16 samplePerBlock);
1620 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_XPCMPARAM));
1621 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1622 
1623 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1624             break;
1625 
1626         case MApi_CMD_AUDIO_GetCommAudioInfo:
1627             //long long MApi_AUDIO_GetCommAudioInfo( Audio_COMM_infoType infoType )
1628             //(long long)u64param[0] = return, u64param[1] = infoType;
1629 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_COMMAUDIOINFO));
1630 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1631 
1632 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1633             break;
1634 
1635         case MApi_CMD_AUDIO_GetMpegInfo:
1636             //MS_U32 MApi_AUDIO_GetMpegInfo( Audio_MPEG_infoType infoType )
1637             //u32Param[0] = return u32param[1] = infoType;
1638 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_MPEGINFO));
1639 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1640 
1641 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1642             break;
1643 
1644         case MApi_CMD_AUDIO_GetAC3Info:
1645             //MS_U32 MApi_AUDIO_GetAC3Info(Audio_AC3_infoType infoType )
1646             //u32Param[0] = return u32param[1] = infoType;
1647 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_AC3INFO));
1648 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1649 
1650 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1651             break;
1652 
1653         case MApi_CMD_AUDIO_GetAC3PInfo:
1654             //MS_U32 MApi_AUDIO_GetAC3PInfo( Audio_AC3P_infoType infoType )
1655             //u32Param[0] = return u32param[1] = infoType;
1656 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_AC3PINFO));
1657 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1658 
1659 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1660             break;
1661 
1662         case MApi_CMD_AUDIO_GetAACInfo:
1663             //MS_U32 MApi_AUDIO_GetAACInfo( Audio_AAC_infoType infoType )
1664             //u32Param[0] = return u32param[1] = infoType;
1665 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_AACINFO));
1666 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1667 
1668 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1669             break;
1670 
1671         case MApi_CMD_AUDIO_GetWmaInfo:
1672             //MS_U32 MApi_AUDIO_GetWmaInfo( Audio_WMA_infoType infoType )
1673             //u32Param[0] = return u32param[1] = infoType;
1674 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_WMAINFO));
1675 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1676 
1677 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1678             break;
1679 
1680         case MApi_CMD_AUDIO_GetDTSInfo:
1681             //MS_U32 MApi_AUDIO_GetDTSInfo( Audio_DTS_infoType infoType )
1682             //u32Param[0] = return u32param[1] = infoType;
1683 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_DTSINFO));
1684 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1685 
1686 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1687             break;
1688 
1689         case MApi_CMD_AUDIO_XPCM_Param:
1690             //MS_U8 MApi_AUDIO_XPCM_Param(XPCM_TYPE audioType, MS_U8  channels, MS_U16 sampleRate, MS_U8  bitsPerSample, MS_U16 blockSize, MS_U16 samplePerBlock)
1691             //u32Param[0] = return u32param[1] = audioType; u32param[2] = channels, u32param[3] = sampleRate, u32param[4] = bitsPerSample, u32param[5] = blockSize, u32param[6] = samplePerBlock;
1692 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_XPCMPARAM));
1693 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1694 
1695 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1696             break;
1697 
1698 
1699         case MApi_CMD_AUDIO_XPCM2_Param:
1700             //void MApi_AUDIO_XPCM2_Param(XPCM_TYPE audioType, MS_U8  channels, MS_U16 sampleRate, MS_U8  bitsPerSample, MS_U16 blockSize, MS_U16 samplePerBlock)
1701             //u32Param[0] = audioType u32param[1] = channels; u32param[2] = sampleRate, u32param[3] = bitsPerSample, u32param[4] = blockSize, u32param[5] = samplePerBlock
1702 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_XPCMPARAM));
1703 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1704 
1705 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1706             break;
1707 
1708         case MApi_CMD_AUDIO_XPCM2_CheckIntStatus:
1709             //MS_U16 MApi_AUDIO_XPCM2_CheckIntStatus(void)
1710             //u32Param[1] = return
1711 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1712 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1713 
1714 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1715             break;
1716 
1717         case MApi_CMD_AUDIO_RA8_Param:
1718             //MS_U8 MApi_AUDIO_RA8_Param(MS_U16 mNumCodecs, MS_U16 mSamples, MS_U16 mSampleRate, MS_U16* Channels, MS_U16* Regions, MS_U16* cplStart, MS_U16* cplQbits, MS_U16* FrameSize)
1719 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_RA8_Param));
1720 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_RA8_Param, UADP_SDT_P2N, pChannels, spt_MS_U16);
1721 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_RA8_Param, UADP_SDT_P2N, pRegions, spt_MS_U16);
1722 			UADP_SDT_KIND(&spt_AUDIO_tmp[3], AUDIO_ST_RA8_Param, UADP_SDT_P2N, pcplStart, spt_MS_U16);
1723 			UADP_SDT_KIND(&spt_AUDIO_tmp[4], AUDIO_ST_RA8_Param, UADP_SDT_P2N, pcplQbits, spt_MS_U16);
1724 			UADP_SDT_KIND(&spt_AUDIO_tmp[5], AUDIO_ST_RA8_Param, UADP_SDT_P2N, pFrameSize, spt_MS_U16);
1725 			UADP_SDT_FIN(&spt_AUDIO_tmp[6]);
1726 
1727 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1728             break;
1729 
1730         case MApi_CMD_AUDIO_Init:
1731             //void MApi_AUDIO_Init(En_DVB_decSystemType enDecSystem)
1732 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1733 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1734 
1735 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1736             break;
1737 
1738         case MApi_CMD_AUDIO_StartDecode:
1739             //void MApi_AUDIO_StartDecode(void)
1740 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1741             break;
1742 
1743         case MApi_CMD_AUDIO_StartBroswe:
1744             //void MApi_AUDIO_StartBrowse(void)
1745 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1746             break;
1747 
1748         case MApi_CMD_AUDIO_StopDecode:
1749             //void MApi_AUDIO_StopDecode(void)
1750 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1751             break;
1752 
1753         case MApi_CMD_AUDIO_PauseDecode:
1754             //void MApi_AUDIO_PauseDecode(void)
1755 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1756             break;
1757 
1758         case MApi_CMD_AUDIO_CheckPlayDone:
1759             //MS_U8 MApi_AUDIO_CheckPlayDone(void)
1760             //u32param[1] = return;
1761 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1762 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1763 
1764 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1765             break;
1766 
1767         case MApi_CMD_AUDIO_GetResidualBufferSize:
1768             //MS_U16 MApi_AUDIO_GetResidualBufferSize(void)
1769             //u32param[1] = return;
1770 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1771 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1772 
1773 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1774             break;
1775 
1776         case MApi_CMD_AUDIO_GetPCMBufferSize:
1777             //MS_U16 MApi_AUDIO_GetPCMBufferSize(MS_U16 u16BitRate)
1778             //u32Param[0] = return; u32param[1] = u16BitRate;
1779 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_PCMBUFFERSIZE));
1780 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1781 
1782 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1783             break;
1784 
1785         case MApi_CMD_AUDIO_GetPCMBufferSize2:
1786             //MS_U16 MApi_AUDIO_GetPCMBufferSize2(MS_U16 u16BitRate,MS_U16 u16SampleRate)
1787             //u32Param[0] = return u32param[1] = u16BitRate; u32param[2] = u16SampleRate;
1788 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_PCMBUFFERSIZE2));
1789 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1790 
1791 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1792             break;
1793 
1794         case MApi_CMD_AUDIO_GetCurrentFrameNumber:
1795             //MS_U32 MApi_AUDIO_GetCurrentFrameNumber(void)
1796             //u32param[1] = return;
1797 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1798 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1799 
1800 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1801             break;
1802 
1803         case MApi_CMD_AUDIO_GetSampleRates:
1804             //MS_U16 MApi_AUDIO_GetSampleRate(void)
1805             //u32param[1] = return;
1806 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1807 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1808 
1809 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1810             break;
1811 
1812         case MApi_CMD_AUDIO_GetBitRates:
1813             //MS_U32 MApi_AUDIO_GetBitRate(void)
1814             //u32param[1] = return;
1815 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1816 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1817 
1818 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1819             break;
1820 
1821         case MApi_CMD_AUDIO_GetLayer:
1822             //Audio_MP3_LAYER MApi_AUDIO_GetLayer(void)
1823             //u32param[1] = return;
1824 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1825 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1826 
1827 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1828             break;
1829 
1830         case MApi_CMD_AUDIO_CheckInputRequest:
1831             //MS_U8 MApi_AUDIO_CheckInputRequest(MS_U32 *pU32WrtAddr, MS_U32 *pU32WrtBytes)
1832             //Status.u8Status = return; Status.pU32WrtAddr = pU32WrtAddr; Status.pU32WrtBytes = pU32WrtBytes;
1833 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_CHECK_INPUT_REQ));
1834 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_CHECK_INPUT_REQ, UADP_SDT_P2N, pPHYWrtAddr, spt_MS_PHY_AUDIO);
1835 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_CHECK_INPUT_REQ, UADP_SDT_P2N, pU32WrtBytes, spt_MS_U32);
1836 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1837 
1838 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1839             break;
1840 
1841         case MApi_CMD_AUDIO_SetInput:
1842             //void MApi_AUDIO_SetInput(void)
1843 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1844             break;
1845 
1846         case MApi_CMD_AUDIO_SetSampleRateIndex:
1847             //void MApi_AUDIO_SetSampleRateIndex(MS_U16 u16Index)
1848 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1849 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1850 
1851 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1852             break;
1853 
1854         case MApi_CMD_AUDIO_FileEndNotification:
1855             //void MApi_AUDIO_FileEndNotification(void)
1856 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1857             break;
1858 
1859         case MApi_CMD_AUDIO_FileEndDataHandle:
1860             //void MApi_AUDIO_FileEndDataHandle(MS_U32 u32DataLeft)
1861 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1862 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1863 
1864 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1865             break;
1866 
1867         case MApi_CMD_AUDIO_GetPlayTick:
1868             //MS_U32 MApi_AUDIO_GetPlayTick(void)
1869             //u32param[1] = return;
1870 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1871 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1872 
1873 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1874             break;
1875 
1876         case MApi_CMD_AUDIO_GetEsMEMCnt:
1877             //MS_U16 MApi_AUDIO_GetEsMEMCnt(void)
1878             //u32param[1] = return;
1879 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1880 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1881 
1882 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1883             break;
1884 
1885         case MApi_CMD_AUDIO_SetASFParm:
1886             //void MApi_AUDIO_SetASFParm(WMA_ASF_PARMTYPE parm_type, MS_U32 value)
1887 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_ASFPARM));
1888 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1889 
1890 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1891             break;
1892 
1893         case MApi_CMD_AUDIO_MM_SetInput:
1894             //void MApi_AUDIO_MM_SetInput (En_DVB_AudioDecoder AUDDecoderNo, MS_U8 u8IntTag)
1895 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM_SETINPUT));
1896 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1897 
1898 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1899             break;
1900 
1901         case MApi_CMD_AUDIO_MM_CheckPlayDone:
1902             //MS_U32 MApi_AUDIO_MM_CheckPlayDone (En_DVB_AudioDecoder AUDDecoderNo)
1903             //u32Param[0] = return u32param[1] = AUDDecoderNo;
1904 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM_CHECKPLAYDONE));
1905 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1906 
1907 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1908             break;
1909 
1910         case MApi_CMD_AUDIO_MM_CheckInputRequest:
1911             //MS_U8 MApi_AUDIO_MM_CheckInputRequest(En_DVB_AudioDecoder AUDDecoderNo, MS_U32 *pU32WrtAddr, MS_U32 *pU32WrtBytes)
1912             //Status.u8Status = return; Status.AUDDecoderNo = AUDDecoderNo;Status.pU32WrtAddr = pU32WrtAddr; Status.pU32WrtBytes = pU32WrtBytes;
1913 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM_CHECK_INPUT_REQ));
1914 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_MM_CHECK_INPUT_REQ, UADP_SDT_P2N, pPHYWrtAddr, spt_MS_PHY_AUDIO);
1915 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_MM_CHECK_INPUT_REQ, UADP_SDT_P2N, pU32WrtBytes, spt_MS_U32);
1916 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
1917 
1918 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1919             break;
1920 
1921         case MApi_CMD_AUDIO_DmaReader_Init:
1922             //void MApi_AUDIO_DmaReader_Init(SAMPLE_RATE sampleRate)
1923 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1924 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1925 
1926 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1927             break;
1928 
1929         case MApi_CMD_AUDIO_DmaReader_AllInput_Init:
1930             //void MApi_AUDIO_DmaReader_AllInput_Init(void)
1931 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1932             break;
1933 
1934         case MApi_CMD_AUDIO_DmaReader_WritePCM:
1935                 //MS_BOOL MApi_AUDIO_DmaReader_WritePCM(void* buffer, MS_U32 bytes)
1936                 //Status.bStatus = return; Status.pBuffer = buffer; Status.bytes = bytes;
1937             pDMAReader_WritePCMSrc = (PAUDIO_ST_DMAREADER_WRITEPCM)pArgs;
1938 			pDMAReader_WrtiePCMDes = (PAUDIO_ST_DMAREADER_WRITEPCM)buffer_arg;
1939             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(AUDIO_ST_DMAREADER_WRITEPCM));
1940 
1941 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], pDMAReader_WrtiePCMDes->bytes);
1942 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
1943 
1944 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_DMAREADER_WRITEPCM));
1945 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_DMAREADER_WRITEPCM, UADP_SDT_P2N, pBuffer, spt_AUDIO_tmp1);
1946 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
1947 
1948 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1949             break;
1950 
1951         case MApi_CMD_AUDIO_DmaWrite_Init:
1952             //void MApi_AUDIO_DmaWriter_Init(void)
1953 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,NULL,NULL,NULL,0);
1954             break;
1955 
1956         case MApi_CMD_AUDIO_USBPCM_Enable:
1957             //void MApi_AUDIO_USBPCM_Enable(MS_BOOL bEnable)
1958 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1959 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1960 
1961 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1962             break;
1963 
1964         case MApi_CMD_AUDIO_USBPCM_SetFlag:
1965             //void MApi_AUDIO_USBPCM_SetFlag(MS_BOOL bEnable)
1966 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
1967 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1968 
1969 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1970             break;
1971 
1972         case MApi_CMD_AUDIO_USBPCM_GetFlag:
1973             //MS_BOOL MApi_AUDIO_USBPCM_GetFlag(void)
1974             //u32param[1] = return;
1975 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
1976 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1977 
1978 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1979             break;
1980 
1981         case MApi_CMD_AUDIO_USBPCM_GetMemInfo:
1982             //void MApi_AUDIO_USBPCM_GetMemInfo(AUDIO_UPLOAD_INFO *uploadInfo)
1983             //u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_ST_UPLOAD_INFO, NULL, buffer_arg,sizeof(buffer_arg));
1984 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_UPLOAD_INFO));
1985 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1986 
1987 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
1988             break;
1989 
1990         case MApi_CMD_AUDIO_PCMCapture_Init:
1991             //MS_BOOL MApi_AUDIO_PCMCapture_Init(const AUDIO_DEVICE_TYPE eID, const AUDIO_CAPTURE_SOURCE_TYPE eSource)
1992             // Status.bStatus = return; Status.eID = eID; Status.eSource = eSource;
1993 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCMCAPTURE_INIT));
1994 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
1995 
1996 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
1997             break;
1998 
1999         case MApi_CMD_AUDIO_PCMCapture_Start:
2000             //MS_BOOL MApi_AUDIO_PCMCapture_Start(const AUDIO_DEVICE_TYPE eID)
2001             // Status.bStatus = Return; Status.eID = eID;
2002 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCMCAPTURE_INIT));
2003 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2004 
2005 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2006             break;
2007 
2008         case MApi_CMD_AUDIO_PCMCapture_Stop:
2009             //MS_BOOL MApi_AUDIO_PCMCapture_Stop(const AUDIO_DEVICE_TYPE eID)
2010             // Status.bStatus = Return; Status.eID = eID;
2011 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCMCAPTURE_INIT));
2012 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2013 
2014 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2015             break;
2016 
2017         case MApi_CMD_AUDIO_PCMCapture_Read:
2018             //MS_BOOL MApi_AUDIO_PCMCapture_Read(const AUDIO_DEVICE_TYPE eID, void *buffer, const MS_U32 bytes)
2019             // Status.bStatus = Return;Status.eID = eID;Status.pBuffer = buffer;Status.bytes = bytes;
2020 			pPCMCaptureReadSrc = (PAUDIO_ST_PCMCAPTURE_READ)pArgs;
2021 			pPCMCaptureReadDes = (PAUDIO_ST_PCMCAPTURE_READ)buffer_arg;
2022             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(pPCMCaptureReadDes->bytes));
2023 
2024             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(pPCMCaptureReadDes->bytes));
2025 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2026 
2027 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCMCAPTURE_READ));
2028 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCMCAPTURE_READ, UADP_SDT_P2N, pBuffer,spt_AUDIO_tmp1);
2029 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2030 
2031 			u32Ret=UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2032             break;
2033 
2034         case MApi_CMD_AUDIO_VoIP_Config:
2035             //MS_BOOL MApi_AUDIO_VoIP_Config(AUDIO_VoIP_CONFIG_TYPE configType, MS_U32 param1, MS_U32 param2)
2036             //u32Param[0] = return u32param[1] = configType; u32param[2] = param1; u32param[3] = param2;
2037 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_VOIP_CONFIG));
2038 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2039 
2040 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2041             break;
2042 
2043         case MApi_CMD_AUDIO_ALSA_Check:
2044             //MS_BOOL MApi_AUDIO_ALSA_Check(void)
2045             //u32param[1] = Return;
2046 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
2047 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2048 
2049 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2050             break;
2051 
2052         case MApi_CMD_AUDIO_ALSA_Enable:
2053             //MS_BOOL MApi_AUDIO_ALSA_Enable(MS_BOOL bEnable)
2054             //u32Param[0] = return u32param[1] = bEnable;
2055 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ALSA_ENABLE));
2056 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2057 
2058 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2059             break;
2060 
2061         case MApi_CMD_AUDIO_UNI_CheckDecodeDone:
2062             //MS_BOOL MApi_AUDIO_UNI_CheckDecodeDone(MS_U32 *pU32WrtAddr, MS_U32 *pU32WrtBytes)
2063             // Status.bStatus = return ;Status.pU32WrtAddr = pU32WrtAddr; Status.pU32WrtBytes = pU32WrtBytes;
2064 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_UNI_CHECK_DECODEDONE));
2065 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_UNI_CHECK_DECODEDONE, UADP_SDT_P2N, pPHYWrtAddr, spt_MS_PHY_AUDIO);
2066 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_UNI_CHECK_DECODEDONE, UADP_SDT_P2N, pU32WrtBytes, spt_MS_U32);
2067 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
2068 
2069 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2070             break;
2071 
2072         case MApi_CMD_AUDIO_UNI_SetOutput:
2073             //void MApi_AUDIO_UNI_SetOutput (MS_U32 PCMOutCnt)
2074 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
2075 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2076 
2077 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
2078             break;
2079 
2080         case MApi_CMD_AUDIO_UNI_Set_PCMInputWriteAddr:
2081             //void MApi_AUDIO_UNI_Set_PCMInputWriteAddr (MS_U32 PCMIn_Wptr)
2082 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(MS_U32));
2083 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2084 
2085 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,NULL,NULL,0);
2086             break;
2087 
2088         case MApi_CMD_AUDIO_UNI_Get_OutPCMLevel:
2089             //MS_U32 MApi_AUDIO_UNI_Get_OutPCMLevel (void)
2090             //u32param[1] = return
2091 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(u32param2_t));
2092 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2093 
2094 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2095             break;
2096 
2097         case MApi_CMD_AUDIO_RingTask:
2098             //void MApi_AUDIO_RingTask(audioRingTask* auRingTask)
2099 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(audioBufMonitor));
2100 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2101 
2102 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(audioRingTask));
2103 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], audioRingTask, UADP_SDT_ES, _stBufInfo, spt_AUDIO_tmp1);
2104 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2105 
2106 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2107             break;
2108 
2109         case MApi_CMD_AUDIO_Ring_DataTransfer:
2110             //void MApi_AUDIO_Ring_DataTransfer(audioRingTask* auRingTask, audioRingTask* auRingTask_1)
2111 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(audioBufMonitor));
2112 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2113 
2114 			UADP_SDT_BGN(&spt_AUDIO_tmp2[0], sizeof(audioRingTask));
2115 			UADP_SDT_KIND(&spt_AUDIO_tmp2[1], audioRingTask, UADP_SDT_ES, _stBufInfo, spt_AUDIO_tmp1);
2116 			UADP_SDT_FIN(&spt_AUDIO_tmp2[2]);
2117 
2118 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_RING_DATA_TRANS));
2119 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_RING_DATA_TRANS, UADP_SDT_P2N, pauRingTask, spt_AUDIO_tmp2);
2120 			UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_RING_DATA_TRANS, UADP_SDT_P2N, pauRingTask_1, spt_AUDIO_tmp2);
2121 			UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
2122 
2123 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2124             break;
2125 
2126         case MApi_CMD_AUDIO_MM2_CheckAesInfo:
2127             //MS_BOOL MApi_AUDIO_MM2_checkAesInfo( AUDIO_DEC_ID  dec_id, AES_INFO *aes_info )
2128             // Status.bStatus = FALSE; Status.dec_id = dec_id; Status.paes_info = aes_info;
2129 			UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AES_INFO));
2130 			UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2131 
2132 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM2_CHECKAESINFO));
2133 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_MM2_CHECKAESINFO, UADP_SDT_P2N, paes_info, spt_AUDIO_tmp1);
2134 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2135 
2136 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2137             break;
2138 
2139         case MApi_CMD_AUDIO_MM2_InputAesFinished:
2140             //MS_BOOL MApi_AUDIO_MM2_inputAesFinished( AUDIO_DEC_ID dec_id, MS_U32 es_size, MS_BOOL ptsExist, MS_U64 pts )
2141             // Status.bStatus = Return; Status.dec_id = dec_id; Status.es_size = es_size; Status.ptsExist = ptsExist; Status.pts = pts;
2142 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_MM2_INPUTAES_FINISH));
2143 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2144 
2145 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2146             break;
2147 
2148         case MApi_CMD_AUDIO_SetAudioParam2:
2149             //MS_BOOL MApi_AUDIO_SetAudioParam2( AUDIO_DEC_ID DecId, Audio_ParamType paramType, MS_U32 Param )
2150             //u32Param[0] = return u32param[1] = DecId; u32param[2] = paramType; u32param[3] = Param;
2151             pSetAudioParam2Src = (PAUDIO_ST_SET_AUDIOPARAM2)pArgs;
2152             pSetAudioParam2Des = (PAUDIO_ST_SET_AUDIOPARAM2)buffer_arg;
2153             CPY_FROM_USER((void *)&pSetAudioParam2Des->eParamType, (void *)&pSetAudioParam2Src->eParamType, sizeof(MS_U32));
2154 
2155             if (pSetAudioParam2Des->eParamType == Audio_ParamType_CommonCmd)
2156             {
2157                 UADP_SDT_BGN(&spt_AUDIO_tmp2[0], sizeof(AUDIO_OUTPUT_DEVICE_SELECTION_t));
2158                 UADP_SDT_FIN(&spt_AUDIO_tmp2[1]);
2159 
2160                 UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AUDIO_COMMON_CMD_t));
2161                 UADP_SDT_KIND(&spt_AUDIO_tmp1[1], AUDIO_COMMON_CMD_t, UADP_SDT_P2N, pData, spt_AUDIO_tmp2);
2162                 UADP_SDT_FIN(&spt_AUDIO_tmp1[2]);
2163 
2164                 UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AUDIOPARAM2));
2165                 UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_AUDIOPARAM2, UADP_SDT_P2N, Param, spt_AUDIO_tmp1);
2166                 UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2167             }
2168             else
2169             {
2170                 UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_SET_AUDIOPARAM2));
2171                 UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_SET_AUDIOPARAM2, UADP_SDT_AT, Param, spt_MS_NULL);
2172                 UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2173             }
2174 
2175             u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2176             break;
2177 
2178         case MApi_CMD_AUDIO_GetAudioInfo2:
2179 			pGetAudioInfo2Src = (PAUDIO_ST_GETAUDIOINFO2)pArgs;
2180             pGetAudioInfo2Des = (PAUDIO_ST_GETAUDIOINFO2)buffer_arg;
2181             CPY_FROM_USER((void *)&pGetAudioInfo2Des->infoType, (void *)&pGetAudioInfo2Src->infoType, sizeof(MS_U32));
2182 
2183 			if (pGetAudioInfo2Des->infoType == Audio_infoType_esBuf_req) {
2184 				UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(Audio_MM_Data_Request));
2185 				UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2186 			}
2187 			else if (pGetAudioInfo2Des->infoType == Audio_infoType_UNI_PCM1_Info)
2188 			{
2189                 UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(Audio_MM_PCM_Info));
2190                 UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2191             }
2192             else if (pGetAudioInfo2Des->infoType == Audio_infoType_hashkey)
2193             {
2194                 UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(Audio_Hashkey_Info));
2195                 UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2196             }
2197             else
2198             {
2199                 UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(MS_U32));
2200             	UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2201             }
2202 
2203 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GETAUDIOINFO2));
2204 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_GETAUDIOINFO2, UADP_SDT_P2N, pInfo, spt_AUDIO_tmp1);
2205 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2206 
2207 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2208             break;
2209 
2210         case MApi_CMD_AUDIO_GetDDRInfo:
2211             //MS_U32 MApi_AUDIO_GetDDRInfo(AUDIO_DEC_ID DecId, EN_AUDIO_DDRINFO DDRInfo)
2212             //u32Param[0] = return u32param[1] = DecId; u32param[2] = DDRInfo;
2213 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GET_DDRINFO));
2214 			UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2215 
2216 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2217             break;
2218 
2219         case MApi_CMD_AUDIO_GetCaps:
2220 			UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_GETCAPS));
2221 			UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_GETCAPS, UADP_SDT_P2N, pu32Caps, spt_MS_U32);
2222 			UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2223 
2224 			u32Ret = UADPBypassIoctl(pInstanceTmp,u32Cmd,pArgs,spt_AUDIO_tmp,spt_AUDIO_tmp,NULL,0);
2225             break;
2226 
2227         case MApi_CMD_AUDIO_PcmOpen:
2228         {
2229             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AUDIO_PCM_INFO_t));
2230             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2231 
2232             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_OPEN));
2233             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_OPEN, UADP_SDT_P2N, pData, spt_AUDIO_tmp1);
2234             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2235 
2236             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2237             break;
2238         }
2239 
2240         case MApi_CMD_AUDIO_PcmClose:
2241         {
2242             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_CLOSE));
2243             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2244 
2245             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2246             break;
2247         }
2248 
2249         case MApi_CMD_AUDIO_PcmStart:
2250         {
2251             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_START));
2252             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2253 
2254             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2255             break;
2256         }
2257 
2258         case MApi_CMD_AUDIO_PcmStop:
2259         {
2260             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_STOP));
2261             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2262 
2263             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2264             break;
2265         }
2266 
2267         case MApi_CMD_AUDIO_PcmSet:
2268         {
2269             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_SET));
2270             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_SET, UADP_SDT_P2N, pData, spt_MS_U32);
2271             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2272 
2273             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2274             break;
2275         }
2276 
2277         case MApi_CMD_AUDIO_PcmGet:
2278         {
2279             pPcmGetSrc = (PAUDIO_ST_PCM_GET)pArgs;
2280             pPcmGetDes = (PAUDIO_ST_PCM_GET)buffer_arg;
2281             CPY_FROM_USER((void*)buffer_arg, pArgs, sizeof(PAUDIO_ST_PCM_GET));
2282 
2283             if (pPcmGetDes->u32Cmd == AUDIO_PCM_CMD_ALL)
2284             {
2285                 UADP_SDT_BGN(&spt_AUDIO_tmp1[0], sizeof(AUDIO_PCM_INFO_t));
2286                 UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2287 
2288                 UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_GET));
2289                 UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_GET, UADP_SDT_P2N, pData, spt_AUDIO_tmp1);
2290                 UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2291             }
2292             else
2293             {
2294                 UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_GET));
2295                 UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_GET, UADP_SDT_P2N, pData, spt_MS_U32);
2296                 UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2297             }
2298 
2299             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2300             break;
2301         }
2302 
2303         case MApi_CMD_AUDIO_PcmRead:
2304         {
2305             pPcmReadSrc = (PAUDIO_ST_PCM_READ)pArgs;
2306             pPcmReadDes = (PAUDIO_ST_PCM_READ)buffer_arg;
2307             CPY_FROM_USER((void *)&pPcmReadDes->u32Size, (void *)&pPcmReadSrc->u32Size, sizeof(MS_U32));
2308 
2309             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], pPcmReadDes->u32Size);
2310             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2311 
2312             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_READ));
2313             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_READ, UADP_SDT_P2N, pBuf, spt_AUDIO_tmp1);
2314             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2315 
2316             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2317             break;
2318         }
2319 
2320         case MApi_CMD_AUDIO_PcmWrite:
2321         {
2322             pPcmWriteSrc = (PAUDIO_ST_PCM_WRITE)pArgs;
2323             pPcmWriteDes = (PAUDIO_ST_PCM_WRITE)buffer_arg;
2324             CPY_FROM_USER((void *)&pPcmWriteDes->u32Size, (void *)&pPcmWriteSrc->u32Size, sizeof(MS_U32));
2325 
2326             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], pPcmWriteDes->u32Size);
2327             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2328 
2329             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_WRITE));
2330             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_PCM_WRITE, UADP_SDT_P2N, pBuf, spt_AUDIO_tmp1);
2331             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2332 
2333             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2334             break;
2335         }
2336 
2337         case MApi_CMD_AUDIO_PcmFlush:
2338         {
2339             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_PCM_FLUSH));
2340             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2341 
2342             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2343             break;
2344         }
2345 
2346         case MApi_CMD_AUDIO_EncoderOpen:
2347         {
2348             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], AUDIO_STRNAME_LENGTH);
2349             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2350 
2351             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_OPEN));
2352             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ENCODER_OPEN, UADP_SDT_P2N, pName, spt_AUDIO_tmp1);
2353             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2354 
2355             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2356             break;
2357         }
2358 
2359         case MApi_CMD_AUDIO_EncoderClose:
2360         {
2361             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_CLOSE));
2362             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2363 
2364             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2365             break;
2366         }
2367 
2368         case MApi_CMD_AUDIO_EncoderStart:
2369         {
2370             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_START));
2371             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2372 
2373             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2374             break;
2375         }
2376 
2377         case MApi_CMD_AUDIO_EncoderStop:
2378         {
2379             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_STOP));
2380             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2381 
2382             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2383             break;
2384         }
2385 
2386         case MApi_CMD_AUDIO_EncoderIoctl:
2387         {
2388             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], AUDIO_STRCMD_LENGTH);
2389             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2390 
2391             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_IOCTL));
2392             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ENCODER_IOCTL, UADP_SDT_P2N, pCmd, spt_AUDIO_tmp1);
2393             UADP_SDT_KIND(&spt_AUDIO_tmp[2], AUDIO_ST_ENCODER_IOCTL, UADP_SDT_P2N, pData, spt_MS_U32);
2394             UADP_SDT_FIN(&spt_AUDIO_tmp[3]);
2395 
2396             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2397             break;
2398         }
2399 
2400         case MApi_CMD_AUDIO_EncoderRead:
2401         {
2402             pEncoderReadSrc = (PAUDIO_ST_ENCODER_READ)pArgs;
2403             pEncoderReadDes = (PAUDIO_ST_ENCODER_READ)buffer_arg;
2404             CPY_FROM_USER((void *)&pEncoderReadDes->u32Size, (void *)&pEncoderReadSrc->u32Size, sizeof(MS_U32));
2405 
2406             UADP_SDT_BGN(&spt_AUDIO_tmp1[0], pEncoderReadDes->u32Size);
2407             UADP_SDT_FIN(&spt_AUDIO_tmp1[1]);
2408 
2409             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_READ));
2410             UADP_SDT_KIND(&spt_AUDIO_tmp[1], AUDIO_ST_ENCODER_READ, UADP_SDT_P2N, pBuf, spt_AUDIO_tmp1);
2411             UADP_SDT_FIN(&spt_AUDIO_tmp[2]);
2412 
2413             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2414             break;
2415         }
2416 
2417         case MApi_CMD_AUDIO_EncoderFlush:
2418         {
2419             UADP_SDT_BGN(&spt_AUDIO_tmp[0], sizeof(AUDIO_ST_ENCODER_FLUSH));
2420             UADP_SDT_FIN(&spt_AUDIO_tmp[1]);
2421 
2422             u32Ret = UADPBypassIoctl(pInstanceTmp, u32Cmd, pArgs, spt_AUDIO_tmp, spt_AUDIO_tmp, NULL, 0);
2423             break;
2424         }
2425 
2426         default:
2427             AUDIO_ADP_MSG("AUDIOADP - Unknown commend!!!\n");
2428             break;
2429     }
2430 
2431 
2432 	return u32Ret;
2433 
2434    // return UtopiaIoctl(pModuleDDI->pInstant,u32Cmd,arg);
2435 }
2436 
2437 #endif
2438