[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/audio/src/v1/inc/afe.h b/mcu/driver/audio/src/v1/inc/afe.h
new file mode 100644
index 0000000..4d5ecaf
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/afe.h
@@ -0,0 +1,426 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *	afe.c
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Audio Front End
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision:   1.21  $
+ * $Modtime:   Jul 08 2005 16:31:52  $
+ * $Log:   //mtkvs01/vmdata/Maui_sw/archives/mcu/l1audio/afe.h-arc  $
+ *
+ * 12 19 2017 thomas.chen
+ * [MOLY00296986] [Build warning removal]fix warning
+ * .
+ *
+ * 11 09 2017 thomas.chen
+ * [MOLY00288616] Remove DisableInterrupt API
+ * .
+ *
+ * 09 27 2017 thomas.chen
+ * [MOLY00279366] Fix 9295M build error
+ * .
+ *
+ * 08 25 2017 ting-ni.chen
+ * [MOLY00273782] [Sylvia] [MT6771] bringup chip define
+ * [Sylvia][MT6771] bringup chip define
+ *
+ * 06 09 2017 sungshen.wu
+ * [MOLY00245550] [Zion] Bringup Check in
+ * .Zion check in
+ *
+ * 05 14 2017 ys.hsieh
+ * [MOLY00249046] [MT6763]add speech hw dvt audio command patch
+ * 	
+ * 	Bianco DVT for audiocommand
+ *
+ * 03 01 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * clean marked code. 
+ * refator the gain control (BT)
+ * fix bug: the debug info size should be 16.
+ * common parameter default value location change
+ *
+ * 02 24 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * remove backup and restore function in AFE.
+ *
+ * 02 24 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * rewrite digital gain control.
+ *
+ * 02 13 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * remove afe setrefresh and related code.
+ * remove mute speaker which is only using in audio path
+ *
+ * 02 13 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * remove unused toneLoopback
+ *
+ * 02 08 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * remove unused media functions.
+ *
+ * 01 26 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * revise afe driver.
+ *
+ * 01 26 2017 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * revise afe driver.
+ *
+ * 11 09 2016 thomas.chen
+ * [MOLY00212357] 93 SpeechDriver Checkin
+ * .
+ *
+ * 03 30 2016 thomas.chen
+ * [MOLY00171812] fix UMOLYA BuildError
+ * .
+ *
+ * 02 04 2016 fu-shing.ju
+ * [MOLY00120200] 6291Plus development
+ * Fix MSBB issue.
+ *
+ * 10 07 2015 fu-shing.ju
+ * [MOLY00120200] 6291Plus development
+ * Add Data_Sync_Barrier() for 6292.
+ *
+ * 08 17 2015 fu-shing.ju
+ * [MOLY00120200] 6291Plus development
+ * Add ELBRUS chip option.
+ *
+ * 06 11 2015 thomas.chen
+ * [MOLY00120543] Jade PreBuild
+ * .
+ *
+ * 02 03 2015 fu-shing.ju
+ * [MOLY00091627] TK6291 development
+ * Sync Audio driver with MOLY TRUNK W15.05.P1.
+ *
+ * 04 07 2014 sheila.chen
+ * [MOLY00061869] [UMoly] check-in
+ * add TK6291 chip
+ *
+ * 01 28 2014 sheila.chen
+ * [MOLY00050441] [MT6595 Bring-Up] speech related code
+ * DVT test cases check in
+ *
+ * 01 15 2014 sheila.chen
+ * [MOLY00050441] [MT6595 Bring-Up] speech related code
+ * [ROME] add DVT setting
+ *
+ * 01 07 2014 sheila.chen
+ * [MOLY00050441] [MT6595 Bring-Up] speech related code
+ * Merging	//MOLY/Development_BRANCHES/MT6595E1_BRING_UP_DEV/mcu/driver/audio/...
+ * to //MOLY/TRUNK/MOLY/mcu/driver/audio/...
+ *
+ * 12 26 2013 sheila.chen
+ * [MOLY00050441] [MT6595 Bring-Up] speech related code
+ * Fix bug, MDAFE hw register is 32 bit instead of 16 bit
+ *
+ * 12 10 2013 lanus.chao
+ * [MOLY00046252] Add  MT6595 chip option
+ * .
+ *
+ * 12 09 2013 lanus.chao
+ * [MOLY00046252] Add  MT6595 chip option
+ * .
+ *
+ * 08 21 2013 sheila.chen
+ * [MOLY00031287] [MT6592][MT6571] Chip back prepare
+ * add MT6592/MT6571 chip options
+ *
+ * 08 16 2013 sheila.chen
+ * [MOLY00011218] [MT6290] Code modification
+ * remove unused code
+ *
+ * 08 13 2013 sheila.chen
+ * [MOLY00011218] [MT6290] Code modification
+ * move register backup by chip
+ *
+ * 08 05 2013 sheila.chen
+ * [MOLY00011218] [MT6290] Code modification
+ * remove unused afe code
+ *
+ * 05 14 2013 sheila.chen
+ * [MOLY00022118] [Volunteer Patch] DRC2.0 (MagiLoudness) Integration
+ * DRC 2.0 modification
+ *
+ * 03 01 2013 sheila.chen
+ * [MOLY00011218] [MT6290] Code modification
+ * Fix Build error for MT6290
+ *
+ * 01 16 2013 sheila.chen
+ * [MOLY00008869] [Need Patch][Build Error] WR8 build error for MT6582_L1S(DEFAULT)
+ * Fix Build Error
+ *
+ * 01 07 2013 sheila.chen
+ * [MOLY00008234] [MT6572] Integration
+ * MT6572 bring up
+ *
+ * 12 25 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * wbBT
+ *
+ * 12 18 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Set Mode Modification
+ *
+ * 11 01 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * 1. Sidetone update
+ * 
+ * 2. digital gain setting (AGC, DL volume)
+ * 
+ * 3. FIX AFE setting to privent too many noise
+ * 
+ * 4. Fix PCM MSB, LSB mapping mismatch
+ * 5. Turn on enhancement
+ * 6. Add Acroustic loopback code
+ * 
+ * 09 26 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Chip Rename to MT6589
+ * Remove unused AFE functions
+ * Phase in phone call usage
+ * 
+ * 09 20 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * add compile option for analog AFE
+ * 
+ * 09 17 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * 83 phone call prepare, warning removal
+ * 
+ * 08 21 2012 dior.lin
+ * [MOLY00002430] Modify for MD2G wakeup by Audio
+ * Modify for MD2G wakeup by Audio.
+ * 
+ * 08 17 2012 kh.hung
+ * [MOLY00002243] Fix cross category header inclusion
+ * Remove l1d_reg.h.
+ * 
+ * 07 27 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Fix build warning.
+ * 
+ * 07 25 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Phase in PCMNWAY, param AM manager with 2 parameter, and recording.
+ *
+ * 06 08 2012 kh.hung
+ * removed!
+ * .
+ *
+ * 05 16 2012 jy.huang
+ * removed!
+ * .
+ *
+ * 05 16 2012 jy.huang
+ * removed!
+ * .
+ *
+ * 05 14 2012 jy.huang
+ * removed!
+ * .
+ *
+ * 11 29 2011 lanus.chao
+ * removed!
+ * .
+ *
+ *
+ *******************************************************************************/
+#ifndef AFE_H
+#define AFE_H
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter:  INCLUDE FILES
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+#include "reg_base.h"
+#include "kal_trace.h"
+#include "l1audio_trace_utmd.h"
+#include "l1sp_trc.h"
+#include "audcoeff_default.h"
+#include "afe_def.h"
+#include "dcl.h"
+#include "us_timer.h"
+#include "speech_def.h"
+
+
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter: Data Types and Structures
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if (defined(MT6295M) || defined(__MD95__))
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#else 
+/* under construction !*/
+#endif 
+/* under construction !*/
+#endif
+
+//=============================================================================================
+//                  Section: Structure AFE_STRUCT_T (afe main structure)
+//=============================================================================================
+typedef struct {
+
+   // kal_uint16     aud_id;
+	
+   kal_bool       loopback; 
+   kal_bool       afe_init;
+   kal_uint8      voice8kMode;
+   
+
+   //for 65nm clock gating, digital AFE register backup
+   // RegBackup      regbak;
+
+   
+} AFE_STRUCT_T;
+
+typedef struct {
+   
+   kal_uint32 afe_conn0;
+
+} AFE_RG_STRUCT_T;
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter: Special Configurations for Specific Usage
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+//=============================================================================================
+//                   Section: Debug and Unit Test Configuration
+//=============================================================================================
+//#define __AFE_DEBUG__
+#ifdef __AFE_DEBUG__
+   #define afe_prompt_trace  kal_prompt_trace
+
+static kal_char * _aszAfeState[] =
+{
+   "AFE_STATE_OFF",
+   "AFE_STATE_ON",
+   "AFE_STATE_IDLE_OFF",
+   "AFE_STATE_CLASS_D_OFF"
+};
+
+#else
+   #define afe_prompt_trace(...) 
+#endif
+
+
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter: DEFINITION OF DATA TYPES
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+
+//=============================================================================================
+//                  Section: External Variables and Functions
+//=============================================================================================
+extern AFE_STRUCT_T afe;
+extern AFE_RG_STRUCT_T afeRG;
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter: Function Prototypes
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+void AFE_Init( void );
+
+
+void AFE_DELAY(uint16 delay);
+
+
+void AFE_Chip_Init( void );
+
+
+void AFE_TurnOnLoopback( void );
+void AFE_TurnOffLoopback( void );
+
+kal_uint8 AFE_GetVoice8KMode(void);
+void AFE_SetVoice8KMode(kal_uint8 mode);
+void AFE_SetConn0(kal_uint32 val);
+#endif //AFE_H
diff --git a/mcu/driver/audio/src/v1/inc/afe_def.h b/mcu/driver/audio/src/v1/inc/afe_def.h
new file mode 100644
index 0000000..5d9b333
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/afe_def.h
@@ -0,0 +1,262 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2011
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * afe_def.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ *  This file defines all the AFE registers used in audio module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __AFE_DEF_H
+#define __AFE_DEF_H
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter:  INCLUDE FILES
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+#include "kal_public_api.h"
+#include "reg_base.h"
+#include "l1audio.h"
+
+#include "am.h"
+
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                       Chapter:  Register Definitions
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+#define AFE_base (AFE_BASE)
+
+//=============================================================================================
+//                  Sections: Register Audio Front End Hardware Control Register
+//=============================================================================================
+#define  AFE_VMCU_CON   ((APBADDR)(AFE_base+0x0000))        /* AFE Voice MCU Control Register               */
+#define  AFE_VMCU_CON1  ((APBADDR)(AFE_base+0x000C))        /* AFE Voice Analog Circuit Control Register 1   */
+
+#define  AFE_PCM_CON0    ((APBADDR32)(AFE_base+0x0014))        /* AFE PCM Interface Control Register 0     */
+
+#define  AFE_AMCU_CON0  ((APBADDR)(AFE_base+0x0020))        /* AFE Audio MCU Control Register 0          */
+#define  AFE_AMCU_CON1  ((APBADDR)(AFE_base+0x0024))        /* AFE Audio Control Register 1                  */
+
+#define  AFE_IRQ_CON1    ((APBADDR32)(AFE_base+0x0034))       /* IRQ mode setting                 */
+
+#define  AFE_MCU_CON0    ((APBADDR32)(AFE_base+0x0080))       /* MD AFE control Register 0                 */
+#define  AFE_MCU_CON1    ((APBADDR32)(AFE_base+0x0084))       /* MD AFE control Register 1                 */
+#define  AFE_CONN0       ((APBADDR32)(AFE_base+0x00A0))       /* MD AFE connection control Register 1                 */
+
+
+#define  USIP_CLK_ENABLE   ((APBADDR)(SPEECHDSP_CONFIG_BASE+0x0000))      /* Power Down Disable 2 Register        */
+#define  USIP_CLK_DISABLE   ((APBADDR)(SPEECHDSP_CONFIG_BASE+0x0004))      /* Power Down Enable  2 Register        */
+                                        
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        Chapter: Function Prototypes
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+void AFE_TurnOn8K(void);
+void AFE_TurnOff8K(void);
+
+// void AFE_RegisterBackup(void);
+#endif //__AFE_DEF_H
+
diff --git a/mcu/driver/audio/src/v1/inc/am.h b/mcu/driver/audio/src/v1/inc/am.h
new file mode 100644
index 0000000..44f9a50
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/am.h
@@ -0,0 +1,341 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *	afe.c
+ *
+ * Project:
+ * --------
+ *   MT6208
+ *
+ * Description:
+ * ------------
+ *   Audio Manager
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *******************************************************************************/
+#ifndef AM_H
+#define AM_H
+
+#include "l1aud_common_def.h"
+#include "sal_def.h"
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+typedef enum{
+   AM_RECORD_NONE = 0, 
+   AM_RECORD_8K,
+   AM_RECORD_16K
+}AM_RECORD_FORMAT; 
+
+void     AM_Init( void );
+void     AM_SetDSP2GReset(bool v);
+//bool     AM_AudioManager( bool handover,uint16 speech_mode, int8 sub_channel );
+//void     AM_AudioManager_OS_Tick( void );
+void     AM_FlushQFunction( void );
+void     AM_FillSilencePattern( volatile uint16 *addr, uint16 info, uint16 speech_mode );
+void     AM_FillSilencePatternInBuffer( uint16 *buffer, uint16 speech_mode );
+uint16   AM_GetSpeechPatternLength( uint8 speech_mode );
+bool     AM_CodecMode_IsLegal(uint8 codec_mode);
+void     AM_SpeechOn(uint32 rat_mode, uint32 extraInfo);
+void     AM_SpeechOff( uint32 info );
+bool     AM_IsSpeechOn( void );
+void     AM_SetDAIMode ( uint8 mode );
+bool     AM_IsDAIMode( void );
+#if defined(_SPE_ENH_MD_PARSE_)
+void     AM_WriteFirCoeffs( const int16 *in_coeff, const int16 *out_coeff );
+void AM_WriteWbFirCoeffs( const int16 wb_in_coeff[90], const int16 wb_out_coeff[90] );
+void AM_WriteSWbFirCoeffs( const int16 swb_in_coeff[90], const int16 swb_out_coeff[90] );
+void AM_WriteWbIirCoeffs( const int16 wb_in_coeff[42], const int16 wb_out_coeff[42],const int16 wb_Mic1_coeff[20],const int16 wb_Mic2_coeff[20] );
+void AM_WriteIirCoeffs( const int16 in_coeff[42], const int16 out_coeff[42],const int16 Mic1_coeff[20],const int16 Mic2_coeff[20] );
+void AM_WriteSWbIirCoeffs( const int16 swb_in_coeff[42], const int16 swb_out_coeff[42],const int16 swb_Mic1_coeff[20],const int16 swb_Mic2_coeff[20] );
+#endif
+void     AM_VMRecordOn( void );
+void     AM_VMRecordOff( void );
+
+void     AM_KeyToneOn( void );
+void     AM_KeyToneOff( void );
+void     AM_ToneOn( void );
+void     AM_ToneOff( void );
+void  Set_Reset_Enh_Status(uint8 status);
+uint8 Get_Reset_Enh_Status(void);
+
+
+
+#if 0 
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif 
+#if 0 
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+uint32   AM_GetRecordFormat(void);
+typedef enum{
+   AM_PCM8KREC_APP_TYPE_PCMREC = 0,
+   AM_PCM8KREC_APP_TYPE_VMEPL,
+}AM_PCM8KREC_APP_TYPE; 
+
+void     AM_PCM8K_RecordOn( AM_PCM8KREC_APP_TYPE appType, uint8 dlPos );
+void     AM_PCM8K_RecordOff( bool wait, AM_PCM8KREC_APP_TYPE appType );
+void     AM_PCM16K_RecordOn( uint8 dlPos );         /*PCM16K recording support 6219 and latter version*/
+void     AM_PCM16K_RecordOff( bool wait );
+void     AM_RAMP_DONE(void);
+#if 0 
+/* under construction !*/
+/* under construction !*/
+#endif 
+// bool     AM_IsULSpeechMuted( void );
+void     AM_Mute_UL_EnhResult_Speech(bool mute);
+void     AM_Mute_UL_Source_Speech(bool mute);
+void     AM_Mute_UL_Codec_Speech( bool mute );
+void     AM_Mute_UL_POS_EN_Speech( bool mute );
+void     AM_Mute_DL_8K_Speech( bool mute );
+void     AM_Mute_DL_Speech_Traffic( bool mute );
+void     AM_Mute_DL_PRE_PcmMixer( bool mute );
+
+// PCMNWAY function inside AM 
+typedef enum {
+	AM_PCMEX_TYPE_DEDICATION = 0, // under call
+//	AM_PCMEX_TYPE_IDLE_WO_ENH, // without call, voice path, no enhancement
+	AM_PCMEX_TYPE_IDLE, // without call, speech quality like, with enhancement
+#if 0	
+/* under construction !*/
+/* under construction !*/
+#endif	
+	AM_PCMEX_TYPE_DACA_DEDICATION,  // data card under call (speech on)
+	AM_PCMEX_TYPE_DACA_IDLE_WO_ENH, // data card without call, voice path, no enhancement 
+	AM_PCMEX_TYPE_DACA_IDLE, // data card without call, speech quality like, with enhancement
+
+	AM_PCMEX_TYPE_UNDEF = 0xffff,
+} AM_PCMEX_TYPE;
+
+void     AM_PCM_EX_On( AM_PCMEX_TYPE type, uint32 cfg_ptr);
+void     AM_PCM_EX_Off( AM_PCMEX_TYPE type, uint32 cfg_ptr);
+bool     AM_IsVoIPOn( void );
+bool     AM_IsConflictState( void );
+bool     AM_IsKeyToneOn( void );
+bool     AM_IsToneOn( void );
+bool     AM_IsVoiceOn( void );
+
+// PCM router control function
+void AM_PcmRouter_On(uint32 extraInfo);
+void AM_PcmRouter_Off(void);
+
+// [Phase out] PCM path control functions, defualt is 16k PCM, so we don't need to open it. 
+// void     AM_PCM_Mode_Off(void);
+// void     AM_PCM_Mode_On(kal_uint16 data);
+// kal_bool AM_IsPcmModeOn( void );
+
+// Bluetooth earphone control functions
+void     AM_BluetoothOn( uint8 bt_mode);
+void     AM_BluetoothOff( void );
+bool     AM_IsBluetoothOn( void );
+bool     AM_IsBTCordlessMode( void );
+
+// Sound effect control functions
+void     AM_SND_PlaybackOn( void );
+void     AM_SND_PlaybackOff( bool wait );
+
+// Functions for modem loopback test 
+void     AM_SetLoopBackTest( bool enable );
+bool     AM_IsLoopBackTest( void );
+
+// void     AM_EnableToneLoopBackFlag( kal_bool param );
+
+// network information
+void     AM_SetSpeechMode( uint16 speech_mode, int8 sub_channel );
+uint16   AM_GetSpeechMode(void);
+bool     AM_IsSpeechWB( void );
+uint32   AM_GetNetworkRate( void );
+
+// InterRAT
+void     AM_InterRAT_3G_to_2G( void );
+void     AM_InterRAT_4G_to_2G();
+void     AM_InterRAT_C2K_to_2G();
+void     AM_InterRAT_Standby_to_2G();
+
+void     AM_InterRAT_2G_to_3G( kal_uint32 codec );
+void     AM_InterRAT_4G_to_3G(uint32 codec);
+void     AM_InterRAT_C2K_to_3G(uint32 codec);
+void     AM_3G_INTRARAT(kal_uint32 codec);
+
+void     AM_InterRAT_2G_to_4G(uint32 codec);
+void     AM_InterRAT_3G_to_4G(uint32 codec);
+void     AM_InterRAT_C2K_to_4G(uint32 codec);
+void     AM_4G_INTRARAT(kal_uint32 codec, uint32 is_4G_handover);
+kal_bool AM_Is_4G();
+
+
+void     AM_InterRAT_2G_to_C2K(uint32 codec);
+void     AM_InterRAT_3G_to_C2K(uint32 codec);
+void     AM_InterRAT_4G_to_C2K(uint32 codec);
+void     AM_C2K_IntraRAT(uint32 codec);
+//block filter run time switch function, used in sp_enhance.c
+// void     AM_SwitchCompFilter( kal_uint16 par );
+//block filter turn on/off
+// void     AM_TurnOnBlockFilter( void );
+// void     AM_TurnOffBlockFilter( void );
+
+bool     AM_IsAmInSpeechState( void );
+
+
+bool     AM_IsDataCardOn( void );
+
+// sw digital gain related
+// void AM_DSP_SetAudioDigitalGain(kal_uint16 digitalVol);
+// kal_uint16 AM_DSP_GetAudioDigitalGain(void);
+void AM_DSP_SetSpeechDigitalGain(kal_uint16 digitalVol);
+kal_uint16 AM_DSP_GetSpeechDigitalGain(void);
+void AM_DSP_SetSpeechUplinkSwAgcGain(kal_uint16 digitalVol);
+kal_uint16 AM_GetSpeechEnhRefDigitalGain(void);
+void AM_DSP_SetSpeechEnhRefDigitalGain(kal_uint16 digitalVol);
+
+// dsp filter/enhancement parameter/coefficient related
+void AM_SetNotchFilterParam(int16 *param);
+void AM_DSP_WriteNotchFilterParam(void);
+
+int16 AM_IsAudioPlaybackOn( void );
+void   AM_SetBlockMED( uint32 RAT, bool b, uint32 pos );
+void AM_Set2GCodecInfo(uint16 speech_mode, int8 sub_channel);
+#endif
+
+
diff --git a/mcu/driver/audio/src/v1/inc/amr_table.h b/mcu/driver/audio/src/v1/inc/amr_table.h
new file mode 100644
index 0000000..4469b50
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/amr_table.h
@@ -0,0 +1,102 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   amr_table.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Various tables for AMR and AMR-WB speech codec.
+ *
+ * Author:
+ * -------
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __AMR_TABLE_H
+#define __AMR_TABLE_H
+
+extern const kal_uint8* tblAMROrder[8];
+
+/* These tables will be reference by MPEG4 module */
+extern const kal_uint16 lenSpeechBitsAMR[9];
+extern const kal_uint16 lenSpeechBitsAMR_WB[10];
+
+/* input: Frame Type defined in AMR frame structure */
+/* output: Speech Codec Mode defined in SHERIF */
+extern const kal_uint8 FTtoSCM_AMR[8];
+extern const kal_uint16 AMR_get_tab[16];      /* bits order of SHERIF */
+extern const kal_uint16 AMR_ord_tab[16];      /* bits order of AMR file */
+extern const kal_uint8 AMR_frame_length[9];
+
+extern const kal_uint16* tblAMR_WBOrder[9];
+extern const kal_uint8 FTtoSCM_AMR_WB[9];
+extern const kal_uint8 AWB_frame_length[10];
+
+#endif
+
+
diff --git a/mcu/driver/audio/src/v1/inc/apAudSysConfig.h b/mcu/driver/audio/src/v1/inc/apAudSysConfig.h
new file mode 100644
index 0000000..a001961
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/apAudSysConfig.h
@@ -0,0 +1,9 @@
+
+#ifndef _AP_AUD_SYS_CONFIG_H
+#define _AP_AUD_SYS_CONFIG_H
+
+
+void ApAudSys_config(void);
+
+#endif //_AP_AUD_SYS_CONFIG_H
+
diff --git a/mcu/driver/audio/src/v1/inc/audio_def.h b/mcu/driver/audio/src/v1/inc/audio_def.h
new file mode 100644
index 0000000..0da17a3
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/audio_def.h
@@ -0,0 +1,284 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2011
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * audio_def.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ *  This file defines all the audio registers used in audio module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __AUDIO_DEF_H
+#define __AUDIO_DEF_H
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#ifndef RINGBUFFER_T
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif /* RINGBUFFER_T */
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif 
+/* under construction !*/
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#endif //__AUDIO_DEF_H
+
diff --git a/mcu/driver/audio/src/v1/inc/audio_dsp_d2c_def.h b/mcu/driver/audio/src/v1/inc/audio_dsp_d2c_def.h
new file mode 100644
index 0000000..5dd3acc
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/audio_dsp_d2c_def.h
@@ -0,0 +1,310 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2011
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * audio_dsp_d2c_def.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ *  This file defines all the D2M used in audio module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __AUD_DSP_D2C_DEF__
+#define __AUD_DSP_D2C_DEF__
+
+#include "sal_def.h"
+
+
+
+
+    #define IO4567_D2C_ID_SPEECH_BASE        1          //1~30
+    #define IO4567_D2C_ID_AUDIO_BASE        31          //31~60
+    #define IO4567_D2C_ID_OTHER_BASE        61          //61~63
+    
+    //Speech
+    #define DP_D2C_SPEECH_UL_ID         (IO4567_D2C_ID_SPEECH_BASE+0 )  // mapping to SpeechDSP DP_D2C_SPEECH_UL_ID interrupt which must be consistent with SpeechDSP's setting(D2C_Status_80.h)
+    #define DP_D2C_SPEECH_DL_ID         (IO4567_D2C_ID_SPEECH_BASE+1 )  // mapping to SpeechDSP DP_D2C_SPEECH_DL_ID interrupt which must be consistent with SpeechDSP's setting(D2C_Status_80.h)    
+     
+    /* Speech Driver Mapping which can be changed. It is independent of SpeechDSP's setting(D2C_Status_80.h) */ 
+    #define DP_D2C_INT_MAPPING_BASIC    (IO4567_D2C_ID_SPEECH_BASE+5 )
+	 
+	 #define DP_D2C_PCM_REC_INT          (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_REC_PCM )  // idle or TCH pcm record	 
+	 #define DP_D2C_VM_REC_INT           (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_REC_VM )  // idle or TCH vm record
+	 #define DP_D2C_VMEPL_REC_INT        (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_REC_EPL )  // idle or TCH VM EPL record
+	 
+	 #define DP_D2C_3G_DONE_UL           (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_3G_UL )  // 3G Call UL
+    #define DP_D2C_3G_DONE_DL           (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_3G_DL )  // 3G Call DL
+    
+	 #define DP_D2C_4G_AMR_DONE_UL       (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_4G_UL )  // 4G Call UL AMR
+    #define DP_D2C_4G_AMR_DONE_DL       (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_4G_DL )  // 4G Call DL AMR
+    
+    #define DP_D2C_4G_PCM_DONE_UL       (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_EXTCOD_UL )  // 4G Call UL PCM
+    #define DP_D2C_4G_PCM_DONE_DL       (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_EXTCOD_DL )  // 4G Call DL PCM
+
+    #define DP_D2C_4G_AAMPLUS           (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_4G_AAMPLUS ) // 4G AAM Plus 
+    
+    #define D2C_SOUND_EFFECT_INT_ID_DL  (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_BGS_DL)  // Background Sound, org DL+UL(MT6589, MT6280), new UL (MT6572, MT6582)
+    #define D2C_SOUND_EFFECT_INT_ID_UL  (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_BGS_UL)  // Background Sound, new UL (MT6572, MT6582)
+    #define D2C_AUDIO_VIA_BT_ID         (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_AVBT ) // Audio via BT
+    #define DP_D2C_PCM_EX_DL            (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_PNW_DL ) // PCMNWAY for DL
+    #define DP_D2C_PCM_EX_UL            (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_PNW_UL ) // PCMNWAY for UL
+    #define DP_D2C_DACA_REQ_DL          (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_DACA_DL ) // DATACARD for DL
+    #define DP_D2C_DACA_REQ_UL          (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_DACA_UL ) // DATACARD for UL
+    #define DP_D2C_RAMP_DONE_INT_ID     (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_RAMP_DONE ) // RAMP DONE
+    #define DP_D2C_MIXER2_DL_ID         (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_MIXER2_DL ) // MIXER2 DL
+    #define DP_D2C_VOICE_QUALITY_ID 	(DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_DMF ) //  noice quality notify
+    #define DP_D2C_MIXER3_UL_ID         (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_MIXER3 ) // MIXER3 for telephonyTX
+    
+    #define DP_D2C_4G_AAM               (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_4G_AAM )  // 4G Call UL AMR
+    //C2K
+    #define DP_D2C_C2K_DONE_UL          (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_C2K_UL )    
+    #define DP_D2C_C2K_DONE_DL          (DP_D2C_INT_MAPPING_BASIC+SAL_DSPINT_PRIO_C2K_DL )
+
+	
+    //Audio
+    #define DP_D2C_WT_INT               (IO4567_D2C_ID_AUDIO_BASE+0)  //0x0013  // WT to MCU interrupt
+    #define DP_D2C_PCMROUNT_INT         (IO4567_D2C_ID_AUDIO_BASE+1)  //0xABCD  // PCMRount to MCU interrupt
+    #define DP_D2C_MP3_INT              (IO4567_D2C_ID_AUDIO_BASE+2)  //0x1111  // MP3 to MCU interrupt
+    #define DP_D2C_AAC_CT_INT           (IO4567_D2C_ID_AUDIO_BASE+3)  //0x2222  // AAC, AACPLUS, AACPS, BSAC to MCU interrupt
+    #define DP_D2C_WMA_INT              (IO4567_D2C_ID_AUDIO_BASE+4)  //0x3333  // WMA  to MCU interrupt
+    #define DP_D2C_AWB_PLUS_INT         (IO4567_D2C_ID_AUDIO_BASE+5)  //0xBBBB  // AWB PLUS to MCU interrupt
+    #define DP_D2C_AUDLP_ERR_INT        (IO4567_D2C_ID_AUDIO_BASE+6)  //0xEECC
+    #define DP_D2C_AVSYNC_A2V_INT       (IO4567_D2C_ID_AUDIO_BASE+7)  //0x1234  // AVSync to MCU interrupt
+    #define DP_D2C_SBC_INT              (IO4567_D2C_ID_AUDIO_BASE+8)  //0xA4BC
+    #define DP_D2C_I2S_REC_INT          (IO4567_D2C_ID_AUDIO_BASE+9)	//0x1414
+    #define DP_D2C_COOK_INT             (IO4567_D2C_ID_AUDIO_BASE+10) //0x1313  // COOK, D2C interrupt
+    //Other
+    #define D2C_INT6_MAGIC              (IO4567_D2C_ID_OTHER_BASE+0)  //0xDD66
+    #define D2C_DSP_DEAD_INT_ID         (IO4567_D2C_ID_OTHER_BASE+1)  //0xDD44
+    #define D2C_MPU_ERROR               (IO4567_D2C_ID_OTHER_BASE+2)  //0x002A
+    #define BT_CVSD_HISR_MAGIC_NO       (0x2537)                      //For BT CVSD, used in cvsd driver
+
+
+/* -------------------------------------------------------------------------- */ 
+/* Old DSP to MCU interrupt magic number definition rename                    */
+/* -------------------------------------------------------------------------- */   
+    #define DP_D2C_3G                   DP_D2C_3G_DONE          
+    #define DP_D2C_PCM_P                DP_D2C_WAV_REQ          
+    // #define DP_D2C_PCM_R                DP_D2C_WAV_REC_REQ   // unused
+
+	/* refactoring
+#if defined(MT6280)
+    #define DP_D2C_PCM_EX_UL            DP_D2C_CTM_VOIP_REQ_UL
+    #define DP_D2C_PCM_EX_DL            DP_D2C_CTM_VOIP_REQ_DL
+#else    
+    #define DP_D2C_PCM_EX               DP_D2C_CTM_VOIP_REQ     	
+#endif 
+	*/
+	
+    // #define DP_D2C_PCM_TCH_R            D2C_UL_DL_PCM_REC_INT_ID   // unused
+    #define DP_D2C_WAV_REC              D2C_WAV_REC_REQ_ID      
+    #define DP_D2C_ADAPT_VOL            D2C_RINI_ID             
+                                        
+    #define DP_D2C_WT                   DP_D2C_WT_INT           
+    #define DP_D2C_PCM_RUT              DP_D2C_PCMROUNT_INT     
+    #define DP_D2C_DAF                  DP_D2C_MP3_INT          
+    #define DP_D2C_AAC                  DP_D2C_AAC_CT_INT       
+    #define DP_D2C_WMA                  DP_D2C_WMA_INT          
+    #define DP_D2C_AWBPLUS              DP_D2C_AWB_PLUS_INT     
+    #define DP_D2C_AVSYNC               DP_D2C_AVSYNC_A2V_INT   
+    #define DP_D2C_I2S_REC              DP_D2C_I2S_REC_INT      
+    #define DP_D2C_COOK                 DP_D2C_COOK_INT
+    #define D2C_MAGIC_NO_SBC            DP_D2C_SBC_INT
+    #define D2C_AUDIO_VIA_8KBT_ID       D2C_AUDIO_VIA_BT_ID
+    #define SND_EFFECT_MAGIC_NO         D2C_SOUND_EFFECT_INT_ID
+
+#endif //__AUD_DSP_D2C_DEF__
+
+
diff --git a/mcu/driver/audio/src/v1/inc/audio_em_struct.h b/mcu/driver/audio/src/v1/inc/audio_em_struct.h
new file mode 100644
index 0000000..927b07a
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/audio_em_struct.h
@@ -0,0 +1,231 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2008
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * aud_custom_exp.h
+ *
+ * Project:
+ * --------
+ *   DUMA
+ *
+ * Description:
+ * ------------
+ * This file is the header of audio customization related function or definition.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * $Revision:$
+ * $Modtime:$
+ * $Log:$
+ *
+ * 10 24 2016 sheila.chen
+ * [MOLY00209193] [93MD] speech driver
+ * Remove old historys.
+ *
+ * 02 03 2015 fu-shing.ju
+ * [MOLY00091627] TK6291 development
+ * Sync Audio driver with MOLY TRUNK W15.05.P1.
+ *
+ * 02 12 2014 sheila.chen
+ * [MOLY00050441] [MT6595 Bring-Up] speech related code
+ * 95 ENH Basic
+ *  	
+ * 	Merging
+ *  	
+ * 	//MOLY_CBr/sheila.chen/MOLY_95It/mcu/driver/audio/src/...
+ *  	
+ * 	to //MOLY/TRUNK/MOLY/mcu/driver/audio/src/...
+ *
+ * 05 22 2013 sheila.chen
+ * [MOLY00023100] [Volunteer Patch][[MP Feature Patch Back] [Vibration Speaker] Speech HAL part (make 2-in1, 3-in-1 difference)
+ * 3-in-1 speaker modification. (to indicate 2-in-1 or 3-in-1)
+ *
+ * 05 03 2013 sheila.chen
+ * [MOLY00008234] [MT6572/MT6582] Integration
+ * 3-in-1 speaker interface
+ *
+ * 03 08 2013 sheila.chen
+ * [MOLY00008234] [MT6572/MT6582] Integration
+ * Lenovo's new feature for MT6582 & MT657
+ *
+ * 11 21 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Warming removal 3
+ * 
+ * Fix CTM potential bug
+ * 
+ * 10 15 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * 1. enable background sound
+ * 
+ * 2. change WB em data structure
+ * 
+ * 09 11 2012 sheila.chen
+ * [MOLY00000112] [MT6583] Pre-integration
+ * Sync Mode number
+ *
+ * 07 16 2012 sheila.chen
+ * NULL
+ * phase in 75+80.
+ *
+ * 06 27 2012 sheila.chen
+ * removed!
+ * Phase-in pcm2way
+ *
+ * 06 04 2012 sheila.chen
+ * removed!
+ * .
+ *
+ *
+ * 
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef AUDIO_CUSTOM_EXP_H
+#define AUDIO_CUSTOM_EXP_H
+
+
+#if 0 
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif 
+
+typedef struct _AUDIO_VIBSPK_PARAMETER_STRUCT_
+{
+	short notch_filter_para[15];
+	bool is2In1Spk; // true for 2-in-1 speaker, false for 3-in-1 speaker.
+	
+} AUDIO_VIBSPK_PARAMETER_STRUCT;
+
+typedef struct _AUDIO_NXP_SMARTPA_PARAMETER_STRUCT_
+{
+	bool isNxpFeatureOptOn;
+	short chip_delay_with_switch;
+	short mic_index; // bit wise definition ordered from main mic to reference mic. Only one bit is set!! bit 0: o17, bit 1: o18, bit 2: o23, bit 3: o24, bit 4: o25, 
+	
+} AUDIO_NXP_SMARTPA_PARAMETER_STRUCT;
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/bgSnd.h b/mcu/driver/audio/src/v1/inc/bgSnd.h
new file mode 100644
index 0000000..44ef7e3
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/bgSnd.h
@@ -0,0 +1,54 @@
+
+#ifndef __BGSNG_H__
+#define __BGSNG_H__
+
+#define BGSND_RB_DEFAULT_THRESHOLD    640
+
+/*
+int32 BGSND_GetFreeSpace(void);
+void BGSND_WriteData(kal_uint8 *srcBuf, kal_int32 bufLen);
+
+void BGSND_ConfigULMixer(kal_bool bULSPHFlag, kal_int8 ULSNDGain );
+void BGSND_ConfigDLMixer(kal_bool bDLSPHFlag, kal_int8 DLSNDGain );
+void BGSND_Start(void (*bgSnd_hisrHandler)(void), void (*bgSnd_offHandler)(void), kal_uint8 ULGainLevel , kal_uint8 DLGainLevel);
+void BGSND_Stop(void);
+void BGSND_Close(void);
+void BGSND_INIT(void);
+*/
+
+typedef enum { 
+	BGSND_DL_PROCESS = 0, //you cannot change the value since I use "1-type" to switch either.
+	BGSND_UL_PROCESS = 1, 
+}BGSND_PROCESS_TYPE;
+
+
+typedef enum {
+	EXT_SRC_STATE_IDLE = 0,
+	EXT_SRC_STATE_RUN, 
+	EXT_SRC_STATE_FLUSHING,
+   EXT_SRC_STATE_FLUSHING_OVER,
+	EXT_SRC_STATE_STOPPING,
+}EXT_SRC_STATE_TYPE;
+
+
+int32 EXT_BGSND_GetFreeSpace(uint32 id, BGSND_PROCESS_TYPE type);
+int32 EXT_BGSND_GetDataCount(uint32 id, BGSND_PROCESS_TYPE type);
+void EXT_BGSND_WriteSrcBuffer(uint32 id, kal_uint8 *srcBuf, kal_int32 bufLen, BGSND_PROCESS_TYPE type);
+void EXT_BGSND_WriteExtBuffer(uint32 id, int gain, BGSND_PROCESS_TYPE type);
+
+void EXT_BGSND_ConfigMixer(int id, kal_bool bSPHFlag, kal_int8 SNDGain, BGSND_PROCESS_TYPE type);
+uint32 EXT_BGSND_Start(void (*offHdr)(void),
+                       void (*DLHisr)(void),       //move data from src -> ext
+                       void (*ULHisr)(void),       //move data from src -> ext    
+                       kal_int8 DLSNDGain,
+                       kal_int8 ULSNDGain                       
+                       /*,                       
+                       void (*EventHandler)(void)*/);
+void EXT_BGSND_Flush(uint32 id);
+void EXT_BGSND_Close(uint32 id);                       
+
+uint32 EXT_BGSND_init();
+
+EXT_SRC_STATE_TYPE EXT_BGSND_GetStatus(int id,  BGSND_PROCESS_TYPE enULDL);
+
+#endif //__BGSNG_H__
\ No newline at end of file
diff --git a/mcu/driver/audio/src/v1/inc/bt_sco_drv.h b/mcu/driver/audio/src/v1/inc/bt_sco_drv.h
new file mode 100644
index 0000000..a62039f
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/bt_sco_drv.h
@@ -0,0 +1,374 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *  BT_SCO_drv.h
+ *
+ * Project:
+ * --------
+ *  MOLY
+ *
+ * Description:
+ * ------------
+ *  BT SCO driver header file
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __BT_SCO_DRV_H
+#define __BT_SCO_DRV_H
+
+#include "l1aud_common_def.h"
+#include "reg_base.h"
+
+// PLC Interface
+/*
+extern kal_int32 g711plc_GetMemorySize(void);
+extern void g711plc_construct(void *lc);
+extern void g711plc_addtohistory(void *lc, kal_int16 *s);
+extern void g711plc_dofe(void *lc,kal_int16 *out);
+*/
+
+extern void g711plc_addtohistory_v2(void *lc, short *s, unsigned int dwBtEv3HalfBad);
+extern void g711plc_dofe_v2(void *lc, short *s, unsigned int dwBtEv3HalfBad);
+extern int g711plc_GetMemorySize_v2();
+extern int g711plc_construct_v2(void *lc, unsigned int dwFs);
+
+extern void CVSD_DownSample_Process(void *pHandle, short *pInSample, short *pOutSample, short *pTempBuffer, int iSourceSamples);
+extern int CVSD_DownSample_GetMemory(void);
+extern void *CVSD_DownSample_Init(char *pBuffer);
+extern void CVSD_UpSample_Process(void *pHandle, short *pInSample, short *pOutSample, short *pTempBuffer, int iSourceSamples);
+extern int CVSD_UpSample_GetMemory(void);
+extern void *CVSD_UpSample_Init(char *pBuffer);
+
+void BT_SCO_Loopback_OFF(void);
+void BT_SCO_Loopback_ON(kal_bool fDisableCodec, kal_bool fWideBand);
+kal_bool BT_SCO_IS_SPEECH_ON(void);
+void BT_SCO_SPEECH_OFF(void);
+void BT_SCO_SPEECH_ON(kal_bool fWideBand);
+void BT_SCO_Init(void);
+
+#if defined(__CVSD_CODEC_SUPPORT__) 
+#define __MSBC_CODEC_SUPPORT__ 1
+
+// BT HW Register address
+//#define BTSRAM_base              (0xA8080000) //defined in mcu/driver/sys_drv/regbase/inc/reg_base_mtxxxx.h
+//#define BTPKT_base               (0xA8000000) //defined in mcu/driver/sys_drv/regbase/inc/reg_base_mtxxxx.h
+#if defined(MT6885)
+#define BTSRAM_base                (BASE_MADDR_WCN_AHB_SLAVE + 0x00840000)
+#elif defined(MT6779)
+#define BTSRAM_base                (BASE_MADDR_WCN_AHB_SLAVE + 0x00090000) //defined in mcu/driver/sys_drv/regbase/inc/reg_base_mtxxxx.h
+#else
+#define BTSRAM_base                (BASE_MADDR_WCN_AHB_SLAVE + 0x00080000) //defined in mcu/driver/sys_drv/regbase/inc/reg_base_mtxxxx.h
+#endif
+
+#define BTPKT_base                 (BASE_MADDR_WCN_AHB_SLAVE) //defined in mcu/driver/sys_drv/regbase/inc/reg_base_mtxxxx.h
+
+#if defined(MT6885)
+#define BT_SCO_HW_REG_PACKET_R     ((volatile kal_uint32*)(BTPKT_base+0x830140))
+#define BT_SCO_HW_REG_PACKET_W     ((volatile kal_uint32*)(BTPKT_base+0x830144))
+#define BT_SCO_HW_REG_CONTROL      ((volatile kal_uint32*)(BTPKT_base+0x830148))
+#elif (defined(MT6765) || defined(MT3967) || defined(MT6779) || defined(MT6785) || defined(MERCURY) || defined(MT6873) || defined(MT6853) || defined(MT6833) || defined(MT6877))
+#define BT_SCO_HW_REG_PACKET_R     ((volatile kal_uint32*)(BTPKT_base+0x50140))
+#define BT_SCO_HW_REG_PACKET_W     ((volatile kal_uint32*)(BTPKT_base+0x50144))
+#define BT_SCO_HW_REG_CONTROL      ((volatile kal_uint32*)(BTPKT_base+0x50148))
+#else
+#define BT_SCO_HW_REG_PACKET_R     ((volatile kal_uint32*)(BTPKT_base+0x0FD0))
+#define BT_SCO_HW_REG_PACKET_W     ((volatile kal_uint32*)(BTPKT_base+0x0FD4))
+#define BT_SCO_HW_REG_CONTROL      ((volatile kal_uint32*)(BTPKT_base+0x0FD8))
+#endif
+
+#endif
+#if defined(MT6752) // temp irq id,for MT6752 MD2 
+	#if !defined (__MD1__) 
+	#define IRQ_BT_CVSD_CODE     0 
+	#endif
+#endif
+
+#define MSBC_BTSTREAM_FRAME_BYTE 57
+#define MSBC_PCM_FRAME_BYTE 240 //120 sample
+
+#define BT_SCO_PACKET_120 120
+#define BT_SCO_PACKET_180 180
+
+#define BT_CVSD_TX_NREADY    (1<<21)
+#define BT_CVSD_RX_READY     (1<<22)
+#define BT_CVSD_TX_UNDERFLOW (1<<23)
+#define BT_CVSD_RX_OVERFLOW  (1<<24)
+#define BT_CVSD_Codec_id_1   (1<<25)
+#define BT_CVSD_Codec_id_2   (1<<26)
+#define BT_CVSD_INTERRUPT    (1<<31)
+
+#define BT_CVSD_CLEAR        (BT_CVSD_TX_NREADY | BT_CVSD_RX_READY | BT_CVSD_TX_UNDERFLOW | BT_CVSD_RX_OVERFLOW | BT_CVSD_INTERRUPT)
+#define BT_CVSD_Codec_id        (BT_CVSD_Codec_id_1 | BT_CVSD_Codec_id_2) //00:init 01:cvsd 02:msbc
+
+
+//TX 
+#define SCO_TX_ENCODE_SIZE           (60                             ) // 60 byte (60*8 samples)
+#define SCO_TX_PACKER_BUF_NUM        (8                              ) 
+#define SCO_TX_PACKET_MASK           (0x7                            )
+#define SCO_TX_PCM64K_BUF_SIZE       (SCO_TX_ENCODE_SIZE*2*8         ) // 60 * 2 * 8 byte
+#define SCO_TX_RINGBUFFER_SIZE       (320*9                          ) // = 2880, should by multple of 320 and 360 and 240
+
+//RX
+#define SCO_RX_PLC_SIZE              (30                    ) 
+#define SCO_RX_PACKER_BUF_NUM        (16                    ) 
+#define SCO_RX_PACKET_MASK           (0xF                   )
+#define SCO_RX_PCM64K_BUF_SIZE       (SCO_RX_PLC_SIZE*2*8   ) 
+#define SCO_RX_PCM8K_BUF_SIZE        (SCO_RX_PLC_SIZE*2     ) 
+#define SCO_RX_RINGBUFFER_SIZE       (320*9                 ) // = 2880, should by multple of 320 and 360 and 240
+
+#define SCORX_BT_CVSD_RX_PACKET_BUFFER_LEN (BT_CVSD_BLOCKSIZE * 6) // 360 byte
+
+#define NB_SPEECH_FRAME_SIZE 320 //BYTE
+#define WB_SPEECH_FRAME_SIZE 640 //BYTE
+
+typedef enum {
+  BT_SCO_STATE_IDLE=0,
+  BT_SCO_STATE_RUNNING,
+  BT_SCO_STATE_ENDING
+} BT_SCO_STATE;
+
+typedef enum {
+  BT_SCO_MODE_SPEECH,
+  BT_SCO_MODE_LOOPBACK_WITH_CODEC,
+  BT_SCO_MODE_LOOPBACK_WITHOUT_CODEC
+} BT_SCO_MODE;
+
+typedef enum {
+  BT_SCO_MOD_CVSD_ENCODE,
+  BT_SCO_MOD_CVSD_DECODE,
+  BT_SCO_MOD_PLC_NB,
+  BT_SCO_MOD_CVSD_TX_SRC,
+  BT_SCO_MOD_CVSD_RX_SRC,
+  BT_SCO_MOD_PCM_RINGBUF_TX,
+  BT_SCO_MOD_PCM_RINGBUF_RX,
+  BT_SCO_MOD_MSBC_DECODE,
+  BT_SCO_MOD_MSBC_ENCODE,
+  BT_SCO_MOD_PLC_WB
+} BT_SCO_MODULE;
+
+typedef enum {
+  BT_SCO_DIRECT_BT2ARM,
+  BT_SCO_DIRECT_ARM2BT
+} BT_SCO_DIRECT;
+
+typedef enum {
+  BT_SCO_CVSD_30 =0,
+  BT_SCO_CVSD_60 =1,
+  BT_SCO_CVSD_90 =2,
+  BT_SCO_CVSD_120=3,
+  BT_SCO_CVSD_10 =4,
+  BT_SCO_CVSD_20 =5,
+  BT_SCO_CVSD_MAX=6
+} BT_SCO_PACKET_LEN;
+
+typedef struct {
+   //handle
+   void          *pSRCHandle;
+   void          *pEncHandle;
+   AUD_RB_INFO   RingBuffer;
+
+   //bitstream buffer
+   kal_uint8     PacketBuf[SCO_TX_PACKER_BUF_NUM][SCO_TX_ENCODE_SIZE];
+   kal_uint32    iPacket_w;        
+   kal_uint32    iPacket_r; 
+   kal_uint8     PcmBuf_64k[SCO_TX_PCM64K_BUF_SIZE];
+   kal_uint8     PcmBuf_Temp[SCO_TX_PCM64K_BUF_SIZE]; 
+   kal_uint32    uPcmBuf_w;
+   kal_bool      fUnderflow;
+} BT_SCO_TX;
+
+typedef struct {
+   //handle
+   void          *pDecHandle;
+   void          *pPLCHandle;
+   void          *pSRCHandle;
+
+   //bitstream buffer
+   kal_uint8     PacketBuf[SCO_RX_PACKER_BUF_NUM][SCO_RX_PLC_SIZE];
+   kal_bool      PacketValid[SCO_RX_PACKER_BUF_NUM];
+   kal_uint32    iPacket_w;        
+   kal_uint32    iPacket_r;       
+
+   //temp buffer
+   kal_uint8     PcmBuf_64k[SCO_RX_PCM64K_BUF_SIZE];
+   kal_uint8     PcmBuf_Temp[SCO_RX_PCM64K_BUF_SIZE];
+   kal_uint8     PcmBuf_8k[SCO_RX_PCM8K_BUF_SIZE];
+   kal_uint32    uPcmBuf_r; //for PcmBuf_8k
+   AUD_RB_INFO   RingBuffer;
+   kal_bool      fOverflow;
+
+} BT_SCO_RX;
+
+#endif //__BT_SCO_DRV_H
+
diff --git a/mcu/driver/audio/src/v1/inc/ctm_drv.h b/mcu/driver/audio/src/v1/inc/ctm_drv.h
new file mode 100644
index 0000000..ac3ba42
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/ctm_drv.h
@@ -0,0 +1,203 @@
+/*******************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2001
+*
+*******************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *	   l1ctm.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+ 
+// l1ctm.h
+#ifndef __L1CTM_H
+#define __L1CTM_H
+#include "l1aud_common_def.h"
+
+typedef enum{
+   DIRECT_MODE,
+   FULL_MODE = 1,
+   VCO_MODE = 2,
+   HCO_MODE = 4
+} L1Ctm_Interface; 
+
+typedef enum{
+   CTM_MO_SUCCESS,
+   CTM_MO_FAIL, 
+   CTM_MT_DETECTED, 
+   CTM_CHAR_SENT, 
+   CTM_CHAR_RECEIVED,
+   CTM_TX_BURST_START,
+   CTM_TX_BURST_END   
+} L1Ctm_Event; 
+
+// Msg_Info Debug Message 
+#define OPEN_CTM_REQUEST 1
+#define CLOSE_CTM_REQUEST 2
+#define UL_READ_PCM_FILE_REQUEST 3
+#define DL_READ_PCM_FILE_REQUEST 4
+#define DL_READ_BFI_FILE_REQUEST 5   
+#define UL_IN_WRITE_FILE_REQUEST 6
+#define DL_IN_WRITE_FILE_REQUEST 7
+#define UL_OUT_WRITE_FILE_REQUEST 8
+#define DL_OUT_WRITE_FILE_REQUEST 9   
+#define GENERAL_WRITE_FILE_REQUEST 10
+#define PUT_TEXT_TO_UL_CTM_BUF_REQUEST 11
+#define UL_CTM_BUF_DUMMY_READ_REQUEST 12
+
+#define DSP_REC_RX_BUF0_REQUEST 13
+#define DSP_REC_NB_RESULT0_REQUEST 14
+#define DSP_REC_FN_REQUEST 15
+#define DSP_REC_EQ_SO0_REQUEST 16
+
+#define START_NEGOTIATION_REQUEST 17
+
+#define DONE_WRITE_FILE_REQUEST 18
+
+
+// need to define CTM_Param 
+typedef struct
+{
+    kal_int16   cprm_tone_demod_down_samp;                  // 1 (0, 1)   
+} CTM_Param;
+
+typedef struct{
+	bool isRttOn;
+}RTT_Module;
+
+typedef void (*L1Ctm_Callback)(L1Ctm_Event , void*); 
+typedef void (*L1Ctm_DebugCallback)(uint16 pos, uint16 *buffer, uint16 len, bool isDone);
+
+uint32 L1Ctm_GetMemReq(void);
+void L1Ctm_Open(L1Ctm_Interface a, L1Ctm_Callback handler, uint8 *buf, uint32 buf_len, L1Ctm_DebugCallback debugCallback);
+void L1Ctm_Close(void);
+void L1Ctm_Stop(void);
+uint32 L1Ctm_TxPutText(const uint8 *text, uint32 len, uint32 *left_space);
+uint32 L1Ctm_RxGetText(uint8 *text, uint32 len, uint32 *left_count);
+
+void RTT_UL_LEN_Queue_Init(void);
+void RTT_UL_LEN_Queue_Put(kal_uint16 len);
+kal_uint16 RTT_UL_LEN_Queue_Get(void);
+kal_bool RTT_UL_LEN_Queue_isEmpty(void);
+kal_bool RTT_UL_LEN_Queue_isFull(void);
+kal_uint16 RTT_UL_LEN_Queue_Size(void);
+void RTT_DL_LEN_Queue_Init(void);
+void RTT_DL_LEN_Queue_Put(kal_uint16 len);
+kal_uint16 RTT_DL_LEN_Queue_Get(void);
+kal_bool RTT_DL_LEN_Queue_isEmpty(void);
+kal_bool RTT_DL_LEN_Queue_isFull(void);
+kal_uint16 RTT_DL_LEN_Queue_Size(void);
+
+
+void RTT_UL_ID_Queue_Init(void);
+void RTT_UL_ID_Queue_Put(kal_uint8 id);
+kal_uint8 RTT_UL_ID_Queue_Get(void);
+kal_bool RTT_UL_ID_Queue_isEmpty(void);
+kal_bool RTT_UL_ID_Queue_isFull(void);
+kal_uint16 RTT_UL_ID_Queue_Size(void);
+void RTT_DL_ID_Queue_Init(void);
+void RTT_DL_ID_Queue_Put(kal_uint8 id);
+kal_uint8 RTT_DL_ID_Queue_Get(void);
+kal_bool RTT_DL_ID_Queue_isEmpty(void);
+kal_bool RTT_DL_ID_Queue_isFull(void);
+kal_uint16 RTT_DL_ID_Queue_Size(void);
+
+
+void TTY_LTE_PSR_UL_Queue_Init(void);
+kal_uint8 TTY_LTE_PSR_UL_Get(void);
+void TTY_LTE_PSR_UL_Put(kal_uint8 tty_char);
+kal_bool TTY_LTE_PSR_UL_isEmpty(void);
+kal_bool TTY_LTE_PSR_UL_isFull(void);
+kal_uint16 TTY_LTE_PSR_UL_Queue_Size(void);
+void TTY_LTE_PSR_DL_Queue_Init(void);
+void TTY_LTE_PSR_DL_Put(kal_uint8 tty_char);
+kal_uint8 TTY_LTE_PSR_DL_Get();
+kal_uint16 TTY_LTE_PSR_DL_Queue_Size(void);
+kal_bool TTY_LTE_PSR_DL_isEmpty(void);
+kal_bool TTY_LTE_PSR_DL_isFull(void);
+void TTY_LTE_PSR_DL_PutString(kal_uint8 call_id, kal_uint8 string[256], kal_uint16 length);
+kal_uint16 TTY_LTE_PSR_UL_GetString(kal_uint8 call_id, kal_uint8 *buf, kal_uint16 *length);
+kal_uint16 TTY_LTE_PSR_UL_GetChar(kal_uint8 call_id, kal_uint8 *buf);
+void SP_L4C_SetERTTSTR(kal_uint8 call_id, kal_uint8 string[256], kal_uint16 length);
+void SP_L4C_SendERTTSTR(kal_uint8 call_id);
+
+
+void L1Ctm_RTTOpen();
+void L1Ctm_RTTClose();
+bool getRttStatus();
+#endif 
diff --git a/mcu/driver/audio/src/v1/inc/extcodec.h b/mcu/driver/audio/src/v1/inc/extcodec.h
new file mode 100644
index 0000000..e04eedb
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/extcodec.h
@@ -0,0 +1,141 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * extcodec.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *   EXTCODEC interface 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __EXTCODEC_H
+#define __EXTCODEC_H
+
+void  Extcodec_Set_Delay(kal_uint32 delay);
+void  Extcodec_Call_Open();
+void  Extcodec_Call_Close();
+void  Extcodec_Init();
+void Extcodec_hisr_ul_loopback(void *data);
+void Extcodec_hisr_dl_loopback(void *data);
+#endif 
diff --git a/mcu/driver/audio/src/v1/inc/l1aud_common_def.h b/mcu/driver/audio/src/v1/inc/l1aud_common_def.h
new file mode 100644
index 0000000..6a3dab9
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1aud_common_def.h
@@ -0,0 +1,513 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2011
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * audio_def.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ *  The common definition used in audio module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __L1AUD_COMMON_DEF_H
+#define __L1AUD_COMMON_DEF_H
+
+#include "kal_public_api.h"
+#include "reg_base.h"
+//#define SHAREG2_base                (0xA77A0000)//(L1_BASE_MADDR_SHARE_D1)    //the same as L1_BASE_MADDR_SHARE_D1
+//#define DPRAM_CPU_base              (0xA7400000)//(L1_BASE_MADDR_DM_IDMA)    //FIXIT: the same as L1_BASE_MADDR_DM_IDMA
+//#define IDMA_base                   (0xA7200000)//(L1_BASE_MADDR_CM_IDMA)    //FIXIT: the same as L1_BASE_MADDR_CM_IDMA
+
+//#if defined(__CDMA2000_RAT__)
+#define __C2K_SPEECH_SUPPORT__
+#define _C2K_DTX_SUPPORT_ (0)
+//#else
+//#define C2K_SDRV_DISABLE
+//#endif
+
+//#define __FAKE_C2K_LOOPBACK__
+//#define __FAKE_3G_LOOPBACK__
+
+#ifdef __FAKE_3G_LOOPBACK__
+#ifndef  __CSHSPA_SUPPORT__
+#define __CSHSPA_SUPPORT__
+#endif
+#endif
+
+//#define SHARE_base (AFE_SHARED_REGISTER_BASE)
+
+typedef volatile unsigned short* DPRAMADDR;
+typedef volatile unsigned long*  APBADDR32;                             /* APB addr is 32 bits                           */
+typedef volatile unsigned short* APBADDR;                               /* APB addr is 32 bits                           */
+
+//#define __VOLTE_SUPPORT__
+#define _SMR_SUPPORT_
+//#define __AAM_AUTO_TEST_SUPPORT__
+/*
+#define IDMA_LONG_ADDR           ((APBADDR32)IDMA_LONG)
+#define IDMA_SHORT_ADDR          ((DPRAMADDR)IDMA_SHORT)
+#define DSP_CM_ADDR(page,addr)   ((APBADDR32)(IDMA_CM0+((page)<<16)+((addr)<<2)))
+#define DSP_PM_ADDR(page,addr)   ((DPRAMADDR)(IDMA_PM0+((page)<<16)+((addr)<<1)))
+#define DSP_DM_ADDR(page,addr)   ((DPRAMADDR)(IDMA_DM0+((page)<<16)+((addr)<<1)))*/
+
+#define AUD_1TICK(tick)          (tick * ((KAL_TICKS_10_MSEC) >> 1))       /* New Tick Transfer   1tick       */
+#define AUD_10TICK(tick)         (tick * (KAL_TICKS_50_MSEC))               /* New Tick Transfer  10tick      */
+
+
+/* -------------------------------------------------------------------------- */
+/* Data Type Definition                                                       */
+/* -------------------------------------------------------------------------- */
+#ifndef uint16
+typedef kal_uint16   uint16;
+typedef kal_int16    int16;
+typedef kal_uint32   uint32;
+typedef kal_int32    int32;
+typedef kal_uint8    uint8;
+typedef kal_int8     int8;
+typedef kal_bool     bool;
+#define true         (kal_bool)(1==1)
+#define false        (kal_bool)(1==0)
+#endif
+
+/* -------------------------------------------------------------------------- */
+/* DSP Share Registers                                                        */
+/* -------------------------------------------------------------------------- */
+// #if defined(MT6280) || defined(MT6589)
+
+/* -------------------------------------------------------------------------- */
+/* Internal definition of audio module                                        */
+/* -------------------------------------------------------------------------- */
+
+// no audio close delay, phase it out 
+// #define AUDIO_CLOSE_DELAY 500 //500 ms, unit is 10ms
+
+
+#if 0
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif 
+
+
+//change mcu and dsp share memory to internal memory, always define after MT6256
+// #if defined(MT6280) || defined(MT6589) || defined(MT6572)
+// #define _DSP_INTERSHAREMEM_EN_ // only using in audio, so phase it out
+#define L1AUDIO_IDMA_ALL_ADDRESS_MODE
+// #endif
+
+
+// For <65nm, dsp coefficients need to reload after sleep. This are always happen after 80, so remove the redundant 
+#define __RELOAD_HW_COEFF__  (1)
+
+
+#define _MODEM_RESYNC_2G_
+
+
+#define _2G_DSP_SMR_SUPPORT_
+
+#if defined(__MD93__)
+#define _SPE_ENH_MD_PARSE_
+#else
+#define _SPE_ENH_DSP_PARSE_
+#endif
+
+
+
+#if defined(_2G_DSP_SMR_SUPPORT_)// Notice these , _MODEM_RESYNC_2G_ and _2G_DSP_SMR_SUPPORT_, are exclusive.
+#undef _MODEM_RESYNC_2G_
+#endif
+
+
+#define _MODEM_RESYNC_3G_
+#if defined(_MODEM_RESYNC_3G_) 
+//3G FDD Modem Resync
+extern void      UL1D_Speech_Resync_Reset_Time_Offset();
+extern kal_int16 UL1D_Speech_Resync_Get_Time_Offset();
+extern void      UL1D_Speech_Resync_Update_Time_Offset(kal_bool direction);
+//3G TDD Modem Resync
+extern void      TL1C_Reset_Time_Drift();
+extern kal_int16 TL1C_Get_Time_Drift();
+extern void      TL1C_Update_Time_Drift(kal_bool direction);
+#endif
+/* -------------------------------------------------------------------------- */
+/* Assertion check                                                            */
+/* -------------------------------------------------------------------------- */
+#define ASSERT_REBOOT(st)  EXT_ASSERT(st,0,0,0)
+#define DSP_DATA_CARD_INTERFACE_SUPPORT  (defined(MT6280))
+
+
+/* -------------------------------------------------------------------------- */
+/* Internal Audio Definition                                                  */
+/* -------------------------------------------------------------------------- */
+#define __AUDIO_POWERON_RESET_DSP__
+
+
+#if defined(__HIF_CCCI_SUPPORT__)
+#define __CCCI_OVER_SDIO_SUPPORT__ //currently only MT6290
+#endif
+
+
+
+
+//Reduce VoLTE DL delay. Remove DL HISR.
+#define __REDUCE_VOLTE_DL_DELAY__
+//Modem Logging Feature Option
+#define __MODEM_LOGGING_SUPPORT__
+
+#if defined(__EVS_SUPPORT__)
+#define __EVS_CODEC_SUPPORT__
+#endif //#if defined(__EVS_SUPPORT__)
+
+#define SPH_DEBUGINFO   (12)
+typedef enum {
+  SPH_DEBUGINFO12_BIT0 = 1<<0,   //AWB+Switch
+  SPH_DEBUGINFO12_BIT1 = 1<<1,   //g_bNeedExtraLog
+  SPH_DEBUGINFO12_BIT2 = 1<<2,
+  SPH_DEBUGINFO12_BIT3 = 1<<3,
+  SPH_DEBUGINFO12_BIT4 = 1<<4,
+  SPH_DEBUGINFO12_BIT5 = 1<<5,
+  SPH_DEBUGINFO12_BIT6 = 1<<6,
+  SPH_DEBUGINFO12_BIT7 = 1<<7,
+  SPH_DEBUGINFO12_BIT8 = 1<<8,
+  SPH_DEBUGINFO12_BIT9 = 1<<9,
+  SPH_DEBUGINFO12_BIT10 = 1<<10,
+  SPH_DEBUGINFO12_BIT11 = 1<<11,
+  SPH_DEBUGINFO12_BIT12 = 1<<12,
+  SPH_DEBUGINFO12_BIT13 = 1<<13,
+  SPH_DEBUGINFO12_BIT14 = 1<<14,
+  SPH_DEBUGINFO12_BIT15 = 1<<15,
+}SPH_DEBUGINFO12;
+
+#endif //__COMMON_DEF_H
diff --git a/mcu/driver/audio/src/v1/inc/l1audio_sph_trc.h b/mcu/driver/audio/src/v1/inc/l1audio_sph_trc.h
new file mode 100644
index 0000000..9e804dd
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1audio_sph_trc.h
@@ -0,0 +1,19 @@
+#ifndef _L1AUDIO_SPH_TRC_H
+#define _L1AUDIO_SPH_TRC_H
+
+#if !defined(GEN_FOR_PC)
+#if defined(__TST_MODULE__) || defined(__CUSTOM_RELEASE__)
+#endif /* TST Trace Defintion */
+#endif
+
+#define TRACE_GROUP_VM          TRACE_GROUP_1
+#define TRACE_GROUP_EPL         TRACE_GROUP_2
+#define TRACE_GROUP_REFMIC      TRACE_GROUP_3
+#define TRACE_GROUP_ECHOREF     TRACE_GROUP_4
+#define TRACE_GROUP_THIRDMIC    TRACE_GROUP_5
+#define TRACE_GROUP_2NDECHOREF  TRACE_GROUP_6
+
+#if !defined(GEN_FOR_PC)
+#include"l1audio_sph_trc_mod_l1audio_sph_srv_utmd.h"
+#endif
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/l1audio_sph_trc_mod_l1audio_sph_srv_utmd.json b/mcu/driver/audio/src/v1/inc/l1audio_sph_trc_mod_l1audio_sph_srv_utmd.json
new file mode 100644
index 0000000..c65895e
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1audio_sph_trc_mod_l1audio_sph_srv_utmd.json
@@ -0,0 +1,96 @@
+{
+  "endGen": "-",
+  "legacyParameters": {}, 
+  "module": "MOD_L1AUDIO_SPH_SRV", 
+  "startGen": "Legacy",
+  "traceClassDefs": [
+    {
+      "TRACE_INFO": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "L1AUDIO_SPH_SRV", 
+          "TRACE_INFO"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_WARNING": {
+        "debugLevel": "Low", 
+        "tag": [
+          "L1AUDIO_SPH_SRV", 
+          "TRACE_WARNING"
+        ], 
+        "traceType": "DesignInfo"
+      }
+    }, 
+    {
+      "TRACE_ERROR": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "L1AUDIO_SPH_SRV", 
+          "TRACE_ERROR"
+        ], 
+        "traceType": "DesignInfo"
+      }
+    }, 
+    {
+      "TRACE_FUNC": {
+        "debugLevel": "Medium", 
+        "tag": [
+          "L1AUDIO_SPH_SRV", 
+          "TRACE_FUNC"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_VM": {
+        "debugLevel": "High", 
+        "tag": [
+          "L1AUDIO_SPH_SRV", 
+          "L1AUDIO_SPH_SRV_VM", 
+          "Sensitive"
+        ], 
+        "traceType": "Public"
+      }
+    }
+  ], 
+  "traceDefs": [
+    {
+      "VM_DATA": {
+        "format": "VM data", 
+        "traceClass": "TRACE_VM"
+      }
+    }, 
+    {
+      "RECORD_LENGTH": {
+        "apiType": "index", 
+        "format": "Recording VM length = %u bytes", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SET_EPL_PARA": {
+        "apiType": "index", 
+        "format": "EPL common parameter0 is set to %d", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "EPL_PARA_ERROR": {
+        "apiType": "index", 
+        "format": "Invalid EPL common parameter0", 
+        "traceClass": "TRACE_ERROR"
+      }
+    }, 
+    {
+      "DEBUG_NUMBER": {
+        "format": "Debug number = %d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }
+  ], 
+  "traceFamily": "PS", 
+  "userModule": ""
+}
\ No newline at end of file
diff --git a/mcu/driver/audio/src/v1/inc/l1audio_voc_utmd.json b/mcu/driver/audio/src/v1/inc/l1audio_voc_utmd.json
new file mode 100644
index 0000000..88e4137
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1audio_voc_utmd.json
@@ -0,0 +1,39 @@
+{
+  "traceFamily": "L1",
+  "startGen": "97",  
+  "endGen": "-",
+  "legacyParameters": {}, 
+  "module": "L1Audio_VoC", 
+
+  "traceClassDefs": [
+    {
+      "TRACE_VM": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "VM", 
+          "ONLY"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_EPL": {
+        "debugLevel": "Low", 
+        "tag": [
+          "VM", 
+          "EPL"
+        ], 
+        "traceType": "Public"
+      }
+    }
+  ], 
+  "traceDefs": [
+    {
+      "VM_DEBUG_INFO": {
+        "format": "VM debug info[0] = %d", 
+        "traceClass": "TRACE_VM"
+      }
+    }
+  ], 
+  "userModule": ""
+}
\ No newline at end of file
diff --git a/mcu/driver/audio/src/v1/inc/l1sp_trc.h b/mcu/driver/audio/src/v1/inc/l1sp_trc.h
new file mode 100644
index 0000000..71d66fc
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1sp_trc.h
@@ -0,0 +1,30 @@
+#ifndef _L1SP_TRC_H
+#define _L1SP_TRC_H
+#ifndef GEN_FOR_PC
+   #ifndef _STACK_CONFIG_H
+   #error "stack_config.h should be included before l1sp_trc.h"
+   #endif
+#endif /* GEN_FOR_PC */
+#include "kal_trace.h"
+#ifndef _KAL_TRACE_H
+   #error "kal_trace.h should be included before nvram_trc.h"
+#endif
+#define TRACE_GROUP_DDLOAD       TRACE_GROUP_1
+#define TRACE_GROUP_SND          TRACE_GROUP_2
+#define TRACE_GROUP_AUD_PROCESS  TRACE_GROUP_3
+#define TRACE_GROUP_SP_DEBUG     TRACE_GROUP_5
+#define TRACE_GROUP_SP4G         TRACE_GROUP_6
+#define TRACE_GROUP_SP3G         TRACE_GROUP_8
+#define TRACE_GROUP_AUD_PLAYBACK TRACE_GROUP_9
+#define TRACE_GROUP_ECALL        TRACE_GROUP_1
+#define TRACE_GROUP_AUD_MD2GCTRL TRACE_GROUP_1
+#define TRACE_GROUP_SCO          TRACE_INFO
+#define TRACE_GROUP_SPLOG        TRACE_INFO
+#if !defined(GEN_FOR_PC)
+#if defined(__TST_MODULE__) || defined(__CUSTOM_RELEASE__)
+#endif /* TST Trace Defintion */
+#endif
+#if !defined(GEN_FOR_PC)
+#include"l1sp_trc_mod_l1sp_utmd.h"
+#endif
+#endif // _L1SP_TRC_H
diff --git a/mcu/driver/audio/src/v1/inc/l1sp_trc_mod_l1sp_utmd.json b/mcu/driver/audio/src/v1/inc/l1sp_trc_mod_l1sp_utmd.json
new file mode 100644
index 0000000..60c2701
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/l1sp_trc_mod_l1sp_utmd.json
@@ -0,0 +1,6464 @@
+{
+  "endGen": "-",
+  "legacyParameters": {}, 
+  "module": "MOD_L1SP", 
+  "startGen": "Legacy",
+  "traceClassDefs": [
+    {
+      "TRACE_INFO": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "L1SP", 
+          "TRACE_INFO"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_WARNING": {
+        "debugLevel": "Low", 
+        "tag": [
+          "L1SP", 
+          "TRACE_WARNING"
+        ], 
+        "traceType": "DesignInfo"
+      }
+    },
+    {
+      "TRACE_FUNC": {
+        "debugLevel": "Medium", 
+        "tag": [
+          "L1SP", 
+          "TRACE_FUNC"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_STATE": {
+        "debugLevel": "Ultra-High", 
+        "tag": [
+          "L1SP", 
+          "TRACE_STATE"
+        ], 
+        "traceType": "Public"
+      }
+    }, 
+    {
+      "TRACE_SP_PS": {
+        "debugLevel": "High", 
+        "tag": [
+          "L1SP", 
+          "L1SP_SP_PS"
+        ], 
+        "traceType": "Public"
+      }
+    }
+  ], 
+  "traceDefs": [
+    {
+      "AM_L_SP3G_UPDATEL1DSYNC": {
+        "format": "[SPH_L]sp3g_updateL1DSync_dummy timer_hisr_state_L=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_SP3G_UPDATEL1DSYNC_TIMER": {
+        "format": "[SPH_L]L1AL_Timer_L_HISR timer_hisr_state_L=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_HANDOVER_SKIP": {
+        "format": "[SPH_L]cc_2G_Handover Skip %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_HANDOVER_ENTER": {
+        "format": "[SPH_L]cc_2G_Handover Enter %d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_HANDOVER_LEAVE": {
+        "format": "[SPH_L]cc_2G_Handover Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_CALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_2G_Call_Open Enter %d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_CALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_2G_Call_Open Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_CALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_2G_Call_Close Enter %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_2G_CALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_2G_Call_Close Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_3G_CALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_3G_Call_Open Enter delR=%d delW=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_3G_CALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_3G_Call_Open Leave delR=%d delW=%d P_to_L1_delay=%dms", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_3G_CALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_3G_Call_Close Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_3G_CALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_3G_Call_Close Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_CALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_4G_Call_Open_temp Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_CALLOPEN_ENTER_DBG": {
+        "format": "[DBG]cc_4G_Call_Open_temp Enter %d, delR=%d, delW=%d, u32CurTime64us=%d, u32CurTime64usLocal=%d, u32delay=%d, u32delaySample=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_DBG": {
+        "format": "[DBG]DACA_DBG %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },         
+    {
+      "AM_L_CC_4G_CALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_4G_Call_Open_temp Leave delR=%d delW=%d P_to_L1_delay=%dms reset_type=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_CALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_4G_Call_Close_temp Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_CALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_4G_Call_Close_temp Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_GCALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_4G_G_Codec_Call_Open_temp Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_GCALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_4G_G_Codec_Call_Open_temp Leave delR=%d delW=%d P_to_L1_delay=%dms", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_GCALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_4G_G_Codec_Call_Close_temp Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_GCALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_4G_G_Codec_Call_Close_temp Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_C2K_CALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_C2K_Call_Open Enter so=%d dtx=%d delR=%d delW=%d delM=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_C2K_CALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_C2K_Call_Open Leave so=%d dtx=%d delR=%d delW=%d delM=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_C2K_CALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_C2K_Call_Close Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_C2K_CALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_C2K_Call_Close Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_STANDBY_CALLOPEN_ENTER": {
+        "format": "[SPH_L]cc_STANDBY_Call_Open Enter codec=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_STANDBY_CALLOPEN_LEAVE": {
+        "format": "[SPH_L]cc_STANDBY_Call_Open Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_STANDBY_CALLCLOSE_ENTER": {
+        "format": "[SPH_L]cc_STANDBY_Call_Close Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_STANDBY_CALLCLOSE_LEAVE": {
+        "format": "[SPH_L]cc_STANDBY_Call_Close Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_SET_VBI_FOR_FSM_ENTER": {
+        "format": "[SPH_L]cc_Set VBI For FSM Enter: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_SET_VBI_FOR_FSM_LEAVE": {
+        "format": "[SPH_L]cc_Set VBI For FSM Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_L1AUD_TASK_CLRBUF": {
+        "format": "[SPH_L]L1AUD_TASK_L clear internal buffer", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_L1AUD_TASK_P2L": {
+        "format": "[SPH_L]L1AUD_TASK_L receive a P2L event", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_L1AUD_TASK_P2L_DATA": {
+        "format": "[SPH_L]L1AUD_TASK_L receive a P2L data[%d] = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_L1AUD_TASK_L2P_DATA": {
+        "format": "[SPH_L]L1AUD_TASK_L receive a L2P data[%d] = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_L1AUD_TASK_L2P": {
+        "format": "[SPH_L]L1AUD_TASK_L set a L2P event", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_L1A_UPDATE_INFO_L": {
+        "apiType": "index", 
+        "format": "[SPH_L] SP3G Update Info bitmap %d, val %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_EVSCALLOPEN_ENTER": {
+        "format": "cc_4G_EVS_Codec_Call_Open_temp_L Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_EVSCALLOPEN_LEAVE": {
+        "format": "cc_4G_EVS_Codec_Call_Open_temp_L Leave delR=%d delW=%d P_to_L1_delay=%dms resettype=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_EVSCALLCLOSE_ENTER": {
+        "format": "cc_4G_EVS_Codec_Call_Close_temp_L Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AM_L_CC_4G_EVSCALLCLOSE_LEAVE": {
+        "format": "cc_4G_EVS_Codec_Call_Close_temp_L Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_PLAY": {
+        "format": "[DTMF]DTMF_MCU_Play, DTMF_SW.pHandle: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_STOP": {
+        "format": "[DTMF]DTMF_MCU_Stop, DTMF_SW.pHandle: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_STOP_AND_WAIT": {
+        "format": "[DTMF]DTMF_MCU_StopAndWait, DTMF_SW.pHandle: 0x%X, I: %d, IsAudioPlaying: %d, SoundRuning: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_DATA_REQUEST": {
+        "format": "[DTMF]DTMF_MCU_DataRequestCallback, DTMF_SW.pHandle: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_GET_DATA_COUNT": {
+        "format": "[DTMF]DTMF_MCU_GetDataCount, uDataWord: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_READ_DATA_DONE": {
+        "format": "[DTMF]DTMF_MCU_ReadDataDone, uDataWord: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_GET_REAR_BUFFER": {
+        "format": "[DTMF]DTMF_MCU_GetReadBuffer, uDataWord: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_DESTROY": {
+        "format": "[DTMF]dtmf_mcu_Destroy, DTMF_SW.pHandle: 0x%X, fNewDTMF: %d, fEnding: %d, fForceStop: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_INIT": {
+        "format": "[DTMF]dtmf_mcu_Init, uSampleRate: %d, uPcmBufSize(byte): %d, uTotalBufferSize(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_PROCESS_ENTRY": {
+        "format": "[DTMF]dtmf_mcu_Process.entry, fNewDTMF: %d, fClearDTMF: %d, fEnding: %d, uBufLen(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_PROCESS_STATUS": {
+        "format": "[DTMF]dtmf_mcu_Process.status, fIsPlaying: %d, uCurrentData: %d, uFlushSilenceCount: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_NEWKEY": {
+        "format": "[DTMF]dtmf_mcu_ActivatNewKey, uCurIdx: %d, uCurrentDur: %d IsQTMF: %d, Freq: [%d] [%d] [%d] [%d]", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_NEWKEY_FORCE_END_2": {
+        "format": "[DTMF]dtmf_mcu_ActivatNewKey, Force stop: uPreIndex2: %d, uRemainDuration: %d, uTotalDuration:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_NEWKEY_FORCE_END_1": {
+        "format": "[DTMF]dtmf_mcu_ActivatNewKey, Reduce Dur: uPreIndex1: %d, uRemainDuration: %d, uTotalDuration:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_UPDATE_TONE_PREV_END": {
+        "format": "[DTMF]dtmf_mcu_UpdateTone, prev_end: uIndex: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_UPDATE_TONE_CURR_END": {
+        "format": "[DTMF]dtmf_mcu_UpdateTone, curr_end: uIndex: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_UPDATE_TONE_CURR_OFF": {
+        "format": "[DTMF]dtmf_mcu_UpdateTone, curr_off: uIndex: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_UPDATE_TONE_CURR_ON": {
+        "format": "[DTMF]dtmf_mcu_UpdateTone, curr_on : uIndex: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_UPDATE_TONE_RAMPDOWN": {
+        "format": "[DTMF]dtmf_mcu_UpdateTone, RAMPDOWN: uIndex: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_MCU_PROCESS_INTERNAL_ENTER": {
+        "format": "[dtmf_mcu_Process_Internal] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MCU_DTMF_MCU_PROCESS_INTERNAL_LEAVE": {
+        "format": "[dtmf_mcu_Process_Internal] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_AM_DSP_TurnOnC2KSDSP": {
+        "format": "[C2K][AM] C2K_AM_DSP_TurnOnC2KSDSP speech_modec=%X codec=%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_AM_DSP_TurnOffC2KSDSP": {
+        "format": "[C2K][AM] C2K_AM_DSP_TurnOffC2KSDSP", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_SO_CONNECT": {
+        "format": "[C2K][SPH] SO_Connect codec=%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_SO_CONNECT2": {
+        "format": "[C2K][SPH] SO_Connect(%d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_SO_DISCON": {
+        "format": "[C2K][SPH] SO_Disconnect(%d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_SO_DISCON_DONE": {
+        "format": "[C2K][SPH] SO_Disconnect_Done(%d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_INTRARAT": {
+        "format": "[C2K][SPH] SO_INTRARAT(%d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_SKIP_SO_CON_DONE": {
+        "format": "[C2K][SPH] Skip SO_Connect_Done(%d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_RS_COD_PARSE": {
+        "format": "[C2K][SPH] RS=%d, Cod=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_CON_SSO_REQ": {
+        "format": "[C2K][SPH] Link connect SSO req, SO=%d, MaxRate=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_CON_SSO_REQ_REPEAT": {
+        "format": "[C2K][SPH] Link SSO req repeat", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_CON_SSO_DONE": {
+        "format": "[C2K][SPH] Link connect SSO done", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_DISCON_SSO_REQ": {
+        "format": "[C2K][SPH] Link disconnect SSO req", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_DISCON_SSO_REQ_REPEAT": {
+        "format": "[C2K][SPH] Link disconnect SSO req repeat", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_DISCON_SSO_DONE": {
+        "format": "[C2K][SPH] Link disconnect SSO done", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_RDY": {
+        "format": "[C2K][SPH] Link cod ready, CodRdy=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_CLOSE": {
+        "format": "[C2K][SPH] Link cod close, CodRdy=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_DL_UNRDY": {
+        "format": "[C2K][SPH] Link cod DL unready", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_UL_UNRDY": {
+        "format": "[C2K][SPH] Link cod UL unready", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_UL_UNSYNC": {
+        "format": "[C2K][SPH] Link UL unsync", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_LBK_DL": {
+        "format": "[C2K][SPH] Link lbk DL, Rate=%d, len=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_LBK_UL": {
+        "format": "[C2K][SPH] Link lbk UL, Rate=%d, len=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_DL": {
+        "format": "[C2K][SPH] Cod_DL %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_COD_UL": {
+        "format": "[C2K][SPH] Cod_UL %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_RATE_DL": {
+        "format": "[C2K][SPH] rate_DL %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_RATE_UL": {
+        "format": "[C2K][SPH] rate_UL %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_HB_DL": {
+        "format": "[C2K][SPH] HB_DL %x %x %x %x %x %x %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "C2K_SPH_LINK_HB_UL": {
+        "format": "[C2K][SPH] HB_UL %x %x %x %x %x %x %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AFE_SWITCH_LOOPBACK": {
+        "apiType": "index", 
+        "format": "AFE Switch Loopback %c", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "AFE_DIGI_GAIN": {
+        "format": "DP_VOL_OUT_PCM:%X, DP_EnhRefDigiGain_Setting:%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AFE_SET_MIC_VOLUME": {
+        "apiType": "index", 
+        "format": "AFE SetMicrophoneVolume: %d", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "AFE_SET_OUTPUT_VOLUME": {
+        "format": "AFE Set aud_func %X OutputVolume %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AFE_SET_LEVEL_VOLUME": {
+        "format": "AFE Set aud_func %X MaxAnalogGain %d , step %d, level %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AFE_SET_GIDI_GAIN": {
+        "apiType": "index", 
+        "format": "AFE Set digital gain level %d, isForce=%d", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "AFE_SET_SPH_REF_GIDI_GAIN": {
+        "apiType": "index", 
+        "format": "AFE Set speech enhancement reference digital gain %d", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1CTM_OPEN": {
+        "format": "Call L1Ctm_Open", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_CLOSE": {
+        "format": "Call L1Ctm_Close", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_SET_INTERFACE": {
+        "format": "Call L1Ctm_SetInterface", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_START_NEGOTIATION": {
+        "format": "Call L1Ctm_StartNegotiation", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_4G_PUT_UL": {
+        "format": "[4G TTY]  put to UL Buffer %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_4G_GET_DL": {
+        "format": "[4G TTY]  get from DL Buffer %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_UL_GET": {
+        "format": "[TTY_LTE_PSR_UL_Get] ch = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_DL_GET": {
+        "format": "[TTY_LTE_PSR_DL_Get] ch = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_UL_PUT": {
+        "format": "[TTY_LTE_PSR_UL_Put] ch = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_DL_PUT": {
+        "format": "[TTY_LTE_PSR_DL_Put] ch = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_UL_QUEUE_SIZE": {
+        "format": "[TTY_LTE_PSR_UL_Queue_Size] size = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_LTE_DL_QUEUE_SIZE": {
+        "format": "[TTY_LTE_PSR_DL_Queue_Size] size = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TTY_MODE": {
+        "format": "[CTM] TTY mode = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_TX_PUT_TEXT": {
+        "format": "Call L1Ctm_TxPutText", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_RX_GET_TEXT": {
+        "format": "Call L1Ctm_RxGetText", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_IN_HISR_ENTER": {
+        "apiType": "index", 
+        "format": "[l1ctm_in_hisr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_IN_HISR_LEAVE": {
+        "apiType": "index", 
+        "format": "[l1ctm_in_hisr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_STOP_ENTER": {
+        "apiType": "index", 
+        "format": "[L1Ctm_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_STOP_LEAVE": {
+        "apiType": "index", 
+        "format": "[L1Ctm_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_FAR_END_CTM_DETECTED": {
+        "format": "L1Ctm far-end CTM detected", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_NEGOTIATION_SUCCESS": {
+        "format": "L1Ctm negotiation success", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_NEGOTIATION_FAIL": {
+        "format": "L1Ctm negotiation fail", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEMAND_CTM_ACK": {
+        "format": "L1Ctm is demanded to send CTM ACK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_UL_SEND_IDLE_AS_ACK": {
+        "format": "L1CtmTx ul-path send IDLE as ACK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DL_DETECT_CTM_SYNC": {
+        "format": "L1Ctm dl-path detect CTM Sync", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DL_CTM_BURST_END": {
+        "format": "L1Ctm dl-path detect CTM burst-end", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_UL_SEND_ENQUIRY_CHAR": {
+        "format": "L1Ctm ul-path send %d-time ENQUIRY char", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_UL_GET_DECODED_TTY_CHAR": {
+        "format": "L1Ctm ul-path get decoded TTY-char 0x%02X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_UL_SEND_CTM_CHAR": {
+        "format": "L1Ctm ul-path send CTM-char 0x%02X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DL_GET_RECEIVED_CTM_CHAR": {
+        "format": "L1Ctm dl-path get received CTM-char 0x%02X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DL_SEND_TTY_CHAR": {
+        "format": "L1Ctm dl-path send TTY-char 0x%02X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_REC_DIR_NO": {
+        "format": "L1Ctm record to dir REC_%02u", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_SAVE_DECODED_CHAR": {
+        "format": "L1Ctm dl-path save decoded char 0x%02X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING1": {
+        "format": "[CTM Setting 6229] AEC, EES, ES (Address 0x1A0~0x1A2): %d,%d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING2": {
+        "format": "[CTM Setting 6229] AMR codebook threshold=%d, gain=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING3": {
+        "format": "[CTM Setting 6229] DSP_AFS/AHS_SP_BFI_THRESHOLD 0: %d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING4": {
+        "format": "[CTM Setting 6229] DSP_AFS/AHS_SP_BFI_THRESHOLD 1: %d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING5": {
+        "format": "[CTM Setting 6229] DSP_AFS/AHS_SP_BFI_THRESHOLD 2: %d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING6": {
+        "format": "[CTM Setting 6229] DSP_AFS/AHS_SP_BFI_THRESHOLD 3: %d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING7": {
+        "format": "[CTM Setting]: Audio Coefficient for input : %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_DEBUG_SHOW_SETTING8": {
+        "format": "[CTM Setting]: Audio Coefficient for output: %d, %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_FAKE_COSIM": {
+        "format": "Turning on COSIM bit in DP_CTM_COSIM_CTRL", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_BUF_OVFLOW": {
+        "apiType": "index", 
+        "format": "l1ctm buffer overflow", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1CTM_COSIM": {
+        "format": "Turning on COSIM bit in DP_CTM_COSIM_CTRL", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_BFI_INFO": {
+        "format": "l1ctm_in_hisr in cosim mode(buf_idx=%x, bfi_store_idx=%x, dsp_tch_bfi=%x, bfi flag=%x)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_HCO_MODE": {
+        "format": "Opening ctm in HCO mode.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_VCO_MODE": {
+        "format": "Opening ctm in VCO mode.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_COSIM_MODE": {
+        "format": "Opening CTM in cosim mode", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_NORMAL_MODE": {
+        "format": "Opening ctm in normal mode (no HCO/VCO).", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1CTM_OPEN_PARAM": {
+        "apiType": "index", 
+        "format": "ctm param is not null, cprm_debug_flag=%x", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "SPC_BGSND_WRITEDATADONE_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_bgSnd_writeDataDone] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_WRITEDATADONE_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_bgSnd_writeDataDone] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_REQUESTDATA_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_bgSnd_requestData] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_REQUESTDATA_INFO": {
+        "apiType": "index", 
+        "format": "[spc_bgSnd_requestData] bLen=%d BGSND_RB_DEFAULT_THRESHOLD=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_REQUESTDATA_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_bgSnd_requestData] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_DLHDR_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_BGSND_DLHdr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSND_DLHDR_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_BGSND_DLHdr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDSTART_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_BgSndStart] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDSTART_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_BgSndStart] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDSTOP_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_BgSndStop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDSTOP_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_BgSndStop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDCONFIG_ENTER": {
+        "apiType": "index", 
+        "format": "[spc_BgSndConfig] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_BGSNDCONFIG_LEAVE": {
+        "apiType": "index", 
+        "format": "[spc_BgSndConfig] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_INIT_ENTER": {
+        "format": "[DSP_BGSND_INIT] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_INIT_LEAVE": {
+        "format": "[DSP_BGSND_INIT] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_CONFIGMIXER_ENTER": {
+        "format": "[DSP_BGSND_ConfigMixer] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_CONFIGMIXER_BGSND_PROCESS_TYPE": {
+        "format": "[DSP_BGSND_ConfigMixer] BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d flag:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_CONFIGMIXER_LEAVE": {
+        "format": "[DSP_BGSND_ConfigMixer] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_UPDATEMIXER_ENTER": {
+        "format": "[DSP_BGSND_UpdateMixer] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_UPDATEMIXER_LEAVE": {
+        "format": "[DSP_BGSND_UpdateMixer] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_STOP_ENTER": {
+        "apiType": "index", 
+        "format": "[DSP_BGSND_Stop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_STOP_LEAVE": {
+        "apiType": "index", 
+        "format": "[DSP_BGSND_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_SHARED_HISR_DL_UL_ENTER": {
+        "format": "[DSP_BGSND_Shared_Hisr_DL_UL] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_SHARED_HISR_DL_UL_LEAVE": {
+        "format": "[DSP_BGSND_Shared_Hisr_DL_UL] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_HISR_ENTER": {
+        "format": "[DSP_BGSND_Hisr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_HISR_BGSND_PROCESS_TYPE": {
+        "format": "[DSP_BGSND_Hisr] BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_HISR": {
+        "format": "[DSP_BGSND_Hisr] %x %x %x %x %x %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_HISR_LEAVE": {
+        "format": "[DSP_BGSND_Hisr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_START_ENTER": {
+        "apiType": "index", 
+        "format": "[DSP_BGSND_Start] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DSP_BGSND_START_LEAVE": {
+        "apiType": "index", 
+        "format": "[DSP_BGSND_Start] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_INIT_ENTER": {
+        "format": "[EXT_BGSND_init] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_INIT_LEAVE": {
+        "format": "[EXT_BGSND_init] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_ENTER": {
+        "format": "[EXT_BGSND_Start] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_DEBUG1": {
+        "format": "[EXT_BGSND_Start] debug1 i=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_DEBUG2": {
+        "format": "[EXT_BGSND_Start] debug2 i=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_SELECTED_SRC": {
+        "format": "[EXT_BGSND_Start] selected_src_id=%d num_src_used=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_DEBUG3": {
+        "format": "[EXT_BGSND_Start] debug3 i=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_DEBUG4": {
+        "format": "[EXT_BGSND_Start] debug4 i=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_DEBUG5": {
+        "format": "[EXT_BGSND_Start] debug5 i=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_START_LEAVE": {
+        "apiType": "index", 
+        "format": "[EXT_BGSND_Start] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_FLUSH_ENTER": {
+        "format": "[EXT_BGSND_Flush] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_FLUSH_ID": {
+        "format": "[EXT_BGSND_Flush] id=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_FLUSH_STATE": {
+        "format": "[EXT_BGSND_Flush] state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_FLUSH_LEAVE": {
+        "format": "[EXT_BGSND_Flush] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CLOSE_ENTER": {
+        "format": "[EXT_BGSND_Close] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CLOSE_SELECTED_SRC": {
+        "format": "[EXT_BGSND_Close] selected_src_id=%d num_src_used=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CLOSE_LEAVE": {
+        "format": "[EXT_BGSND_Close] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_DLHISR_ENTER": {
+        "format": "[EXT_BGSND_DLHisr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_DLHISR_LEAVE": {
+        "format": "[EXT_BGSND_DLHisr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_ULHISR_ENTER": {
+        "format": "[EXT_BGSND_ULHisr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_ULHISR_LEAVE": {
+        "format": "[EXT_BGSND_ULHisr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETDATACOUNT_ENTER": {
+        "format": "[EXT_BGSND_GetDataCount] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETDATACOUNT_COUNT": {
+        "format": "[EXT_BGSND_GetDataCount] count=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETDATACOUNT_LEAVE": {
+        "format": "[EXT_BGSND_GetDataCount] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_ENTER": {
+        "format": "[EXT_BGSND_Hisr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_BGSND_PROCESS_TYPE": {
+        "format": "[EXT_BGSND_Hisr] BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_SELECTED_SRC": {
+        "format": "[EXT_BGSND_Hisr] selected_src_id=%d src_state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_EXT_SRC_STATE_FLUSHING_OVER": {
+        "format": "  [EXT_BGSND_Hisr] %d-th Src's BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d EXT_SRC_STATE_FLUSHING_OVER", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_ENTER_SRC_OFFHDR": {
+        "format": "  [EXT_BGSND_Hisr] Enter %d-th Src's OffHdr", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_LEAVE_SRC_OFFHDR": {
+        "format": "  [EXT_BGSND_Hisr] Leave %d-th Src's OffHdr", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_FLUSH_SRC_OFFHDR_COMPLETELY": {
+        "format": "  [EXT_BGSND_Hisr] Flush %d-th Src's OffHdr completely", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_WAIT_SRC_HDR_TO_FLUSH_COMPLETELY": {
+        "format": "  [EXT_BGSND_Hisr] Wait %d-th Src's Hdr to flush completely", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_FLUSHING": {
+        "format": "  [EXT_BGSND_Hisr]  %d-th Src's BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d is flushing with len=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_NOT_FLUSHING": {
+        "format": "  [EXT_BGSND_Hisr] %d-th Src's BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d is not flushing with state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_HDR_IS_NOT_USED": {
+        "format": "[EXT_BGSND_Hisr] %d-th Src's Hdr is not used", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_HISR_LEAVE": {
+        "format": "[EXT_BGSND_Hisr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "BGSND_DSP_BGSND_BUF_ADD": {
+        "format": "[BGSND] DSP_BGSND_Buf_Add id=%d src_len=%d type=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "BKGSND_DSP_BUF_ADD_BUF": {
+        "format": "[BKGSND]DSP_buf_add buf[%d]=%x DSP_DLBuffer[%d]=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITESRCBUFFER_ENTER": {
+        "format": "[EXT_BGSND_WriteSrcBuffer] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITESRCBUFFER_LEAVE": {
+        "format": "[EXT_BGSND_WriteSrcBuffer] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_ENTER": {
+        "format": "[EXT_BGSND_WriteExtBuffer] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_SELECTED_SRC": {
+        "format": "[EXT_BGSND_WriteExtBuffer] selected_src_id = %d BGSND_PROCESS_TYPE(0->DL, 1->UL)=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_FSPH": {
+        "format": "[EXT_BGSND_WriteExtBuffer] fSph=%d gain=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_COUNT": {
+        "format": "[EXT_BGSND_WriteExtBuffer] count=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_OVERFLOWS1": {
+        "format": "[EXT_BGSND_WriteExtBuffer] overflows1", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_FILLED_TO_DSP": {
+        "format": "[EXT_BGSND_WriteExtBuffer_%d] Filled %d word to DSP, bgSnd.bufRead=%d, bgSnd.bufWrite=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_OVERFLOWS2": {
+        "format": "[EXT_BGSND_WriteExtBuffer] overflows2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_FILLED_TO_DSP_WITH_LAST_SAMPLE": {
+        "format": "[EXT_BGSND_WriteExtBuffer] Filled %d word to DSP with last sample %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_OVERFLOWS3": {
+        "format": "[EXT_BGSND_WriteExtBuffer] overflows3", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_SKIP_TO_DSP": {
+        "format": "[EXT_BGSND_WriteExtBuffer] skip fill %d word to DSP with silence pattern, state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER": {
+        "format": "[EXT_BGSND_WriteExtBuffer] %x %x %x %x %x %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_WRITEEXTBUFFER_LEAVE": {
+        "format": "[EXT_BGSND_WriteExtBuffer] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETFREESPACE_ENTER": {
+        "format": "[EXT_BGSND_GetFreeSpace] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETFREESPACE_INFO": {
+        "format": "[EXT_BGSND_GetFreeSpace] ## r = %d w = %d size = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_GETFREESPACE_LEAVE": {
+        "format": "[EXT_BGSND_GetFreeSpace] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CONFIGMIXER_ENTER": {
+        "format": "[EXT_BGSND_ConfigMixer] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CONFIGMIXER_BSPHFLAG": {
+        "format": "[EXT_BGSND_ConfigMixer] bSPHFlag=%d SNDGain=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "EXT_BGSND_CONFIGMIXER_LEAVE": {
+        "format": "[EXT_BGSND_ConfigMixer] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_KT_PLAY_ENTER": {
+        "format": "[SP4G_PSR_DL_KT_Play] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_KT_PLAY_LEAVE": {
+        "format": "[SP4G_PSR_DL_KT_Play] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_KT_STOP_ENTER": {
+        "format": "[SP4G_PSR_DL_KT_Stop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_KT_STOP_LEAVE": {
+        "format": "[SP4G_PSR_DL_KT_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_TONE_PLAY_ENTER": {
+        "format": "[SP4G_PSR_DL_Tone_Play] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_TONE_PLAY_LEAVE": {
+        "format": "[SP4G_PSR_DL_Tone_Play] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_TONE_STOP_ENTER": {
+        "format": "[SP4G_PSR_DL_Tone_Stop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_DL_TONE_STOP_LEAVE": {
+        "format": "[SP4G_PSR_DL_Tone_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_PLAY_ENTER": {
+        "format": "[SP4G_PSR_UL_KT_Play] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_PLAY_LEAVE": {
+        "format": "[SP4G_PSR_UL_KT_Play] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_PLAY_SKIP": {
+        "format": "[SP4G_PSR_UL_KT_Play] Skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_STOP_ENTER": {
+        "format": "[SP4G_PSR_UL_KT_Stop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_STOP_LEAVE": {
+        "format": "[SP4G_PSR_UL_KT_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_KT_STOP_SKIP": {
+        "format": "[SP4G_PSR_UL_KT_Stop] Skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_PLAY_ENTER": {
+        "format": "[SP4G_PSR_UL_Tone_Play] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_PLAY_LEAVE": {
+        "format": "[SP4G_PSR_UL_Tone_Play] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_PLAY_SKIP": {
+        "format": "[SP4G_PSR_UL_Tone_Play] Skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_STOP_ENTER": {
+        "format": "[SP4G_PSR_UL_Tone_Stop] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_STOP_LEAVE": {
+        "format": "[SP4G_PSR_UL_Tone_Stop] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP4G_PSR_UL_TONE_STOP_SKIP": {
+        "format": "[SP4G_PSR_UL_Tone_Stop] Skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSNDCLOSE_ENTER": {
+        "format": "[volte_BgSndClose] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSNDCLOSE_LEAVE": {
+        "format": "[volte_BgSndClose] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_CLOSEHANDLER_ENTER": {
+        "format": "[volte_bgSnd_closeHandler] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_CLOSEHANDLER_LEAVE": {
+        "format": "[volte_bgSnd_closeHandler] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_ENTER": {
+        "format": "[volte_BGSND_ULHdr] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_EXT_BGSND_WRITEEXTBUFFER": {
+        "format": "[volte_BGSND_ULHdr] EXT_BGSND_WriteExtBuffer", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_EXT_BGSND_WRITEEXTBUFFER_LAST_DATA": {
+        "format": "[volte_BGSND_ULHdr] EXT_BGSND_WriteExtBuffer last data", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_LEAVE": {
+        "format": "[volte_BGSND_ULHdr] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_NEED_SAMPLES": {
+        "format": "[volte_BGSND_ULHdr] we still need %d samples", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_NO_EXT_BGSND_WRITEEXTBUFFER": {
+        "format": "[volte_BGSND_ULHdr] No EXT_BGSND_WriteExtBuffer", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VOLTE_BGSND_ULHDR_TONECNT_REMAINS": {
+        "format": "[volte_BGSND_ULHdr]  ToneCnt %d Remains %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_PLAY_SKIP": {
+        "format": "[SP_DSPTone] SP_DSPTone_UL_KT_Play skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_PLAY_START": {
+        "format": "[SP_DSPTone] SP_DSPTone_UL_KT_Play start freq1=%d freq2=%d duration=%d ulgain=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_PLAY_LEAVE": {
+        "format": "[SP_DSPTone] SP_DSPTONE_UL_KT_Play leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_STOP_SKIP": {
+        "format": "[SP_DSPTone] SP_DSPTone_UL_KT_Stop skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_STOP_START": {
+        "format": "[SP_DSPTone] SP_DSPTone_UL_KT_Stop start", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_UL_KT_STOP_LEAVE": {
+        "format": "[SP_DSPTone] SP_DSPTone_UL_KT_Stop leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_PLAY_SKIP": {
+        "format": "[SP_DSPTone] SP_DSPTone_DL_KT_Play skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_PLAY_START": {
+        "format": "[SP_DSPTone] SP_DSPTone_DL_KT_Play start freq1=%d freq2=%d duration=%d dlgain=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_PLAY_LEAVE": {
+        "format": "[SP_DSPTone] SP_DSPTONE_DL_KT_Play leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_STOP_SKIP": {
+        "format": "[SP_DSPTone] SP_DSPTone_DL_KT_Stop skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_STOP_START": {
+        "format": "[SP_DSPTone] SP_DSPTone_DL_KT_Stop start", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DSPTONE_DL_KT_STOP_LEAVE": {
+        "format": "[SP_DSPTone] SP_DSPTone_DL_KT_Stop leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SAL_4G_GSeriesCall_Open_CheckState_UL_DL": {
+        "format": "[SAL_4G_GSeriesCall_Open] I=%d SAL_PcmEx_CheckStateDL=%d SAL_PcmEx_CheckStateUL=%d is_ready=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SAL_4G_GSeriesCall_Open_CheckState": {
+        "format": "[SAL_4G_GSeriesCall_Open] SAL_PcmEx_CheckState OK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_DSP2MCU": {
+        "format": "DSP2MCU", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_DSP2MCU_TASK4": {
+        "format": "DSP2MCU Task4", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_DSP2MCU_TASK5": {
+        "format": "DSP2MCU Task5", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_DSP2MCU_TASK6": {
+        "format": "DSP2MCU Task6", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_DSP2MCU_TASK7_DSP_DIE": {
+        "format": "DSP2MCU Task7 DSP Die ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_L1AUDIO_CONSOLE_HANDLER_VIO18_ON": {
+        "format": "l1audio_console_handler VIO18 ON", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "AUDIO_SERVICE_L1AUDIO_CONSOLE_HANDLER_VIO18_OFF": {
+        "format": "l1audio_console_handler VIO18 OFF", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BTSCO_HISR_ADDRESS": {
+        "format": "[CVSD]btsco_hisr address: W:%x, R:%x, status:%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BTSCO_CODEC_ID": {
+        "format": "[CVSD]fWideBand: %x, uCodec_id:%x, BT_SCO_HW_REG_CONTROL:%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "BTSCO_CVSD_MSBC_SWITCH": {
+        "format": "[SCO]msbc cvsd switch", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "CVSD_BT_SCO_ALLOC_CVSD_MEMORY": {
+        "format": "[CVSD]BT_SCO_Alloc_CVSD_Memory: uTotalMemory %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_G711PLC_ADDTOHISTORY_COPY": {
+        "format": "[CVSD]\u0014g711plc_addtohistory copy: btsco.pRX->iPacket_r %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_G711PLC_DOFE_COPY": {
+        "format": "[CVSD]\u0014g711plc_dofe copy: btsco.pRX->iPacket_r %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BT_SCO_ALLOC_MSBC_MEMORY": {
+        "format": "[CVSD]BT_SCO_Alloc_MSBC_Memory: uTotalMemory %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MSBC_INFO": {
+        "format": "[MSBC][%d][%d], index1: %d, valid: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "MSBC_STATUS": {
+        "format": "[MSBC]status: %d,", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BTSCO_PROCESS_LOOPBACK": {
+        "format": "[CVSD]btsco_process_loopback, uInLen: %d, uOutLen: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BT_SCO_SPEECH_ON": {
+        "format": "[CVSD]BT_SCO_SPEECH_ON, uState: %d, fWideBand = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BT_SCO_SPEECH_OFF": {
+        "format": "[CVSD]BT_SCO_SPEECH_OFF, uState: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BT_SCO_LOOPBACK_ON": {
+        "format": "[CVSD]BT_SCO_Loopback_ON, fDisableCodec: %d, uState: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "CVSD_BT_SCO_LOOPBACK_OFF": {
+        "format": "[CVSD]BT_SCO_Loopback_OFF, uState: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "P4W_GETDATAFROMDSP": {
+        "format": "pcmEx_getDataFromDsp bufName=%d, addr=%x, length=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "P4W_WRITEDATATODSP": {
+        "format": "pcmEx_writeDataToDsp bufName=%d, addr=%x, length=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_DSP_BUFFER_INFO": {
+        "apiType": "index", 
+        "format": "BGSND buf count:%d; dsp_buf_addr(toPtr): %x, dsp_buf_len: %d word", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_FILLBUFFER": {
+        "apiType": "index", 
+        "format": "BGSND[%d] Filled %d word to DSP, bgSnd.bufRead=%d, bgSnd.bufWrite=%d", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1SND_PUT_SILENCE": {
+        "apiType": "index", 
+        "format": "BGSND Filled %d word to DSP with silence pattern %x", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1SND_WRITE_DATA": {
+        "format": "[EXT_BGSND_WriteSrcBuffer_%d] selected_src_id=%d type=%d Write data %d word to buffer %d, bgSnd.bufRead=%d, bgSnd.bufWrite=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_STOP_FLUSH_COUNT": {
+        "apiType": "index", 
+        "format": "BGSND Flush count: %d word", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1SND_STOP_FLUSH_LEAVE": {
+        "apiType": "index", 
+        "format": "BGSND Flush Still Leave: %d word", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1SND_ENTER_BGSND_START": {
+        "format": "Enter BGSND_Start", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_ENTER_BGSND_STOP": {
+        "format": "Enter BGSND_Stop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_ENTER_EVENT_HANDLER": {
+        "apiType": "index", 
+        "format": "Enter bgsndEventHandler with state=%d", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "L1SND_CONFIG_ULMIXER": {
+        "format": "BGSND ConfigULMixer, flag:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_CONFIG_DLMIXER": {
+        "format": "BGSND ConfigDLMixer, flag:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SND_REENTER_HISR": {
+        "format": "SND re-enter HISR with isDlHisrCome=%d, isUlHisrCome=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "SPPS_PSR_EVS_LOOPBACK_UL_1": {
+        "apiType": "index", 
+        "format": "PS EVS_loopback_ul", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_EVS_LOOPBACK_UL_2": {
+        "apiType": "index", 
+        "format": "PS EVS_loopback_ul %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_EVS_LOOPBACK_DL_1": {
+        "apiType": "index", 
+        "format": "PS EVS_loopback_dl", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_EVS_LOOPBACK_DL_2": {
+        "apiType": "index", 
+        "format": "PS EVS_loopback_dl %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_G711_LOOPBACK": {
+        "apiType": "index", 
+        "format": "SP4G_PSR_loopback_G711 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },                      
+    {
+      "SPPS_PSR_DL_GSERIES_PUTSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PS PSR_DL_GSeries_Put", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_DL_GSERIES_PUTSPEECHFRAME_INFO": {
+        "apiType": "index", 
+        "format": "PS PSR_DL_GSeries_Put: codec=%MSP4G_Codec(0x%x), encodebits=%02x%02x%02x%02x, bitlen=%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SPPS_DL_HISR_SKIP": {
+        "apiType": "index", 
+        "format": "PS DL_HISR SKIP %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_UL_HISR_SKIP": {
+        "apiType": "index", 
+        "format": "PS UL_HISR SKIP %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_IS_EQUAL": {
+        "apiType": "index", 
+        "format": "PS SetCodec is equal %MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PP5_1": {
+        "apiType": "index", 
+        "format": "PS PP5.1 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PP5_SP4G_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PS PP5 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PP6_SP4G_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PS PP6 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_UL_EVS_GETSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PS EVS PSR_UL_Get", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_UL_SETFRAMETYPE1": {
+        "apiType": "index", 
+        "format": "PS PSR_UL_SetFrameType with codec=%x, L1SP_GetState()=%d, is_g_codec=%x, is_EVS=%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC": {
+        "apiType": "index", 
+        "format": "PS SetCodec: in_codec_mode=%MSP4G_Codec(0x%x), real_codec_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC0": {
+        "apiType": "index", 
+        "format": "PS SetCodec: in_codec_mode=%MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_USE_EVS_IO_REPLACE_AWB_IN": {
+        "apiType": "index", 
+        "format": "PS SetCodec: USE_EVS_IO_REPLACE_AWB in_codec_mode=0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_USE_EVS_IO_REPLACE_AWB_OUT": {
+        "apiType": "index", 
+        "format": "PS SetCodec: USE_EVS_IO_REPLACE_AWB out_codec_mode=0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_SETFRAMETYPE1": {
+        "apiType": "index", 
+        "format": "PS SetCodec1: %MSP4G_Codec(0x%x) 0x%x ftype=%MSP4G_Codec(0x%x), ul_intrarat=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_SETFRAMETYPE2": {
+        "apiType": "index", 
+        "format": "PS SetCodec2: %d %d ftype=%MSP4G_Codec(0x%x), ul_intrarat=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SETCODEC_SETFRAMETYPE3": {
+        "apiType": "index", 
+        "format": "PS SetCodec2: %d %d ftype=%MSP4G_Codec(0x%x), ul_intrarat=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_DEBUG_SPPS_SPEECH_INIT": {
+        "apiType": "index", 
+        "format": "PS speech_init_codec = 0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_UL_GETSPEECHFRAME_USE_EVS_IO_REPLACE_AWB": {
+        "apiType": "index", 
+        "format": "PS UL_Get USE_EVS_IO_REPLACE_AWB", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_UL_GETSPEECHFRAME_USE_EVS_IO_REPLACE_AWB_LEN": {
+        "apiType": "index", 
+        "format": "PS UL_Get USE_EVS_IO_REPLACE_AWB bit_len=%d, byte_len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_DL_PUTSPEECHFRAME_USE_EVS_IO_REPLACE_AWB": {
+        "apiType": "index", 
+        "format": "PS DL_Put USE_EVS_IO_REPLACE_AWB", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_UL_GSERIES_GETSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PS PSR_UL_GSeries_Get", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_UL_GSERIES_GETSPEECHFRAME_INFO": {
+        "apiType": "index", 
+        "format": "PS PSR_UL_GSeries_Get: codec=%MSP4G_Codec(0x%x), encodebits=%02x%02x%02x%02x, bitlen=%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_LINK_DEEST": {
+        "apiType": "index", 
+        "format": "PS PSR_Link_Deest: spPS_rab_id=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_PSR_LINK_EST": {
+        "apiType": "index", 
+        "format": "PS PSR_Link_Est: spPS_rab_id=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_RAB_DEEST": {
+        "apiType": "index", 
+        "format": "PS notify RAB De-establish id=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_RAB_EST1": {
+        "apiType": "index", 
+        "format": "PS Rab_Est: in_codec_mode=%MSP4G_Codec(0x%x), real_codec_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_RAB_EST2": {
+        "apiType": "index", 
+        "format": "PP Rab_Est: CSR notify RAB establish id=%x codec=%MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_RAB_EST_USE_EVS_IO_REPLACE_AWB_IN": {
+        "apiType": "index", 
+        "format": "PS Rab_Est: USE_EVS_IO_REPLACE_AWB in_codec_mode=%MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_RAB_EST_USE_EVS_IO_REPLACE_AWB_OUT": {
+        "apiType": "index", 
+        "format": "PS Rab_Est: USE_EVS_IO_REPLACE_AWB out_codec_mode=%MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_REQUEST_UL_FRAME_TYPE": {
+        "apiType": "index", 
+        "format": "PS set UL frame type %MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SPPS_SET_DTX": {
+        "apiType": "index", 
+        "format": "PS Set DTX %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_TX_SPEECH_GOOD": {
+        "apiType": "index", 
+        "format": "PSCod hisr_ul SPEECH_GOOD", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_TX_SID_FIRST": {
+        "apiType": "index", 
+        "format": "PSCod hisr_ul SID_FISRT", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_TX_SID_UPDATE": {
+        "apiType": "index", 
+        "format": "PSCod hisr_ul SID_UPDATE", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_TX_NO_DATA": {
+        "apiType": "index", 
+        "format": "PSCod hisr_ul NO_DATA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_UL_SKIP_NOTIFY": {
+        "apiType": "index", 
+        "format": "PSCod UL_SKIP_NOTIFY_PSR", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },      
+    {
+      "SP_PS_CODEC_UL_DELAY": {
+        "apiType": "index", 
+        "format": "PSCod UL delay %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_DL_SKIP_NOTIFY": {
+        "apiType": "index", 
+        "format": "PSCod DL_SKIP_NOTIFY_PSR", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_DL_DELAY": {
+        "apiType": "index", 
+        "format": "PSCod DL delay %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_UL_SYNC_AM_4G_INTRARAT": {
+        "apiType": "index", 
+        "format": "PSCod UL_Sync AM_INTRARAT", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_DL_FRM": {
+        "apiType": "index", 
+        "format": "PSCod DL Frm NA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_DL_PUT_SPEECH_FRAME_EVS": {
+        "apiType": "index", 
+        "format": "PSCod DL sub_flow %d, frame_type %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_DL_PUT_SPEECH_FRAME_AMR": {
+        "apiType": "index", 
+        "format": "PSCod DL sub_flow %d, frame_type %x, crc_status %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },      
+    {
+      "SP_PS_CODEC_RX_SID_FIRST": {
+        "apiType": "index", 
+        "format": "PSCod RX SID FISRT", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_RX_SID_UPDATE": {
+        "apiType": "index", 
+        "format": "PSCod RX SID UPDATE", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_RX_NO_DATA": {
+        "apiType": "index", 
+        "format": "PSCod RX GET NO DATA FRAME", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_RX_LOST_DATA": {
+        "apiType": "index", 
+        "format": "PSCod RX GET LOST DATA FRAME", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_UL_GET_SPEECH_FRAME": {
+        "apiType": "index", 
+        "format": "PSCod UL GetSpFrame type %x, len %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_BUFFER": {
+        "apiType": "index", 
+        "format": "PSCodAMR UL cnt=%d,r=%d,w=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_CONVERT_SP4G_CODEC_AMR_AMRWB_TO_SPH_CODEC": {
+        "apiType": "index", 
+        "format": "PSCodAMR convert_AMR_AMRWB_to_SPH_CODEC frame_type=%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_GETSPEECHFRAMESUB_1": {
+        "apiType": "index", 
+        "format": "PSCodAMR UL_Get1 reset_flag=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_GETSPEECHFRAMESUB_2": {
+        "apiType": "index", 
+        "format": "PSCodAMR UL_Get2 reset_flag=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_HISR_SKIP_AMR": {
+        "apiType": "index", 
+        "format": "PSCodAMR UL_HISR SKIP AMR %d %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DL_HISR_SKIP_AMR": {
+        "apiType": "index", 
+        "format": "PSCodAMR DL_HISR SKIP AMR %d %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },      
+    {
+      "SP_PS_CODEC_AMR_HISR_UL_INVALID_CODEC_MODE": {
+        "apiType": "index", 
+        "format": "PSCodAMR hisr_ul invalid UL codec mode %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_HISR_UL_AMR_NO_UPDATE_UL_BUFFER_1": {
+        "apiType": "index", 
+        "format": "PSCodAMR hisr_ul no update UL buffer 1", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_HISR_UL_AMR_NO_UPDATE_UL_BUFFER_2": {
+        "apiType": "index", 
+        "format": "PSCodAMR hisr_ul no update UL buffer 2", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_HISR_UL_DSP_NOT_READY": {
+        "apiType": "index", 
+        "format": "PSCodAMR hisr_ul no ready, force using silence pattern DSP_Len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DEBUG_UL_BUFF": {
+        "apiType": "index", 
+        "format": "PSCodAMR hisr_ul_buff %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_SYNC_SP4G_HISR_DL_AMR_1_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR [UL_Sync]hisr_dl.1 ul_request_resync = %d reset_flag=%d ctime = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_UL_SYNC_SP4G_HISR_DL_AMR_FORCED_NO_DATA": {
+        "apiType": "index", 
+        "format": "PSCodAMR [UL_Sync]hisr_dl.2 forced no_data", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_PSR_DL_AMR_PUTSPEECHFRAME_RETURN": {
+        "apiType": "index", 
+        "format": "PSCodAMR PSR_DL_Put: now is EVS codec, skip this data flow.", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DL_BIT_TRUE": {
+        "apiType": "index", 
+        "format": "PSCodAMR DL Type 0x%x, Frm %x %x %x %x %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_HIST_4G_SYNC": {
+        "apiType": "index", 
+        "format": "PSCodAMR sync=%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_PSR_DL_AMR_PUTSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PSCodAMR PSR_DL_Put codec=%MSP4G_PSR_Codec(0x%x) frame_type=%MSP4G_Codec(0x%x) ul_codec_mode=0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_PSR_DL_AMR_PUTSPEECHFRAME_G_SKIP": {
+        "apiType": "index", 
+        "format": "PSCodAMR PSR_DL_Put: now is G codec, skip this data flow.", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_PSR_DL_AMR_PUTSPEECHFRAME_LOST_FRAME": {
+        "apiType": "index", 
+        "format": "PSCodAMR PSR_DL_Put LOST_FRAME", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_HSPA_DL_PUT_SPEECH_FRAME": {
+        "apiType": "index", 
+        "format": "PSCodAMR DL Put type %MSP4G_Codec(0x%x), CFN %d, crc %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_P0_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR P0 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_P1_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR P1 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_P2_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR P2 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_P3_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR P3 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_P4_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodAMR P4 reset_flag=%d dl_count=%d %d %d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DL_DROP_FRAME": {
+        "apiType": "index", 
+        "format": "PSCodAMR DL drop frame", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DTX_NO_DATA": {
+        "format": "PSCodAMR DL_HISR INSERT NO DATA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DL_HISR_STATUS": {
+        "format": "PSCodAMR DL_HISR AMR = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },      
+    {
+      "SP_PS_CODEC_AMR_BUFFER_STATUS": {
+        "format": "PSCodAMR DL_HISR r = %d, w = %d, num = %d, 1st byte = %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_AMR_RX_FORCE_NO_DATA_WHEN_CHANGE_BAND": {
+        "apiType": "index", 
+        "format": "PSCodAMR DL_HISR Band Change, force NO_DATA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_AMR_DEBUG_UL_GETSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PSCodAMR UL_Get r_idx %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_RESET_FLAG_INFO": {
+        "apiType": "index", 
+        "format": "PSCodEVS %d reset_flag=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_DECODER_PREPARE_PARAMETER": {
+        "apiType": "index", 
+        "format": "PSCodEVS dec_prepare_parameter: EVS_network_request_bw=%d, EVS_capability_bw=%d, EVS_PCM_bw=%d EVS_HBLen=%d, EVS_BFI=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_ENCODER_PREPARE_PARAMETER1": {
+        "apiType": "index", 
+        "format": "PSCodEVS enc_prepare_parameter1: EVS_network_request_bw=%d, EVS_capability_bw=%d, EVS_PCM_bw=%d codec=%MSP4G_Codec(0x%x), DTX=%d, EVS_CA_Par.enable=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Event duration EVS_HISR_start", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_PCM_SIZE": {
+        "format": "PSCodEVS hisr_ul FD216 UL PCM size=%d, EVS_pcm_ul_rb_buf size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_DROP_PCM": {
+        "format": "PSCodEVS hisr_ul drop EVS_pcm_ul_rb_buf PCM data", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_ENC_DONE": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul encoder done", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_ASSERT_ID": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul encoder EVS codec ID is wrong: 0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_PROCESS_EVS_HB": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul process EVS HB", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_BIT_LEN": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul EVS HB bit_len: %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_PROCESS_AWB_HB": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul process AWB HB", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_PROCESS_AWB_HB_LEN": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul AWB HB byte len: %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_AWB_INVALID_CODEC_RATE": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul AWB invalid codec rate: 0x%x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_ENC_NOT_FINISH": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul encoder do not finish, dsp_len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_ERROR": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul ERROR", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_DATA": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul DATA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_MUTE": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul MUTE", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_UL_NON": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_ul NON", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HISR_DL_ERROR": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_dl ERROR", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },    
+    {
+      "SP_PS_CODEC_EVS_HISR_DL_DATA": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_dl DATA", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_EVS_HISR_DL_MUTE": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_dl MUTE", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_EVS_HISR_DL_NON": {
+        "apiType": "index", 
+        "format": "PSCodEVS hisr_dl NON", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },            
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get Return", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_EVS_HB_UL_RB_BUF_FREE_SPACE": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get EVS_HB_ul_rb_buf free space=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_HEADER_INFO": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get header ID=%x codec=%MSP4G_Codec(0x%x) byte_len=%d bit_len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_EVS_HB_UL_RB_BUF_EMPTY": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get EVS_HB_ul_rb_buf is empty", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_INFO": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get codec=%MSP4G_Codec(0x%x) bit_len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_MISMATCH_CODEC": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get Mismatch codec %x %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_INVALID_CODEC": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get invalid ul_codec_mode: %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_EVS_UL_GETSPEECHFRAME_MERGE_3RAB_TO_IF1": {
+        "apiType": "index", 
+        "format": "PSCodEVS UL_Get merge 3 R.A.B. to IF1", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_DL_PUTSPEECHFRAME_REORDERAWB_ENTER": {
+        "apiType": "index", 
+        "format": "PSCodEVS DL_Put_ReorderAWB enter", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HSPA_DL_EVS_PUTSPEECHFRAME_UL_SYNC_1": {
+        "apiType": "index", 
+        "format": "PSCodEVS DL_Put.1 ul_request_resync = %d reset_flag=%d ctime = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HSPA_DL_EVS_PUTSPEECHFRAME_UL_SYNC_2_1": {
+        "apiType": "index", 
+        "format": "PSCodEVS DL_Put.2-1 forced no_data", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_HSPA_DL_EVS_PUTSPEECHFRAME_UL_SYNC_2_2": {
+        "apiType": "index", 
+        "format": "PSCodEVS DL_Put.2-2 forced no_data", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_PSR_DL_EVS_PUTSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "PSCodEVS PSR_DL_Put", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_PSR_DL_EVS_PUTSPEECHFRAME_RETURN": {
+        "apiType": "index", 
+        "format": "PSCodEVS PSR_DL_Put: now is not EVS codec, skip this data flow.", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_EVS_PSR_DL_EVS_PUTSPEECHFRAME_DATA": {
+        "apiType": "index", 
+        "format": "PSCodEVS PSR_DL_Put: CFN=%x codec=%x to %x, encodebits=%02x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_SET_G711PARAMETERS": {
+        "apiType": "index", 
+        "format": "PSCodG Set_G711Parameters input dec_init_CNG_enable is out of range(0~1): %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_SET_G711PARAMETERS_OUT_OF_RANGE": {
+        "apiType": "index", 
+        "format": "PSCodG Set_G711Parameters input law is out of range(1~2): %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_ENCODE_GETBUFFERSIZE": {
+        "apiType": "index", 
+        "format": "PSCodG Enc GetBufferSize %d %d %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_GETBUFFERSIZE": {
+        "apiType": "index", 
+        "format": "PSCodG Dec GetBufferSize %d %d %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_DL_EVENT": {
+        "apiType": "index", 
+        "format": "PSCodG DL_Event %d-th ", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_DL_EVENT_CODEC": {
+        "apiType": "index", 
+        "format": "PSCodG DL_Event codec=%MSP4G_Codec(0x%x) len=%d hdr.len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_DL_EVENT_DECODED_GSERIES_DECODE_PROCESS": {
+        "apiType": "index", 
+        "format": "PSCodG DL_Event Dec GSeries_Decode_Process result=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_DL_EVENT_DROP_PCM": {
+        "apiType": "index", 
+        "format": "PSCodG DL_Event drop PCM", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_DL_EVENT_READHARDBIT_NO_SIZE": {
+        "apiType": "index", 
+        "format": "PSCodG DL_Event ReadHardbit no size", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event %d-th codec=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_READPCM_NO_SIZE": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event ReadPCM no size", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_READPCM_SIZE": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event ReadPCM size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_WRITE1": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Write1 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_WRITE2": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Write2 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_WRITE3": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Write3 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_CODEC_MISMATCH": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event codec %d %d mismatch", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_DROP1": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event drop1 %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_DROP2": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event drop2 %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_DROP2_SIZE_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event drop2 stream size is larger than %dbyte", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_DROP3": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event drop3 %d ", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_DROP_CODEC_MUTE_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event drop data, SP_is_codec_mute()=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_ENCODED_FREE_SIZE": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Enc free_size=%d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_ENCODED_GSERIES_ENCODE_PROCESS": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Enc GSeries_Encode_Process return=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_UL_EVENT_ENCODED_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG UL_Event Enc codec=%d size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME2": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get: %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get codec=%d len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME_MISMATCH": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get Mismatch codec %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME_NODATA": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get NoData", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_GETFRAME_OK": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Get Ok", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_PUTFRAME3": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Put aud_dl_id %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_PUTFRAME4": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Put codec=%d len=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_PUTFRAME_DROP": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Put drop", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_PUTFRAME_DROP_SIZE_INFO": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Put drop stream size is larger than %dbyte", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_PSR_PUTFRAME_MISMATCH": {
+        "apiType": "index", 
+        "format": "PSCodG PSR_Put mismatch codec=%MSP4G_Codec(0x%x) %MSP4G_Codec(0x%x)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_DL_INFO1": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_dl_g %x fsize=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_DL_INFO2": {
+        "apiType": "index",
+        "format": "PSCodG hisr_dl_g reset_flag=%d rab_state=%d codec_mute=%d sp4g_mode=%d",
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_G_HISR_DL_STATUS": {
+        "apiType": "index",
+        "format": "PSCodG hisr_dl_g %d",
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_CODEC_G_HISR_DL_NO_DATA": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_dl_g no data", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_UL": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_ul_g %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_UL_AUD_UL_ID": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_ul_g aud_ul_id %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_UL_DROP": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_ul_g drop", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_CODEC_G_HISR_UL_SIZE": {
+        "apiType": "index", 
+        "format": "PSCodG hisr_ul_g size=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_RESYNC_TEST_1": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test[Check] unexpected resync", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },      
+    {
+      "SP_PS_AAM_RESYNC_TEST_2": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test enter %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_RESYNC_TEST_3": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test retry (%d)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },  
+    {
+      "SP_PS_AAM_RESYNC_TEST_4": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test abandon %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },  
+    {
+      "SP_PS_AAM_RESYNC_TEST_5": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test stop", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },  
+    {
+      "SP_PS_AAM_RESYNC_TEST_6": {
+        "apiType": "index", 
+        "format": "sub_aam_resync_test testing  %d %d %d %d idx %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_RESYNC_TEST_7": {
+        "apiType": "index", 
+        "format": "aam_resync_test_start start1 aam_resync_test_idx=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_RESYNC_TEST_8": {
+        "apiType": "index", 
+        "format": "aam_resync_test_start start2", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_RESYNC_TEST_9": {
+        "apiType": "index", 
+        "format": "aam_resync_test_start start (skip)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_FAKE_L2_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM FAKE L2 Info rx_p=%d tx_p=%d t2tx=%d t2rx=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_LTE_EMAC_TRUE": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC True(%d) Start module=%d sph_l2_mode=%d l2_mode=%d sal_mode=%d %x %x %x %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_0": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC Fake %x %x %x %x %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake_offset %x %x %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake tx_fake_offset %x fake_offset %x fake_t2nextTX %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_3": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake time2nextTX %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_4": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake time2nextTX_skip %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_5": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake rx_fake_offset %x fake_offset %x fake_t2nextRX %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_6": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake time2nextRX %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },                                                                          
+    {
+      "SP_PS_AAM_LTE_EMAC_FAKE_7": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC fake time2nextRX_skip %x", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },    
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_INIT_INFO1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC setting: UL_HISR2SR=%dms reset_drift=%dms", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_INFO1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: emac tx=%d rx=%d t2tx=%d t2rx=%d issue_time=%d nmac tx=%d rx=%d t2tx=%d t2rx=%d issue_time=%d sal_mode=%d ul_margin=%d dl_margin=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },  
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_INFO3": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: t2nextSR=%d t2nextDRX=%d t2nextULHISR=%d t2nextDLHISR=%d sph_l2_mode=%d is_4g_lch_on=%d is_5g_lch_on=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_INFO4_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: selected_sph_l2_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },     
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_INFO5": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: return with SPPS_is_trigger_mac_notify=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_INFO6": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: return with useless info(%d) TX_period=%d, time2nextTX=%d  RX_period=%d, time2nextRX=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_VOLTE_CALLOFF": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_emac_volte_calloff at sub_SP4G_emac_timing_update", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC1", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_1_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC1: drx_period=%d sr_period=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_1_INFO2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC1: time_to_next_on=%x time_to_trig_sr=%x ctime=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_1_OK": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC1: OK", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_1_SKIP": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC1: skip", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_EMAC_TIMING_UPDATE_RETURN": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_EMAC: return l2_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_GETSYNCDELAYRW_0": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_GetDelRW.0 %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_LTE_GETSYNCDELAYRW_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_GetDelRW.1 l2_mode= %d ctime = %d t2nextSR = %d t2nextDRX = %d t2nextULHISR = %d t2nextDLHISR = %d txperiod=%d rxperiod=%d time_emac_to_here= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_GETSYNCDELAYRW_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_GetDelRW.2 sal_mode=%d time2nextSR = %d TX_period= %d time2nextDRX = %d RX_period= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_LTE_GETSYNCDELAYRW_2_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_GetDelRW.2_1 offset_AAM = %d u16DelayR= %d u16DelayW = %d u16DelayM= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_LTE_GETSYNCDELAYRW_2_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_GetDelRW.2_2 offset_AAM invalid", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_EXECUTE_LTE_ON": {
+        "apiType": "index", 
+        "format": "PSAAM Execute_LTE_On", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_EXECUTE_LTE_OFF": {
+        "apiType": "index", 
+        "format": "PSAAM Execute_LTE_Off", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_EXECUTE_LTE_RESYNC": {
+        "apiType": "index", 
+        "format": "PSAAM Execute_LTE_Resync", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_0_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.0 mac_notify %d codec_mute=%d SP4G_ul_resync_info_available=%d %d l2_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_0_1_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.0 %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_1_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.1 t2nextSR=%d t2nextDRX = %d t2nextULHISR=%d t2nextDLHISR = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_1_1_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.1-1 Skip Resync", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_2_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.2 time_emac_2_aamhisr = %d time_2_nextHISR = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },                      
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_2_1_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.2-1 diff = %d  diff_mod=%d diff_mod_2=%d tx_period_min = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_2_2_INFO": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.2-2 adjust diff_mod = %d with DRIFT_DSP2MCU_RESET = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_3": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.3 t_req_resync = %d ctime = %d tdiff_req_resync = %d, ul_req_resync = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_4": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.4 %d %d %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_5_1": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.5-2 UL sync start(%d)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_5_2": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.5-3 UL sync skip(%d)", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_CHECK_STATUS_LTE_5_3": {
+        "apiType": "index", 
+        "format": "PSAAM CHK_STATUS_LTE.5-3 UL sync SPPS_is_aligned", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_HISR_1": {
+        "apiType": "index", 
+        "format": "PSAAM AAM_HISR is_ever_aligned = %d aam_result = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },    
+    {
+      "SP_PS_AAM_SMR_STATUS_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_SMR_STATUS.1 mac_notify %d codec_mute=%d SP4G_ul_resync_info_available=%d %d l2_mode=%d time[l2_mode][0]=%d ctime = %d t2nextSR = %d t2nextDRX = %d t2nextULHISR = %d t2nextDLHISR = %d txperiod=%d rxperiod=%d time_emac_to_here= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_SMR_STATUS_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_SMR_STATUS.2 sal_mode=%d time2nextSR = %d TX_period= %d time2nextDRX = %d RX_period= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_SMR_STATUS_2_1": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_SMR_STATUS.2_1 offset_AAM = %d u16DelayR= %d u16DelayW = %d u16DelayM= %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_SMR_STATUS_2_2": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_SMR_STATUS.2_2 offset_AAM invalid mac_notify %d codec_mute=%d SP4G_ul_resync_info_available=%d %d l2_mode=%d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_SMR_STATUS_3": {
+        "apiType": "index", 
+        "format": "PSAAM LTE_SMR_STATUS.3 ul_req_resync = %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAM_SMR_STATUS_3_1": {
+        "apiType": "index", 
+        "format": "PSAAM SMR sync start", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    },  
+    {
+      "SILENCE_DETECTION_SET_ULFRAMETYPE": {
+        "apiType": "index", 
+        "format": "Silence_Detec_set_ULType %d, %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_SET_DLFRAMETYPE": {
+        "apiType": "index", 
+        "format": "Silence_Detec_set_DLType %d, %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS0": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status 0", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS1": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status 1", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS2": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status 2", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS3": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status 3", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS4": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status 4", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SILENCE_DETECTION_GET_STATUS_INFO": {
+        "apiType": "index", 
+        "format": "Silence_Detec_get_status %d, %d, %d, %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAMPLUS_ENABLE": {
+        "apiType": "index", 
+        "format": "PSAAMPlus Enable", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAMPLUS_DISABLE": {
+        "apiType": "index", 
+        "format": "PSAAMPlus Disable", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAMPLUS_TALK": {
+        "apiType": "index", 
+        "format": "PSAAMPlus TALK", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAMPLUS_SILENCE_SID_FIRST": {
+        "apiType": "index", 
+        "format": "PSAAMPlus SILENCE SID first", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_AAMPLUS_SILENCE_SID_UPDATE": {
+        "apiType": "index", 
+        "format": "PSAAMPlus SILENCE SID update", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_DSP_OPT_TONEDETETASKINIT": {
+        "apiType": "index", 
+        "format": "PSDspOpt_ToneDeteTaskInit", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_DSP_OPT_TONEDETEEXEC": {
+        "apiType": "index", 
+        "format": "PSDspOpt_ToneDeteExec frame %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_PS_DSP_OPT_PATTERNDETECION": {
+        "apiType": "index", 
+        "format": "PSDspOpt_PatternDetecion frame: %d", 
+        "traceClass": "TRACE_SP_PS"
+      }
+    }, 
+    {
+      "SP_CC_L2P_Hdler": {
+        "format": "[SP_CC]SP_L2P_Hdlr  %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_L2P_Hdler_Err": {
+        "format": "[SP_CC]SP_L2P_Hdlr skip command: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_EVENT_HANDLER_ENTER": {
+        "format": "[SP_CC][event_handler] Enter event_id=%d param1=%d param2=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_EVENT_HANDLER_LEAVE": {
+        "format": "[SP_CC][event_handler] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_INVOKELCORE": {
+        "format": "[SP_CC]InvokeLCoreFunction %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_INVOKELCORE_INFO": {
+        "format": "[SP_CC]InvokeLCoreFunction %d %d %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_MSG_ID_AUDIO_L2P_SP3G_LOG_L1_INFO": {
+        "format": "[SP_CC]MSG_ID_AUDIO_L2P_SP3G_LOG_L1_INFO %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CC_SP_L2P_HANDLER_SKIP_COMMAND": {
+        "format": "[SP_CC]SP_L2P_Handler skip command: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_CHANGERAT_MODE": {
+        "format": "ChangeRAT_Mode %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_L4C_SETEVENT_ENTER": {
+        "format": "[SP_L4C_SetEvent] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_L4C_SETEVENT_LEAVE": {
+        "format": "[SP_L4C_SetEvent] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_M2M_HANDLER_SKIP_COMMAND": {
+        "format": "SP_M2M_Handler skip command: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SET_ISSTANDBYMODE": {
+        "apiType": "index", 
+        "format": "L1SP_Set_isStandByMode: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_L4C_SKIP_NETWORKNOTIFICATION": {
+        "apiType": "index", 
+        "format": "[SP_L4C_SetEvent] SKIP networknotification", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_EM_UPDATE_CODEC": {
+        "apiType": "index", 
+        "format": "[SP_updateEmCodec] isEmCodecNotifyOff=%d, updateUL(%d)/updateDL(%d), voc=%d, l1sp.state=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT_C_PARAM": {
+        "format": "[SPE]SetSpeechEnhancement,c_param 0~47", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT_M_PARAM": {
+        "format": "[SPE]SetSpeechEnhancement,m_param 0~47", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT_M_PARAM_WB": {
+        "format": "[SPE]SetSpeechEnhancement,m_param_wb 0~47", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT1": {
+        "format": "[SPE]SetSpeechEnhancement, SAL_ENH_Dynamic_State_Set(SAL_ENH_DYN_DDL_SET) \u0014done  ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT2": {
+        "format": "[SPE]SetSpeechEnhancement, SPE_WaitSPEDynready(SAL_ENH_DYN_DDL_SET) \u0014done  ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT3": {
+        "format": "[SPE]SetSpeechEnhancement, SAL_ENH_Dynamic_State_Set  ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT4": {
+        "format": "[SPE]SetSpeechEnhancement, SAL_ENH_Dynamic_State_Set done ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETSPEECHENHANCEMENT_SPE_WAITSPEDYNREADY_DONE": {
+        "format": "[SPE]SetSpeechEnhancement, SPE_WaitSPEDynready done ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETDYNAMICPARTOMD_NOT_FIND": {
+        "format": "[SPE]SetDynamicPartoMD can't find the ID number: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_SETDYNAMIC_SM": {
+        "format": "[SPE]SPE_SetDynamicStatemachine pos=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SPE_SET_EMI_INFO": {
+        "format": "[SPC][SPE] Set EMI INFO , Status: %d, offset : 0x%x, Len : 0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 	
+    {
+      "SPC_NOTIFY_NETWORK_STATUS": {
+        "apiType": "index", 
+        "format": "[SPC]spc_notify_network_status %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_NOTIFY_NETWORK_STATUS_SKIP": {
+        "format": "[SPC]spc_notify_network_status skip %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_PRINTS": {
+        "format": "[SPC]prints: %x, %d, %x, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AUDIOTASK_WAIT_EL1_RF_INIT": {
+        "format": "[SPC]AudioTask Wait EL1 RF Init for %d tick(s). ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_EPOF_SPC_FORCEENDALLAPP_NOTIFY_AP": {
+        "format": "[SPC] [EPOF]Spc_ForceEndAllApp notify AP", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_RECEIVEDYNAMICPARAMETER": {
+        "format": " %MAUD_SPC_DYNAMIC_PARAM_MAGICNUM_T(size=%d), comeFrom:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_DMNR_HEADER": {
+        "format": " [SPC][SPE]DMNR Header Check : %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_RECEIVEDYNAMICPARAMETER2": {
+        "format": "[SPC][SPE]spc_ReceiveDynamicParameter,Mode=%x,SpeechIndex=%x,Version=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_EMI_SPEECH_INFO": {
+        "format": "[SPC][SPE] Cehck EMI Speech Info Structure, State=%x,param_usip_index = %x, param_usip_len = %x, param_shm_valid=%x,param_path=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    },	
+    {
+      "SPC_SPE_CHECK_SPEECH_PAR_HEADER_FORMAT": {
+        "apiType": "index", 
+        "format": "[SPC][SPE]Ceheck speech psr. header format,Data_Header=%x\u0014,Network=%x", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_EMI_COMMON_PAR": {
+        "format": "[SPC][SPE]Check EMI Par. Common par : 0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_EMI_DBG_PAR": {
+        "format": "[SPC][SPE]Check EMI Par. DBG par : 0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_MODE_PAR": {
+        "format": "[SPC][SPE]Check NB mode par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_FIR_IN_PAR": {
+        "format": "[SPC][SPE]Check NB FIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_FIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check NB FIR out par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_IIR_IN_PAR": {
+        "format": "[SPC][SPE]Check NB IIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_IIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check NB IIR out  par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_MIC1_IIR_PAR": {
+        "format": "[SPC][SPE]Check NB MIC1 IIR par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_NB_MIC2_IIR_PAR": {
+        "format": "[SPC][SPE]Check NB MIC2 IIRpar [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_MODE_PAR": {
+        "format": "[SPC][SPE]Check WB mode par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_FIR_IN_PAR": {
+        "format": "[SPC][SPE]Check WB FIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_FIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check WB FIR out par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_IIR_IN_PAR": {
+        "format": "[SPC][SPE]Check WB IIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_IIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check WB IIR out  par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_MIC1_IIR_PAR": {
+        "format": "[SPC][SPE]Check WB MIC1 IIR par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_WB_MIC2_IIR_PAR": {
+        "format": "[SPC][SPE]Check WB MIC2 IIRpar [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_MODE_PAR": {
+        "format": "[SPC][SPE]Check SWB mode par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_FIR_IN_PAR": {
+        "format": "[SPC][SPE]Check SWB FIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_FIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check SWB FIR out par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_IIR_IN_PAR": {
+        "format": "[SPC][SPE]Check SWB IIR in par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_IIR_OUT_PAR": {
+        "format": "[SPC][SPE]Check SWB IIR out  par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_MIC1_IIR_PAR": {
+        "format": "[SPC][SPE]Check SWB MIC1 IIR par [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_CHECK_SWB_MIC2_IIR_PAR": {
+        "format": "[SPC][SPE]Check SWB MIC2 IIRpar [%x]: 0x%x,0x%x,0x%x,0x%x,0x%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPE_ASSERT_CHECK": {
+        "format": "[SPC][SPE]ASSERT!!, Par0:0x%x,Par1:0x%x,Par3:0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_CUST_DUMP_DROP": {
+        "apiType": "index", 
+        "format": "[SPC][cust dump]drop a frame of dump", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "SPE_DSP_CHECK_NB_FIR_PAR": {
+        "format": "[SPE]Check FIR NB IN/OUT par, FIR NB IN[0]= 0x%x,[1]= 0x%x, FIR OUT PAR[0]=0x%x,[1]= 0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_DSP_CHECK_WB_FIR_PAR": {
+        "format": "[SPE]Check FIR WB IN/OUT par, FIR WB IN[0]= 0x%x,[1]= 0x%x, FIR OUT PAR[0]=0x%x,[1]= 0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_DSP_CHECK_SWB_FIR_PAR": {
+        "format": "[SPE]Check FIR SWB IN/OUT par, FIR SWB IN[0]= 0x%x,[1]= 0x%x, FIR OUT PAR[0]=0x%x,[1]= 0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYOFF_1": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOff] 1", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYOFF_2": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOff] 2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYOFF_ENTER": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOff] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYOFF_LEAVE": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOff] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYON_1": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOn] 1", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYON_2": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOn] 2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYON_ENTER": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOn] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAYON_LEAVE": {
+        "format": "[TONEDRV][dtmf_dsp_PlayOn] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAY_ENTER": {
+        "format": "[TONEDRV][DTMF_DSP_Play] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_PLAY_LEAVE": {
+        "format": "[TONEDRV][DTMF_DSP_Play] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_START_ENTER": {
+        "format": "[TONEDRV][dtmf_dsp_Start] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DTMF_DSP_START_LEAVE": {
+        "format": "[TONEDRV][dtmf_dsp_Start] Leave", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOP_FLUSHQUEUE1": {
+        "format": "[TONE]toneStop_FlushQueue_1 %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOP_FLUSHQUEUE2": {
+        "format": "[TONE]toneStop_FlushQueue_2 %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOP1": {
+        "format": "[TONE]toneStop1 return", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOP2": {
+        "format": "[TONE]toneStop2 %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONEMUTE": {
+        "format": "[TONE]toneMute %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONEPLAY": {
+        "format": "[TONE]TONE_Play[%d]", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOP": {
+        "format": "[TONE]TONE_Stop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOPANDWAIT1": {
+        "format": "[TONE]TONE_StopAndWait_1", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "TONESTOPANDWAIT2": {
+        "format": "[TONE]TONE_StopAndWait_2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOPFLUSHQUEUE1": {
+        "format": "[KT]ktStop_FlushQueue_1 %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOPFLUSHQUEUE2": {
+        "format": "[KT]ktStop_FlushQueue_2 %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOP1": {
+        "format": "[KT]ktStop_1 return", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOP2": {
+        "format": "[KT]ktStop_2 %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTPLAY": {
+        "format": "[KT]KT_Play[%d]", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOP": {
+        "format": "[KT]KT_Stop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOPANDWAIT1": {
+        "format": "[KT]KT_StopAndWait_1", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "KTSTOPANDWAIT2": {
+        "format": "[KT]KT_StopAndWait_2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_READ_BYTE": {
+        "format": "Read %d bytes from media buffer", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_MD2G_PWR_CTRL": {
+        "format": "MD2G PWR CTRL, audioid= %d, flag = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_MD2G_PWR_CTRL_DONE": {
+        "format": "MD2G PWR CTRL DONE, audioid= %d, flag = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_SETFLAG_A": {
+        "format": "[AUDMD2G] L1Audio_SetFlag , audioid= %d, dspUser = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_CLEARFLAG_A": {
+        "format": "[AUDMD2G] L1Audio_ClearFlag, audioid= %d, dspUser = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_SETFLAG_MD2G_A": {
+        "format": "[AUDMD2G] L1Audio_SetFlag_MD2G , audioid= %d, dspUser = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_CLEARFLAG_MD2G_A": {
+        "format": "[AUDMD2G] L1Audio_ClearFlag_MD2G, audioid= %d, dspUser = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SETOPENDSP_FLAG": {
+        "apiType": "index", 
+        "format": "[SETOPENDSP]flag=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_PHONE_CALL": {
+        "apiType": "index", 
+        "format": "[PHONECALL]pos=%d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MODE_VALUE": {
+        "apiType": "index", 
+        "format": "[PHONECALL]param value: m0=%d, m1=%d, m2=%d, m3=%d, m4=%d, m5=%d, m6=%d, m7=%d, m8=%d, m9=%d, m10=%d, m11=%d, m12=%d, m13=%d, m14=%d, m15=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_COMMON_PARAM_VALUE": {
+        "apiType": "index", 
+        "format": "[PHONECALL]Common Param value: c0=%d, c1=%d, c2=%d, c3=%d, c4=%d, c5=%d, c6=%d, c7=%d, c8=%d, c9=%d, c10=%d, c11=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_DEV_MODE_SETTING": {
+        "apiType": "index", 
+        "format": "[SP_devInfo] before=%d, after=%d, beforeSr=%d, aferSr=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_EXT_DEV_SETTING": {
+        "apiType": "index", 
+        "format": "[SP_extDevInfo] dev=%d, extDev=%d, echoRefDelay=%d, micDelay=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SPEECH_ENHANCEMENT": {
+        "format": "L1SP turn on speech enhancement flag=0x%x, m0=%d, m1=%d, c0=%d, c1=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SET_MIC_VOL": {
+        "format": "L1SP Set Mic Vol %d, sph_par %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_ADAPT_MIC_VOL": {
+        "format": "L1SP Adapt Mic Vol %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_INC_SPK_VOL": {
+        "format": "L1SP DSP Inc Spk Vol to %d, report %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_L4C_SEND_CODEC": {
+        "apiType": "index", 
+        "format": "L1SP L4C Send Codec codec=%x l4c_codec=%x pre_l4c_codec=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_L4C_SEND_CODEC_SKIP": {
+        "apiType": "index", 
+        "format": "L1SP L4C Send Codec_Skip codec=%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_L4C_SEND_CODEC_SKIP2": {
+        "apiType": "index", 
+        "format": "L1SP L4C Send Codec_Skip without SpeechOn ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+	{
+      "L1SP_L4C_SEND_CODEC_SKIP3": {
+        "apiType": "index", 
+        "format": "L1SP L4C Send Codec_Skip pre_l4c_codec=%x ", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "L1SP_L4C_EVENT": {
+        "apiType": "index", 
+        "format": "L1SP L4C Event %d mode=%d pre_mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_CONTROL_STATUS": {
+        "apiType": "index", 
+        "format": "L1SP MuteControl(%x) apULmute=%x apDLmute=%x codec_mute=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_NOTIFY_NETWORK_STATUS": {
+        "apiType": "index", 
+        "format": "[L1SP]l1sp_notify_network_status %d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP_M2M_HANDLER": {
+        "apiType": "index", 
+        "format": "[L1SP]SP_M2M_HANDLER %d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_EXCEPTION": {
+        "format": "[DATACARD]Expection %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_OPEN_PORT": {
+        "format": "[DATACARD]mode=%d port %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_GET_DATA": {
+        "format": "[DATACARD]Audl Get %d Bytes from mode=%d, ori req %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_PUT_DATA": {
+        "format": "[DATACARD]Audl Put %d Bytes to mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_BUFFER_IDX": {
+        "format": "[DATACARD]ss_buf_idx %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_PLUGIN": {
+        "format": "[DATACARD]PlugIn mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_STRM_ENABLE": {
+        "format": "[DATACARD]Enable mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_STRM_DISABLE": {
+        "format": "[DATACARD]Disable mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_REQUEST_EXCHANGE_DL_DATA": {
+        "format": "[DataCard]##l1audio Enter MSG_SAC2L1AUDIO_SPEECH_DATACARD_REQUEST_EXCHANGE_DL_DATA is_strmOn=%d dl_ready=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_REQUEST_EXCHANGE_UL_DATA": {
+        "format": "[DataCard]##l1audio Enter MSG_SAC2L1AUDIO_SPEECH_DATACARD_REQUEST_EXCHANGE_UL_DATA is_strmOn=%d ul_ready=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_UL_HAS_NO_DATA": {
+        "format": "[DataCard]##l1audio UL has no data", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_UL_HAS_DATA": {
+        "format": "[DataCard]##l1audio UL has data", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_LEAVE_REQUEST_EXCHANGE_UL_DATA": {
+        "format": "[DataCard]##l1audio Leave MSG_SAC2L1AUDIO_SPEECH_DATACARD_REQUEST_EXCHANGE_UL_DATA", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_STRMONHANDLER": {
+        "format": "[DataCard]##spStrmOnHandler", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_STRMOFFHANDLER": {
+        "format": "[DataCard]##spStrmOffHandler", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_GETDATA1": {
+        "format": "[DataCard]##Enter GetData1 is_strmOn=%d ul_ready=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_GETDATA2": {
+        "format": "[DataCard]##Enter GetData2", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_ENTER_PUTDATA1": {
+        "format": "[DataCard]##Enter PutData1 is_strmOn=%d dl_ready=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_GET_SUFFICIENT_DATA": {
+        "format": "[DataCard]##GetData Data sufficient", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_GET_INSUFFICIENT_DATA": {
+        "format": "[DataCard]##GetData Data Insufficient", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "DACA_LEAVE_GETDATA": {
+        "format": "[DataCard]##Leave GetData", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_USELESS_SET": {
+        "format": "SPH[ENH] %d, %d, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_ILLEGAL_SPC_APP_BEHAVIOR_CHECK": {
+        "format": "[SPC] Illegle app control to turn on %MMSG_SPC_APP_T when (%d)%MMSG_SPC_APP_T, gSpc.spcAppUsage=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_ILLEGAL_SPC_APP_BEHAVIOR": {
+        "format": "[SPC] Illegle app control with (%d)%MMSG_SPC_APP_T, to On/Off=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_APP_DATA_SEND_FAIL": {
+        "format": "[SPC] (%d)%MMSG_SPC_APP_T app send data fail at pos %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_M2A_DROP": {
+        "format": "[SPC] Drop app (%d)%MMSG_SPC_APP_T data send, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_INVALID_MSG": {
+        "apiType": "index", 
+        "format": "[SPC]INVALID CCCI A2M MSG (%08X)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_M2A_DONE": {
+        "format": "[SPC] CCCI A2M %x done", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPEECH_ON": {
+        "format": "Spc_Speech_On %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPH_ON_MISMATCH_PAYLOAD_SIZE": {
+        "format": "Spc_Speech_On, ap&md payload size mismatch: apLen=%d, mdHeaderLen=%d, mdStructLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPEECH_ON_PAYLOAD": {
+        "apiType": "index", 
+        "format": "Spc_Speech_On, app:%d, bt:%d, sr:%d, openDsp:%d, paramPath:%d, shmValid:%d, paramSize:%d, idx:%d, extDevInfo:%d, muteMask=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPEECH_OFF": {
+        "format": "Spc_Speech_Off", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_SPEECH_ON_DTMF_SUPPORT": {
+        "format": "Spc_Speech_On, dtmf support:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "SPC_SET_DROP_UL_MUTE": {
+        "apiType": "index", 
+        "format": "spc_gain_UlMuteSet mute is not apply", 
+        "traceClass": "TRACE_STATE"
+      }
+    }, 
+    {
+      "SPC_SET_DROP_DL_MUTE": {
+        "apiType": "index", 
+        "format": "spc_gain_DlMuteSet mute is not apply", 
+        "traceClass": "TRACE_STATE"
+      }
+    },  
+    {
+      "SPC_SET_DROP_UL_SOURCE_MUTE": {
+        "apiType": "index", 
+        "format": "spc_gain_UlSourceMuteSet mute is not apply", 
+        "traceClass": "TRACE_STATE"
+      }
+    },
+	{
+      "SPC_SET_DROP_DL_CODEC_MUTE": {
+        "apiType": "index", 
+        "format": "spc_gain_DlMuteCodecSet mute is not apply", 
+        "traceClass": "TRACE_STATE"
+      }
+    },	
+    {
+      "SPC_SET_DROP_DL_MUTE_WITH_POS": {
+        "apiType": "index", 
+        "format": "spc_gain_DlMuteSet_withPos mute is not apply", 
+        "traceClass": "TRACE_STATE"
+      }
+    },
+    {
+      "SPC_EM_DEFAULT_INIT": {
+        "apiType": "index", 
+        "format": "spc_EmInit, default used common=%d, wb=%d, dmnr=%d, lspkDmnr=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_DROP_SET": {
+        "apiType": "index", 
+        "format": "[SPC] drop seting 0x%08X [(0x%04X)%MAUD_CCCI_MSG_T], data16 = 0x%04X, data32 = 0x%08X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_EPOF_NOTIFY": {
+        "apiType": "index", 
+        "format": "[SPC] Receive EPOF from L4C, application usage = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_CODEC_NOTIFY_IN": {
+        "apiType": "index", 
+        "format": "[SPC][Codec] enter spc_codecInfoNotify. orgCodec=%x, newCodec=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_CODEC_NOTIFY_TO_AP": {
+        "apiType": "index", 
+        "format": "[SPC][Codec] send AP Info codecInfo=\\\"%s\\\", codecOp=\\\"%s\\\"", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_CODEC_NOTIFY_UNKNOW": {
+        "apiType": "index", 
+        "format": "[SPC][Codec] Unknow codec = %x, rr =%x, pos=%d", 
+        "traceClass": "TRACE_WARNING"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_INFO": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]info enable=%d, flag=0x%x, delay=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_FROM_MIC": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]FromMic %d %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_SKIP_MIC": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]Skip FromMic", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_TO_SE": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]ToSE %d %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_FILL_SE": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]FillSE", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_FROM_SD": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]FromSD %d %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_SKIP_SD": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]Skip FromSD", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_TO_SPK": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]ToSPK %d %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_HISR_UL": {
+        "apiType": "index",
+        "format": "[SPC AC Loopback]Extcodec_hisr_dl",
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "SPC_AC_LOOPBACK_HISR_DL": {
+        "apiType": "index",
+        "format": "[SPC AC Loopback]Extcodec_hisr_ul",
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "SPC_AC_LOOPBACK_HISR_SKIP": {
+        "apiType": "index",
+        "format": "[SPC AC Loopback]Extcodec stop hisr skip",
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "SPC_AC_LOOPBACK_FILL_SPK": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]FillSpk", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_AC_LOOPBACK_UL_DL_INDEX": {
+        "apiType": "index", 
+        "format": "[SPC AC Loopback]Dw, Dr, Uw, Ur %d %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_NOTIFY_NETWORK_STATUS_INFO": {
+        "apiType": "index", 
+        "format": "[SPC_NOTIFY_NETWORK_STATUS]tmp:%x isWB:%x RAT:%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SPE_CTRL_UPDATE": {
+        "format": "L1SP Set Enhancement ctrol update,ENH ctrl=0x%x, enhPath=0x%x, Network info=0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SET_ENHANCEMENT_SUB_MASK": {
+        "format": "L1SP Set Enhancement submask[%d]=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_ENHANCE_ON_OFF": {
+        "format": "[SPE]L1SP turn enhance =%d, with state=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPE_AGC_CONFIG_INFO": {
+        "format": "[SPE]AGC turnOff/On/Other=%d, gain=0x%x, isEchoRefOn=%d, micInfo=0x%x, dspParam=0x%x, enhMasEchoRef=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SET_ENH_FIR": {
+        "format": "SPH[ENH] enhancement mode %d, enhance Index %d, inFIR Index %d, outFIR Index %d, updateMask %d to value %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_CHANGE_ENH_MODE": {
+        "format": "SPH[ENH] ChangeSpeechMode premode=%d, aftermode=%d, currentMode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_WRITE_FIR": {
+        "format": "SPH[ENH] Write FIR isWB=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_SET_MIC_GAIN_CONTROL": {
+        "format": "[MIC GAIN CONTROL]L1SP set mic gain control %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_ADAPT_MIC_GAIN_CONTROL": {
+        "format": "[MIC GAIN CONTROL]L1SP adapt mic gain control %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_UL_CODEC_CONTROL": {
+        "apiType": "index", 
+        "format": "[MUTE] AM_Mute_UL_Codec_Speech: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_UL_POS_EN_CONTROL": {
+        "format": "[MUTE] AM_Mute_UL_POS_EN_Speech: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_DL_TRAFFIC_CONTROL": {
+        "apiType": "index", 
+        "format": "[MUTE] AM_Mute_DL_Speech_Traffic: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_DL_8K_CONTROL": {
+        "format": "[MUTE] AM_Mute_DL_8k_Speech: %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_UL_ENH_RESULT_CONTROL": {
+        "apiType": "index", 
+        "format": "[MUTE] mute dsp uplink enhancement result(inAM): %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_UL_SOURCE_CONTROL": {
+        "apiType": "index", 
+        "format": "[MUTE] mute dsp uplink source(inAM): %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_CONTROL": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] pos=%d, mute Point: %d, State: %d, Mute: %d, am state: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_QUEUE_FULL": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] RAMP queue is full", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_QUEUE_EMPTY": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] RAMP queue is empty", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_DONE_STATE": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] mute_state %d, rampPoint %d am.state %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_DELAY_MUTE": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] delay mute, may pop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_DELAY_UNMUTE": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] delay mute, may pop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_FORCE_MUTE": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] force mute, may pop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1SP_MUTE_DSP_RAMP_FORCE_UNMUTE": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] force unmute, may pop", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_MUTE_DSP_RAMP_ACK_POINT": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] spc RampWaitAck points %x, ramp point %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPC_MUTE_DSP_RAMP_NO_ACK": {
+        "apiType": "index", 
+        "format": "[MUTE RAMP] No need to send ack", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_HISR_SKIP": {
+        "apiType": "index", 
+        "format": "SP3G UL_HISR SKIP %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_CODEC_READY_SKIP": {
+        "format": "SP3G Skip Callback of Codec_Ready  %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_CODEC_CLOSE_SKIP": {
+        "format": "SP3G Skip Callback of Codec_Close  %d %d %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_CODEC_READY_OK": {
+        "format": "SP3G OK Callback of Codec_Ready  %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_CODEC_CLOSE_OK": {
+        "format": "SP3G OK Callback of Codec_Close  %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_PUT_SPEECH_FRAME_DEBUG": {
+        "format": "SP3G DL return %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_PUT_SPEECH_FRAME_DEBUG": {
+        "format": "SP3G UL return %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1D_RESYNC_UPDATE": {
+        "apiType": "index", 
+        "format": "[SP3G L1D Resync]Update %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1D_RESYNC_RESET": {
+        "format": "[SP3G L1D Resync]Reset", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_L1D_Resync_Skip": {
+        "apiType": "index", 
+        "format": "[SP3G L1D Resync] skip", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_L1D_Resync": {
+        "apiType": "index", 
+        "format": "[SP3G L1D Resync] %d offeset=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DEBUG_UL_SETFRAMETYPE": {
+        "format": "[DEBUG]SP3G_UL_SetFrameType%d %d %d ftype=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DEBUG_UL_GETSPEECHFRAME": {
+        "apiType": "index", 
+        "format": "Debug_UL_GetSpeechFrame %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_SYNC": {
+        "format": "SP3G_HISR 3g_sync=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DEBUG_UL_BUFF": {
+        "apiType": "index", 
+        "format": "#debug_ul_buff(6) %d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RAB_EST_0": {
+        "format": "[PhoneCall3G] SP3G_Rab_Est state=%d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RAB_DEEST_0": {
+        "format": "[PhoneCall3G] SP3G_Rab_Deest state=%d ", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RAB_EST": {
+        "format": "SP3G CSR notify RAB establish", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RAB_DEEST": {
+        "format": "SP3G CSR notify RAB De-establish", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_TX_SID_FIRST": {
+        "format": "SP3G_HISR TX SID FISRT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RX_FORCE_NO_DATA_WHEN_CHANGE_BAND": {
+        "format": "SP3G_HISR RX Band Change,force speech frame to NO_DATA", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_TX_SID_UPDATE": {
+        "format": "SP3G_HISR TX SID UPDATE", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RX_SID_FIRST": {
+        "format": "SP3G_HISR RX SID FISRT", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RX_SID_UPDATE": {
+        "format": "SP3G_HISR RX SID UPDATE", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_RX_NO_DATA": {
+        "format": "SP3G_HISR RX GET NO DATA FRAME", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DTX_NO_DATA": {
+        "format": "SP3G_HISR INSERT NO DATA", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_BUFFER_STATUS": {
+        "format": "SP3G_HISR DL r = %d, w = %d, num = %d, 1st byte = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_DELAY": {
+        "format": "SP3G UL delay %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_REQUEST": {
+        "format": "SP3G Request", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_REQUEST_UL_FRAME_TYPE": {
+        "apiType": "index", 
+        "format": "SP3G set UL frame type %Mem_csr_SpeechCodecType", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_GET_SPEECH_FRAME": {
+        "apiType": "index", 
+        "format": "SP3G UL GetSpFrame", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_GET_SPEECH_FRAME_SKIP": {
+        "apiType": "index", 
+        "format": "SP3G UL GetSpFrame %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_BUFFER_FINISH": {
+        "format": "SP3G DL Buffering finished", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_PUT_SPEECH_FRAME": {
+        "format": "SP3G DL sub_flow %d, frame_type %Mem_csr_SpeechCodecType, crc_status %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_LOG_L1_INFO": {
+        "format": "SP3G CFN=%x, l1info=%x, crc = %x, s_val =%x, %x, %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_L1A_UPDATE_INFO": {
+        "apiType": "index", 
+        "format": "SP3G Update Info bitmap %d, val %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_INVALID_UL_CODEC_MODE": {
+        "apiType": "index", 
+        "format": "SP3G invalid UL codec mode %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_SET_DTX": {
+        "format": "SP3G Set DTX %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_BIT_TRUE_DSP_F8": {
+        "apiType": "index", 
+        "format": "SP3GHISR UL DSP len %d, %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_BIT_TRUE_DSP_N8": {
+        "apiType": "index", 
+        "format": "SP3GHISR UL DSP %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_TX_SPEECH_GOOD": {
+        "apiType": "index", 
+        "format": "SP3G_HISR UL is TX_SPEECH_GOOD", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_NO_DATA": {
+        "apiType": "index", 
+        "format": "SP3G_HISR UL is NO DATA", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_BIT_TRUE_F8": {
+        "apiType": "index", 
+        "format": "SP3G_HISR=%d UL Type %Mem_csr_SpeechCodecType, Frm %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_BIT_TRUE_N13": {
+        "apiType": "index", 
+        "format": "SP3G UL %hx %hx %hx %hx %hx %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_BUFFER": {
+        "apiType": "index", 
+        "format": "SP3GVT UL cnt=%d,r=%d,w=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_BIT_TRUE": {
+        "apiType": "index", 
+        "format": "SP3G_HISR DL Type %d, Frm %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_BIT_TRUE_TASK": {
+        "apiType": "index", 
+        "format": "SP3G DL Frm %x %x %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_BIT_TRUE_DSP_F8": {
+        "apiType": "index", 
+        "format": "SP3GHISR DL DSP len %d, %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_BIT_TRUE_DSP_N8": {
+        "apiType": "index", 
+        "format": "SP3GHISR DL DSP %hx %hx %hx %hx %hx %hx %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_FAKE_NODATA": {
+        "format": "SP3GVT Fake NoData", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_DL_TIMING": {
+        "apiType": "index", 
+        "format": "SP3G DL Timing %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_TIMING": {
+        "apiType": "index", 
+        "format": "SP3G UL Timing %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_D2M_UL_TIMING_MODIFY": {
+        "format": "SP3G D2M UL Timing MODIFY: LISR_64us=%x, HISR_64us=%x, diff_us=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_D2M_UL_TIMING": {
+        "apiType": "index", 
+        "format": "SP3G D2M UL Timing %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_D2M_DL_TIMING": {
+        "apiType": "index", 
+        "format": "SP3G D2M DL Timing %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_FORCE_NODATA_WHEN_RESYNC": {
+        "apiType": "index", 
+        "format": "SP3G force one AMR_NO_DATA frame before resync", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_UL_DSP_NOT_READY_WARNING_AND_FILL_SILENCE": {
+        "apiType": "index", 
+        "format": "SP3G_HISR UL NOT READY, Force Using Silence Pattern", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_FOUND_UL_SYNC_TIMING_ERROR": {
+        "apiType": "index", 
+        "format": "SP3G found UL resync timing error", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_FOUND_DL_SYNC_TIMING_ERROR": {
+        "apiType": "index", 
+        "format": "SP3G found DL resync timing error", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_SKIP_UL_REFRESH": {
+        "apiType": "index", 
+        "format": "SP3G SKIP UL REFRESH ul_report=%d ul_codec_mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_HSPA_UL_GET_SPEECH_FRAME": {
+        "apiType": "index", 
+        "format": "SP3GHSPA UL GetSpFrame type %Mem_csr_SpeechCodecType, len %d, %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_HSPA_DL_PUT_SPEECH_FRAME": {
+        "format": "SP3GHSPA DL PutSpFrame type %Mem_csr_SpeechCodecType, CFN %d, crc %d, %hx %hx", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3G_HSPA_DL_MAX_CS_DELAY": {
+        "format": "SP3GHSPA set Max CS delay %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_UL_GET_SPEECH_FRAME": {
+        "format": "SP3GVT UL GetSpFrm, CurFrmCount %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_UL_FRAME_INFO": {
+        "format": "SP3GVT UL Frm len %d, first 3 byte %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_DL_FRAME_INFO": {
+        "format": "SP3GVT DL Frm len %d, first 3 byte %x %x %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_DL_FRAME_ERROR": {
+        "format": "SP3GVT DL FrmType Err Warning %d !!", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SP3GVT_SET_DELAY": {
+        "format": "SP3GVT SetDelay %d ms, about %d frame", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_SENDVMDATA_INFO": {
+        "apiType": "index", 
+        "format": "vm prints: %x, %d, %x, %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_SP3G_VM_L1T": {
+        "format": "[VMREC] SP3G VM L1T %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_REC_DEBUG_INFO": {
+        "apiType": "index", 
+        "format": "[VMREC] VM_DEBUG_INFO = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_REC_HISR_VM_DATA_LOST": {
+        "apiType": "index", 
+        "format": "[VMREC] hisr data lost with count=%d, pos = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_REC_HISR_PCM_DATA_LOST": {
+        "apiType": "index", 
+        "format": "[VMREC] some vm's pcm data is missing, pos = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_HISR_LOCK_NOT_AVALIABLE": {
+        "apiType": "index", 
+        "format": "[VMREC] vm lcok is not avaiable in pos = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_INFO1": {
+        "format": "[vmFormatter_gseries] vm.control_1=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_INFO2": {
+        "format": "[vmFormatter_gseries] vm.control_2=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_ULSTREAM_ENTER": {
+        "format": "[vmStoreGCodecULStream] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_ULSTREAM_INFO1": {
+        "format": "[vmStoreGCodecULStream] u32TotalBufferSize=%d, vmGCodecULBufWritePos=%d, u16Stream2byteSize=%d, u16StreamSize=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_ULSTREAM_INFO2": {
+        "format": "[vmStoreGCodecULStream] data 2byte size is large than available buffer 2byte size, data 2byte size=%d, available buffer 2byte size=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_ULSTREAM_INFO3": {
+        "format": "[vmStoreGCodecULStream] data 2byte size is large than total buffer 2byte size, data 2byte size=%d, total buffer 2byte size=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_ULSTREAM_EXIT": {
+        "format": "[vmStoreGCodecULStream] Exit", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_DLSTREAM_ENTER": {
+        "format": "[vmStoreGCodecDLStream] Enter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_DLSTREAM_INFO1": {
+        "format": "[vmStoreGCodecDLStream] u32TotalBufferSize=%d, vmGCodecDLBufWritePos=%d, u16Stream2byteSize=%d, u16StreamSize=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_DLSTREAM_INFO2": {
+        "format": "[vmStoreGCodecDLStream] data 2byte size is large than available buffer 2byte size, data 2byte size=%d, available buffer 2byte size=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_DLSTREAM_INFO3": {
+        "format": "[vmStoreGCodecDLStream] data 2byte size is large than total buffer 2byte size, data 2byte size=%d, total buffer 2byte size=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_GFORM_DLSTREAM_EXIT": {
+        "format": "[vmStoreGCodecDLStream] Exit", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_VMRECORDHISR_G_CODEC": {
+        "format": "[vmrec]vmRecordHisr record 4G G-serial codec", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_TCHPCMHISR_G_CODEC": {
+        "format": "[vmrec]vmTchPcmRecordHisr record 4G G-serial codec", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "VM_TCHRECORDHISR_G_CODEC": {
+        "format": "[vmrec]vmTchRecordHisr record 4G G-serial codec", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_TONE_LOOPBACK_REC_CALLBACK_MODE": {
+        "format": "TONE_LOOPBACK_REC: callback Mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_TONE_LOOPBACK_REC_MODE": {
+        "format": "TONE_LOOPBACK_REC: Mode=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPCIO_INVALID_MSG": {
+        "apiType": "index", 
+        "format": "INVALID SPCIO MSG ID(%08X), data (%08X) with reserved (%08X)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPCIO_INVALID_MSG_BEFORE_QUEUE_READY": {
+        "apiType": "index", 
+        "format": "Before queue ready, INVALID SPCIO MSG ID(%08X), data (%08X) with reserved (%08X)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+	{
+      "SPC_ECALL_CHECK_TX_CTRL_HEADER": {
+        "apiType": "index", 
+        "format": "[eCall]Check eCall TX Ctrl Header : %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_TX_CTRL_STATE": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_TX_CTRL_State, Header = 0xAA, [%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_TX_CTRL_DATA": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_TX_CTRL_dlDate, Header =0xBB,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_TX_CTRL_METRIC": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_TX_CTRL_dlMetric, Header =0xCC,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_RX_CTRL_STATE": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_RX_CTRL_State, Header = 0xDD, [%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_RX_CTRL_DATA": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_RX_CTRL_dlData, Header =0xEE,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_RX_CTRL_METRIC": {
+        "apiType": "index", 
+        "format": "[eCall] eCall_RX_CTRL_dlMetric, Header =0xFF,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d,[%x]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_IVS_SEND_PAR_CTRL_SWITCH": {
+        "apiType": "index", 
+        "format": "[eCall]Set_eCall_Par_Crtl_Switch=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "SPC_SEND_DATA_TO_AP_FAIL": {
+        "apiType": "index", 
+        "format": "[eCall] Send Enc Data to AP Fail!", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_MSD_RV_SENT": {
+        "apiType": "index", 
+        "format": "[eCall] MSD RV%hd has been sent", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_RX_RECV_LL_DATA": {
+        "apiType": "index", 
+        "format": "[eCall] received LL DL-Data", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_RX_RECV_HL_DATA": {
+        "apiType": "index", 
+        "format": "[eCall] received HL DL-Data", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_DEMOD_INFO": {
+        "apiType": "index", 
+        "format": "[eCall] msg = %s, metric = %d, maxCorr = %d, runnerup = %d, IVS_THRESHOLD = %u", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_DEMOD_UNRELIALBE1": {
+        "apiType": "index", 
+        "format": "[eCall] msg is unreliable: maxCorr < IVS_THRESHOLD", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_DEMOD_UNRELIALBE2": {
+        "apiType": "index", 
+        "format": "[eCall] msg is unreliable: (maxCorr-runnerup)/(maxCorr/100) <= 33", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "ECALL_IVS_ECALL_HANDSHAKE_INFO_NOTIFY": {
+        "apiType": "index", 
+        "format": "[eCall][IVS] eCall Handshake info notify,Header =%x,Data=%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    },		
+    {
+      "L1AUDIO_DDLOAD_STATUS_FAIL": {
+        "apiType": "index", 
+        "format": "[DDLoad]DSP Status Not Clear", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_DDLOAD_STATUS_SUCCESS": {
+        "apiType": "index", 
+        "format": "[DDLoad]DDLoad success", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_DDLOAD_ID": {
+        "apiType": "index", 
+        "format": "[DDLoad]DDLoad ID = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_DRV_OPEN": {
+        "format": "[eCall]IVS Driver Open %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_DRV_CLOSE": {
+        "format": "[eCall]IVS Driver Close", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_DRV_PUT_MSD": {
+        "format": "[eCall]IVS Driver PutMSD %d,%d,%d,%d,%d,%d,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_DRV_MSD_SET": {
+        "format": "[eCall]IVS Driver MSD from %d, msdSet %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_DRV_SEND_START": {
+        "format": "[eCall]IVS Driver SendStart", 
+        "traceClass": "TRACE_INFO"
+      }
+    },	
+    {
+      "ECALL_IVS_DRV_CATCH_EVENT": {
+        "format": "[eCall]IVS Driver Catch Event %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_DRV_MSD_NOT_SET": {
+        "format": "[eCall]IVS Driver MSD not set, ignore notify", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_DRV_HLACK": {
+        "format": "[eCall]IVS Driver HLACK. Expect %d, Received %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_DRV_ALLOCMEM_NULL": {
+        "format": "[eCall]IVS Driver CallModemIVS->allocMem is NULL", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_DRV_CATCH_EVENT": {
+        "format": "[eCall]PSAP Driver Catch Event %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_DRV_RECEIVE_MSD": {
+        "format": "[eCall]PSAP Driver Received MSD", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_DRV_MSD_DATA": {
+        "format": "[eCall]PSAP MSD %3d %3d %3d %3d %3d %3d %3d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_SENDSTART": {
+        "format": "[eCall]IVS SendStart received from control", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_SENDSTART_IGNORE": {
+        "format": "[eCall]IVS SendStart received from control, ignored", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RX_RESET": {
+        "format": "[eCall]IVS reset receiver", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_TX_RESET": {
+        "apiType": "index", 
+        "format": "[eCall]IVS reset transmitter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_TX_RESET_MSD_PROVIDED": {
+        "format": "[eCall]IVS reset transmitter (MSD provided)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_SENDSTART_DUR_MSD_IGNORE": {
+        "format": "[eCall]IVS SendStart during MSD transmission, ignored.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_SENDING_SEND": {
+        "format": "[eCall]IVS sending  SEND", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_FULL_RESET": {
+        "format": "[eCall]IVS full reset (no sync detected)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_IGNORING_HLACK": {
+        "format": "[eCall]IVS ignoring additional HLACK (data: 0x0%X, metric: %3d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_HLACK_FINISHED": {
+        "format": "[eCall]IVS received HLACK (data: 0x0%X, metric: %3d), finished.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_HLACK_WAITING": {
+        "format": "[eCall]IVS received HLACK (data: 0x0%X, metric: %3d), waiting...", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_START_LOW_RELIABILITY": {
+        "format": "[eCall]IVS received START !> ignoring message (reliability too low)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_START_TOO_OFTEN": {
+        "format": "[eCall]IVS received START (metric: %3d) too often starting over...", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_START_STARTING": {
+        "format": "[eCall]IVS received START (metric: %3d), starting...", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_FAST_MODULATOR": {
+        "format": "[eCall]IVS fast modulator chosen (NACK count: %d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_ROBUST_MODULATOR": {
+        "format": "[eCall]IVS robust modulator chosen (NACK count: %d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_START": {
+        "format": "[eCall]IVS received START (metric: %3d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_START_AFTER_ACK": {
+        "format": "[eCall]IVS START ... !> assuming previous ACK was wrong", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_START_AFTER_HLACK": {
+        "format": "[eCall]IVS START ... !> assuming previous HLACK was wrong", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_NACK_EXCEPTING_START": {
+        "format": "[eCall]IVS received NACK  !> ignoring message (expecting START)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_NACK_LOW_RELIABILITY": {
+        "format": "[eCall]IVS received NACK  !> ignoring message (reliability too low)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_NACK_ASSUME_IDLE": {
+        "format": "[eCall]IVS received NACK  !> ignoring message (assume IDLE)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_NACK_FIRST_TIME": {
+        "format": "[eCall]IVS received NACK  (metric: %3d), first time", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_NACK": {
+        "format": "[eCall]IVS received NACK  (metric: %3d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_NACK_AFTER_ACK": {
+        "format": "[eCall]IVS NACK ... !> assuming previous ACK was wrong", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_NACK_AFTER_HLACK": {
+        "format": "[eCall]IVS NACK ... !> assuming previous HLACK was wrong", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK_EXPECTING_START": {
+        "format": "[eCall]IVS received ACK   !> ignoring message (expecting START)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK_RECORDED": {
+        "format": "[eCall]IVS received ACK   !> ignoring message (already recorded)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK_LOW_RELIABILITY": {
+        "format": "[eCall]IVS received ACK   !> ignoring message (reliability too low)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK_ASSUME_IDLE": {
+        "format": "[eCall]IVS received ACK   !> ignoring message (assume IDLE)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK": {
+        "format": "[eCall]IVS received ACK   (metric: %3d), ACK recorded, wait for HLACK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_ACK_WAITING": {
+        "format": "[eCall]IVS received ACK   (metric: %3d), waiting...", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_ACK_AFTER_HLACK": {
+        "format": "[eCall]IVS ACK ... !> assuming previous HLACK was wrong", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_IDLE_EXPECTING_START": {
+        "format": "[eCall]IVS received IDLE  !> ignoring message (expecting START)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_IDLE_IGNORE": {
+        "format": "[eCall]IVS received IDLE  !> ignoring message", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_IVS_MODEM_RECEIVED_IDLE_REMAINING": {
+        "format": "[eCall]IVS remaining in IDLE mode", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_DETECTED": {
+        "format": "[eCall]sync detected; delay: %+4d; npeaks: %+4d (inverted sync)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_DETECTED_REGULAR": {
+        "format": "[eCall]sync detected; delay: %+4d; npeaks: %+4d (regular sync)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_MAX_RANGE": {
+        "format": "[eCall]maximum sync checking range is [-480...480] samples", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_DETECTE_SLIP": {
+        "format": "[eCall]sync check detects sample slip! [%+1d sample(s)]", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_PSAP_MAX_RANGE": {
+        "format": "[eCall][PSAP] maximum sync tracking range is [-240...240] samples", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_SYNC_PSAP_SLIP": {
+        "format": "[eCall][PSAP] sync tracking detects sample slip! [%+1d sample(s)]", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_CONTROL_PORT_UNDEFINE": {
+        "format": "[eCall]control callback: port owner undefined.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_CONTROL_SYNC_LOCKED": {
+        "format": "[eCall]sync locked, starting control message detection", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_CONTROL_CODEC_INVERSION": {
+        "format": "[eCall]codec inversion detected!", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_CONTROL_MESSAGE_IGNORE": {
+        "format": "[eCall]message ignored (bad sync check)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_SEND_CONTROL": {
+        "format": "[eCall][PSAP] SendStart received from control", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_SEND_OVER": {
+        "format": "[eCall][PSAP] SendStart received, starting over...", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_SEND_IGNORE": {
+        "format": "[eCall][PSAP] SendStart received from control, ignored.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_HLACK": {
+        "format": "[eCall][PSAP] HLACK data received from control", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_HLACK_IGNORE": {
+        "format": "[eCall][PSAP] HLACK data received from control, ignored.", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RESET_RECEIVER": {
+        "format": "[eCall][PSAP] reset receiver", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RESET_TRANSMITTER": {
+        "format": "[eCall][PSAP] reset transmitter", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_SEND": {
+        "format": "[eCall][PSAP] received SEND (metric: %3d), initiating START trigger", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_INVERSION_DETECT": {
+        "format": "[eCall][PSAP] codec inversion detected!", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_INVERSION_SYNC": {
+        "format": "[eCall][PSAP] codec inversion detected (sync observer)!", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RESTART": {
+        "format": "[eCall][PSAP] restart due to tracking failures!", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_CRC_FAIL": {
+        "format": "[eCall][PSAP] CRC failed; rv = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_RECEIVED_MSD": {
+        "format": "[eCall][PSAP] MSD successfully received; redundancy versions: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_SENDING_HLACK": {
+        "format": "[eCall][PSAP] sending HLACK; data: 0x0%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_SENDING_START": {
+        "format": "[eCall][PSAP] sending START", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_SENDING_NACK": {
+        "format": "[eCall][PSAP] sending NACK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_SENDING_ACK": {
+        "format": "[eCall][PSAP] sending ACK", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_SENDING_ACK_PEND": {
+        "format": "[eCall][PSAP] sending ACK (HLACK pending)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_FAST_REMAIN_IDLE": {
+        "format": "[eCall][PSAP] remaining in IDLE mode", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_FAST_MODULATION": {
+        "format": "[eCall][PSAP] fast modulator chosen (metric: %d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_MODEM_ROBUST_MODULATION": {
+        "format": "[eCall][PSAP] robust modulator chosen (metric: %d)", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "ECALL_PSAP_PCM_UPDATE_PUTTOSE": {
+        "format": "[eCall][PSAP] PCM4WAY_PutToSE (UpdatedUL) read_idx=%d, bufLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_PSAP_PCM_INPUT_LEN": {
+        "format": "[eCall][PSAP] ul_pcm_input_len[%d]=%d, dl_pcm_input_len[%d]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_PSAP_PCM_UPDATE_UL": {
+        "format": "[eCall][PSAP] eCall_PSAP_ProcessFrame proc_idx=%d, IvsTxState=%d, eCallModemIVS->isUpdateUL[%d]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_HRT_STATUS": {
+        "format": "[eCall][IVS] HRT status,%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_PCM_UPDATE_PUTTOSE": {
+        "format": "[eCall][IVS] PCM4WAY_PutToSE (UpdatedUL) read_idx=%d, bufLen=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_PCM_INPUT_LEN": {
+        "format": "[eCall][IVS] ul_pcm_input_len[%d]=%d, dl_pcm_input_len[%d]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "ECALL_IVS_PCM_UPDATE_UL": {
+        "format": "[eCall][IVS] eCall_IVS_ProcessFrame proc_idx=%d, IvsTxState=%d, eCallModemIVS->isUpdateUL[%d]=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    {
+      "RAWPCMREC_HISR_DATA_DROP_DSP": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] Drop dsp data due to buffer is in using", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_HISR_DATA_FROM_DSP": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] SE buffer = %x, len = %x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_GET_MIC_DATA_BUFS": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] RawPcmRec_GetMicDataBufs: add=%x, header len=%d, UL data len=%d, DL data len=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_GET_DATA_BUFS": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] Get data buffers add1 = %x, len1 = %d, add2 = %x, len2 = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_GET_DATA_INFO": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] Get data info %d: UL_fs=%d, UL_byte_len=%d, DL_fs=%d, DL_byte_len=%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_GET_EMPTY_DATA": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] Get data empty buffer", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "RAWPCMREC_HISR_LOCK_NOT_AVALIABLE": {
+        "apiType": "index", 
+        "format": "[rawPcmRec] rawPcmRec lcok is not avaiable in hisr", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_HISR_TX_PERIOD": {
+        "format": "[SCO] btsco_hisr TX disable isr period %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_HISR_RX_PERIOD": {
+        "format": "[SCO] btsco_hisr RX disable isr period %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_HISR_PERIOD": {
+        "format": "[SCO] btsco_hisr disable isr period %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_MSBC_CORRECT_HEADER": {
+        "apiType": "index", 
+        "format": "[SCO][DRV] MSBC DATA : correct header", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_MSBC_WRONG_HEADER": {
+        "apiType": "index", 
+        "format": "[SCO][DRV] MSBC DATA : wrong header", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_MSBC_PACKET_NOT_FOUND": {
+        "apiType": "index", 
+        "format": "[SCO][DRV] MSBC DATA : packets can not be found", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_MSBC_DATA_PACKET_NOT_FOUND": {
+        "apiType": "index", 
+        "format": "[SCO][DRV] MSBC DATA : wrong header and failed packets", 
+        "traceClass": "TRACE_FUNC"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_SP_ON": {
+        "format": "[SCO][DRV]Speech On, state: %d, fWideBand = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_SP_OFF": {
+        "format": "[SCO][DRV]Speech Off, state: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_START": {
+        "format": "[SCO][DRV]Start, state: %d, fWideBand = %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_STOP": {
+        "format": "[SCO][DRV]Stop, state: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROCESS": {
+        "format": "[SCO][DRV]Process, state: %d, pRX: 0x%X, pTX: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_HISR": {
+        "format": "[SCO][DRV]HISR, state: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_CONTROL": {
+        "format": "[SCO][DRV]Control: 0x%X, PacketType: %d, W_Address: 0x%X, R_Address: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_COPY_RX": {
+        "format": "[SCO][DRV]Copy_RX, overflow : %d, iPacket_w: %d, iPacket_r: %d, uBufferCount: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_COPY_TX": {
+        "format": "[SCO][DRV]Copy_TX, underflow: %d, iPacket_w: %d, iPacket_r: %d, uBufferCount: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_GET_MEM": {
+        "format": "[SCO][DRV]GetMemory, uModule: %d, uSize(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_TX_RAW": {
+        "format": "[SCO][DRV]PROC_TX_RAW, RawDataLen(byte): %d,uPcmBuf_w(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_TX_SRC": {
+        "format": "[SCO][DRV]PROC_TX_SRC, uConsumeByte: %d, uOutByte: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_TX_CVSD": {
+        "format": "[SCO][DRV]CVSD_TX_CVSD, iPacket_w: %d, iPacket_r: %d, fEnableFilter: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_RX_RAW": {
+        "format": "[SCO][DRV]PROC_RX_RAW, CurrentFreeSpace(byte): %d, TotalFreeSpace(byte): %d, uPcmBuf_r(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_RX_PLC": {
+        "format": "[SCO][DRV]PROC_RX_PLC", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_PROC_RX_CVSD": {
+        "format": "[SCO][DRV]CVSD_RX_CVSD, iPacket_w: %d, iPacket_r: %d, fEnableFilter: %d, fEnablePLC: %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_ALLOC_MEM": {
+        "format": "[SCO][DRV]Alloc Memory, Size: %d, ptr: 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_AP_SPEECH_TX_DATA": {
+        "format": "[SCO][APP]Speech TX data, uCurrentSpace(Byte): %d, uTotalSpace(Byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_AP_SPEECH_TX_OF": {
+        "format": "[SCO][APP]Speech TX Overflow, freespace(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_AP_SPEECH_RX_DATA": {
+        "format": "[SCO][APP]Speech RX data, uCurrentData(Byte): %d, uTotalData(Byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "L1AUDIO_BTSCO_AP_SPEECH_RX_UF": {
+        "format": "[SCO][APP]Speech RX Underflow, datacount(byte): %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    }, 
+    {
+      "SPLOG_GET_DBG_FLAG": {
+        "apiType": "index", 
+        "format": "[SPLOG]GET_DBG_FLAG, 0x%X", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "MIXER2_START": {
+        "format": "Enter PcmMixer_Start", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "MIXER2_CONFIG_DL": {
+        "format": "pcmMixer DL Config, isMix:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+	{
+      "MIXER2_CONFIG_UL": {
+        "format": "pcmMixer UL Config, isMix:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    	{
+      "MIXER3_START": {
+        "format": "Enter PcmMixer3_Start", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    	{
+      "MIXER3_CONFIG_UL": {
+        "format": "pcmMixer3 UL Config, isMix:%d, gain:%d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    	{
+      "MIXER3_INFO": {
+        "format": "PcmMixer3 Gain %x Mix %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    	{
+      "MIXER3_DATA_LENGTH": {
+        "format": "PcmMixer3_writeUlBuf %d", 
+        "traceClass": "TRACE_INFO"
+      }
+    },
+    	{
+      "DROP_SPEECH_QUALITY_EM": {
+        "format": "[DMF]drop speech quality hisr, pos:%d, rat=%d, source=0x%x", 
+        "traceClass": "TRACE_INFO"
+      }
+    }
+  ], 
+  "traceFamily": "PS", 
+  "userModule": ""
+}
diff --git a/mcu/driver/audio/src/v1/inc/media.h b/mcu/driver/audio/src/v1/inc/media.h
new file mode 100644
index 0000000..beac009
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/media.h
@@ -0,0 +1,342 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2012
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * media.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Media file recording/playback
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __MEDIA_H
+#define __MEDIA_H
+
+#include "fs_type.h"
+#include "fsal.h"
+
+#include "l1audio.h"
+#include "l1aud_common_def.h"
+
+
+/*****************************************************************************
+* Function Declaration
+*****************************************************************************/
+// void  mediaHisr( uint16 flag );
+
+
+/* L1Audio_IDMA*/
+//void IDMA_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+//void IDMA_FillToDSP(volatile kal_uint16 *dst, kal_uint16 value, kal_uint32 length);
+//void IDMA_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+//void IDMA_ReadFromDSP_Skip_1(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+//void IDMA_WriteToDSP_Duplicate(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+void EMI_ReadFromDSP(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length);
+void EMI_WriteToDSP(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length);
+
+/* For Ring Buffer Access */
+// void  rb_ClearRB( void );
+// int32 rb_GetByteCount( void );
+// int32 rb_GetFreeSpace( void );
+// bool  rb_GetByte( uint8* data_8 );
+// bool  rb_GetWord( uint16* data_16 );
+// bool  rb_GetDWord( uint32* data_32 );
+// bool  rb_PeekByte( uint8* data_8 );
+// bool  rb_PeekWord( uint16* data_16 );
+// bool  rb_PeekDWord( uint32* data_32 );
+// bool  rb_PutByte( uint8 data_8 );
+// bool  rb_PutWord( uint16 data_16 );
+// bool  rb_PutDWord( uint32 data_32 );
+// uint32 rb_SkipNByte( uint32 skip_count );
+// uint32 rb_SkipNWord( uint32 skip_count );
+// uint32 rb_GetWriteIndex( void );
+// uint32 rb_GetReadIndex( void );
+// uint32 rb_GetSize( void );
+// uint16 rb_GetOBFlag( void );
+// uint16 rb_GetOddByte( void );
+//int rb_PutNByte( const uint8 *buffer, int len );
+// nint rb_GetNByte( uint8 *buffer, int len );
+/* For Ring Buffer Access */
+
+
+void  ktInit( uint16 aud_id, uint16 id_num );
+void  ktLock( void );
+void  ktUnlock( void );
+void  toneInit( uint16 aud_id, uint16 id_num );
+
+#define VERIFY_DATA_TO_DSP 0
+
+/* L1CTM interface */ 
+void l1ctm_init( void );
+
+int32        rbGetDataCount( AUD_RB_INFO *rb );
+//kal_uint8    rbGetByte(AUD_RB_INFO *srcRB);
+void         rbGetWriteBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
+void         rbGetReadBuffer( AUD_RB_INFO *rb, kal_uint8 **buffer, kal_uint32 *buf_len );// in bytes
+void         rbWriteDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
+void         rbReadDataDone( AUD_RB_INFO *rb, kal_uint32 len ); // in bytes
+int32        rbGetFreeSpace( AUD_RB_INFO *rb );
+
+
+// speech enhancement control functions
+// #define SPE_ES_FLAG     (1 << 0) 
+//#define SPE_AEC_FLAG    (1 << 1) 
+// #define SPE_EES_FLAG    (1 << 2) 
+//#define SPE_UL_NR_FLAG  (1 << 3) 
+//#define SPE_DL_NR_FLAG  (1 << 4) 
+//#define SPE_TDDNC_FLAG  (1 << 5)
+//#define SPE_DMNR_FLAG   (1 << 6)
+//#define SPE_AGC_FLAG    (1 << 7)
+#define NUM_OF_SPH_FLAG 8 // if you add new SPE, please remind to revind the table define from uint8 to uint 16
+
+//speech enhancement mask for l1sp.spe_mask usage
+// #define SPH_ENH_MASK_ES    SPE_ES_FLAG
+//#define SPH_ENH_MASK_AEC   SPE_AEC_FLAG
+// #define SPH_ENH_MASK_EES   SPE_EES_FLAG
+//#define SPH_ENH_MASK_ULNR  SPE_UL_NR_FLAG
+//#define SPH_ENH_MASK_DLNR  SPE_DL_NR_FLAG
+//#define SPH_ENH_MASK_TDDNC SPE_TDDNC_FLAG
+//#define SPH_ENH_MASK_DMNR  SPE_DMNR_FLAG
+//#define SPH_ENH_MASK_AGC  SPE_AGC_FLAG
+// #define SPH_ENH_MASK_SIDETONE (1 << NUM_OF_SPH_FLAG) removed
+//#define SPH_ENH_MASK_NOTCH_FILTER (1 << (NUM_OF_SPH_FLAG+1))
+//#define SPH_ENH_MASK_ECHO_REF (1 << (NUM_OF_SPH_FLAG+2))
+
+#define SPE_DMNR_SUPPORT     (1 << 0) 
+#define SPE_TDNC_SUPPORT    (1 << 1) 
+#define SPE_MAGI_CON_SUPPORT (2 << 1) 
+
+
+
+void SPE_Init( void );
+void SPE_ENHCtrlSwitch(uint16 state);
+
+
+void SPE_Clear_DLL_Entry();
+//void SPE_SetULNR( bool ec );
+void SPE_LoadLimiterPara(uint16 para);
+#if defined(_SPE_ENH_MD_PARSE_)
+void SPE_LoadDmnrCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]); 
+void SPE_LoadWbDmnrCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]); 
+void SPE_LoadDmnrLspCoeffs(kal_int16 dmnr_para[NUM_DMNR_PARAM]);
+void SPE_LoadWbDmnrLspCoeffs(kal_int16 wb_dmnr_para[NUM_WB_DMNR_PARAM]);
+void SPE_LoadSWbLspDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
+void SPE_LoadSWbDmnrCoeffs(kal_int16 swb_dmnr_para[NUM_SWB_DMNR_PARAM]);
+#endif
+
+
+
+/* L1SP interface */ 
+void L1SP_Init( void );
+void SPE_Enable_DLL_Entry(void);
+bool isSPEEnable(void);
+
+#if defined(_SPE_ENH_MD_PARSE_)
+void SetDynamicParToDSP(uint32 IDnumber);
+void L1SP_LoadSpeechPara( void );
+void Set2GDynPar(void);
+void Set3GDynPar(void);
+void Set4GDynPar(void);
+void SetC2KDynPar(void)	;
+void SPE_SetDynamicStatemachine(void);
+#else  // for 95,97
+void SPE_SetDynamicStatemachine(kal_uint32 Offset, kal_uint32 Len); 
+#endif
+
+
+
+
+void L1SP_SetState(kal_uint8 state);
+kal_uint8 L1SP_GetState( void );
+void L1SP_Set_isStandByMode(bool RAB_status);
+bool L1SP_Get_isStandByMode( void );
+void L1SP_Reload_SPE_Para( void );
+void L1SP_Register_Pcm4WayService(void (*onHandler)(void *), void (*offHandler)(void *));
+void L1SP_UnRegister_Pcm4Way_Service( void );
+bool L1SP_isC2KSO_Connected();
+
+kal_bool L1SP_TCH_State( void );
+
+enum{ // RIMIND: please keep following same as em_speech_info_SpeechNetworkType in audio_enum.h
+   L1SP_STATE_IDLE = 0, 
+   L1SP_STATE_2G_SPEECH_ON,
+   L1SP_STATE_3G_SPEECH_ON,
+   L1SP_STATE_3G324M_SPEECH_ON,
+   L1SP_STATE_3G_SPEECH_CLOSING,    
+   L1SP_STATE_4G_SPEECH_ON,
+   L1SP_STATE_4G_SPEECH_CLOSING,   
+   L1SP_STATE_C2K_SPEECH_ON,
+   L1SP_STATE_C2K_SPEECH_CLOSING,      
+   //L1SP_STATE_3G_SPEECH_CLOSED 
+}; 
+
+void sp3g_speech_init( uint8 RAT_Mode );
+void sp3g_speech_close( bool IsInterRAT );
+void sp3g_init( void );//boot up init
+kal_bool   SP3G_Rab_State( void );
+kal_uint32 SP3G_Rab_Id( void );
+void       SP3G_Reset( void );
+void       SP3G_SetRxTypeToNoData( void );
+kal_bool   SP3G_IsDTXOn( void );
+void       SP3G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
+void       SP3G_UpdateL1AInFo_P( kal_uint8 bitmap, kal_uint8 value );
+kal_uint32 SP3G_GetCodecMode(void);
+
+void sp4g_speech_init( uint8 RAT_Mode );
+void sp4g_speech_close( void );
+void sp4g_init( void );//boot up init
+kal_bool   SP4G_Rab_State( void );
+kal_uint32 SP4G_Rab_Id( void );
+void       SP4G_Reset( void );
+void       SP4G_SetRxTypeToNoData( void );
+kal_bool   SP4G_IsDTXOn( void );
+void       SP4G_GetSyncDelayRW( kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
+
+void      SPC2K_GetSyncDelayRW( uint16 *u2DelR, uint16 *u2DelW, uint16 *u2DelM);
+void      SPC2K_ConSSO_Done( void );
+void      SPC2K_DisconSSO_Done( void );
+
+void      L1SP_C2K_Est(int codec);
+void      L1SP_C2K_DeEst( void );
+void      L1SP_C2K_IntraRAT(int codec);
+
+void      L1SP_SetOpenDSPFlag(kal_uint8 flag);
+kal_uint8 L1SP_GetOpenDSPFlag(void);
+
+kal_uint32 L1Audio_GetEventGroup( void );
+void L1Audio_ExeEventHandler( kal_uint32 event );
+void L1Audio_ActivateHisrHandler(kal_uint16 magic_no, void *userData);
+
+
+// For In Process Call
+void L1Audio_InProcCall(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
+void L1Audio_InProcCall2(in_proc_call_type func, kal_uint32 func_arg1, void* func_arg2);
+
+
+
+// uint32 PCM2Way_GetBandInfo(void);
+
+// Speech related
+void SP_Strm_Init(void);
+
+#endif /* __MEDIA_H */
+
+
diff --git a/mcu/driver/audio/src/v1/inc/pcm4way.h b/mcu/driver/audio/src/v1/inc/pcm4way.h
new file mode 100644
index 0000000..ef8094c
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcm4way.h
@@ -0,0 +1,281 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * pcm4way.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   PCM4WAY/PCM2WAY interface 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __PCM4WAY_H
+#define __PCM4WAY_H
+#include "l1aud_common_def.h"
+
+
+// #define PNW_ENBLE               (1<<8)
+#define DATA_SELECT_AFTER_ENH   (1<<9)  
+#define USE_D2M_PATH            (1<<10)
+#define USE_M2D_PATH            (1<<11)
+
+// #define PNW_DSP_IDLE            (0)
+// #define PNW_DSP_ON              (1)
+// #define PNW_DSP_READY           (2)
+
+// #define PCM4WAY_STATE 0x1
+// #define PCM2WAY_STATE 0x2
+
+typedef enum{
+	PNW_STATE_IDLE = 0,
+	PNW_STATE_RUN,
+	
+}PCMEX_STATE;
+
+typedef enum {
+  PCMEX_BAND_UNSET = 0,
+  PCMEX_BAND_NB,
+  PCMEX_BAND_WB,
+  PCMEX_BAND_SWB,
+  PCMEX_BAND_FB,
+  PCMEX_BAND_DYNAMIC, // follow codec, only for delication mode 
+}PCMEX_BAND;
+
+typedef enum {
+  PCMEX_IDLE_ENH_SETTING_NONE = 0,
+  PCMEX_IDLE_ENH_SETTING_WITH,
+  PCMEX_IDLE_ENH_SETTING_WITHOUT,
+#if 0  
+/* under construction !*/
+/* under construction !*/
+#endif  
+}PCMEX_IDLE_ENH_SETTING;
+
+
+typedef struct{
+   uint16      aud_id; // to lock sleep mode
+   bool        isEnhOn;
+   kal_uint32   running;
+   kal_spinlockid PCMEXspinLockID;
+
+   PCMEX_STATE state;   // on/off 
+   kal_uint32  am_type;
+   // kal_uint32  app_type;
+   
+   PCMEX_BAND  bandInfo;  //to record the band information, 
+   
+   kal_uint32  cfgUL1;
+	kal_uint32  cfgUL2;
+	kal_uint32  cfgUL3;
+	kal_uint32  cfgUL4;
+   kal_uint32  cfgDL;
+   
+   // kal_int16   dspPcmExMicLen; // unit is 16-bit (sampel), -1 means useless
+   // kal_int16   dspPcmExSpkLen; // unit is 16-bit (sampel), 0xFFFFFFFF means useless
+
+   void        (*pnw_dl_hdlr)(void);
+   void        (*pnw_ul_hdlr)(void);      
+}_PCMEX_T;
+
+
+typedef enum{
+	PNW_APP_TYPE_IDLE = 0,
+	PNW_APP_TYPE_UNDER_CALL,
+}PCMEX_APP_TYPE;
+
+
+typedef enum{
+   MCU_SET_P4W_OFF   = 0,  
+   MCU_SET_P4W_ON    = 1,  
+   DSP_SET_P4W_READY = 2
+}P4W_CTRL_STATUS;
+
+typedef enum{
+   MCU_SET_P2W_OFF   = 0<<4,  
+   MCU_SET_P2W_ON    = 1<<4,  
+   DSP_SET_P2W_READY = 2<<4
+}P2W_CTRL_STATUS;
+
+
+typedef enum {
+	P4W_APP_CTM = 0,
+	P4W_APP_TYPE_UNDER_CALL, //p2w acts as I/O to get/put pcm data under idle
+	P4W_APP_TYPE_WITHOUT_CALL,
+   P4W_APP_TYPE_WITHOUT_CALL_WB,
+   	P4W_APP_ECALL_DETECT,
+   
+	P4W_APP_TYPE_UNDEFINE = 0xFFFF
+}P4W_APP_TYPE;
+
+typedef enum {
+  P2W_APP_TYPE_UNDER_CALL = 0, //p2w acts as I/O to get/put pcm data under phone call
+  P2W_APP_TYPE_WITHOUT_CALL,   //p2w acts as I/O to get/put pcm data when idle
+  P2W_APP_TYPE_VOIP,           //VOIP, speech quality like phone call but not under calling
+  // P2W_APP_TYPE_REC_ONLY_CAL,   //dmnr calibration, record only
+  // P2W_APP_TYPE_REC_PLAY_CAL    //dmnr calibration, record and playback at the same time
+  P2W_APP_TYPE_UNDEFINE = 0xFFFF
+}P2W_App_Type;
+
+
+void PCM4WAY_Start(void (*pcm4way_hdlr)(void), uint32 type);   
+void PCM4WAY_Stop(uint32 type);           
+// void Extended_PCM4WAY_Start(void (*pcm4way_dl_hdlr)(void), void (*pcm4way_ul_hdlr)(void), uint32 type, uint32 cfgUL, uint32 cfgDL);
+// void Extended_PCM4WAY_Stop(uint32 type);
+
+uint16 PCM4WAY_GetFromMic(uint16 *ul_buf);
+uint16 PCM4WAY_GetFromMic2(uint16 *ul_buf);
+uint16 PCM4WAY_PutToSE(const uint16 *ul_data); 
+uint16 PCM4WAY_PutToSE2(const uint16 *ul_data); 
+uint16 PCM4WAY_FillSE(uint16 value); 
+uint16 PCM4WAY_FillSE2(uint16 value); 
+
+uint16 PCM4WAY_GetFromSD(uint16 *dl_buf);
+uint16 PCM4WAY_PutToSpk(const uint16 *dl_data); 
+uint16 PCM4WAY_FillSpk(uint16 value);
+
+void PCM2WAY_Start(void (*pcm2way_hdlr)(void), uint32 type);
+void PCM2WAY_Stop(uint32 type);
+// void Extended_PCM2WAY_Start(void (*pcm2way_dl_hdlr)(void), void (*pcm2way_ul_hdlr)(void), uint32 type, uint32 cfgUL, uint32 cfgDL);
+// void Extended_PCM2WAY_Stop(uint32 type);
+
+uint16 PCM2WAY_GetFromMic(uint16 *ul_buf);
+uint16 PCM2WAY_PutToSpk(const uint16 *dl_data);
+uint16 PCM2WAY_FillSpk(uint16 value);
+
+void Idle_PcmEx_Start(void (*pcmNway_dl_hdlr)(void), void (*pcmNway_ul_hdlr)(void),	uint32 cfgUL1, uint32 cfgUL2, uint32 cfgUL3, uint32 cfgUL4, uint32 cfgDL,	PCMEX_BAND band, PCMEX_IDLE_ENH_SETTING enhSetting);
+void Del_PcmEx_Start(void (*pcmNway_dl_hdlr)(void), void (*pcmNway_ul_hdlr)(void), 	uint32 cfgUL1, uint32 cfgUL2, uint32 cfgUL3, uint32 cfgUL4, uint32 cfgDL);
+void PcmEx_Stop(void);	
+void pcmEx_Init();
+bool pcmEx_isRunInIdleMode(void);
+#endif 
diff --git a/mcu/driver/audio/src/v1/inc/pcmMixer.h b/mcu/driver/audio/src/v1/inc/pcmMixer.h
new file mode 100644
index 0000000..d71f4e3
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcmMixer.h
@@ -0,0 +1,29 @@
+
+#ifndef __PCMMIXER_H__
+#define __PCMMIXER_H__
+
+
+uint16 PcmMixer_QueryDlBufLen(void);
+void PcmMixer_writeDlBuf(uint16 *srcBuf, uint16 len);
+
+/**	
+	@isMix: Mixer switch for uplink speech, 1 for SPH+Sound, 0 for sound only
+	@gain: Sound effect gain for uplink mixer, for 0 to 7
+*/
+void PcmMixer_ConfigUl(kal_bool isMix, kal_int8 gain );
+
+/**	
+	@isMix: Mixer switch for uplink speech, 1 for SPH+Sound, 0 for sound only
+	@gain: Sound effect gain for uplink mixer, for 0 to 7
+*/
+void PcmMixer_ConfigDl(kal_bool isMix, kal_int8 gain );
+
+/**
+ @mixerHisrHandler: handler
+*/
+void PcmMixer_Start(void (*mixerHisrHandler)(void));
+void PcmMixer_Stop(void);
+
+void PcmMixer_Init(void);
+
+#endif //__PCMMIXER_H__
\ No newline at end of file
diff --git a/mcu/driver/audio/src/v1/inc/pcmMixer3.h b/mcu/driver/audio/src/v1/inc/pcmMixer3.h
new file mode 100644
index 0000000..1a22c2d
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcmMixer3.h
@@ -0,0 +1,29 @@
+
+#ifndef __PCMMIXER3_H__
+#define __PCMMIXER3_H__
+
+
+uint16 PcmMixer3_QueryUlBufLen(void);
+void PcmMixer3_writeUlBuf(uint16 *srcBuf, uint16 len);
+
+/**	
+	@isMix: Mixer switch for uplink speech, 1 for SPH+Sound, 0 for sound only
+	@gain: Sound effect gain for uplink mixer, for 0 to 7
+*/
+void PcmMixer3_ConfigUl(kal_bool isMix, kal_int8 gain );
+
+/**	
+	@isMix: Mixer switch for uplink speech, 1 for SPH+Sound, 0 for sound only
+	@gain: Sound effect gain for uplink mixer, for 0 to 7
+*/
+//void PcmMixer3_ConfigDl(kal_bool isMix, kal_int8 gain );
+
+/**
+ @mixerHisrHandler: handler
+*/
+void PcmMixer3_Start(void (*mixerHisrHandler)(void));
+void PcmMixer3_Stop(void);
+
+void PcmMixer3_Init(void);
+
+#endif //__PCMMIXER3_H__
\ No newline at end of file
diff --git a/mcu/driver/audio/src/v1/inc/pcmRouter.h b/mcu/driver/audio/src/v1/inc/pcmRouter.h
new file mode 100644
index 0000000..9205d08
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcmRouter.h
@@ -0,0 +1,13 @@
+#ifndef _PCM_ROUTER_H
+#define _PCM_ROUTER_H
+
+
+// ----------------------------------------------------------------------------
+//=========================== call from spc_drv.c ============================
+void PcmRouterStart(void);
+void PcmRouterStop(void);
+
+//=============================================================================
+
+#endif //_PCM_ROUTER_H
+
diff --git a/mcu/driver/audio/src/v1/inc/pcmrb.h b/mcu/driver/audio/src/v1/inc/pcmrb.h
new file mode 100644
index 0000000..e4c94d1
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcmrb.h
@@ -0,0 +1,168 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   PCMRB.h
+ *
+ * Project:
+ * --------
+ *   Maui_sw
+ *
+ * Description:
+ * ------------
+ *   PCMRB utility
+ *
+ * Author:
+ * -------
+ * -------
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _PCMRB_DOT_H_
+#define _PCMRB_DOT_H_
+
+/*****************************************************************************
+*                     C O M P I L E R   F L A G S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                E X T E R N A L   R E F E R E N C E S
+******************************************************************************
+*/
+#include "l1aud_common_def.h"
+/*****************************************************************************
+*                          C O N S T A N T S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                         D A T A   T Y P E S
+******************************************************************************
+*/
+typedef struct PcmRingBufferStruct PCMRB;
+struct PcmRingBufferStruct {
+   int16            *buffer;
+   int32            read;
+   int32            write;
+   int32            size;
+};
+
+/*****************************************************************************
+*                        P U B L I C   D A T A
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                             M A C R O S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                  D A T A   D E C L A R A T I O N S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*              F U N C T I O N   D E C L A R A T I O N S
+******************************************************************************
+*/
+bool PCMRB_Init( PCMRB *rb, int16 *buffer, int32 buffer_size );
+int32 PCMRB_GetFreeSpace( PCMRB *rb );
+int32 PCMRB_GetDataCount( PCMRB *rb );
+void PCMRB_Write( PCMRB *dest_rb, int16 *src_buffer, int32 size );
+void PCMRB_Write_from_DSP( PCMRB *dest_rb, volatile uint16 *src_buffer, int32 size );
+void PCMRB_Write2( PCMRB *dest_rb, int16 *src_buffer, int32 size );
+void PCMRB_Read( PCMRB *src_rb, int16 *dest_buffer, int32 size );
+void PCMRB_Read_to_DSP( PCMRB *src_rb, volatile uint16 *dest_buffer, int32 size );
+void PCMRB_Read_to_DSP_Padding( PCMRB *src_rb, volatile uint16 *dest_buffer, int32 size );
+void PCMRB_GetWriteBlock( PCMRB *dest_rb, int16 **write_ptr, int32 *write_cnt );
+void PCMRB_GetReadBlock( PCMRB *src_rb, int16 **read_ptr, int32 *read_cnt );
+void PCMRB_ShiftWritePointer( PCMRB *rb, int32 shamt );
+void PCMRB_ShiftReadPointer( PCMRB *rb, int32 shamt );
+void PCMRB_ShiftReadPointer2( PCMRB *rb, int32 shamt );
+void PCMRB_Mix( PCMRB *dest_rb, PCMRB *src_rb, int32 size );
+
+void pcm_mix_n( int16 *dest, int16 *src, int32 n );
+
+/*****************************************************************************
+*       I N L I N E   F U N C T I O N   D E C L A R A T I O N S
+******************************************************************************
+*/
+    
+#endif // ..._PCMRB_DOT_H_
+
diff --git a/mcu/driver/audio/src/v1/inc/pcmrec.h b/mcu/driver/audio/src/v1/inc/pcmrec.h
new file mode 100644
index 0000000..dca60ab
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/pcmrec.h
@@ -0,0 +1,18 @@
+#ifndef _PCMREC_H_
+#define _PCMREC_H_
+
+typedef enum {
+	PCM_REC_SAMPLE_RATE_IDX_8K = 0,
+	PCM_REC_SAMPLE_RATE_IDX_16K, 
+	PCM_REC_SAMPLE_RATE_IDX_32K,
+	PCM_REC_SAMPLE_RATE_IDX_48K,
+	
+	PCM_REC_SAMPLE_RATE_IDX_UNDEF = 0xf
+}PCM_REC_SAMPLE_RATE_IDX;
+	
+void PCMREC_Start(void (*pcmRec_hdlr)(void), uint8 channelNum, PCM_REC_SAMPLE_RATE_IDX samplingRateIdx);
+void PCMREC_Stop();
+
+void PcmRec_GetMicDataBufs(kal_uint32 *add1, kal_uint16 *len1, kal_uint32 *add2, kal_uint16 *len2);
+
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/rawpcmrec.h b/mcu/driver/audio/src/v1/inc/rawpcmrec.h
new file mode 100644
index 0000000..cf1c29a
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/rawpcmrec.h
@@ -0,0 +1,32 @@
+#ifndef _RAWPCMREC_H_
+#define _RAWPCMREC_H_
+
+#include "pcmrec.h"
+/*typedef enum {
+	PCM_REC_SAMPLE_RATE_IDX_8K = 0,
+	PCM_REC_SAMPLE_RATE_IDX_16K, 
+	PCM_REC_SAMPLE_RATE_IDX_32K,
+	PCM_REC_SAMPLE_RATE_IDX_48K,
+	
+	PCM_REC_SAMPLE_RATE_IDX_UNDEF = 0xf
+}PCM_REC_SAMPLE_RATE_IDX;*/
+
+typedef struct spcRAWPCMBufInfoStruct{
+	//UL sample rate, please refer PCM_REC_SAMPLE_RATE_IDX
+	uint16 u16ULFreq;
+	//UL length in byte
+	uint16 u16ULLength;
+	//DL sample rate, please refer PCM_REC_SAMPLE_RATE_IDX
+	uint16 u16DLFreq;
+	//DL length in byte
+	uint16 u16DLLength;
+}spcRAWPCMBufInfo, *pspcRAWPCMBufInfo;
+
+void RAWPcmRec_Init();
+void RAWPCMREC_Start(void (*pcmRec_hdlr)(void), kal_uint8 ULChannelNumIdx);
+void RAWPCMREC_Stop();
+
+void RawPcmRec_GetMicDataBufs(kal_uint32 *add1, kal_uint16 *len1, kal_uint32 *add2, kal_uint16 *len2);
+
+#endif //#ifndef _RAWPCMREC_H_
+
diff --git a/mcu/driver/audio/src/v1/inc/sp_c2k.h b/mcu/driver/audio/src/v1/inc/sp_c2k.h
new file mode 100644
index 0000000..772e8a5
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_c2k.h
@@ -0,0 +1,84 @@
+#ifndef __SP_C2K__
+#define __SP_C2K__
+
+// For bringup not use DTS
+//#ifdef MTK_AUDIO_BRINGUP
+    #define C2K_DTS_DISABLE
+//#endif
+
+// For no SAL on integrate stage
+//#define C2K_SAL_DISABLE
+
+// For no Sph Drv on integrate stage
+//#define C2K_SDRV_DISABLE
+
+// For bring up
+//#define C2K_BRING_UP
+
+// For LBK regular timer
+//#define C2K_LBK_TIMER_ENABLE
+
+//#define SALI_DISABLE
+
+//#define C2K_MODEM_DISABLE
+//#define C2K_LBK_U2D
+//#define C2K_LBK_D2U
+
+//#define C2K_SPH_EVRCNW_SUPPORT
+
+#define C2K_COD_RS_1      1
+#define C2K_COD_RS_2      2
+#define C2K_COD_RS_UNDEF  0x29
+
+#define C2K_COD_RS_1_BLANK_LEN_WORD16          0
+#define C2K_COD_RS_1_EIGHTH_LEN_WORD16         1
+#define C2K_COD_RS_1_QUARTER_LEN_WORD16        3
+#define C2K_COD_RS_1_HALF_LEN_WORD16           5 
+#define C2K_COD_RS_1_FULL_LEN_WORD16           11 
+#define C2K_COD_RS_1_ERASURE_LEN_WORD16        0
+#define C2K_COD_RS_1_FULL_LIKELY_LEN_WORD16    11
+
+#define C2K_COD_RS_2_BLANK_LEN_WORD16          0
+#define C2K_COD_RS_2_EIGHTH_LEN_WORD16         2
+#define C2K_COD_RS_2_QUARTER_LEN_WORD16        4
+#define C2K_COD_RS_2_HALF_LEN_WORD16           8 
+#define C2K_COD_RS_2_FULL_LEN_WORD16           17 
+#define C2K_COD_RS_2_ERASURE_LEN_WORD16        0
+
+#define C2K_COD_RATE_MAX_LEN_WORD16            17
+
+#define C2K_COD_QCELP8K         0x30
+#define C2K_COD_QCELP13K        0x31
+#define C2K_COD_EVRCA           0x32
+#define C2K_COD_EVRCB           0x33
+#define C2K_COD_EVRCNW_NB       0x34
+#define C2K_COD_EVRCNW_WB       0x35
+#define C2K_COD_UNDEF           0x39
+
+#define C2K_LMD_LBK     1
+#define C2K_CAAL_LBK    2
+
+// SOCM
+#define C2K_SOCM_EVRCA_RATE_REDUC_MIN       0
+#define C2K_SOCM_EVRCA_RATE_REDUC_MAX       4
+#define C2K_SOCM_QCELP13K_RATE_REDUC_MIN    0
+#define C2K_SOCM_QCELP13K_RATE_REDUC_MAX    4
+#define C2K_SOCM_EVRCB_RATE_REDUC_MIN       0
+#define C2K_SOCM_EVRCB_RATE_REDUC_MAX       7
+#define C2K_SOCM_EVRCNW_RATE_REDUC_MIN      0
+#define C2K_SOCM_EVRCNW_RATE_REDUC_MAX      7
+
+#define C2K_SOCM_RATE_REDUC_SHIFT       5
+#define C2K_SOCM_MOBILE_TO_MOBILE_SHIFT 1
+
+// DelR/W/M (ms)
+#define C2K_DELR     8.25       
+#define C2K_DELW     3
+#define C2K_DELM     4
+
+#define C2K_DBG_BIT_INIT           0x0
+#define C2K_DBG_BIT_U2D_LOOPBACK   0x1
+#define C2K_DBG_BIT_NO_MODEM       0x2
+
+
+#endif //__SP_C2K__
diff --git a/mcu/driver/audio/src/v1/inc/sp_cc.h b/mcu/driver/audio/src/v1/inc/sp_cc.h
new file mode 100644
index 0000000..01a8e57
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_cc.h
@@ -0,0 +1,39 @@
+#ifndef SP_CC
+#define SP_CC
+#include "kal_public_defs.h"
+#include "kal_public_api.h"
+#include "kal_general_types.h"
+#include "cache_sw.h"   //? ask SS, it ought not be exposed from RCU_MEMORY_SIZE
+#include "mmu.h"
+#include "audio_cc.h"
+#include "audio_ringbuf.h"
+#include "cc_irq_public.h"
+#include "sp_drv.h"
+#include "audio_msgid.h"
+#include "drv_sap.h"
+void SP_CC_Init();
+void SP_CC_Event_Handler();
+
+void cc_set_VBI_for_FSM(kal_uint32 state);
+void cc_Standby_Call_Open(kal_uint32 enc_mod);
+void cc_Standby_Call_Close(kal_uint32 dsp_end);
+void cc_2G_Call_Open(kal_uint32 enc_mod, kal_uint32 dec_mod, kal_uint32 sub_channel, kal_uint32 resetType);
+void cc_2G_Call_Close(kal_uint32 dsp_end);
+void cc_3G_Call_Open(kal_uint32 enc_mod, kal_uint32 dec_mod, kal_uint32 dtx, kal_uint32 delR, kal_uint32 delW, kal_uint32 delM, kal_uint32 u32CurTime64us, kal_uint32 resetType);
+void cc_3G_Call_Close(kal_uint32 dsp_end);
+void cc_4G_Call_Open_temp(kal_uint32 enc_mod, kal_uint32 dec_mod, kal_uint32 dtx, kal_uint32 delR, kal_uint32 delW, kal_uint32 delM, kal_uint32 u32CurTime64us, kal_uint32 resetType);
+void cc_4G_Call_Close_temp(kal_uint32 dsp_end);
+void cc_4G_G_Codec_Call_Open(kal_uint32 band_mod, kal_uint32 delR, kal_uint32 delW, kal_uint32 delM, kal_uint32 u32CurTime64us, kal_uint32 resetType);
+void cc_4G_G_Codec_Call_Close(kal_uint32 dsp_end);
+void cc_4G_EVS_Codec_Call_Open(kal_uint32 codec, uint32 isDTX, kal_uint32 delR, kal_uint32 delW, kal_uint32 delM, kal_uint32 u32CurTime64us, kal_uint32 resetType);
+void cc_4G_EVS_Codec_Call_Close(kal_uint32 dsp_end);
+void cc_C2K_Call_Open(kal_uint32 so, kal_uint32 dtx, kal_uint32 delR, kal_uint32 delW, kal_uint32 delM, kal_uint32 resetType);
+void cc_C2K_Call_Close(kal_uint32 dsp_end);
+void           cc_L1D_Audio_ChkDspInitDone();
+kal_uint16     cc_L1D_Audio_RestartDSP();
+void           cc_L1D_Audio_NoNeedDSP();
+
+
+
+
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/sp_daca.h b/mcu/driver/audio/src/v1/inc/sp_daca.h
new file mode 100644
index 0000000..f44a523
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_daca.h
@@ -0,0 +1,166 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * pcm4way.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   PCM4WAY/PCM2WAY interface 
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __DACA_H__
+#define __DACA_H__
+#include "l1aud_common_def.h"
+
+
+typedef struct{
+   kal_uint16   aud_daca_id;         
+   kal_uint32   state;         //identify pcm2way or pcm4way
+   kal_uint32   running;
+   kal_uint32   am_type;
+   kal_uint32   app_type;   
+   kal_uint32   frame_size;  //to record the band information, please refer to PCMNWAY_BAND_INFO
+      
+   kal_uint32   u4DspPcmExMicLen;
+   kal_uint32   u4DspPcmExSpkLen;
+   kal_spinlockid DACASpinLockID;
+   void        (*daca_dl_hdlr)(void);
+   void        (*daca_ul_hdlr)(void);
+}_DACA_EX_T;
+
+
+//the following macro is bit-wise
+#define DACA_IN_PHONE_CALL 0x0001     
+#define DACA_USE_NB        0x0002
+#define DACA_USE_UL        0x0004
+#define DACA_USE_DL        0x0008
+#define DACA_USE_WB        0x0010
+#define DACA_USE_SWB       0x0020
+#define DACA_USE_FB        0x0040
+#define DACA_UNDEFINED     0x8000
+
+typedef enum {
+  DACA_APP_TYPE_IDLE_UL_DL_NB        = DACA_USE_NB + DACA_USE_UL + DACA_USE_DL, 
+  DACA_APP_TYPE_IDLE_UL_NB           = DACA_USE_NB + DACA_USE_UL, 
+  DACA_APP_TYPE_IDLE_DL_NB           = DACA_USE_NB + DACA_USE_DL, 
+  DACA_APP_TYPE_ACTIVE_UL_DL_NB      = DACA_IN_PHONE_CALL + DACA_USE_NB + DACA_USE_UL + DACA_USE_DL, 
+  DACA_APP_TYPE_ACTIVE_UL_NB         = DACA_IN_PHONE_CALL + DACA_USE_NB + DACA_USE_UL, 
+  DACA_APP_TYPE_ACTIVE_DL_NB         = DACA_IN_PHONE_CALL + DACA_USE_NB + DACA_USE_DL, 
+
+  DACA_APP_TYPE_IDLE_UL_DL_WB        = DACA_USE_WB + DACA_USE_UL + DACA_USE_DL,                            
+  DACA_APP_TYPE_IDLE_UL_WB           = DACA_USE_WB + DACA_USE_UL,                                    
+  DACA_APP_TYPE_IDLE_DL_WB           = DACA_USE_WB + DACA_USE_DL,                                     
+  DACA_APP_TYPE_ACTIVE_UL_DL_WB      = DACA_IN_PHONE_CALL + DACA_USE_WB + DACA_USE_UL + DACA_USE_DL,  
+  DACA_APP_TYPE_ACTIVE_UL_WB         = DACA_IN_PHONE_CALL + DACA_USE_WB + DACA_USE_UL ,               
+  DACA_APP_TYPE_ACTIVE_DL_WB         = DACA_IN_PHONE_CALL + DACA_USE_WB + DACA_USE_DL,                
+
+  DACA_APP_TYPE_IDLE_UL_DL_SWB        = DACA_USE_SWB + DACA_USE_UL + DACA_USE_DL,                            
+  DACA_APP_TYPE_IDLE_UL_SWB           = DACA_USE_SWB + DACA_USE_UL,                                    
+  DACA_APP_TYPE_IDLE_DL_SWB           = DACA_USE_SWB + DACA_USE_DL,                                     
+  DACA_APP_TYPE_ACTIVE_UL_DL_SWB      = DACA_IN_PHONE_CALL + DACA_USE_SWB + DACA_USE_UL + DACA_USE_DL,  
+  DACA_APP_TYPE_ACTIVE_UL_SWB         = DACA_IN_PHONE_CALL + DACA_USE_SWB + DACA_USE_UL ,               
+  DACA_APP_TYPE_ACTIVE_DL_SWB         = DACA_IN_PHONE_CALL + DACA_USE_SWB + DACA_USE_DL,                
+
+  DACA_APP_TYPE_IDLE_UL_DL_FB        = DACA_USE_FB + DACA_USE_UL + DACA_USE_DL,                            
+  DACA_APP_TYPE_IDLE_UL_FB           = DACA_USE_FB + DACA_USE_UL,                                    
+  DACA_APP_TYPE_IDLE_DL_FB           = DACA_USE_FB + DACA_USE_DL,                                     
+  DACA_APP_TYPE_ACTIVE_UL_DL_FB      = DACA_IN_PHONE_CALL + DACA_USE_FB + DACA_USE_UL + DACA_USE_DL,  
+  DACA_APP_TYPE_ACTIVE_UL_FB         = DACA_IN_PHONE_CALL + DACA_USE_FB + DACA_USE_UL ,               
+  DACA_APP_TYPE_ACTIVE_DL_FB         = DACA_IN_PHONE_CALL + DACA_USE_FB + DACA_USE_DL,                
+    
+  DACA_APP_TYPE_UNDEFINE             = DACA_UNDEFINED
+}DACA_APP_TYPE;
+
+void    DACA_Start(void (*daca_dl_hdlr)(void), void (*daca_ul_hdlr)(void), DACA_APP_TYPE app_type);
+void    DACA_Stop(DACA_APP_TYPE app_type);
+uint32  DACA_GetFromSD(uint16 *dl_buf);
+void    DACA_PutToSE(const uint16 *ul_data);
+void    DACA_FillSE(uint16 value);  
+void    DACA_Init();
+
+#endif 
diff --git a/mcu/driver/audio/src/v1/inc/sp_drv.h b/mcu/driver/audio/src/v1/inc/sp_drv.h
new file mode 100644
index 0000000..b4487b1
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_drv.h
@@ -0,0 +1,798 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_drv.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * MD speech control interfaces 
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+ 
+#ifndef _SP_DRV_H
+#define _SP_DRV_H
+
+#include "l1aud_common_def.h"
+#include "l1audio.h"
+#include "l1sp_el2_struct.h"
+
+// ----------------------------------------------------------------------------
+// defines
+// ----------------------------------------------------------------------------
+
+#define DEFAULT_SPEECH_COMMON_PARA \
+{ \
+     0, 55997, 31000, 10752,     32769,     0,     0,     0,     0,     0, \
+     0,     0 \
+}
+
+// ----------------------------------------------------------------------------
+// mute related
+// ----------------------------------------------------------------------------
+
+kal_bool SP_IsSpeakerMute(void);
+
+void SP_MuteUlSource(kal_bool mute);
+void SP_MuteDl_beforePcmMixer(bool mute);
+
+typedef enum { // saving inside l1sp.isUlMute, bit wise record
+	SP_MIC_MUTE_POS_FROM_SPC = 0x1,	
+	SP_MIC_MUTE_POS_FROM_MED = 0x2,
+
+	SP_MIC_MUTE_POS_FROM_ALL = 0xFFFF,
+	
+}SP_MIC_MUTE_POS;
+void SP_MuteUlFromDiffPos(bool mute, SP_MIC_MUTE_POS pos);
+bool SP_IsMicMute(void);
+void L1SP_SetCodecMuteByAp( bool mute );
+
+// ----------------------------------------------------------------------------
+// codec/network information related
+// ----------------------------------------------------------------------------
+#include "em_audio_public_struct.h"
+void SP_updateEmCodecEvent(void);
+void emCodecTimerOn(void);
+void emCodecTimerOff(void);
+
+
+void l1sp_NetworkStatusNotification(void);
+void l1sp_send_codec_status_notify(uint32 codec); //to L4C
+// ----------------------------------------------------------------------------
+
+void L1SP_SpeechLoopBackEnable(kal_bool fgEnable);
+
+typedef enum {
+    SPH_DEVINFO_NORMAL,
+    SPH_DEVINFO_BT_PCM,         /* via Modem PCM hardware */
+    SPH_DEVINFO_BT_CVSD_MSBC,    /* via software BT codec */
+    SPH_DEVINFO_BT_CVSD,
+    SPH_DEVINFO_BT_MSBC
+}sp_device_info_t; // same as spc_sph_on_bt_info_t 
+
+uint8 SP_GetDevSamplingRate(void);
+sp_device_info_t SP_GetDevInfo(void);
+void SP_SetDevicePath(sp_device_info_t newDev, kal_uint8 voice8kMode);
+
+typedef enum {
+    SPH_EXTDEVINFO_DEFULAT = 0,  
+    SPH_EXTDEVINFO_VIBRATION_RECEIVER, // vibration receiver (3-in-1)
+    SPH_EXTDEVINFO_VIBRATION_SPEAKER, // speaker (2-in-1 or 3-in-1)
+    SPH_EXTDEVINFO_SMARTPA_SPEAKER, // speaker with smart-PA which need echo reference path
+    SPH_EXTDEVINFO_SMARTPA_VIBRATION_SPEAKER, // vibration speaker with smart-PA which need echo reference path
+    SPH_EXTDEVINFO_USB_AUDIO, // usb audio device, which needs echo reference path
+    SPH_EXTDEVINFO_EARPHONE, // earphone audio device
+	SPH_EXTDEVINFO_DUALSMARTPA_SPEAKER, // speaker with smart-PA which need echo reference path
+	SPH_EXTDEVINFO_DUALSMARTPA_VIBRATION_SPEAKER, // vibration speaker with smart-PA which need echo reference path    
+}sp_ext_dev_info_t;
+
+void SP_SetExtraDevInfo(sp_device_info_t dev, sp_ext_dev_info_t extDevInfo, uint8 smartPA_config, uint16 echoRefDelay, uint8 micDelay);
+sp_ext_dev_info_t SP_GetExtDevInfo(void);
+
+// ----------------------------------------------------------------------------
+// ENHANCEMENT MODE PARAMETERS
+// ----------------------------------------------------------------------------
+#if defined(_SPE_ENH_MD_PARSE_)
+void l1sp_SetWbSpeechPara( kal_uint16 m_para[NUM_MODE_PARAS] );
+// void l1sp_SetSpeechMode( uint8 devMode, uint8 mode, uint16 m_para[NUM_MODE_PARAS] );
+// void l1sp_SetSpeechMode( uint8 devMode, uint8 mode);
+
+
+void l1sp_setAllSpeechModePara(kal_uint16 * speech_mode_para, kal_int16 length);
+void l1sp_setAllSpeechFirCoeff_InputOnly(kal_int16 *speech_input_FIR_coeffs, kal_int16 length);
+void l1sp_setAllSpeechFirCoeff_OutputOnly(kal_int16 *speech_output_FIR_coeffs, kal_int16 length);
+void l1sp_setAllSpeechIirCoeff_InputOnly(kal_int16 *speech_input_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSpeechIirCoeff_OutputOnly(kal_int16 *speech_output_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSpeechMic1IirCoeff(kal_int16 *speech_output_Mic1_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSpeechMic2IirCoeff(kal_int16 *speech_output_Mic2_IIR_coeffs, kal_int16 length);
+void l1sp_setAllWBSpeechIirCoeff_InputOnly(kal_int16 *speech_input_IIR_coeffs, kal_int16 length);
+void l1sp_setAllWBSpeechIirCoeff_OutputOnly(kal_int16 *speech_output_IIR_coeffs, kal_int16 length);
+void l1sp_setAllWBSpeechMic1IirCoeff(kal_int16 *speech_output_Mic1_IIR_coeffs, kal_int16 length);
+void l1sp_setAllWBSpeechMic2IirCoeff(kal_int16 *speech_output_Mic2_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSWBSpeechIirCoeff_InputOnly(kal_int16 *speech_input_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSWBSpeechIirCoeff_OutputOnly(kal_int16 *speech_output_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSWBSpeechMic1IirCoeff(kal_int16 *speech_output_Mic1_IIR_coeffs, kal_int16 length);
+void l1sp_setAllSWBSpeechMic2IirCoeff(kal_int16 *speech_output_Mic2_IIR_coeffs, kal_int16 length);
+
+void l1sp_setAllWbSpeechModePara(kal_uint16 * speech_mode_para, kal_int16 length);
+void l1sp_setAllWbSpeechFirCoeff_InputOnly(kal_int16 *speech_input_FIR_coeffs, kal_int16 length);
+void l1sp_setAllSWbSpeechFirCoeff_InputOnly(kal_int16 *speech_input_FIR_coeffs, kal_int16 length);
+void l1sp_setAllWbSpeechFirCoeff_OutputOnly(kal_int16 *speech_output_FIR_coeffs, kal_int16 length);
+void l1sp_setAllSWbSpeechFirCoeff_OutputOnly(kal_int16 *speech_output_FIR_coeffs, kal_int16 length);
+
+void l1sp_setAllSWbSpeechModePara(kal_uint16 * speech_mode_para, kal_int16 length);
+void SP_SetSpeechPara( uint16 sph_m_para[NUM_MODE_PARAS] );
+void SP_SetWbSpeechPara( kal_uint16 m_para[NUM_MODE_PARAS] );
+void SP_SetSWbSpeechPara( kal_uint16 m_para[NUM_MODE_PARAS] );
+
+
+kal_uint16 *Sp_GetSpeechPara(void);
+kal_uint16 *Sp_GetWbSpeechPara(void);
+#endif
+kal_uint16 *Sp_GetCommonSpeechPara(void);
+
+
+
+// ----------------------------------------------------------------------------
+// DSP volume related
+// ----------------------------------------------------------------------------
+void spGain_SetDigitalGain(kal_int16 digitalGainQdB, kal_bool isForceSet);
+void spGain_SetEnhRefDigitalGain(kal_int16 refDigitalGainQdB, kal_bool isForceSet);
+void spGain_SetMicrophoneVolume( kal_int16 mic_volume, kal_bool isForceSet );
+void spGain_Refresh2DSP(void);
+void spGain_Init(void);
+
+
+// ----------------------------------------------------------------------------
+kal_uint16 L1SP_GetAudID(void);
+void L1SP_FreeAudID(kal_uint16 aud_id);
+// ----------------------------------------------------------------------------
+
+int L1SP_GetC2KSO_Codec( void );
+// ----------------------------------------------------------------------------
+// Mute Control
+// ----------------------------------------------------------------------------
+typedef enum{ //bit mask   
+   L1SP_FORCEDUNMUTE_ALL = 0xFFFF,
+   L1SP_FORCEDUNMUTE_PCMROUTER = 0x01,
+   L1SP_FORCEDUNMUTE_PCMRECORD = 0x02,
+   L1SP_FORCEDUNMUTE_ACOUSTICLOOPBACK = 0x04,
+   L1SP_FORCEDUNMUTE_RAWPCMRECORD = 0x08,
+}L1SP_FORCEDUNMUTE_BITMASK; 
+
+kal_bool SP_is_codec_mute(void);
+void SP_SetForcedUnMuteController(L1SP_FORCEDUNMUTE_BITMASK mask, bool b);
+void sp4g_hisr_ul_g(void *data);
+void sp4g_hisr_dl_g(void *data);
+void L1SP_RampDone(void);
+
+// ----------------------------------------------------------------------------
+// em for voice qualtiy
+// ----------------------------------------------------------------------------
+#include "sal_def.h"
+
+typedef struct{
+	kal_bool isNotify;
+	kal_bool isOn;
+	kal_bool is4gWifi;
+	Sal_DMF_SPH_DL_Info_t dlInfo;
+	Sal_DMF_SPH_UL_Info_t ulInfo;
+	Sal_DMF_ENH_UL_Info_t enhUl;
+} SP_EM_VOICE_QUALITY_INFO;
+
+
+void sp_voiceQualityHisrHdl(void);
+void sp_voiceQualityEventHdl(SP_EM_VOICE_QUALITY_INFO *pEmVQ);
+
+// ----------------------------------------------------------------------------
+// Else
+// ----------------------------------------------------------------------------
+
+#if defined(MT6295M) ||  defined(__MODEM_ONLY__)
+#define SPH_CHIP_BACK_PHONECALL_USE
+#endif
+
+#if defined(MT6295M) || defined(__MODEM_ONLY__)
+#define SPH_CHIP_BACK_MODE_FIX_TO_NORMAL
+#endif
+
+#if defined(__VOLTE_SUPPORT__)  
+typedef struct{
+   //raw information from eMAC
+   uint32 RX_period;   //ms
+   uint32 TX_period;   //ms
+   uint32 time2nextRX; //ms
+   uint32 time2nextTX; //ms
+   uint32 issueTime;   //ms
+   kal_bool is_lch_on;
+}resync_info_t;
+
+typedef struct{
+   LOCAL_PARA_HDR
+   //raw information from eMAC
+   uint32 RX_period;   //ms
+   uint32 TX_period;   //ms
+   uint32 time2nextRX; //ms
+   uint32 time2nextTX; //ms
+   uint32 issueTime;   //ms
+}ilm_resync_info_t;
+
+void       sub_SP4G_emac_timing_update(l1sp_emac_resync_info_struct* p_timing_info, module_type module);
+kal_bool   SP4G_IsGCodecMode(void);
+
+#endif //#if defined(__VOLTE_SUPPORT__)
+
+typedef struct{
+   LOCAL_PARA_HDR
+   kal_int16 freq1;
+   kal_int16 freq2;
+   kal_int16 duration;
+}ilm_PSR_DL_KT_t;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   L1SP_Tones *pToneList;
+}ilm_PSR_DL_TONE_t;
+
+#if defined(__EVS_CODEC_SUPPORT__) && defined(__VOLTE_SUPPORT__)
+kal_bool SP4G_IsEVSCodecMode();
+#endif //#if defined(__EVS_CODEC_SUPPORT__) && defined(__VOLTE_SUPPORT__)
+
+typedef struct {
+	LOCAL_PARA_HDR
+	uint16 rate;
+}ilm_SP_C2K_RATE_NOTI_t;
+
+typedef struct {
+	LOCAL_PARA_HDR
+	uint16 pu2RateReduc_EM;
+}ilm_SP_C2K_RATE_REDUC_NOTI_t;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   L1SP_C2K_Event event;
+   int            param;
+}ilm_SP_C2K_EVENT_t;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   L1SP_L4C_Event event;
+   L1SP_L4C_Event_Mode mode;
+}ilm_SP_L4C_SET_EVENT_t;
+
+typedef enum {
+   SP_2G_HANDOVER,
+   SP_2G_TCH,  
+   SP_3G_RAB,
+   SP_4G_RAB,
+   SP_2G_AUDIOMANAGER_INFO
+}SP_CHANGERAT_EVENT;
+
+typedef struct {
+   LOCAL_PARA_HDR
+   SP_CHANGERAT_EVENT event;  // information from L1Core : mapping AUD_CC_IRQ_T to SP_CHANGERAT_EVENT; information from PCORE : use straightly
+   kal_uint32 param[2];
+}ilm_SP_CHANGERATE_EVENT_t;
+
+typedef enum {
+   SP_3G_SIM_FDD_ACTIVE,
+   SP_3G_SIM_TDD_ACTIVE,
+   SP_3G_SIM_IDLE,
+}SP_3G_SIM;
+
+SP_3G_SIM L1SP_GetSIMStatus();
+
+typedef struct {
+   LOCAL_PARA_HDR
+   uint8 text;
+}ilm_SP_L4C_SET_EGTT_t;
+void        SP_Parse_EMI_Info(void);
+kal_uint32* SP_GetSphParamBufAddr();
+kal_uint32 SP_GetSphParamBufSize();
+
+typedef struct {
+   LOCAL_PARA_HDR
+   bool enable;
+}ilm_SPC_SETLOOPBACK_DL_UL_t;
+
+#if defined(__ECALL_SUPPORT__)
+#if defined(__L5_SUPPORT__)
+typedef struct {
+   LOCAL_PARA_HDR
+   L1SP_L5ECALL_Event event;
+   kal_uint8 *data;
+}ilm_SP_L5ECALL_SET_EVENT_t;
+#endif
+#endif 
+
+#endif //_SP_DRV_H
diff --git a/mcu/driver/audio/src/v1/inc/sp_dsptone_drv.h b/mcu/driver/audio/src/v1/inc/sp_dsptone_drv.h
new file mode 100644
index 0000000..53164ab
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_dsptone_drv.h
@@ -0,0 +1,8 @@
+void SP_DSPTone_Init(void);
+void SP_DSPTone_ForceEnd(void);
+void SP_DSPTone_DL_KT_Play(kal_int16 freq1, kal_int16 freq2, kal_int16 duration);
+void SP_DSPTone_DL_KT_Stop(void);
+void SP_DSPTone_UL_KT_Play(kal_int16 freq1, kal_int16 freq2, kal_int16 duration);
+void SP_DSPTone_UL_KT_Stop(void);
+
+
diff --git a/mcu/driver/audio/src/v1/inc/sp_enhance.h b/mcu/driver/audio/src/v1/inc/sp_enhance.h
new file mode 100644
index 0000000..d88f151
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_enhance.h
@@ -0,0 +1,65 @@
+
+#ifndef _SP_ENHANCE_H
+#define _SP_ENHANCE_H
+
+#include "l1aud_common_def.h"
+#include "sal_def.h"
+
+
+//EMI Header Layout (uint:word)
+#define EMI_NEED_3K_0 1536 // EMI need 3k=0,13K=data
+#define EMI_GUARD_PATTERN 16
+#define MD_PRIVATE 4
+
+
+//EMI MD default par
+#define EMI_MD_DEFAULT_LEN 16384 //16K
+#define EMI_MD_DEFAULT_OFFSET 0 
+#define EMI_SPE_PAR_OFFSET  16384
+#define EMI_MD_COMMON_PAR_OFFSET 9
+#define EMI_MD_DBG_PAR_OFFSET 22
+
+
+
+
+
+void L1SP_EnableSpeechEnhancement( bool enable );
+void l1sp_SetParEMIInfo(uint32 offset,uint32 len);
+void SPE_LoadCommonPara( uint16 c_para[NUM_COMMON_PARAS]);
+
+
+#if defined(_SPE_ENH_MD_PARSE_)
+bool spe_isSpeFweOn(void);
+void SPE_LoadSpeechPara( uint16 c_para[NUM_COMMON_PARAS], uint16 m_para[NUM_MODE_PARAS],
+	uint16 m_paraWb[NUM_MODE_PARAS],uint16 m_paraSWb[NUM_MODE_PARAS]);
+void spe_setHacModeNeeded(bool isNeed);
+//void SPE_MagiClarityData(short MagiClarityData[32]);
+#endif
+
+// ----------------------------------------------------------------------------
+// DSP filter/function related parameter/coefficient setting
+// ----------------------------------------------------------------------------
+#if defined(_SPE_ENH_MD_PARSE_)
+void spe_setMagiCon(void);
+void spe_DisableMagiCon(void);
+//void SPE_SetActiveEchoRefInfo(uint16 sphMode);
+//void SPE_SetEchoRefInfo(bool isEchoRefOn, uint16 echoRefMicIndex, uint16 delayAndSwitch4Dsp, uint16 sphMode);
+#endif
+
+
+void spe_setNotchFilterParam(int16 *param, bool is2In1Spk);
+void L1SP_EnhancementCtrlSupport( uint16 value );
+void SetSpeechEnhancement(bool ec);
+void SPE_WaitSPEDynReady(void) ;
+void l1sp_setCtmSpeStatus(bool s);
+bool l1sp_getCtmSpeStatus();
+
+typedef enum{
+	SpeechEnh_All = 0, //default path : UL+DL
+	SpeechEnh_UL, 
+	SpeechEnh_DL, 
+}SpeechEnh_path; 
+void SetSPEnhancePath(uint8 path);
+
+
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps.h b/mcu/driver/audio/src/v1/inc/sp_ps.h
new file mode 100644
index 0000000..c218c25
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps.h
@@ -0,0 +1,247 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching speech interface
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 08 24 2020 thomas.chen
+ * [MOLY00561737] ³q??­µ??¤ÀªR
+ * 	
+ * 	.
+ *
+ * 05 26 2020 yf.wang
+ * [MOLY00527586] [MP3 Excluded][MT6885][Petrus][TMO-US][MP3][WWFT][Seattle][5G4G][NSN][MDST][SWIFT][Assert] file:mcu/driver/audio/src/v1/sp_ps_codec_evs.c line:752 p1:0x00000000 p2:0x00000000 p3:0x00000000
+ * Add UL delay threshold for LTECSR.
+ *
+ * 12 04 2019 thomas.chen
+ * [MOLY00457654] AAM for 4/5G L2 Switching
+ * 	
+ * 	.
+ *
+ * 09 25 2019 thomas.chen
+ * [MOLY00443295] Gen97 Multi IRQ for reducing VoLTE delay
+ * .
+ *
+ * 07 02 2019 sheila.chen
+ * [MOLY00418158] �iP90�j DMF ?��?�q�I?�ݨD
+ * DMF: event for speech discontinued modification
+ *
+ * 06 26 2019 sheila.chen
+ * [MOLY00408630] �iP90�j DMF ?��?�q�I?�ݨD
+ * 	
+ * 	[MOLY00413193] �iP90�j DMF ?��?�q�I?�ݨD
+ * 	
+ * 	DMF ?��?�q�I?�ݨD patch back
+ *
+ * 05 22 2019 sheila.chen
+ * [MOLY00407961] �iP90�j DMF ?��?�q�I?�ݨD
+ * speech quality event notify.
+ *
+ * 06 12 2018 fu-shing.ju
+ * [MOLY00328903] [EIGER] Refactor PS Call code for LTE and NR.
+ * 	
+ * 	Fix build warring.
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef SP_PS_CALL_H
+#define SP_PS_CALL_H
+
+//Code Option
+//#define TK6291_FAKE_COMPILE
+//#define __USE_EVS_IO_REPLACE_AWB__
+#define __SP4G_UL_RESYNC__
+#define UL_HARD_REAL_TIME_DEMAND 
+#define __OP_IS_AT_AND_T__
+
+#ifdef __PRODUCTION_RELEASE__
+    #define SP_PS_CALL_DBG_ASSERT(exp) 
+#else
+/* under construction !*/
+#endif
+
+
+//Declare constant 
+#define INIT_CODEC (0x3)
+
+#define SPPS_RAB_ID_MAX (6)
+
+#define AMR_SID_FRAME   8
+#define AMR_NO_DATA     15 
+
+#define AWB_SID_FRAME   9
+#define WB_AMR_SID_FRAME   25
+     
+#define UL_MAX_DATA_SIZE  62 // frame_type, UL : len / DL : FQI_flag , DATA(23.85=>60)
+#define DL_MAX_DATA_SIZE  66 // frame_type, UL : len / DL : FQI_flag , CFN(4 bytes),  DATA(23.85=>60)
+#define MAX_DSP_FRAME_LEN 30
+
+#define MAXIMUM_UL_DELAY 15  // CSR define for debug  
+#define START_SHRINK_UL_DELAY 10 // L1Audio shrink UL delay from 40ms to 20ms 
+#define UL_DELAY_THRESHOLD 3 // CSR define for UL delay threshold
+
+#define MAX_4G_DL_BUFF_SIZE (2)
+#define MAX_4G_UL_BUFF_SIZE (2)
+
+#define DL_4G_THRESHOLD (1)
+#define UL_4G_THRESHOLD (2)
+
+#define HARD_REAL_TIME_UL_BUFFER_NUM 1 // could not revise 
+#define RAT_4G_UL_BUFFER_NUM MAX_4G_UL_BUFF_SIZE  // could not revise 
+
+#define RAT_4G_DL_BUFFER_NUM                  MAX_4G_DL_BUFF_SIZE  // do not suggest to revise 
+#define RAT_4G_DL_BUFFER_NUM_BEFORE_RESYNC    MAX_4G_DL_BUFF_SIZE  // do not suggest to revise
+
+#define MAX_UL_BUFFER_NUM  RAT_4G_UL_BUFFER_NUM
+#define MAX_DL_BUFFER_NUM  RAT_4G_DL_BUFFER_NUM_BEFORE_RESYNC
+
+#define __SP4G_DL_BUFFER_BEFORE_PLAY__
+/* Enable more buffering before put frame to DSP to keep start of speech smooth.
+   If not defined this compile option, it can reduce delay but maybe can't cover the initial discontinous.
+*/   
+
+// here should be careful for this will limit MAX_DL_BUFFER_NUM to 1 << DL_BUF_INDEX_BIT_NUM 
+//                                        and MAX_UL_BUFFER_NUM to 1 << UL_BUF_INDEX_BIT_NUM      
+#define DL_BUF_INDEX_BIT_NUM 5 
+#define UL_BUF_INDEX_BIT_NUM (8 - DL_BUF_INDEX_BIT_NUM)
+
+#define SP4G324M_DL_EXTRA_LEN 5//frameType(1), len(1), l1_frame : recieve(3)
+#define SP4G_DL_EXTRA_LEN     6//frameType(1), FQI_flag(1), CFN(4)(unit:byte)
+
+//AMRWB 23.85 classB 405 bits=>51 bytes
+#define MAX_BYTES_IN_SINGLE_SUBFLOW ((405 + 7)>>3)
+#define _IGNORE_TYPE_ERROR_   // for 4G324M since the CRC is weaker, it's possible wrong pattern.
+                              // so ignore it instead of assert.
+
+#ifdef __OP_IS_AT_AND_T__
+#define SILENCE_DETECTION_COUNT_NUMBER (25)
+#define SILENCE_DETECTION_FRAME_TYPE_RECORD_NUMBER (SILENCE_DETECTION_COUNT_NUMBER+1)
+#endif //#ifdef __OP_IS_AT_AND_T__
+
+#if defined(__SP4G_UL_RESYNC__)   
+typedef enum {
+   SP_PSCALL_EMAC=0,
+   SP_PSCALL_NMAC,   
+   SP_PSCALL_NONE=0xFF,
+}SP_PSCALL_L2_MODE;
+#endif
+
+typedef struct 
+{   
+   uint16 ul_dsp_buffer[MAX_DSP_FRAME_LEN];
+   uint16 dl_dsp_buffer[MAX_DSP_FRAME_LEN];
+   uint8 dl_buffer[MAX_DL_BUFFER_NUM][DL_MAX_DATA_SIZE];
+   /*0: CFN, 1:RSSI|RSCP|ECIO|HHO_SHO ,2:crc_result ,3:s_value[0], 4:tpc_SIR_lta, 5:dpdch_SIR_lta, 6:TFCI_max_corr */
+   uint32 L1_Info[4][7];
+
+#if defined(__SP4G_UL_RESYNC__)   
+   uint32 time[2][3];  //EMAC -- >unit:ms  0: MAC , 1: under dl_hisr, ready for VBIReset, 2: ul_hisr timing   
+                       //NMAC -- >unit:ms  0: MAC , 1: under dl_hisr, ready for VBIReset, 2: ul_hisr timing   
+   bool   request_resync;
+   int32  time2nextSR[2];   //unit: ms
+   int32  time2nextDRX[2];   //unit: ms
+   int32  time2nextULHISR[2];   //unit: ms
+   int32  time2nextDLHISR[2];   //unit: ms
+   SP_PSCALL_L2_MODE sph_l2_mode;
+#endif
+
+   kal_uint16 margin_AAM_ul, margin_AAM_dl;
+    
+   uint8 ul_buffer[MAX_UL_BUFFER_NUM][UL_MAX_DATA_SIZE];// prevent sp4g_hisr , CSR race condition
+   uint8 ul_write_idx;
+   uint8 ul_read_idx;
+   uint8 ul_count;
+   bool is_getting_ul_data;
+   uint8 ul_delay;
+   uint8 dl_delay;
+   uint8 dl_count;
+   uint8 dl_write_idx;
+   uint8 dl_read_idx;
+   uint8 ul_codec_mode;
+   uint8 ul_report;
+   uint8 dl_report;
+   uint8 pre_ul_report;
+   uint8 pre_dl_report;
+   bool ul_waiting;  // 1-message-1-get policy
+   bool dl_waiting;  // 1-message-1-get policy
+   bool ul_refresh; // detect change codec_mode
+   bool ul_intrarat; //if DSP SE interrupt raise at next beginning of next SE, ignore first SE.
+   uint8 l1_info_idx;
+
+   uint8 sp4g_mode;
+   uint8 ul_buffer_size;
+   uint8 dl_buffer_size;
+   uint8 dtx_state;  //enter dtx mode
+   uint8 dtx_force;  //occured that force AMR frame
+   uint8 dl_subflow[MAX_BYTES_IN_SINGLE_SUBFLOW];
+}SPPS_Struct_t;
+
+typedef enum{
+	PS_SRST_TYPE_CALLON = 0,
+	PS_SRST_TYPE_HO_WITHOUT_VBIEND,
+	PS_SRST_TYPE_UNSYNC,
+	PS_SRST_TYPE_DEV,
+	PS_SRST_TYPE_HO_WITH_VBIEND,
+}PS_RESET_TYPE_t;
+
+void PSR_SP4G_Callback( SP4G_Event event, void *data);
+SP_PSCALL_L2_MODE SP4G_GetL2Mode();
+#endif //#ifndef SP_PS_CALL_H
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_aam.h b/mcu/driver/audio/src/v1/inc/sp_ps_aam.h
new file mode 100644
index 0000000..82eec1f
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_aam.h
@@ -0,0 +1,142 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_aam.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching AAM
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 09 25 2019 thomas.chen
+ * [MOLY00443295] Gen97 Multi IRQ for reducing VoLTE delay
+ * 	
+ * 	.
+ *
+ * 09 24 2019 thomas.chen
+ * [MOLY00443295] Gen97 Multi IRQ for reducing VoLTE delay
+ * .
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef SP_PS_AAM_H
+#define SP_PS_AAM_H
+
+#include "sp_ps.h"
+#include "us_timer.h"
+
+//#if defined(__SP4G_UL_RESYNC__)
+#define ust_get_duration_true(prev, cur)  (((cur) >= (prev))? (((cur) - (prev))): ((USCNT_WRAP - (prev) + (cur))))
+#undef MIN
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+
+#define DSP_SD_MIPS    (5)         //ms
+//#define DSP_SE_MIPS    (14-9)        //ms
+#define DSP_SE_MIPS    (20)        //ms
+#define DSP_PERIOD     (20)        //ms
+
+#define DRIFT_DSP2MCU_RESET         (2) //unit ms :allow the timing of DSP interrupt deviated from time2nextULHISR is with DRIFT_DSP2MCU_US ms.
+#define DRIFT_DSP2MCU_DSP_FINE_TUNE (1) //unit ms :allow the timing of DSP interrupt deviated from time2nextULHISR is with DRIFT_DSP2MCU_US ms.
+#define DIFF_TX_RX_ALIGN            (2)
+
+#define MARGIN_CORESONIC_INIT_TIME  (3) //unit ms :The length of time of transferring data from PSR to EMAC ,TO-DO, by reception of EMAC, we can adapt this value instead of a fixed value
+#define MARGIN_PSR2MAC              (2) //unit ms :The length of time of transferring data from PSR to EMAC ,TO-DO, by reception of EMAC, we can adapt this value instead of a fixed value
+//#endif //#if defined(__SP4G_UL_RESYNC__)
+
+
+//#ifdef __OP_IS_AT_AND_T__
+typedef struct {
+   int UL_count;
+   int DL_count;
+   int UL_write;
+   int DL_write;
+   int UL_frame_type[SILENCE_DETECTION_FRAME_TYPE_RECORD_NUMBER];
+   int DL_frame_type[SILENCE_DETECTION_FRAME_TYPE_RECORD_NUMBER];
+   int first_EMAC_info;
+}Silence_Detection_t;
+//#endif //#ifdef __OP_IS_AT_AND_T__
+
+
+typedef enum{
+   SP_PS_AAM_STATE_NONE,
+   SP_PS_AAM_STATE_LTE_EMAC_ON,
+   SP_PS_AAM_STATE_LTE_EMAC_OFF,
+   SP_PS_AAM_STATE_LTE_RESYNC,
+   SP_PS_AAM_STATE_NR_EMAC_ON,
+   SP_PS_AAM_STATE_NR_EMAC_OFF,
+   SP_PS_AAM_STATE_NR_RESYNC,
+} SP_PS_AAM_STATE;
+
+
+void sp_ps_aam_init(void);
+void sp_ps_aam_speech_init(void);
+void sp_ps_aam_speech_init_SilenceDetection(void);
+void sp_ps_aam_GetSyncDelayRW(kal_uint16 *u16DelayR, kal_uint16 *u16DelayW, kal_uint16 *u16DelayM, kal_uint32 *u32CurTime64us);
+void sp_ps_aam_execute(SP_PS_AAM_STATE aam_state);
+SP_PS_AAM_STATE sp_ps_aam_check_status(void);
+
+void Silence_Detection_reset_count(void);
+void Silence_Detection_set_ULFrameType(int val);
+void Silence_Detection_set_DLFrameType(int val);
+
+void sp_ps_AAM_hisr(void *data);
+
+void sp_ps_smr_resync_procedure_done(void);
+#endif //#ifndef SP_PS_AAM_H
+
+
+
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_aamp.h b/mcu/driver/audio/src/v1/inc/sp_ps_aamp.h
new file mode 100644
index 0000000..d00df31
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_aamp.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_aamp.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching AAM Plus
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef __SP_PS_AAMP_H__
+#define __SP_PS_AAMP_H__
+
+#define __SP_PS_AAM_PLUS__
+
+void sp_ps_AAMPlus_enable(void);
+void sp_ps_AAMPlus_disable(void);
+void sp_ps_AAMPlus_notify_EMAC(void *data);
+
+#endif //__SP_PS_AAMP_H__
+
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_codec_amr.h b/mcu/driver/audio/src/v1/inc/sp_ps_codec_amr.h
new file mode 100644
index 0000000..a153d99
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_codec_amr.h
@@ -0,0 +1,105 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_codec_amr.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching AMR speech codec driver
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 07 30 2018 fu-shing.ju
+ * [MOLY00342603] JBM2.0 Timesacling phase - LR13.R0.MP
+ * JBM 2.0 - Speech Driver.
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef SP_PS_CALL_CODEC_AMR_H
+#define SP_PS_CALL_CODEC_AMR_H
+
+#include "sp_ps.h"
+#include "amr_table.h"
+
+
+//#define GetFrameType2DspMode(ftype)   (AmrFrameType2DspMode_spps[(ftype)])
+#define GetDspMode2FrameType(mode)    (((0x20 <= (mode)) && ((mode) <= 0x28)) ? (WB_DspMode2AmrFrameType_spps[(mode)-0x20]) :         \
+                                   (((0x03 <= (mode)) && ((mode) <= 0x0A)) ? (NB_DspMode2AmrFrameType_spps[(mode)-0x03]) : (-1)))   
+   
+#define GetDspModeLen(mode)        (((0x20 <= (mode)) && ((mode) <= 0x28)) ? (WB_DspModeLen_spps[(mode)-0x20]) :                   \
+                                   (((0x03 <= (mode)) && ((mode) <= 0x0A)) ? (NB_DspModeLen_spps[(mode)-0x03]) : (0x00))) 
+                                    
+#define GetRab2DspMapping(ftype)   (((0x10 <= (ftype)) && ((ftype) <= 0x18)) ? (tblAMR_WBOrder[(ftype) - 0x10]) :               \
+                                   (((0x00 <= (ftype)) && ((ftype) <= 0x07)) ? (tblAMROrder[(ftype)-0x00]) : (0)))  
+   
+
+
+em_speech_info_SpeechCodecType convert_SP4G_CODEC_AMR_AMRWB_to_SPH_CODEC(SP4G_Codec frame_type);
+uint16 sp_ps_codec_amr_Get_RAB_subflow_spps(int index1, int index2);
+kal_uint16 sp_ps_codec_amr_GetCodecBitLength(SP4G_Codec codec);
+uint8 sp_ps_codec_amr_Get_AmrFrameType2DspMode_spps(int index);
+void sp_ps_codec_amr_reset_internal(void);
+void sp_ps_codec_amr_hisr_ul_amr(void *data);
+void sp_ps_codec_amr_hisr_dl_amr(void *data);
+void sp_ps_codec_amr_UL_GetSpeechFrame(kal_uint8 *frame_type, kal_uint8 *rab_byte_array, kal_uint8 *len);
+void sp_ps_codec_amr_DL_PutSpeechFrame(kal_uint32 CFN, SP4G_PSR_Codec codec, SP4G_Codec frame_type, kal_uint8 *encodebits, kal_bool crc_status, VoLTE_JBM_TS_Info_t *JBM_info);
+
+
+
+
+
+#endif //#ifndef SP_PS_CALL_CODEC_AMR_H
+
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_codec_evs.h b/mcu/driver/audio/src/v1/inc/sp_ps_codec_evs.h
new file mode 100644
index 0000000..5082f3d
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_codec_evs.h
@@ -0,0 +1,153 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_codec_evs.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching EVS speech codec driver
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 09 25 2019 thomas.chen
+ * [MOLY00443295] Gen97 Multi IRQ for reducing VoLTE delay
+ * 	
+ * 	.
+ *
+ * 09 24 2019 thomas.chen
+ * [MOLY00443295] Gen97 Multi IRQ for reducing VoLTE delay
+ * .
+ *
+ * 07 30 2018 fu-shing.ju
+ * [MOLY00342603] JBM2.0 Timesacling phase - LR13.R0.MP
+ * JBM 2.0 - Speech Driver.
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef SP_PS_CALL_CODEC_EVS_H
+#define SP_PS_CALL_CODEC_EVS_H
+
+#include "sp_ps.h"
+
+
+//#if defined(__EVS_CODEC_SUPPORT__)
+#include "vm.h"
+#include "pcmrb.h"
+#include "streamrb.h"
+//#endif //#if defined(__EVS_CODEC_SUPPORT__)
+
+
+#define DSP_EVS_SD_MIPS (5)
+#define DSP_EVS_SE_MIPS (20)
+
+
+//fsju, should remove
+#define EVS_CAPABILITY_BW (SP4G_CODEC_EVS_32K)
+#define EVS_PCM_BW (SP4G_CODEC_EVS_32K)
+
+typedef struct {
+   int magicid;
+   int codec;
+   int byte_len;
+   int bit_len;
+}EVS_frame_header_t;
+
+
+//sample_number(20ms at 48k) * 2byte_per_sample
+#define EVS_CODEC_PCM_BYTE_SIZE (960*2)
+//EVS Primary mode 128k: 320byte
+#define EVS_CODEC_FRAME_BYTE_SIZE (2560>>3)
+#define EVS_CODEC_PCM_BUFFER_NUM (8)
+#define EVS_CODEC_FRAME_BUFFER_NUM (8)
+//ring buffer will waste 1 element, so add dummy 2 byte(1 pcm element is 2 byte)
+#define EVS_CODEC_PCM_RB_BYTE_SIZE (EVS_CODEC_PCM_BYTE_SIZE*EVS_CODEC_PCM_BUFFER_NUM+2)
+//ring buffer will waste 1 element, so add dummy 1 byte(1 HB element is 1 byte)
+#define EVS_CODEC_FRAME_RB_BYTE_SIZE ((EVS_CODEC_FRAME_BYTE_SIZE+sizeof(EVS_frame_header_t))*EVS_CODEC_FRAME_BUFFER_NUM+1)
+
+typedef enum{
+   ENUM_EVS_NOTIFY_LTECSR_MSG_ERROR,
+   ENUM_EVS_NOTIFY_LTECSR_MSG_DATA,
+   ENUM_EVS_NOTIFY_LTECSR_MSG_MUTE,
+   ENUM_EVS_NOTIFY_LTECSR_MSG_NON,
+}enum_EVS_NOTIFY_LTECSR_MSG;
+
+
+
+
+bool sp_ps_codec_evs_is_EVS_codec(uint8 codec);
+kal_bool convert_AWB_to_EVSIOEnum(SP4G_Codec input_speech_codec, SP4G_Codec *poutput_SP4G_Codec);
+kal_bool convert_EVSIO_to_AWBEnum(SP4G_Codec input_speech_codec, SP4G_Codec *poutput_SP4G_Codec);
+void sp_ps_codec_evs_SetEVSEncCAPara(EVS_ENC_CA_PARAMETER *pEVS_CA_Par);
+void sp_ps_codec_evs_SetEVSDecCAPara(EVS_DEC_CA_PARAMETER *pEVS_CA_Par);
+SP4G_CODEC_EVS_AWB_SID_TYPE EVS_decoder_get_SID_type(void);
+void sp_ps_codec_evs_hisr_ul_EVS(void *data);
+void sp_ps_codec_evs_hisr_dl_EVS(void *data);
+int sp_ps_codec_evs_UL_GetSpeechFrame(SP4G_Codec *frame_type, uint8 *encodebits, kal_int32 *bitlen);
+void sp_ps_codec_evs_DL_PutSpeechFrame(kal_uint32 CFN, SP4G_Codec frame_type, kal_uint8 *encodebits, EVS_DEC_CA_PARAMETER *pEVS_Dec_CA_Par, kal_bool crc_status, VoLTE_JBM_TS_Info_t *JBM_info);
+void sp_ps_codec_evs_speech_init(void);
+void sp_ps_codec_evs_init(void);
+kal_uint16 sp_ps_codec_evs_GetCodecBitLength(SP4G_Codec codec);
+uint16 sp_ps_codec_evs_Get_EVS_AWB_RAB_subflow(int index1, int index2);
+void sp_ps_codec_evs_reset_internal(void);
+void sp_ps_codec_evs_set_network_bw(SP4G_Codec codec);
+void sp_ps_codec_evs_CallOpenSetPar(void);
+
+
+//void EVS_encoder_prepare_parameter(EVS_ENCODER_PARAMETER *pEVS_Enc_Par);
+//void EVS_decoder_prepare_parameter(EVS_DECODER_PARAMETER *pEVS_Decoder_Par, kal_int32 bitlen, kal_int32 BFI);
+
+
+#endif //#ifndef SP_PS_CALL_CODEC_EVS_H
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_codec_g.h b/mcu/driver/audio/src/v1/inc/sp_ps_codec_g.h
new file mode 100644
index 0000000..bb15370
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_codec_g.h
@@ -0,0 +1,150 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_codec_g.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching G speech codec driver
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 05 14 2020 yf.wang
+ * [MOLY00523036] [MT6873][Margaux][Q0][R3][MP5][SQC][Elisa][WW FT][Finland][NSA][IMS][TCID: V-CC-065] Sometimes audios missing when calling to Customer Service
+ * 
+ * G-Series Codec add DL hisr handle to notify data for LTECSR
+ *
+ * 05 13 2020 yf.wang
+ * [MOLY00523036] [MT6873][Margaux][Q0][R3][MP5][SQC][Elisa][WW FT][Finland][NSA][IMS][TCID: V-CC-065] Sometimes audios missing when calling to Customer Service
+ * G-Series Codec add DL hisr handle to notify data for LTECSR
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef SP_PS_CALL_CODEC_G_H
+#define SP_PS_CALL_CODEC_G_H
+
+#include "sp_ps.h"
+
+//#if defined(__VOLTE_SUPPORT__)
+#include "vm.h"
+//#endif //#if defined(__VOLTE_SUPPORT__)
+
+//#if defined(__G_CODEC_SUPPORT__)
+#include "pcmrb.h"
+#include "streamrb.h"
+#include "g_series_union.h"
+
+//10frame * sample_number(20ms at 8k) * 2byte_per_sample
+#define G_SERIAL_CODEC_PCM_RB_BYTE_SIZE (10*160*2)
+//2048byte
+#define G_SERIAL_CODEC_STREAM_RB_BYTE_SIZE (2048)
+
+
+typedef struct GSERIES_MANAGER{
+   SP4G_Codec enc_codec;
+   //encode
+   void  *enc_hdl;
+   void  *enc_tmp_buf;
+   void  *enc_init_buf;
+   
+   int    enc_pcm_size;
+   int    enc_bs_size; 
+   
+   void  *enc_init_param;
+   void  *enc_rtime_param;
+   
+   SP4G_Codec dec_codec;
+   //decode
+   void  *dec_hdl;
+   void  *dec_tmp_buf;
+   void  *dec_init_buf;
+   
+   int    dec_pcm_size;
+   int    dec_bs_size;    
+   
+   void  *dec_init_param;
+   void  *dec_rtime_param;
+}g_series_mgr_t;
+
+typedef struct {
+   int magicid;
+   int codec;
+   int len;
+}frame_header_t;
+
+
+
+
+bool   sp_ps_codec_g_is_g_codec(uint8 codec);
+uint16 sp_ps_codec_g_get_g_dl_id(void);
+uint16 sp_ps_codec_g_get_g_ul_id(void);
+void   sp_ps_codec_g_Encode_Init(SP4G_Codec codec_);
+void   sp_ps_codec_g_Decode_Init(SP4G_Codec codec_);
+void   sp_ps_codec_g_speech_init(void);
+void   sp_ps_codec_g_close(void);
+void   sp_ps_codec_g_reset_internal(void);
+void   sp_ps_codec_g_Set_G711Parameters(kal_int32 law, kal_int32 dec_init_CNG_enable);
+int    sp_ps_codec_g_GetFrame(int8* c, int8* len, uint8* tmp_buf);
+void   sp_ps_codec_g_PutFrame(int c, int encoded_len, uint8* encoded_bits);
+void   sp_ps_codec_g_hisr_ul_g(void *data);
+void   sp_ps_codec_g_hisr_dl_g(void *data);
+int    sp_ps_codec_g_UL_GSeries_IsMoreData(void);
+
+
+
+
+
+#endif //#ifndef SP_PS_CALL_CODEC_G_H
diff --git a/mcu/driver/audio/src/v1/inc/sp_ps_dsp_opt.h b/mcu/driver/audio/src/v1/inc/sp_ps_dsp_opt.h
new file mode 100644
index 0000000..e690481
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/sp_ps_dsp_opt.h
@@ -0,0 +1,88 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * sp_ps_dsp_opt.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   Packet-switching speech DSP related features
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *------------------------------------------------------------------------------
+ * $Revision: $
+ * $Modtime: $
+ * $Log: $
+ *
+ * 07 02 2018 fu-shing.ju
+ * [MOLY00336128] Gen95 dudu detection
+ * 	
+ * 	Gen95 dudu detection
+ *
+ * 04 10 2018 fu-shing.ju
+ * [MOLY00305348] Use debug_info[12] bit0 to enable/disable USE_EVSIO_TO_REPLCAE_AWB.
+ * .
+ *
+ 
+ *******************************************************************************/
+
+
+#ifndef __SP_PS_DSP_OPT__
+#define __SP_PS_DSP_OPT__
+
+
+//#define __SP_4G_OPT_TONE_DETECTION__
+#define __SP_4G_OPT_TONE_DETECTION_EXECUTED_IN_DSP__
+
+
+uint16 sp_ps_dsp_opt_ToneDeteGetAudID(void);
+void sp_ps_dsp_opt_ToneDeteInit(void);
+void sp_ps_dsp_opt_ToneDeteClose(void);
+void sp_ps_dsp_opt_ToneDeteTaskInit(void);
+void sp_ps_dsp_opt_ToneDeteExec();
+int32 sp_ps_dsp_opt_ToneDeteGetResult(void);
+
+
+#endif //__SP_PS_DSP_OPT__
diff --git a/mcu/driver/audio/src/v1/inc/spc_drv.h b/mcu/driver/audio/src/v1/inc/spc_drv.h
new file mode 100644
index 0000000..d69663f
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/spc_drv.h
@@ -0,0 +1,379 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * spc_drv.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * MD speech control interfaces 
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _SPC_DRV_H
+#define _SPC_DRV_H
+
+#include "sp_drv.h"
+#include "audio_enum.h"
+
+
+typedef struct spcBufInfoStruct 
+{
+   uint16 syncWord;
+   uint16 type;
+   uint16 length;
+} spcBufInfo;
+
+typedef struct spcExtendedBufInfoStruct 
+{
+   uint16 syncWord;
+   uint16 type;
+   uint16 length;
+   uint16 curIdx;
+   uint16 totalIdx;      
+} spcExtendedBufInfo;
+
+// ----------------------------------------------------------------------------
+// Datacard
+// ----------------------------------------------------------------------------
+void spc_daca_sendDlData(void);
+void spc_daca_requestUlData(void);
+
+// ----------------------------------------------------------------------------
+// PCMNWAY
+// ----------------------------------------------------------------------------
+#if defined(__ENABLE_SPEECH_DVT__)
+void spc_pcmNWay_sendUlData(uint16 bufLen);
+void spc_pcmNWay_requestDlData(uint16 bufLen);
+#else // defined(__ENABLE_SPEECH_DVT__)
+void spc_pcmNWay_sendUlData(void);
+void spc_pcmNWay_requestDlData(void);
+#endif // defined(__ENABLE_SPEECH_DVT__)
+
+// ----------------------------------------------------------------------------
+// Background Sound
+// ----------------------------------------------------------------------------
+void spc_bgSnd_requestData(void);
+void spc_BgSndClose(void);
+
+// ----------------------------------------------------------------------------
+// Recording
+// ----------------------------------------------------------------------------
+// void spc_record_sendPcmData(void); // removed after 93md
+void spc_record_sendVmData(void);
+void spc_record_sendRAWPcmData(void);
+
+// ----------------------------------------------------------------------------
+// Ramp
+// ----------------------------------------------------------------------------
+//
+void spc_gain_sendRampDone(void);
+
+// ----------------------------------------------------------------------------
+// CTM
+// ----------------------------------------------------------------------------
+void spc_ctm_sendDumpDebugData(void);
+
+// ----------------------------------------------------------------------------
+// ECALL
+// ----------------------------------------------------------------------------
+#if defined(__ECALL_SUPPORT__)	
+
+typedef enum{
+	SPC_ECALL_DISABLE = 0,
+	SPC_ECALL_SDT_ONLY,
+	SPC_ECALL_ENABLE,
+	SPC_ECALL_MAX = 3 // due to spcEmInit is unit16, so only 16 em data message can existing. 
+} SPC_ECALL_STATUS;
+void spc_eCall_IVS_Open(void);
+void spc_eCall_IVS_Close(void);
+void spc_eCall_PSAP_Open(void);
+void spc_eCall_PSAP_Close(void);
+void spc_eCall_SDT_Open(void);
+void spc_eCall_SDT_Close(void);
+void spc_eCall_Msd_Data(kal_uint16 offset, kal_int16 length,SPC_MSG_FROM_T comeFrom);
+void spc_eCall_TX_CTRL_Data(kal_uint16 offset, kal_int16 length,SPC_MSG_FROM_T comeFrom);
+void spc_eCall_RX_CTRL_Data(uint16 header);
+void spc_eCall_Handshake_Info_Notify (uint16 header,uint32 data);
+void spc_Set_Ecall_Lib_Status(uint8 status);
+uint8 spc_Get_Ecall_Lib_Status(void);
+#if defined(__L5_SUPPORT__)
+	void spc_L5ECALL_Status_Info_Callback(kal_uint16 status, kal_uint32 data);
+#endif 
+
+#endif
+
+void spc_gain_DlMuteSet(kal_bool on, kal_bool byPassCheck);
+void spc_gain_UlMuteSet(kal_bool on, kal_bool byPassCheck);
+
+// ----------------------------------------------------------------------------
+// MIXER
+// ----------------------------------------------------------------------------
+void spc_pcmMixer3_requestUlData(void);
+// ----------------------------------------------------------------------------
+// MIXER
+// ----------------------------------------------------------------------------
+void spc_pcmMixer_requestDlData(void);
+
+
+// ----------------------------------------------------------------------------
+// AUDL running functions Related
+// ----------------------------------------------------------------------------
+void Spc_Init(void); 
+void spc_A2M_MsgHandler(kal_uint32 ccciMsg, kal_uint32 ccciResv, SPC_MSG_FROM_T comeFrom);
+#if defined(_SPE_ENH_MD_PARSE_)
+uint16 spc_ReceiveDynamicParameter(const kal_uint16 offset, const kal_uint16 length, SPC_MSG_FROM_T comeFrom);
+#else
+void spc_ReceiveEMIParInfo(const kal_uint32 offset, const kal_uint16 length, SPC_MSG_FROM_T comeFrom);
+#endif
+void spc_notify_network_status(uint32 codec);
+void spc_record_sendRawPcmData(void);
+void spc_setAcLoopbackState(bool b);
+bool spc_isAcLoopback();
+// void Spc_SetSpeechEnhMode_Adaptation( uint8 mode );
+void spc_dev_LoopbackPoint_DVT(kal_uint16 point);
+void spc_CtmClose(void);
+void spc_RttConfig(uint16 type);
+void spc_sendRampDoneAck(uint16 ramp_point);
+kal_uint16 spc_getCtmMode();
+void spc_C2KCtmStart(kal_uint16 mode);
+kal_bool spc_isPCM();
+#endif // _SPC_DRV_H
diff --git a/mcu/driver/audio/src/v1/inc/spc_io.h b/mcu/driver/audio/src/v1/inc/spc_io.h
new file mode 100644
index 0000000..d291eb3
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/spc_io.h
@@ -0,0 +1,432 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * spc_io.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * IO interface between AP and MD speech driver, and AUDL basic function structure
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _SPC_IO_H_
+#define _SPC_IO_H_
+
+#include "audio_enum.h"
+
+
+typedef enum {
+
+	SPCIO_MSG_FROM_SPC_SPH_DL_DIGIT_VOLUME_ACK = 0x00,
+	SPCIO_MSG_FROM_SPC_SPH_UL_DIGIT_VOLUME_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_UL_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_DL_ACK,
+	SPCIO_MSG_FROM_SPC_SIDETONE_VOLUME_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_DL_ENH_REF_DIGIT_VOLUME_ACK,
+	SPCIO_MSG_FROM_SPC_SIDETONE_CONFIG_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_UL_ENH_RESULT_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_UL_SOURCE_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_DL_CODEC_ACK,
+	SPCIO_MSG_FROM_SPC_MUTE_SPH_DL_DYNAMIC_ACK,
+	
+	SPCIO_MSG_FROM_SPC_SPH_ON_ACK = 0x20, 
+	SPCIO_MSG_FROM_SPC_SPH_OFF_ACK, 
+	SPCIO_MSG_FROM_SPC_SET_SPH_MODE_ACK,
+	SPCIO_MSG_FROM_SPC_CTRL_SPH_ENH_ACK,
+	SPCIO_MSG_FROM_SPC_CONFIG_SPH_ENH_ACK,
+	SPCIO_MSG_FROM_SPC_SET_ACOUSTIC_LOOPBACK_ACK,
+	SPCIO_MSG_FROM_SPC_QUERY_MD_CAPABILITY_ACK, 
+	SPCIO_MSG_FROM_SPC_SET_MD_CAPABILITY_ACK, 
+	SPCIO_MSG_FROM_SPC_PRINT_SPH_COEFF_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_ON_FOR_HOLD_CALL_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_ON_FOR_DACA_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_ROUTER_ON_ACK,
+	SPCIO_MSG_FROM_SPC_SET_VOICE_ENCRYPTION_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_DEV_CHANGE_ACK,
+	SPCIO_MSG_FROM_SPC_ENH_CTRL_SUPPORT_ACK,
+
+	SPCIO_MSG_FROM_SPC_PNW_ON_ACK = 0x30,
+	SPCIO_MSG_FROM_SPC_PNW_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_RECORD_ON_ACK,
+	SPCIO_MSG_FROM_SPC_RECORD_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_DMNR_RECPLAY_ON_ACK,
+	SPCIO_MSG_FROM_SPC_DMNR_RECPLAY_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_DMNR_REC_ONLY_ON_ACK,
+	SPCIO_MSG_FROM_SPC_DMNR_REC_ONLY_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_PCM_REC_ON_ACK,
+	SPCIO_MSG_FROM_SPC_PCM_REC_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_VM_REC_ON_ACK,
+	SPCIO_MSG_FROM_SPC_VM_REC_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_RECORD_RAW_PCM_ON_ACK,
+	SPCIO_MSG_FROM_SPC_RECORD_RAW_PCM_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_PCMMIXER_ON_ACK,
+	SPCIO_MSG_FROM_SPC_PCMMIXER_OFF_ACK,
+
+	SPCIO_MSG_FROM_SPC_CTM_ON_ACK = 0x40,
+	SPCIO_MSG_FROM_SPC_CTM_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_CTM_DUMP_DEBUG_FILE_ACK,
+	SPCIO_MSG_FROM_SPC_BGSND_ON_ACK,
+	SPCIO_MSG_FROM_SPC_BGSND_OFF_ACK,
+	SPCIO_MSG_FROM_SPC_BGSND_CONFIG_ACK,
+
+	SPCIO_MSG_FROM_SPC_PNW_DLDATA_REQUEST = 0x50,
+	SPCIO_MSG_FROM_SPC_BGS_DATA_REQUEST,
+	SPCIO_MSG_FROM_SPC_CTM_DATA_REQUEST,
+	SPCIO_MSG_FROM_SPC_DACA_ULDATA_REQUEST,
+	SPCIO_MSG_FROM_SPC_ECALL_MSD_NOTIFY, 
+	SPCIO_MSG_FROM_SPC_SPC_UL_ENC_NOTIFY, 
+	SPCIO_MSG_FROM_SPC_SPC_DL_DEC_REQUEST,	
+	SPCIO_MSG_FROM_SPC_PCMMIXER_DL_DATA_REQUEST,
+	SPCIO_MSG_FROM_SPC_PCMMIXER_UL_DATA_REQUEST,
+	
+	SPCIO_MSG_FROM_SPC_PNW_ULDATA_NOTIFY = 0x60,
+	SPCIO_MSG_FROM_SPC_REC_DATA_NOTIFY,
+	SPCIO_MSG_FROM_SPC_CTM_DEBUG_DATA_NOTIFY,
+	SPCIO_MSG_FROM_SPC_PCM_REC_DATA_NOTIFY,
+	SPCIO_MSG_FROM_SPC_VM_REC_DATA_NOTIFY,
+	SPCIO_MSG_FROM_SPC_DACA_DLDATA_NOTIFY,
+	SPCIO_MSG_FROM_SPC_RAW_PCM_REC_DATA_NOTIFY, //0x60 + 0x6
+	SPCIO_MSG_FROM_SPC_CUST_DUMP_NOTIFY,
+
+	SPCIO_MSG_FROM_SPC_EM_DATA_REQUEST = 0x70,
+	SPCIO_MSG_FROM_SPC_EM_INCALL_ACK,
+	SPCIO_MSG_FROM_SPC_EM_DMNR_ACK,
+	SPCIO_MSG_FROM_SPC_EM_WB_ACK,  
+	SPCIO_MSG_FROM_SPC_EM_MAGICON_ACK,  
+	SPCIO_MSG_FROM_SPC_NETWORK_STATUS_NOTIFY,
+	SPCIO_MSG_FROM_SPC_RF_INFO_NOTIFY,
+	SPCIO_MSG_FROM_SPC_EM_HAC_ACK,  
+	SPCIO_MSG_FROM_SPC_EPOF_NOTIFY,
+	SPCIO_MSG_FROM_SPC_DYNAMIC_PAR_ACK,
+	SPCIO_MSG_FROM_SPC_SPH_ENH_CORE_ACK,
+	SPCIO_MSG_FROM_SPC_DYNAMIC_PAR_IN_STRUCT_SHM_ACK,
+	SPCIO_MSG_FROM_SPC_EMI_SPEECH_PAR_INFO_ACK,
+	
+	SPCIO_MSG_FROM_SPC_VIBSPK_PARAMETER_ACK = 0x80,
+	SPCIO_MSG_FROM_SPC_NXP_SMARTPA_PARAMETER_ACK,
+
+	SPCIO_MSG_FROM_SPC_NW_CODEC_INFO_NOTIFY = 0x90, 
+
+	SPCIO_MSG_FROM_AUD_ALIVE_NOTIFY = 0xA0,
+	
+}SPCIO_MSG_FROM_SPC;
+
+#define SPEECH_SHM_GUARD_REGION_SIZE (32)
+
+typedef enum {
+    
+    SPH_SHM_AP_FLAG_READY               = (1 << 0), /* AP init SHM ready or nor */    
+    SPH_SHM_AP_FLAG_SPH_PARAM_WRITE     = (1 << 1), /* AP is writing SHM speech param */
+
+    SPH_SHM_AP_FLAG_MAX                 = (1 << 31) /* max 32 bit !! */
+}sph_shm_ap_flag_t;
+
+typedef enum {
+
+	SPH_SHM_MD_FLAG_ALIVE				= (1 << 0),	/* modem is alive or not */	
+	SPH_SHM_MD_FLAG_SPH_PARAM_READ		= (1 << 1),	/* MD is reading SHM speech param */
+
+	SPH_SHM_MD_FLAG_MAX 				= (1 << 31) 	/* max 32 bit !! */
+}sph_shm_md_flag_t;
+
+
+typedef struct region_info_t {
+    kal_uint32 offset;        /* ex: 0x1000 */
+    kal_uint32 size;          /* ex: 0x100 */
+    kal_uint32 read_idx;      /* ex: 0x0 ~ 0xFF */
+    kal_uint32 write_idx;     /* ex: 0x0 ~ 0xFF */
+} region_info_t;
+
+
+typedef struct sph_shm_region_t {
+    region_info_t sph_param_region;
+    region_info_t ap_data_region;
+    region_info_t md_data_region;
+    region_info_t reserve_1;
+    region_info_t reserve_2;
+} sph_shm_region_t;
+
+
+typedef struct sph_shm_t {
+    /* 32 bytes gurard region */
+    kal_uint8 guard_region_pre[SPEECH_SHM_GUARD_REGION_SIZE];
+
+    /* 8 bytes init flag */
+    kal_uint32 ap_flag; /* sph_shm_ap_flag_t: ap can r/w, md read only */
+    kal_uint32 md_flag; /* sph_shm_md_flag_t: md can r/w, ap read only */
+
+    /* 80 bytes SHM region base */
+    sph_shm_region_t region;
+
+    /* 2 bytes alive message info */
+	kal_uint16 enhMDVersion; /* enhancement using version in alive message*/
+	
+    kal_uint16 reserve; /* alive message version*/
+
+    /* 4 bytes strcut size check sum */
+    kal_uint32 struct_checksum; /* assert(shm->struct_checksum == (&shm->struct_checksum  - shm)); */
+
+    /* 12K bytes speech param */
+    // kal_uint8 sph_param[SPEECH_SHM_SPEECH_PARAM_SIZE];
+
+    /* 8K bytes AP data */
+    // kal_uint8 ap_data[SPEECH_SHM_AP_DATA_SIZE];
+
+    /* 32K bytes MD data */
+    // kal_uint8 md_data[SPEECH_SHM_MD_DATA_SIZE];
+
+    /* 32 bytes gurard region */
+    // kal_uint8 guard_region_post[SPEECH_SHM_GUARD_REGION_SIZE];
+} sph_shm_t;
+
+
+
+// ----------------------------------------------------------------------------
+// Macro function
+// ----------------------------------------------------------------------------
+
+// extend version
+#define SPCIO_CCCI_MSG_CMD(msg) ((msg) >> 16)
+#define SPCIO_CCCI_MSG_DATA16(msg) ((msg) & 0xffffU)
+#define SPCIO_CCCI_MSG_CONSTRCUT_CMD(msg, data16) ( ((msg)<<16) | (0xffffU&(data16)) )
+#define SPCIO_CCCI_MSG_CONSTRCUT_DATA_CMD(msg, leng) SPCIO_CCCI_MSG_CONSTRCUT_CMD(msg, leng)
+#define SPCIO_CCCI_MSG_CONSTRUCT_DATA_CMD_WO_SHIFT(typefuncData, length) ( ( (typefuncData)&0xFFFF0000U) | ((length)&0xffffU) )
+
+
+// ----------------------------------------------------------------------------
+// function for AUDL thread putting
+// ----------------------------------------------------------------------------
+/**
+	@prSmpMsg:
+	@comeFrom: 0 for trigger from CCCI_HISR, 1 for trigger from AUDL. (you can add more in the future
+*/
+void SpcIO_MsgQueuePut(SPC_MSG_ID_T msgId, uint32 msgData, uint32 msgDataRev, SPC_MSG_FROM_T callerFrom);
+// ----------------------------------------------------------------------------
+// function for msg send/receive
+// ----------------------------------------------------------------------------
+kal_uint16 spcIo_GetDataFromAp_viaIntBuf(const kal_uint16 offset, const kal_uint16 length, void *buf);
+void SpcIO_GetDataFromAp_inOneTime(kal_uint16 offset, kal_uint16 length, kal_int16 headerLen,
+	void *header, void *buf, SPC_MSG_FROM_T comeFrom);
+bool SpcIO_WriteDataToAp(void *headerBuf, kal_int16 headerLen, 
+	void *srcBuf1, kal_int16 srcLen1, void *srcBuf2, kal_int16 srcLen2, SPCIO_MSG_FROM_SPC spcIoMsg);
+kal_bool SpcIO_SendMsgToAp(SPCIO_MSG_FROM_SPC spcIoMsg, uint32 data1, uint32 reserve);
+kal_uint16 SpcIo_GetDataFromAp(const kal_uint16 offset, const kal_uint16 length, void *buf, SPC_MSG_FROM_T comeFrom);
+
+kal_bool SpcIO_isFactoryBoot(void);
+
+#endif // _SPC_IO_H_
+
diff --git a/mcu/driver/audio/src/v1/inc/speech_def.h b/mcu/driver/audio/src/v1/inc/speech_def.h
new file mode 100644
index 0000000..987203e
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/speech_def.h
@@ -0,0 +1,315 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2012
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * speech_def.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ *  This file defines all the speech registers used in audio module.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __SPEECH_DEF_H
+#define __SPEECH_DEF_H
+
+#include "kal_public_api.h"
+#include "audio_dsp_d2c_def.h"
+#include "l1aud_common_def.h"
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                       Feature Definitions
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+   
+#if defined(__DUAL_TALK_MODEM_SUPPORT__)  
+   //In 6252 W+C project, L1Audio is the only module to use BT. In this project, no BT task won't be invoked, so we add by myself to use the setMode(BT_Earphone)
+   #define __BT_SUPPORT__
+#endif
+
+//=============================================================================================
+//                  HQA relative setting
+//=============================================================================================
+#if 0 // defined(__HQA_AUDIO__)
+/* under construction !*/
+/* under construction !*/
+/* under construction !*/
+#endif
+
+//=============================================================================================
+//                  Others
+//=============================================================================================
+// #define NEW_BLOCK_FILTER_SUPPORT
+
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        SPEECH SHERIF BASE ADDRESS
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        SPEECH DSP Control
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+//=============================================================================================
+//                  SPEECH Control Filed
+//=============================================================================================
+
+
+//=============================================================================================
+//                  Audio control field  (Use Speech base)
+//=============================================================================================
+
+
+
+//=============================================================================================
+//                  Keytone & Tone
+
+
+//=============================================================================================
+//                  Voice Memo
+//=============================================================================================
+
+
+
+//=============================================================================================
+//                  PCM  (Use Speech base)
+//=============================================================================================
+
+
+//=============================================================================================
+//                  AMR-WB playback control  (Use Speech base)
+//=============================================================================================
+
+
+
+//=============================================================================================
+//                  Audio control field (Use Speech base)
+//=============================================================================================
+
+//=============================================================================================
+//                  EC / AEC / EES / DMNR Control Registers
+//=============================================================================================
+
+//=============================================================================================
+//                  Gain/Coeff/Compensation
+//=============================================================================================
+
+
+//=============================================================================================
+//                  Uplink Comfort noise
+//=============================================================================================
+
+//=============================================================================================
+//                  NR Control
+//=============================================================================================
+
+//=============================================================================================
+//                  TDNC Control
+//=============================================================================================
+
+//=============================================================================================
+//                  Enhanced Audio Control Field
+//=============================================================================================
+
+//=============================================================================================
+//                  Uplink WB AMR in TCH buffer
+//=============================================================================================
+
+
+//=============================================================================================
+//                  Sound Effect   (Use Speech base)
+//=============================================================================================
+
+//=============================================================================================
+//                  CTM
+//=============================================================================================
+
+//=============================================================================================
+//                  8K limiter control
+//=============================================================================================
+
+//=============================================================================================
+//                  SBC Support Definition
+//=============================================================================================
+
+//=============================================================================================
+//                  3G Speech Sherif Address
+//=============================================================================================
+
+//=============================================================================================
+//                  DSP Speech Control
+//=============================================================================================
+
+
+
+//=============================================================================================
+//                  BlueTooth Mode Control Field (Sign-extension / linear / gain mode)
+//=============================================================================================
+
+//=============================================================================================
+//                  To indicate CSD channel types
+//=============================================================================================
+//    #define DSP_TCH_S0_FLAGS                 DPRAM2_base(DP_TCH_S0_FLAGS)
+
+//=============================================================================================
+//                  DataCard Interface
+//=============================================================================================
+
+//=============================================================================================
+//                  Others
+//=============================================================================================
+
+/*
+============================================================================================================
+------------------------------------------------------------------------------------------------------------
+||                        SPEECH DSP Control Including DM/PM Addr Define
+------------------------------------------------------------------------------------------------------------
+============================================================================================================
+*/
+
+//=============================================================================================
+//                  DUAL MIC Control
+//=============================================================================================
+
+
+//=============================================================================================
+//                  Speech Engineer Parameter
+//=============================================================================================
+
+//=============================================================================================
+//                  DSP Internal memory access
+//=============================================================================================
+
+//=============================================================================================
+//#define DP_AUDIO_VIA_8KBT_CTRL              DPRAM2_base(DP2_AUDIO_VIA_BT_CTRL)
+//#define DP_VSBT_CTRL                        DPRAM2_base(DP_VBI_SYNC_BT_Earphone_CTRL)
+//   #define BT_AUDIO_PLAYBACK_SD_PAGE_NUM    5
+//                  DSP AGC control
+//=============================================================================================
+ 
+
+//=============================================================================================
+//                  DSP Interrupt
+//=============================================================================================
+
+//=============================================================================================
+//                  Others
+//=============================================================================================
+
+
+#endif  //__SPEECH_DEF_H
+
diff --git a/mcu/driver/audio/src/v1/inc/speech_service.h b/mcu/driver/audio/src/v1/inc/speech_service.h
new file mode 100644
index 0000000..9c916d2
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/speech_service.h
@@ -0,0 +1,50 @@
+#ifndef __SPEECH_SERVICE_H__
+#define __SPEECH_SERVICE_H__
+
+
+#include "kal_public_api.h"
+#include "kal_general_types.h"
+
+/* for MACE */
+//#include "audio_struct.h"
+#include "audio_msgid.h"
+#include "dhl_trace.h"
+
+typedef struct {
+   kal_uint16 flag;
+}SPLog_t;
+
+
+typedef struct{
+    LOCAL_PARA_HDR  /* size is 4 bytes now */
+	kal_uint8	local_hdr_len;
+	kal_uint8	reserved[3];
+	kal_uint32	data_len;
+	kal_uint8	data[256];
+}singleData_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR  /* size is 4 bytes now */
+	kal_uint8	local_hdr_len;
+	kal_uint8	opcode;
+	kal_uint8	reserved[2];
+}dbgInfo_struct;
+
+typedef struct{
+    LOCAL_PARA_HDR  /* size is 4 bytes now */
+	kal_uint8	local_hdr_len;
+	kal_uint8	opcode;
+	kal_uint8	reserved[2];
+	kal_uint32	log_seq;
+	kal_uint32	data_len;
+	kal_uint8   data[256];
+}data_struct;
+
+
+void SPLog_GetFlagSetting(void);
+void SPLog_LogFlagSetting(void);
+void SPLog_LogSingleData(kal_uint32 msg_id, kal_uint32 data_length, void *data);
+void SPLog_LogData(kal_uint32 msg_id, kal_uint32 data_length, void *data);
+void SPLog_LogDbgInfo(kal_uint32 msg_id, kal_uint8 opcode, void *data);
+
+#endif /* __SPEECH_SERVICE_H__ */
diff --git a/mcu/driver/audio/src/v1/inc/streamrb.h b/mcu/driver/audio/src/v1/inc/streamrb.h
new file mode 100644
index 0000000..ac3d8b6
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/streamrb.h
@@ -0,0 +1,139 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ *   StreamRB.h
+ *
+ * Project:
+ * --------
+ *   MOLY_sw
+ *
+ * Description:
+ * ------------
+ *   StreamRB utility
+ *
+ * Author:
+ * -------
+ * -------
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _StreamRB_DOT_H_
+#define _StreamRB_DOT_H_
+
+/*****************************************************************************
+*                     C O M P I L E R   F L A G S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                E X T E R N A L   R E F E R E N C E S
+******************************************************************************
+*/
+#include "l1aud_common_def.h"
+/*****************************************************************************
+*                          C O N S T A N T S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                         D A T A   T Y P E S
+******************************************************************************
+*/
+typedef struct StreamRingBufferStruct StreamRB;
+struct StreamRingBufferStruct {
+   uint8            *buffer;
+   int32            read;
+   int32            write;
+   int32            size;
+};
+
+/*****************************************************************************
+*                        P U B L I C   D A T A
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                             M A C R O S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*                  D A T A   D E C L A R A T I O N S
+******************************************************************************
+*/
+
+/*****************************************************************************
+*              F U N C T I O N   D E C L A R A T I O N S
+******************************************************************************
+*/
+bool StreamRB_Init( StreamRB *rb, uint8 *buffer, int32 buffer_size );
+int32 StreamRB_GetFreeSpace( StreamRB *rb );
+int32 StreamRB_GetDataCount( StreamRB *rb );
+void StreamRB_Write( StreamRB *dest_rb, uint8 *src_buffer, int32 size );
+void StreamRB_Read( StreamRB *src_rb, uint8 *dest_buffer, int32 size );
+void StreamRB_GetWriteBlock( StreamRB *dest_rb, uint8 **write_ptr, int32 *write_cnt );
+void StreamRB_GetReadBlock( StreamRB *src_rb, uint8 **read_ptr, int32 *read_cnt );
+void StreamRB_ShiftWritePointer( StreamRB *rb, int32 shamt );
+void StreamRB_ShiftReadPointer( StreamRB *rb, int32 shamt );
+//void StreamRB_ShiftReadPointer2( StreamRB *rb, int32 shamt );
+
+
+/*****************************************************************************
+*       I N L I N E   F U N C T I O N   D E C L A R A T I O N S
+******************************************************************************
+*/
+    
+#endif // ..._StreamRB_DOT_H_
+
diff --git a/mcu/driver/audio/src/v1/inc/tone_drv.h b/mcu/driver/audio/src/v1/inc/tone_drv.h
new file mode 100644
index 0000000..6d452e3
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/tone_drv.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ *  Tone_Drv.h
+ *
+ * Project:
+ * --------
+ *  MTK Feature Phone
+ *
+ * Description:
+ * ------------
+ *  DTMF tone driver
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __TONE_DRV__H
+#define __TONE_DRV__H
+
+#define DTMF_KEYTONE_LOCK_MAX_COUNT 8
+
+void DTMF_MCU_StopAndWait();
+void DTMF_MCU_Play( const L1SP_Tones *pToneList, kal_bool fIsQTMF, kal_bool fIsKeytone);
+void DTMF_MCU_Stop(kal_bool fIsKeytone);
+kal_bool DTMF_MCU_IsTonePlaying();
+kal_bool DTMF_MCU_IsKeytonePlaying();
+
+ 
+typedef enum {
+  DTMF_DSP_STATE_IDLE = 0,
+  DTMF_DSP_STATE_INIT,
+  DTMF_DSP_STATE_PLAYING,
+  DTMF_DSP_STATE_ENDING,
+} DTMF_DSP_STATE;
+
+typedef struct {
+   kal_uint16    uFreq1;
+   kal_uint16    uFreq2;
+   kal_uint16    uFreq3;
+   kal_uint16    uFreq4;
+   kal_uint16    uDuration; //msec
+} DTMF_STRUCT;
+
+#if IS_EV_BOARD
+#define KT_INIT_AMP     0x1000
+#else
+#define KT_INIT_AMP     0x3FFF
+#endif
+
+#if IS_EV_BOARD
+#define TONE_INIT_AMP   0x1000
+#else
+#define TONE_INIT_AMP   0x1FFF
+#endif
+
+void DTMF_MCU_lockInit();
+
+#endif
diff --git a/mcu/driver/audio/src/v1/inc/vm.h b/mcu/driver/audio/src/v1/inc/vm.h
new file mode 100644
index 0000000..1197138
--- /dev/null
+++ b/mcu/driver/audio/src/v1/inc/vm.h
@@ -0,0 +1,210 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ *
+ * Filename:
+ * ---------
+ * vm.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * VM record related interface using internal
+ *
+ * Author:
+ * -------
+ * 
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef _VM_H
+#define _VM_H
+
+#if defined(__MD93__) || defined(__MD95__) || defined(__MD97__) || defined(__MD97P__)
+#define VM_CHIP_ID 0x6293
+#else
+#define VM_CHIP_ID 0xFFFF
+#endif
+
+typedef enum {
+    EVS_AWB660 = 11,
+    EVS_AWB885,
+    EVS_AWB1265,
+    EVS_AWB1425, 
+    EVS_AWB1585, 
+    EVS_AWB1825, 
+    EVS_AWB1985, 
+    EVS_AWB2305, 
+    EVS_AWB2385, 
+    EVS_PRI590,
+    EVS_PRI720,
+    EVS_PRI800,
+    EVS_PRI960,
+    EVS_PRI1320,
+    EVS_PRI1640,
+    EVS_PRI2440,
+    EVS_PRI3200,
+    EVS_PRI4800,
+    EVS_PRI6400,
+    EVS_PRI9600,
+    EVS_PRI12800,
+    EVS_SID_LOST_NODATA = 98,
+    EVS_UNDEF = 99    
+}EVS_VM_ID;
+
+//#if defined(__G_CODEC_SUPPORT__) && defined(__VOLTE_SUPPORT__)
+typedef struct _vmGCodecULInfo
+{
+    uint16 drop_info;
+    //uint16 system_time;
+    uint16 codec;
+    uint16 codec_parameters;
+}vmGCodecULInfo, *pvmGCodecULInfo;
+
+typedef struct _vmGCodecDLInfo
+{
+    uint16 drop_info;
+    //uint16 system_time;
+    uint16 codec;
+    uint16 codec_parameters;
+    uint16 DL_PCM_size;
+}vmGCodecDLInfo, *pvmGCodecDLInfo;
+
+void vmStoreGCodecULStream(vmGCodecULInfo *pstvmGCodecULInfo, kal_uint16 u16StreamSize, kal_uint8 *pu8StreamData);
+void vmStoreGCodecDLStream(vmGCodecDLInfo *pstvmGCodecDLInfo, kal_uint16 u16StreamSize, kal_uint8 *pu8StreamData);
+//#endif //#if defined(__G_CODEC_SUPPORT__) && defined(__VOLTE_SUPPORT__)
+
+void vmSet3GNetworkInfo(uint32 *l1_info, uint16 crc_result, uint16 buf_status, uint8 dl_count);
+
+void VM_Init(void);
+void VMREC_ConfigEpl(void);
+void VMREC_Start(void (*vm_hdlr)(void), bool isVoc);
+void VMREC_Stop( bool isVoc);
+
+/**
+	@buf1: [Output]pointer to pcm buf1, 
+	@len1: [Output]length of buf1, unit is word(2byte)
+	@buf2: [Output]pointer to pcm buf2
+	@len2: [Output]length of buf2. unit is word(2byte)
+*/
+void VmRec_GetReadBufs(kal_uint32 *add1, kal_uint16 *len1, kal_uint32 *add2, kal_uint16 *len2);
+void VmRec_ReadDataDone(uint16 len);
+
+#endif //_VM_H
+