[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/sys_svc/FTL.h b/mcu/interface/service/sys_svc/FTL.h
new file mode 100644
index 0000000..77376e8
--- /dev/null
+++ b/mcu/interface/service/sys_svc/FTL.h
@@ -0,0 +1,191 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   FTL.h
+ *
+ * Project:
+ * --------
+ *   Bootloader
+ *
+ * Description:
+ * ------------
+ *   Abstraction layer preparing for FTL
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __BL_FTL_H__
+#define __BL_FTL_H__
+
+#include "kal_general_types.h"
+
+typedef enum 
+{
+   FTL_SUCCESS = 0,
+   FTL_ERROR_READ_FAILURE = -10000,
+   FTL_ERROR_WRITE_FAILURE,
+   FTL_ERROR_BAD_BLOCK,
+   FTL_ERROR_OPERATION_RETRY,
+   FTL_ERROR_INVALID_PARAMETER,
+   FTL_ERROR_ERASE_FAILURE,
+   FTL_ERROR_NON_EMPTY,
+   FTL_ERROR_NON_EMPTY_CHECK,
+   FTL_ERROR_ECC_FAILURE,
+   FTL_ERROR_ECC_CORRECTED,
+   FTL_ERROR_OTHER_ERROR
+} FTL_STATUS_CODE;
+
+/*****************************************************************************
+ * Macro definition
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Structure definition
+ *****************************************************************************/
+typedef struct FTL_OptParam
+{
+    kal_bool bypass_dal; /* NAND only */
+    kal_bool is_polling;   /* NAND & eMMC */
+} FTL_OptParam, *FTL_OptParamPtr;
+
+/*************************************************************************
+ * Type definition
+ *************************************************************************/
+typedef FTL_STATUS_CODE (*FTL_InitFunc)(void *pArgv);
+typedef FTL_STATUS_CODE (*FTL_DeInitFunc)(void *pArgv);
+typedef FTL_STATUS_CODE (*FTL_ReadPageFunc)(kal_uint32 block, kal_uint32 page, kal_uint32 *pBuf, FTL_OptParam *opt_param);
+typedef FTL_STATUS_CODE (*FTL_QueryInfoFunc)(void *pArgv);
+typedef FTL_STATUS_CODE (*FTL_WritePageFunc)(kal_uint32 block, kal_uint32 page, kal_uint32 *pBuf, FTL_OptParam *opt_param);
+typedef FTL_STATUS_CODE (*FTL_CheckGoodBlockFunc)(kal_uint32 block, FTL_OptParam *opt_param);
+typedef FTL_STATUS_CODE (*FTL_MarkBadBlockFunc)(kal_uint32 block, FTL_OptParam *opt_param);
+typedef FTL_STATUS_CODE (*FTL_EraseBlockFunc)(kal_uint32 block, FTL_OptParam *opt_param);
+typedef kal_uint32      (*FTL_GetBlockSizeFunc)(kal_uint32 block, FTL_OptParam *opt_param);
+typedef kal_uint32      (*FTL_GetPageSizeFunc)(void);
+typedef kal_uint32      (*FTL_AddrToBlockPageFunc)(kal_uint32 addr, kal_uint32 *pBlock, kal_uint32 *pPage, FTL_OptParam *opt_param);
+typedef kal_uint32      (*FTL_BlockPageToAddrFunc)(kal_uint32 block, kal_uint32 page, kal_uint32 *pAddr, FTL_OptParam *opt_param);
+
+/*************************************************************************
+ * Type definition
+ *************************************************************************/
+
+typedef struct FTL_FuncTbl
+{
+   FTL_InitFunc                FTL_Init;
+   FTL_InitFunc                FTL_DeInit;   
+   FTL_ReadPageFunc            FTL_ReadPage;
+   FTL_QueryInfoFunc           FTL_QueryInfo;
+   FTL_WritePageFunc           FTL_WritePage;
+   FTL_CheckGoodBlockFunc      FTL_CheckGoodBlock;
+   FTL_MarkBadBlockFunc        FTL_MarkBadBlock;
+   FTL_EraseBlockFunc          FTL_EraseBlock;
+   FTL_GetBlockSizeFunc        FTL_GetBlockSize;
+   FTL_GetPageSizeFunc         FTL_GetPageSize;
+   FTL_AddrToBlockPageFunc     FTL_AddrToBlockPage;
+   FTL_BlockPageToAddrFunc     FTL_BlockPageToAddr;
+} FTL_FuncTbl, *FTL_FuncTblPtr;
+
+#if defined(__EMMC_BOOTING__)
+#define FTL_EMMC_PAGE_SIZE    (8*1024) // 8KB page
+#define FTL_EMMC_BLOCK_SIZE   (512*1024) // 512KB block
+
+#if !defined(__FUE__) && !defined(__UBL__)
+#define get_FTL_lock() \
+    do { \
+        extern kal_bool kal_query_systemInit(void); \
+        extern kal_bool INT_QueryExceptionStatus(void); \
+        if (!kal_query_systemInit() && !INT_QueryExceptionStatus()) \
+        { \
+            kal_take_mutex(ftl_lock); \
+        } \
+    } while(0)
+
+#define free_FTL_lock() \
+    do { \
+        extern kal_bool kal_query_systemInit(void); \
+        extern kal_bool INT_QueryExceptionStatus(void); \
+        if (!kal_query_systemInit() && !INT_QueryExceptionStatus()) \
+        { \
+            kal_give_mutex(ftl_lock); \
+        } \
+    } while(0)
+
+extern kal_bool FTL_isPollingMode();
+#endif /* !__FUE__ && !__UBL__ */
+
+#endif /* __EMMC_BOOTING__ */
+
+#endif /* __BL_FTL_H__ */
+
diff --git a/mcu/interface/service/sys_svc/amms_drdi_public.h b/mcu/interface/service/sys_svc/amms_drdi_public.h
new file mode 100644
index 0000000..db2e7f9
--- /dev/null
+++ b/mcu/interface/service/sys_svc/amms_drdi_public.h
@@ -0,0 +1,626 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+ * ---------
+ *   amms_public.h
+ *
+ * Project:
+ * --------
+ *   Moly
+ *
+ * Description:
+ * ------------
+ *   AMMS
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __AMMS_DRDI_PUBLIC_H__
+#define __AMMS_DRDI_PUBLIC_H__
+
+
+
+/*******************************************************************************
+ * Included header files
+ *******************************************************************************/
+
+
+
+/*******************************************************************************
+ * definition
+ *******************************************************************************/
+#define DRDI_SET_NONE (0xFF)
+
+
+typedef enum {
+    DRDI_2G_SET_NONE = DRDI_SET_NONE,
+    DRDI_2G_SET0 = 0,
+    DRDI_2G_SET1,
+    DRDI_2G_SET2,
+    DRDI_2G_SET3,
+    DRDI_2G_SET4,
+    DRDI_2G_SET5,
+    DRDI_2G_SET6,
+    DRDI_2G_SET7,
+    DRDI_2G_SET8,
+    DRDI_2G_SET9,
+    DRDI_2G_SET10,
+    DRDI_2G_SET11,
+    DRDI_2G_SET12,
+    DRDI_2G_SET13,
+    DRDI_2G_SET14,
+    DRDI_2G_SET15,
+    DRDI_2G_SET16,
+    DRDI_2G_SET17,
+    DRDI_2G_SET18,
+    DRDI_2G_SET19,
+    DRDI_2G_SET20,
+    DRDI_2G_SET21,
+    DRDI_2G_SET22,
+    DRDI_2G_SET23,
+    DRDI_2G_SET24,
+    DRDI_2G_SET25,
+    DRDI_2G_SET26,
+    DRDI_2G_SET27,
+    DRDI_2G_SET28,
+    DRDI_2G_SET29,
+    DRDI_2G_SET30,
+    DRDI_2G_SET31,
+    DRDI_2G_SET32,
+    DRDI_2G_SET33,
+    DRDI_2G_SET34,
+    DRDI_2G_SET35,
+    DRDI_2G_SET36,
+    DRDI_2G_SET37,
+    DRDI_2G_SET38,
+    DRDI_2G_SET39,
+    DRDI_2G_SET40,
+    DRDI_2G_SET41,
+    DRDI_2G_SET42,
+    DRDI_2G_SET43,
+    DRDI_2G_SET44,
+    DRDI_2G_SET45,
+    DRDI_2G_SET46,
+    DRDI_2G_SET47,
+    DRDI_2G_SET48,
+    DRDI_2G_SET49,
+    DRDI_2G_SET50,
+    DRDI_2G_SET51,
+    DRDI_2G_SET52,
+    DRDI_2G_SET53,
+    DRDI_2G_SET54,
+    DRDI_2G_SET55,
+    DRDI_2G_SET56,
+    DRDI_2G_SET57,
+    DRDI_2G_SET58,
+    DRDI_2G_SET59,
+    DRDI_2G_SET60,
+    DRDI_2G_SET61,
+    DRDI_2G_SET62,
+    DRDI_2G_SET63,
+} DRDI_2G_SET;
+
+typedef enum {
+    DRDI_3GFDD_SET_NONE = DRDI_SET_NONE,
+    DRDI_3GFDD_SET0 = 0,
+    DRDI_3GFDD_SET1,
+    DRDI_3GFDD_SET2,
+    DRDI_3GFDD_SET3,
+    DRDI_3GFDD_SET4,
+    DRDI_3GFDD_SET5,
+    DRDI_3GFDD_SET6,
+    DRDI_3GFDD_SET7,
+    DRDI_3GFDD_SET8,
+    DRDI_3GFDD_SET9,
+    DRDI_3GFDD_SET10,
+    DRDI_3GFDD_SET11,
+    DRDI_3GFDD_SET12,
+    DRDI_3GFDD_SET13,
+    DRDI_3GFDD_SET14,
+    DRDI_3GFDD_SET15,
+    DRDI_3GFDD_SET16,
+    DRDI_3GFDD_SET17,
+    DRDI_3GFDD_SET18,
+    DRDI_3GFDD_SET19,
+    DRDI_3GFDD_SET20,
+    DRDI_3GFDD_SET21,
+    DRDI_3GFDD_SET22,
+    DRDI_3GFDD_SET23,
+    DRDI_3GFDD_SET24,
+    DRDI_3GFDD_SET25,
+    DRDI_3GFDD_SET26,
+    DRDI_3GFDD_SET27,
+    DRDI_3GFDD_SET28,
+    DRDI_3GFDD_SET29,
+    DRDI_3GFDD_SET30,
+    DRDI_3GFDD_SET31,
+    DRDI_3GFDD_SET32,
+    DRDI_3GFDD_SET33,
+    DRDI_3GFDD_SET34,
+    DRDI_3GFDD_SET35,
+    DRDI_3GFDD_SET36,
+    DRDI_3GFDD_SET37,
+    DRDI_3GFDD_SET38,
+    DRDI_3GFDD_SET39,
+    DRDI_3GFDD_SET40,
+    DRDI_3GFDD_SET41,
+    DRDI_3GFDD_SET42,
+    DRDI_3GFDD_SET43,
+    DRDI_3GFDD_SET44,
+    DRDI_3GFDD_SET45,
+    DRDI_3GFDD_SET46,
+    DRDI_3GFDD_SET47,
+    DRDI_3GFDD_SET48,
+    DRDI_3GFDD_SET49,
+    DRDI_3GFDD_SET50,
+    DRDI_3GFDD_SET51,
+    DRDI_3GFDD_SET52,
+    DRDI_3GFDD_SET53,
+    DRDI_3GFDD_SET54,
+    DRDI_3GFDD_SET55,
+    DRDI_3GFDD_SET56,
+    DRDI_3GFDD_SET57,
+    DRDI_3GFDD_SET58,
+    DRDI_3GFDD_SET59,
+    DRDI_3GFDD_SET60,
+    DRDI_3GFDD_SET61,
+    DRDI_3GFDD_SET62,
+    DRDI_3GFDD_SET63,
+} DRDI_3GFDD_SET;
+
+typedef enum {
+    DRDI_3GTDD_SET_NONE = DRDI_SET_NONE,
+    DRDI_3GTDD_SET0 = 0,
+    DRDI_3GTDD_SET1,
+    DRDI_3GTDD_SET2,
+    DRDI_3GTDD_SET3,
+    DRDI_3GTDD_SET4,
+    DRDI_3GTDD_SET5,
+    DRDI_3GTDD_SET6,
+    DRDI_3GTDD_SET7,
+    DRDI_3GTDD_SET8,
+    DRDI_3GTDD_SET9,
+    DRDI_3GTDD_SET10,
+    DRDI_3GTDD_SET11,
+    DRDI_3GTDD_SET12,
+    DRDI_3GTDD_SET13,
+    DRDI_3GTDD_SET14,
+    DRDI_3GTDD_SET15,
+    DRDI_3GTDD_SET16,
+    DRDI_3GTDD_SET17,
+    DRDI_3GTDD_SET18,
+    DRDI_3GTDD_SET19,
+    DRDI_3GTDD_SET20,
+    DRDI_3GTDD_SET21,
+    DRDI_3GTDD_SET22,
+    DRDI_3GTDD_SET23,
+    DRDI_3GTDD_SET24,
+    DRDI_3GTDD_SET25,
+    DRDI_3GTDD_SET26,
+    DRDI_3GTDD_SET27,
+    DRDI_3GTDD_SET28,
+    DRDI_3GTDD_SET29,
+    DRDI_3GTDD_SET30,
+    DRDI_3GTDD_SET31,
+    DRDI_3GTDD_SET32,
+    DRDI_3GTDD_SET33,
+    DRDI_3GTDD_SET34,
+    DRDI_3GTDD_SET35,
+    DRDI_3GTDD_SET36,
+    DRDI_3GTDD_SET37,
+    DRDI_3GTDD_SET38,
+    DRDI_3GTDD_SET39,
+    DRDI_3GTDD_SET40,
+    DRDI_3GTDD_SET41,
+    DRDI_3GTDD_SET42,
+    DRDI_3GTDD_SET43,
+    DRDI_3GTDD_SET44,
+    DRDI_3GTDD_SET45,
+    DRDI_3GTDD_SET46,
+    DRDI_3GTDD_SET47,
+    DRDI_3GTDD_SET48,
+    DRDI_3GTDD_SET49,
+    DRDI_3GTDD_SET50,
+    DRDI_3GTDD_SET51,
+    DRDI_3GTDD_SET52,
+    DRDI_3GTDD_SET53,
+    DRDI_3GTDD_SET54,
+    DRDI_3GTDD_SET55,
+    DRDI_3GTDD_SET56,
+    DRDI_3GTDD_SET57,
+    DRDI_3GTDD_SET58,
+    DRDI_3GTDD_SET59,
+    DRDI_3GTDD_SET60,
+    DRDI_3GTDD_SET61,
+    DRDI_3GTDD_SET62,
+    DRDI_3GTDD_SET63,
+} DRDI_3GTDD_SET;
+
+typedef enum {
+    DRDI_MMRF_SET_NONE = DRDI_SET_NONE,
+    DRDI_MMRF_SET0 = 0,
+    DRDI_MMRF_SET1,
+    DRDI_MMRF_SET2,
+    DRDI_MMRF_SET3,
+    DRDI_MMRF_SET4,
+    DRDI_MMRF_SET5,
+    DRDI_MMRF_SET6,
+    DRDI_MMRF_SET7,
+    DRDI_MMRF_SET8,
+    DRDI_MMRF_SET9,
+    DRDI_MMRF_SET10,
+    DRDI_MMRF_SET11,
+    DRDI_MMRF_SET12,
+    DRDI_MMRF_SET13,
+    DRDI_MMRF_SET14,
+    DRDI_MMRF_SET15,
+    DRDI_MMRF_SET16,
+    DRDI_MMRF_SET17,
+    DRDI_MMRF_SET18,
+    DRDI_MMRF_SET19,
+    DRDI_MMRF_SET20,
+    DRDI_MMRF_SET21,
+    DRDI_MMRF_SET22,
+    DRDI_MMRF_SET23,
+    DRDI_MMRF_SET24,
+    DRDI_MMRF_SET25,
+    DRDI_MMRF_SET26,
+    DRDI_MMRF_SET27,
+    DRDI_MMRF_SET28,
+    DRDI_MMRF_SET29,
+    DRDI_MMRF_SET30,
+    DRDI_MMRF_SET31,
+    DRDI_MMRF_SET32,
+    DRDI_MMRF_SET33,
+    DRDI_MMRF_SET34,
+    DRDI_MMRF_SET35,
+    DRDI_MMRF_SET36,
+    DRDI_MMRF_SET37,
+    DRDI_MMRF_SET38,
+    DRDI_MMRF_SET39,
+    DRDI_MMRF_SET40,
+    DRDI_MMRF_SET41,
+    DRDI_MMRF_SET42,
+    DRDI_MMRF_SET43,
+    DRDI_MMRF_SET44,
+    DRDI_MMRF_SET45,
+    DRDI_MMRF_SET46,
+    DRDI_MMRF_SET47,
+    DRDI_MMRF_SET48,
+    DRDI_MMRF_SET49,
+    DRDI_MMRF_SET50,
+    DRDI_MMRF_SET51,
+    DRDI_MMRF_SET52,
+    DRDI_MMRF_SET53,
+    DRDI_MMRF_SET54,
+    DRDI_MMRF_SET55,
+    DRDI_MMRF_SET56,
+    DRDI_MMRF_SET57,
+    DRDI_MMRF_SET58,
+    DRDI_MMRF_SET59,
+    DRDI_MMRF_SET60,
+    DRDI_MMRF_SET61,
+    DRDI_MMRF_SET62,
+    DRDI_MMRF_SET63,
+} DRDI_MMRF_SET;
+
+typedef enum {
+    DRDI_C2K_SET_NONE = DRDI_SET_NONE,
+    DRDI_C2K_SET0 = 0,
+    DRDI_C2K_SET1,
+    DRDI_C2K_SET2,
+    DRDI_C2K_SET3,
+    DRDI_C2K_SET4,
+    DRDI_C2K_SET5,
+    DRDI_C2K_SET6,
+    DRDI_C2K_SET7,
+    DRDI_C2K_SET8,
+    DRDI_C2K_SET9,
+    DRDI_C2K_SET10,
+    DRDI_C2K_SET11,
+    DRDI_C2K_SET12,
+    DRDI_C2K_SET13,
+    DRDI_C2K_SET14,
+    DRDI_C2K_SET15,
+    DRDI_C2K_SET16,
+    DRDI_C2K_SET17,
+    DRDI_C2K_SET18,
+    DRDI_C2K_SET19,
+    DRDI_C2K_SET20,
+    DRDI_C2K_SET21,
+    DRDI_C2K_SET22,
+    DRDI_C2K_SET23,
+    DRDI_C2K_SET24,
+    DRDI_C2K_SET25,
+    DRDI_C2K_SET26,
+    DRDI_C2K_SET27,
+    DRDI_C2K_SET28,
+    DRDI_C2K_SET29,
+    DRDI_C2K_SET30,
+    DRDI_C2K_SET31,
+    DRDI_C2K_SET32,
+    DRDI_C2K_SET33,
+    DRDI_C2K_SET34,
+    DRDI_C2K_SET35,
+    DRDI_C2K_SET36,
+    DRDI_C2K_SET37,
+    DRDI_C2K_SET38,
+    DRDI_C2K_SET39,
+    DRDI_C2K_SET40,
+    DRDI_C2K_SET41,
+    DRDI_C2K_SET42,
+    DRDI_C2K_SET43,
+    DRDI_C2K_SET44,
+    DRDI_C2K_SET45,
+    DRDI_C2K_SET46,
+    DRDI_C2K_SET47,
+    DRDI_C2K_SET48,
+    DRDI_C2K_SET49,
+    DRDI_C2K_SET50,
+    DRDI_C2K_SET51,
+    DRDI_C2K_SET52,
+    DRDI_C2K_SET53,
+    DRDI_C2K_SET54,
+    DRDI_C2K_SET55,
+    DRDI_C2K_SET56,
+    DRDI_C2K_SET57,
+    DRDI_C2K_SET58,
+    DRDI_C2K_SET59,
+    DRDI_C2K_SET60,
+    DRDI_C2K_SET61,
+    DRDI_C2K_SET62,
+    DRDI_C2K_SET63,
+} DRDI_C2K_SET;
+
+typedef enum {
+    DRDI_LTE_SET_NONE = DRDI_SET_NONE,
+    DRDI_LTE_SET0 = 0,
+    DRDI_LTE_SET1,
+    DRDI_LTE_SET2,
+    DRDI_LTE_SET3,
+    DRDI_LTE_SET4,
+    DRDI_LTE_SET5,
+    DRDI_LTE_SET6,
+    DRDI_LTE_SET7,
+    DRDI_LTE_SET8,
+    DRDI_LTE_SET9,
+    DRDI_LTE_SET10,
+    DRDI_LTE_SET11,
+    DRDI_LTE_SET12,
+    DRDI_LTE_SET13,
+    DRDI_LTE_SET14,
+    DRDI_LTE_SET15,
+    DRDI_LTE_SET16,
+    DRDI_LTE_SET17,
+    DRDI_LTE_SET18,
+    DRDI_LTE_SET19,
+    DRDI_LTE_SET20,
+    DRDI_LTE_SET21,
+    DRDI_LTE_SET22,
+    DRDI_LTE_SET23,
+    DRDI_LTE_SET24,
+    DRDI_LTE_SET25,
+    DRDI_LTE_SET26,
+    DRDI_LTE_SET27,
+    DRDI_LTE_SET28,
+    DRDI_LTE_SET29,
+    DRDI_LTE_SET30,
+    DRDI_LTE_SET31,
+    DRDI_LTE_SET32,
+    DRDI_LTE_SET33,
+    DRDI_LTE_SET34,
+    DRDI_LTE_SET35,
+    DRDI_LTE_SET36,
+    DRDI_LTE_SET37,
+    DRDI_LTE_SET38,
+    DRDI_LTE_SET39,
+    DRDI_LTE_SET40,
+    DRDI_LTE_SET41,
+    DRDI_LTE_SET42,
+    DRDI_LTE_SET43,
+    DRDI_LTE_SET44,
+    DRDI_LTE_SET45,
+    DRDI_LTE_SET46,
+    DRDI_LTE_SET47,
+    DRDI_LTE_SET48,
+    DRDI_LTE_SET49,
+    DRDI_LTE_SET50,
+    DRDI_LTE_SET51,
+    DRDI_LTE_SET52,
+    DRDI_LTE_SET53,
+    DRDI_LTE_SET54,
+    DRDI_LTE_SET55,
+    DRDI_LTE_SET56,
+    DRDI_LTE_SET57,
+    DRDI_LTE_SET58,
+    DRDI_LTE_SET59,
+    DRDI_LTE_SET60,
+    DRDI_LTE_SET61,
+    DRDI_LTE_SET62,
+    DRDI_LTE_SET63,
+} DRDI_LTE_SET;
+
+#if defined(__MD97__) || defined(__MD98__)
+typedef enum {
+    DRDI_NR_SET_NONE = DRDI_SET_NONE,
+    DRDI_NR_SET0 = 0,
+    DRDI_NR_SET1,
+    DRDI_NR_SET2,
+    DRDI_NR_SET3,
+    DRDI_NR_SET4,
+    DRDI_NR_SET5,
+    DRDI_NR_SET6,
+    DRDI_NR_SET7,
+    DRDI_NR_SET8,
+    DRDI_NR_SET9,
+    DRDI_NR_SET10,
+    DRDI_NR_SET11,
+    DRDI_NR_SET12,
+    DRDI_NR_SET13,
+    DRDI_NR_SET14,
+    DRDI_NR_SET15,
+    DRDI_NR_SET16,
+    DRDI_NR_SET17,
+    DRDI_NR_SET18,
+    DRDI_NR_SET19,
+    DRDI_NR_SET20,
+    DRDI_NR_SET21,
+    DRDI_NR_SET22,
+    DRDI_NR_SET23,
+    DRDI_NR_SET24,
+    DRDI_NR_SET25,
+    DRDI_NR_SET26,
+    DRDI_NR_SET27,
+    DRDI_NR_SET28,
+    DRDI_NR_SET29,
+    DRDI_NR_SET30,
+    DRDI_NR_SET31,
+    DRDI_NR_SET32,
+    DRDI_NR_SET33,
+    DRDI_NR_SET34,
+    DRDI_NR_SET35,
+    DRDI_NR_SET36,
+    DRDI_NR_SET37,
+    DRDI_NR_SET38,
+    DRDI_NR_SET39,
+    DRDI_NR_SET40,
+    DRDI_NR_SET41,
+    DRDI_NR_SET42,
+    DRDI_NR_SET43,
+    DRDI_NR_SET44,
+    DRDI_NR_SET45,
+    DRDI_NR_SET46,
+    DRDI_NR_SET47,
+    DRDI_NR_SET48,
+    DRDI_NR_SET49,
+    DRDI_NR_SET50,
+    DRDI_NR_SET51,
+    DRDI_NR_SET52,
+    DRDI_NR_SET53,
+    DRDI_NR_SET54,
+    DRDI_NR_SET55,
+    DRDI_NR_SET56,
+    DRDI_NR_SET57,
+    DRDI_NR_SET58,
+    DRDI_NR_SET59,
+    DRDI_NR_SET60,
+    DRDI_NR_SET61,
+    DRDI_NR_SET62,
+    DRDI_NR_SET63,
+} DRDI_NR_SET;
+#endif /*MD97 or MD98*/
+
+typedef enum {
+    AMMS_DRDI_BUFF_STATUS__FREE_SUCCESS = 0,
+    AMMS_DRDI_BUFF_STATUS__ALREADY_RETURN_TO_AP,
+    AMMS_DRDI_BUFF_STATUS__NOT_SUPPORT_AMMS_DRDI,
+} AMMS_DRDI_BUFF_STATUS;
+
+typedef struct drdi_rat_set_t {
+    DRDI_2G_SET       drdi_2g_set;
+	DRDI_3GFDD_SET    drdi_3gfdd_set;
+	DRDI_3GTDD_SET    drdi_3gtdd_set;
+	DRDI_MMRF_SET     drdi_mmrf_set;
+	DRDI_C2K_SET      drdi_c2k_set;
+	DRDI_LTE_SET      drdi_lte_set;
+#if defined(__MD97__) || defined(__MD98__)
+	DRDI_NR_SET       drdi_nr_set;
+#endif
+} drdi_rat_set;
+
+/*******************************************************************************
+ * External Function Declaration
+ *******************************************************************************/
+
+
+/*******************************************************************************
+ * FUNCTION
+ *  amms_drdi_load_drdi_set
+ *
+ * DESCRIPTION
+ *  Return unused DRDI load view to AP side
+ *
+ * PARAMETERS
+ *  N/A
+ *
+ * RETURN VALUES
+ *  AMMS_DRDI_BUFF_STATUS
+ *    (A) AMMS_DRDI_BUFF_STATUS__FREE_SUCCESS
+ *      Return to AP in this boot time
+ *    (B) AMMS_DRDI_BUFF_STATUS__ALREADY_RETURN_TO_AP
+ *      Already return to AP before
+ *    (C)  AMMS_DRDI_BUFF_STATUS__NOT_SUPPORT_AMMS_DRDI
+ *      Not support AMMS_DRDI in this project
+ *
+ * NOTE
+ *  (1) If this is the first boot time for MD to return memory to AP, calling task may suspend 
+ *       (sleep suspend) for waiting GDMA to finish copying. Please aware about this.
+ *       The return value is (A) AMMS_DRDI_BUFF_STATUS__FREE_SUCCESS
+ *  (2) If this is NOT the first boot time for MD to return memory to AP, this API will return 
+ *       immediately.
+ *       The return value is (B) AMMS_DRDI_BUFF_STATUS__ALREADY_RETURN_TO_AP
+ *
+ * SEE ALSO
+ *  N/A
+ *
+ ******************************************************************************/
+
+AMMS_DRDI_BUFF_STATUS amms_drdi_load_drdi_set(drdi_rat_set drdi_set);
+
+#endif /*__AMMS_DRDI_PUBLIC_H__*/
+
diff --git a/mcu/interface/service/sys_svc/at_sec_support.h b/mcu/interface/service/sys_svc/at_sec_support.h
new file mode 100644
index 0000000..7f1a42c
--- /dev/null
+++ b/mcu/interface/service/sys_svc/at_sec_support.h
@@ -0,0 +1,106 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   At_sec_support.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   The source is for AT security support
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+ 
+#ifndef __AT_SEC_SUPPORT__
+#define __AT_SEC_SUPPORT__
+
+#define AT_SLA_RND_LEN	16
+#define AT_SLA_ENC_RND_LEN	256   //RSA 2048
+
+typedef enum{
+    AT_SLA_ERROR_NONE = 0x0000,
+    AT_SLA_GEN_END_ERR = 0x0001,    
+    AT_SLA_GET_SLA_KEY_ERR = 0x0002,    
+    AT_SLA_RSA_VERIFY_ERR = 0x0003,
+    AT_SLA_DEC_RND_LEN_ERR = 0x0004,
+    AT_SLA_DEC_RND_COMPARE_ERR = 0x0005,
+    AT_SLA_RND_BUF_LEN_ERR = 0x0006,
+    AT_SLA_RND_ENC_LEN_ERR = 0x0007,
+    AT_SLA_RND_ENC_BUF_LEN_ERR = 0x0008,
+    AT_SLA_RSA_ENCRYPT_ERR = 0x0009,
+    AT_SLA_ENC_RND_LEN_ERR = 0x000A,
+    AT_SLA_RND_NOT_INIT_ERR = 0x000B,
+}AT_SLA_ERROR_E;
+
+kal_uint32 AtSLA_Get_Sec_Err_Code(void);
+
+kal_bool AtSLA_Is_Enabled(void);
+
+kal_bool AtSLA_Is_Verified(void);
+
+kal_uint32 AtSLA_Rnd_Gen(kal_uint8 *rnd_buf, kal_uint32 rnd_buf_len);
+
+kal_uint32 AtSLA_Rnd_Verify(kal_uint8 *rnd_enc, kal_uint32 rnd_enc_len);
+
+#endif /*__AT_SEC_SUPPORT__*/
diff --git a/mcu/interface/service/sys_svc/cbr_interface.h b/mcu/interface/service/sys_svc/cbr_interface.h
new file mode 100644
index 0000000..477e118
--- /dev/null
+++ b/mcu/interface/service/sys_svc/cbr_interface.h
@@ -0,0 +1,85 @@
+/*****************************************************************************
+*  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) 2006
+*
+*  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:
+ * ---------
+ *   ssf_interface.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This is the header file of exproted functions from SSF
+ *
+ * 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 _CBR_INTERFACE_H_
+#define _CBR_INTERFACE_H_
+
+#include "kal_general_types.h"   
+#include "kal_public_api.h" 
+
+/**********************************************************
+Description : Facility to initialize CBR service
+Input       : None
+Output      : Status
+***********************************************************/
+kal_int32 CBRUtl_InitService(void);
+
+#endif /*  _CBR_INTERFACE_H_ */
+
diff --git a/mcu/interface/service/sys_svc/cust_chl_interface.h b/mcu/interface/service/sys_svc/cust_chl_interface.h
new file mode 100644
index 0000000..c40c0fd
--- /dev/null
+++ b/mcu/interface/service/sys_svc/cust_chl_interface.h
@@ -0,0 +1,683 @@
+#ifndef __CUST_CHL_INTERFACE_H__
+#define __CUST_CHL_INTERFACE_H__
+
+/*********************** Warning ***********************
+
+!! Modify this file must remake sys_svc_sec module and custom module
+
+*********************** Warning ************************/
+
+#include "kal_public_defs.h"
+#include "reg_base.h"
+
+
+/* Warning : Please do not modify this definition !!! */
+#define MAX_CUST_CHL_HASH_LEN                32
+#define MAX_CUST_CHL_MAC_LEN                 32
+#define MAX_CUST_CHL_SYM_KEY_LEN             32
+#define MAX_CUST_CHL_SIG_LEN                 384
+#define MAX_CUST_CHL_ASYM_KEY_LEN            384
+/* Warning : Please do not modify this definition !!! */
+
+
+#define CHE_RESULT_GUARD_PATTERN_BYTE        0xFC
+#define CHE_RESULT_GUARD_PATTERN             0xFCFCFCFC
+#define CHE_RESULT_GUARD_PATTERN_LEN         4
+
+typedef enum
+{ 
+	
+	CUST_CHL_ERROR_NONE                            = 0x0000,
+	CUST_CHL_ERROR_NULL_PTR                        = 0x0001,
+	CUST_CHL_ERROR_INVALID_ALG                     = 0x0002,
+	CUST_CHL_ERROR_MD_NOT_FOUND                    = 0x0003,
+	CUST_CHL_ERROR_NO_SUCH_KEY                     = 0x0004,
+	CUST_CHL_ERROR_HEXIFY_FAILED                   = 0x0005,
+	CUST_CHL_ERROR_UNHEXIFY_FAILED                 = 0x0006,
+	CUST_CHL_ERROR_RESULT_GUARD_PATTERN_CORRUPTED  = 0x0007,
+	CUST_CHL_ERROR_MEMORY_ALLOC_FAILED             = 0x0008,
+	CUST_CHL_ERROR_INVALID_AES_KEY                 = 0x0009,
+        CUST_CHL_ERROR_INVALID_MODE                    = 0x000a,
+        CUST_CHL_ERROR_BLOCK_UNALIGNED_DATA_LENGTH     = 0x000b,
+	
+	CUST_CHL_ERROR_CHECK_RSA_PUB_FAILED            = 0x0100,
+	CUST_CHL_ERROR_CHECK_RSA_PRIV_FAILED           = 0x0101,
+	
+	CUST_CHL_ERROR_READ_HRID_FAILED                = 0x0200,
+	CUST_CHL_ERROR_GET_CUST_KEY_FAILED             = 0x0201,
+	
+	CUST_CHL_ERROR_VERIFY_MAC_FAILED               = 0x0300,
+	CUST_CHL_ERROR_VERIFY_SIG_FAILED               = 0x0301,
+	CUST_CHL_ERROR_CHECK_RSA_PUB_ENC_FAILED        = 0x0302,
+	CUST_CHL_ERROR_CHECK_RSA_PRIV_ENC_FAILED       = 0x0303,
+	CUST_CHL_ERROR_CHECK_RSA_PUB_DEC_FAILED        = 0x0304,
+	CUST_CHL_ERROR_CHECK_RSA_PRIV_DEC_FAILED       = 0x0305,
+	CUST_CHL_ERROR_CHECK_RSA_GEN_KEY_FAILED       = 0x0306,
+	CUST_CHL_ERROR_CHECK_RSA_GEN_KEY_EPOF_ABORT       = 0x0307,
+	CUST_CHL_ERROR_VERIFY_SIG_DEC_SIZE_NOT_MATCH   = 0x0308,
+	CUST_CHL_ERROR_NO_MATCHING_ERR_CODE			   = 0x0309,
+	CUST_CHL_ERROR_OVER_SIXTEEN_CODE			   = 0x030a,
+	CUST_CHL_ERROR_ERR_STUCT_INIT				   = 0x030b,
+	CUST_CHL_ERROR_CHECK_ASN1_HDR_FORMAT_NOT_MATCH = 0x030c,
+	CUST_CHL_ERROR_CHECK_ASN1_ALGO_NOT_MATCH       = 0x030d,
+	CUST_CHL_ERROR_CHECK_ASN1_LENGTH_NOT_MATCH       = 0x030e,	
+	CUST_CHL_ERROR_UNDEFINED_FAILED                = 0x0800,
+	
+	CUST_CHL_ERROR_END                             = 0xFFFF,
+	
+} TYPE_CUST_CHL_ERROR;
+
+typedef enum
+{
+	
+	CUST_CHL_ALG_BEGIN              = 0x0000,
+	
+	/* hash*/
+	CUST_CHL_ALG_SHA256             = 0x0001,
+	
+	/* cipher */
+	CUST_CHL_ALG_RSA_PKCS1            = 0x1001,
+	CUST_CHL_ALG_RSA_OAEP			  = 0x1002,
+	CUST_CHL_ALG_AES128 			  = 0x1003,
+	CUST_CHL_ALG_AES192 			  = 0x1004,
+	CUST_CHL_ALG_AES256               = 0x1005,
+	CUST_CHL_ALG_RSA_OAEP_SHA1 	  = 0x1005,
+	CUST_CHL_ALG_RSA_OAEP_SHA256 	  = 0x1006,
+
+	/* MAC */
+	CUST_CHL_ALG_MAC_SHA256         = 0x2001,
+	
+	/* signature */
+	CUST_CHL_ALG_RSA_PSS_SHA256     = 0x3001,
+	CUST_CHL_ALG_RSA_PKCS1_V15_NONE = 0x3002,
+	CUST_CHL_ALG_RSA_PKCS1_V15_SHA256 = 0x3003,
+	CUST_CHL_ALG_RSA_OAEP_NONE = 0x3004,
+	CUST_CHL_ALG_RSA_PKCS1_V15_SHA256_ASN1 = 0x3005,
+	CUST_CHL_ALG_RSA_PKCS1_V15_SHA384 = 0x3006,
+	CUST_CHL_ALG_RSA_PKCS1_V15_SHA384_ASN1 = 0x3007,
+	CUST_CHL_ALG_RSA_PSS_SHA384	= 0x3008,
+	CUST_CHL_ALG_END                = 0xFFFF
+	
+} TYPE_CUST_CHL_ALG;
+
+typedef enum
+{
+	
+  /* symmetric key */
+  CUST_CHL_SYM_BEGIN         = 0x0000,
+  CUST_TM_SHARED_KEY2        = 0x0001,
+  CUST_ATT_SHARED_KEY2       = 0x0002,
+  CUST_CRK_SHARED_KEY2       = 0x0003,
+  CUST_CHL_SYM_END           = 0x7FFF,
+
+  /* asymmetric key */
+  /* MTK internal usage key */
+  CUST_CHL_ASYM_BEGIN        = 0x8000,
+  CUST_TM_PUB_KEY1           = 0x8001,
+  CUST_XM_PUB_KEY2           = 0x8002,
+  CUST_SP_PUB_KEY3           = 0x8003,
+  CUST_META_PUB_KEY          = 0x8004,
+  CUST_AT_PUB_KEY            = 0x8005,
+  CUST_VZ_PUB_KEY	     = 0x8006,
+  CUST_KDDI_PUB_KEY			 = 0x8007, 
+  CUST_ATT_PUB_KEY1		 = 0x8008,
+  CUST_CRK_PUB_KEY1          = 0x8009,
+  CUST_TM_PUB_KEY2	         = 0x800A,
+  CUST_MCF_PUB_KEY1          = 0x800B,
+  CUST_MCF_PUB_KEY2          = 0x800C,
+  CUST_MIPC_SLA_PUBK_KEY1     = 0x800D,
+  CUST_MIPC_SLA_PUBK_KEY2     = 0x800E,
+  CUST_MIPC_SLA_PUBK_KEY3     = 0x800F,
+  CUST_INTERNAL_KEY_END      = 0x8100,
+  
+  /* customer usage key - specified by customer in custom_sec_key.h */ 
+  CUST_EXTERNAL_KEY_START	 = 0x8100,
+  CUST_EXT_PUB_KEY0			 = 0x8101, //add customer key here
+  CUST_EXTERNAL_KEY_END	 	 = 0x8200,
+  
+  CUST_CHL_ASYM_END          = 0xFFFF
+  
+} TYPE_CUST_CHL_KEY;
+
+typedef enum
+{
+	CUST_KDDI_RCERT			 = 0x0000,
+
+}TYPE_CUST_CHL_RCERT;
+
+typedef enum
+{
+	CUST_CHL_MODE_BEGIN      = 0x0000,
+	CUST_CHL_MODE_EBC 	 = 0x0001,
+	CUST_CHL_MODE_CBC        = 0x0002,
+        CUST_CHL_MODE_CTR        = 0x0003,
+	CUST_CHL_MODE_END 	     = 0xFFFF
+
+}
+TYPE_CUST_CRYPT_MODE;
+
+
+/* We default use RSA as our asymmetric key */
+typedef struct t_cust_chl_hash_u
+{
+	kal_uint32  m_len;	
+	kal_uint8   m_u8[MAX_CUST_CHL_HASH_LEN];
+
+} t_cust_chl_hash_u;
+
+/* We default use sha256 HMAC*/
+typedef struct t_cust_chl_mac_u
+{
+	kal_uint32  m_len;	
+	kal_uint8   m_u8[MAX_CUST_CHL_MAC_LEN];
+
+} t_cust_chl_mac_u;
+
+typedef struct t_cust_chl_sym_key
+{
+	
+	kal_uint32  m_key_len;
+	kal_uint8   m_key[MAX_CUST_CHL_SYM_KEY_LEN];
+
+} t_cust_chl_sym_key;
+
+
+/* We default use RSA as our asymmetric key */
+typedef struct t_cust_chl_asym_key
+{
+	
+	kal_uint32  m_E_len;
+	kal_uint32  m_D_len;
+	kal_uint32  m_N_len;
+	kal_uint8   m_E_key[MAX_CUST_CHL_ASYM_KEY_LEN];  // exponent : E => public key
+	kal_uint8   m_D_key[MAX_CUST_CHL_ASYM_KEY_LEN];  // exponent : D => private key
+	kal_uint8   m_N_key[MAX_CUST_CHL_ASYM_KEY_LEN];  // modulo
+	kal_uint8   m_reserved[20];
+	
+} t_cust_chl_asym_key;
+
+extern void bin_dump(kal_char *title, kal_uint8 *pData, kal_uint16 len);
+
+#ifndef CUST_CHL_TH
+#define CUST_CHL_TH	 CUST_CHL_DBG_ERR
+#endif
+
+extern kal_uint8 log_sensitive_data;
+
+#ifndef CUST_CHL_DBG_PRINT
+#define CUST_CHL_DBG_PRINT(level, sensitive,...)	\
+	do{	\
+		if (!(sensitive && !log_sensitive_data)) {\
+			dhl_print(level, DHL_USER_FLAG_NONE, MOD_NIL, ##__VA_ARGS__);\
+		}\
+	}while(0);
+#endif
+
+#ifndef CUST_SML_OP129_DUMP
+#define CUST_SML_OP129_DUMP(level, str, data, len)	\
+	do{ \
+		if (level >= CUST_CHL_TH){\
+			bin_dump(str, data, len);	\
+		}\
+	}while(0);
+#endif
+typedef struct aes_param_st {
+    kal_uint32 counter_len;
+    kal_uint8 *IV;
+    kal_uint32 IVLength;
+} AES_PARAM;
+
+typedef enum _chl_cust_dbg_level {
+    CUST_CHL_DBG_TRACE = 0,
+    CUST_CHL_DBG_INFO,
+    CUST_CHL_DBG_WARN,
+    CUST_CHL_DBG_ERR,
+    CUST_CHL_DBG_OFF = 0xFF,    
+}chl_cust_dbg_level;
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Get_Sym_Key
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  key_type            [IN]   (reference to enum TYPE_CUST_CHL_KEY)         
+ *  key                 [OUT]  (Symmetric key)      
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_Get_Sym_Key(TYPE_CUST_CHL_KEY key_type, t_cust_chl_sym_key * key);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Get_Asym_Key
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  key_type            [IN]    (reference to enum TYPE_CUST_CHL_KEY)         
+ *  key                 [OUT]   (RSA key)     
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_Get_Asym_Key(TYPE_CUST_CHL_KEY key_type, t_cust_chl_asym_key * key);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_RSA_PKCS1_Encrypt
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  mode                [IN]    (0 : with public key encrypt, 1 : with private key encrypt)
+ *  input_len           [IN]    (length of plaintext)
+ *  input               [IN]    (plaintext) 
+ *  output              [OUT]   (cipher)
+ *  key                 [IN]    (RSA public/private key)
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_RSA_PKCS1_Encrypt(TYPE_CUST_CHL_ALG alg_type,
+			                                        kal_uint32 mode,
+			                                        kal_uint32 input_len,
+			                                        kal_uint8 * input, 
+			                                        kal_uint8 * output,
+			                                        kal_uint32 * output_len,
+			                                        t_cust_chl_asym_key * key);
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_RSA_PKCS1_Decrypt
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  mode                [IN]    (0 : with public key decrypt, 1 : with private key decrypt)
+ *  input_len           [IN]    (length of cipher)
+ *  input               [IN]    (cipher)
+ *  output_len          [OUT]   (length of decrypted data) 
+ *  output              [OUT]   (decrypted data)
+ *  key                 [IN]    (RSA public/private key)
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/                               
+extern kal_uint32 CustCHL_RSA_PKCS1_Decrypt(TYPE_CUST_CHL_ALG alg_type,
+                                              		kal_uint32 mode,
+                                              		kal_uint32 input_len,
+			                                        kal_uint8 * input, 
+			                                        kal_uint32 * output_len,
+			                                        kal_uint8 * output,
+			                                        t_cust_chl_asym_key * key);   
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Calculate_Hash
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  data                [IN]    (data to be calculated)
+ *  data_len            [IN]    (length of data)
+ *  hash_u              [OUT]   (hash) 
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/   
+extern kal_uint32 CustCHL_Calculate_Hash(TYPE_CUST_CHL_ALG alg_type,
+                                           kal_uint8 * data, 
+                                           kal_uint32 data_len, 
+                                           t_cust_chl_hash_u * hash_u);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Verify_PSS_Signature
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  data                [IN]    (original data)
+ *  data_len            [IN]    (length of data)
+ *  sig                 [IN]    (signature) 
+ *  key                 [IN]    (RSA public key) 
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/ 
+extern kal_uint32 CustCHL_Verify_PSS_Signature(TYPE_CUST_CHL_ALG alg_type,
+                                                 kal_uint8 * data, 
+                                                 kal_uint32 data_len,
+                                                 kal_uint8 * sig,
+                                                 t_cust_chl_asym_key * key);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Verify_RSA_Signature
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  data                [IN]    (original data)
+ *  data_len            [IN]    (length of data)
+ *  sig                 [IN]    (signature) 
+ *  sig_len             [IN]    (length of signature) 
+ *  key                 [IN]    (RSA public key) 
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/ 
+kal_uint32 CustCHL_Verify_RSA_Signature(TYPE_CUST_CHL_ALG alg_type,
+                                        kal_uint8 * data, 
+                                        kal_uint32 data_len,
+                                        kal_uint8 * sig,
+                                        kal_uint32 sig_len,
+                                        t_cust_chl_asym_key * pCustKey);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Verify_MAC
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  data                [IN]    (original data)
+ *  data_len            [IN]    (length of data)
+ *  mac                 [IN]    (hmac) 
+ *  key                 [IN]    (Symmetric key) 
+ *  key_len             [IN]    (length of key) 
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/                                         
+extern kal_uint32 CustCHL_Verify_MAC(TYPE_CUST_CHL_ALG alg_type,
+                              kal_uint8 * data, 
+                              kal_uint32 data_len,
+                              kal_uint8 * mac,
+                              kal_uint8 * key, 
+                              kal_uint32 key_len) ;                                         
+                               
+
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Calculate_MAC
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG)
+ *  data                [IN]    (original data)
+ *  data_len            [IN]    (length of data)
+ *  key                 [IN]    (Symmetric key) 
+ *  key_len             [IN]    (length of key) 
+ *  mac_u               [OUT]   (output MAC)
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/   
+extern kal_uint32 CustCHL_Calculate_MAC(TYPE_CUST_CHL_ALG alg_type,
+                                 kal_uint8 * data, 
+                                 kal_uint32 data_len,
+                                 kal_uint8 * key, 
+                                 kal_uint32 key_len,
+                                 t_cust_chl_mac_u * mac_u);
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_RSA_Gen_Key
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  rsa_key             [OUT]    (rsa public/private key pair)
+*  rsa_bits             [IN]   (length of rsa key in bits)
+ *  e_value             [IN]   (assign exponent for rsa public key) : unused now, fill NULL
+ *  e_value_len         [IN]    (length of e_value) : unused now, fill 0
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_RSA_Gen_Key(t_cust_chl_asym_key * rsa_key, 
+											kal_uint8 * e_value, 
+											kal_uint32 e_value_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_RSA_Extract_Pub_Key
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  rsa_key             [IN]    (rsa public/private key pair)
+ *  pub_key             [OUT]   (Text format of rsa public key)
+ *  pub_key_len         [OUT]   (Length of pub_key)
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_RSA_Extract_Pub_Key(t_cust_chl_asym_key * rsa_key, 
+													kal_uint8 * pub_key,
+													kal_uint32 * pub_key_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Gen_Root_Key
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  root_key            [OUTPUT]    (reference to enum TYPE_CUST_CHL_ALG)
+* RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/ 
+extern kal_uint32 CustCHL_Gen_Root_Key(t_cust_chl_sym_key * root_key);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_AES_Encrypt
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG) 
+ *  c_mode              [IN]    (mode of operation)
+ *  input_len           [IN]    (length of plaintext)
+ *  input               [IN]    (plaintext) 
+ *  output_len          [OUT]   (length of cipher)
+ *  output              [OUT]   (cipher)
+ *  key                 [IN]    (AES key) 
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_AES_Encrypt(TYPE_CUST_CHL_ALG alg_type,
+											TYPE_CUST_CRYPT_MODE c_mode,
+											kal_uint32 input_len,
+											kal_uint8 * input, 
+											kal_uint32 * output_len,
+											kal_uint8 * output,
+											t_cust_chl_sym_key * key);
+
+extern kal_uint32 CustCHL_AES_Encrypt_data(TYPE_CUST_CHL_ALG alg_type,
+									TYPE_CUST_CRYPT_MODE c_mode,
+									kal_uint32 input_len,
+									kal_uint8 * input, 
+									kal_uint32 * output_len,
+									kal_uint8 * output,
+									t_cust_chl_sym_key * key,
+									AES_PARAM *aes_param);
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_AES_Decrypt
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  alg_type            [IN]    (reference to enum TYPE_CUST_CHL_ALG) 
+ *  c_mode              [IN]    (mode of operation) 
+ *  input_len           [IN]    (length of cipher)
+ *  input               [IN]    (cipher)
+ *  output_len          [OUT]   (length of decrypted data) 
+ *  output              [OUT]   (decrypted data)
+ *  key                 [IN]    (AES key)
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/ 
+extern kal_uint32 CustCHL_AES_Decrypt(TYPE_CUST_CHL_ALG alg_type,
+											TYPE_CUST_CRYPT_MODE c_mode,
+											kal_uint32 input_len,
+											kal_uint8 * input, 
+											kal_uint32 * output_len,
+											kal_uint8 * output,
+											t_cust_chl_sym_key * key);
+
+/*****************************************************************************
+* FUNCTION
+* CustCHL_AES_Encrypt_data
+* DESCRIPTION
+* Encrypt data with AES parameter
+* 
+* PARAMETERS
+* alg_type [IN] (reference to enum TYPE_CUST_CHL_ALG) 
+* c_mode [IN] (mode of operation)
+* input_len [IN] (length of plaintext)
+* input [IN] (plaintext) 
+* output_len [OUT] (length of cipher)
+* output [OUT] (cipher)
+* key [IN] (AES key)
+* aes_param [IN] (AES parameter)
+* RETURNS
+0 : successfully 
+otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+*****************************************************************************/
+extern kal_uint32 CustCHL_AES_Encrypt_data(TYPE_CUST_CHL_ALG alg_type,
+                                           TYPE_CUST_CRYPT_MODE c_mode,
+                                           kal_uint32 input_len,
+                                           kal_uint8 * input, 
+                                           kal_uint32 * output_len,
+                                           kal_uint8 * output,
+                                           t_cust_chl_sym_key * key,
+                                           AES_PARAM *aes_param);
+
+
+/*****************************************************************************
+* FUNCTION
+* CustCHL_AES_Decrypt_data
+* DESCRIPTION
+* Decrypt data with AES parameter
+*
+* PARAMETERS
+* alg_type [IN] (reference to enum TYPE_CUST_CHL_ALG) 
+* c_mode [IN] (mode of operation) 
+* input_len [IN] (length of cipher)
+* input [IN] (cipher)
+* output_len [OUT] (length of decrypted data)
+* output [OUT] (decrypted data)
+* key [IN] (AES key)
+* aes_param [IN] (AES parameter)
+* RETURNS
+0 : successfully 
+otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+*****************************************************************************/
+extern kal_uint32 CustCHL_AES_Decrypt_data(TYPE_CUST_CHL_ALG alg_type,
+					   TYPE_CUST_CRYPT_MODE c_mode,
+					   kal_uint32 input_len,
+					   kal_uint8 * input, 
+					   kal_uint32 * output_len,
+					   kal_uint8 * output,
+					   t_cust_chl_sym_key * key,
+					   AES_PARAM *aes_param);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Nounce_Encrypt
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  nounce            	[IN]    Format : (MEID) a-zA-Z ASCII Random String(80B) + 0-9 ASCII MEID String(14B)/IMEI String(15B) + Z(1B) (Z only for MEID)
+ *  nounce_len          [IN]    should less than 100bytes
+ *  nounce_enc          [OUT]    encryption result
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_Nounce_Encrypt(kal_uint8 * nounce, kal_uint8 nounce_len, kal_uint8 * nounce_enc);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Verify_UICC_Sig
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  nounce            	[IN]    Format : (MEID) a-zA-Z ASCII Random String(80B) + 0-9 ASCII MEID String(14B)/IMEI String(15B) + Z(1B)
+ *  nounce_len          [IN]    should less than 100bytes
+ *	sig					[IN]	sig of the message
+ *  unlock_code         [IN]    message: unlock code + nounce
+ * RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+extern kal_uint32 CustCHL_Verify_UICC_Sig(kal_uint8 * nounce, kal_uint8 nounce_len, kal_uint8 * sig, kal_uint8 unlock_code);
+
+/*****************************************************************************
+* FUNCTION
+* CustCHL_HW_AES_Encrypt
+* DESCRIPTION
+* Execute AES encryption using per-chip unique hardware-visible key - Only support AES128 CBC mode
+* PARAMETERS
+* input       [IN]  (original data) Note: input data length should be AES_BLOCK size (16B) aligned 
+* input_len   [IN]  (length of original data)
+* iv	      [IN]  (initial vector)
+* output      [IN]  (result)
+* output_len  [OUT] (length of result) 
+* RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+* NOTE
+* 
+*****************************************************************************/
+extern kal_uint32 CustCHL_HW_AES_Encrypt( kal_uint8 *	input,
+                                          kal_uint32	input_len,
+                                          kal_uint8*	iv,
+                                          kal_uint8 *	output,
+                                          kal_uint32 *	output_len);
+
+/*****************************************************************************
+* FUNCTION
+* CustCHL_HW_AES_Decrypt
+* DESCRIPTION
+* Execute AES decryption using per-chip unique hardware-visible key - Only support AES128 CBC mode
+* PARAMETERS
+* input         [IN]  (original data) Note: input data length should be AES_BLOCK size (16B) aligned
+* input_len     [IN]  (length of original data)
+* iv	        [IN]  (initial vector)
+* output        [IN]  (result) 
+* output_len    [OUT] (length of result) 
+* RETURNS
+    0 : successfully 
+    otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+*****************************************************************************/
+extern kal_uint32 CustCHL_HW_AES_Decrypt( kal_uint8*	input,
+					  kal_uint32	input_len,
+					  kal_uint8*	iv,
+					  kal_uint8*	output,
+					  kal_uint32*	output_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  CustCHL_Get_Random
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  rand            	[OUT]    32-bit random value if return value is true 
+ * RETURNS
+    TRUE : successfully 
+    FALSE : failure
+ *****************************************************************************/
+#ifdef __CUST_SUPPORT_TRNG__ 
+extern kal_bool CustCHL_Get_Random(kal_uint32 *rand);
+#endif
+
+#endif /* __CUST_CHL_INTERFACE_H__ */
+
diff --git a/mcu/interface/service/sys_svc/dcmgr.h b/mcu/interface/service/sys_svc/dcmgr.h
new file mode 100644
index 0000000..5c67f97
--- /dev/null
+++ b/mcu/interface/service/sys_svc/dcmgr.h
@@ -0,0 +1,127 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dcmgr.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   Dynamic Section Manager for dynamic section relocation into TCM(internal SRAM)
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __DCMGR_H__
+#define __DCMGR_H__
+
+
+/*******************************************************************************
+ * Included header files
+ *******************************************************************************/
+
+
+
+/*******************************************************************************
+ * definition
+ *******************************************************************************/
+typedef enum {
+    DYNAMIC_L2CACHE_SECTION_3GW = 0,
+    DYNAMIC_L2CACHE_SECTION_3GW_IDLE,
+    /* insert id before this line*/
+    DYNAMIC_CACHE_SECTION_NUM     /* 2 */
+} dcm_section_id;
+
+
+/* make sure to define TOTAL_DCM_SECTION as valuse of DYNAMIC_CACHE_SECTION_NUM */
+#define TOTAL_DCM_SECTION       (1)
+#define DCM_MAX_NUM             (32)
+
+    
+/* define dcm function return status */
+typedef enum {
+    DCM_STATUS_SUCCESS,                /* the operation is succeeded */
+    DCM_STATUS_LOAD_BEFORE,            /* the section has been load before*/
+    DCM_STATUS_UNLOAD_NOTHING,         /* the section has been load before */
+} dcm_status;
+
+
+/* define dcm section status */
+typedef enum {
+    DCM_SECTION_LOAD,           /* the section is loaded */
+    DCM_SECTION_UNLOAD,         /* the section is not loaded */
+} dcm_section_status;
+
+
+
+
+/*******************************************************************************
+ * External Function Declaration
+ *******************************************************************************/
+dcm_status DCM_Load(kal_uint32 dynamic_section_id);
+
+dcm_status DCM_Unload(kal_uint32 dynamic_section_id);
+
+dcm_section_status DCM_QuerySectionStatus(dcm_section_id dynamic_section_id);
+
+kal_bool DCM_IsLoad(kal_uint32 dynamic_section_id);
+
+
+
+#endif  /* __DCMGR_H__ */
diff --git a/mcu/interface/service/sys_svc/dl2cmgr.h b/mcu/interface/service/sys_svc/dl2cmgr.h
new file mode 100644
index 0000000..c5be925
--- /dev/null
+++ b/mcu/interface/service/sys_svc/dl2cmgr.h
@@ -0,0 +1,174 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dl2cmgr.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   Dynamic L2 Cache lock  Manager 
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+#ifndef __DL2CMGR_H__
+#define __DL2CMGR_H__
+
+/*******************************************************************************
+ * Included header files
+ *******************************************************************************/
+#include "custom_dl2cmgr.h"
+
+/*******************************************************************************
+ * definition
+ *******************************************************************************/
+/* section id enum structure will be created in custom_dl2cmgr.h */
+
+/* make sure to define TOTAL_DL2CM_SECTION as valuse of DYNAMIC_CACHE_SECTION_NUM */
+#define TOTAL_DL2CM_SECTION       (DYNAMIC_CACHE_SECTION_NUM)
+#define DL2CM_MAX_NUM             (32)
+
+#define DL2CMGR_DL_KB_SIZE_LIMITATION   (1024)
+#define DL2CMGR_DL_US_TIME_LIMITATION   (200)
+
+#define DYNAMIC_CACHE_SECTION_NUM  L2CACHE_LOCK_SECTION_NUM
+
+
+/* define dl2cm function return status */
+typedef enum {
+    DL2CM_STATUS_SUCCESS,                /* the operation is succeeded */
+    DL2CM_STATUS_LOCK_BEFORE,            /* the section has been locked before*/
+    DL2CM_STATUS_LOCKING,                /* the section is locking */
+    DL2CM_STATUS_UNLOCKING,              /* the section is unlocking */
+    DL2CM_STATUS_UNLOCK_NOTHING,         /* the section is unlocked  */
+} dl2cm_status;
+
+/* define dl2cm section status */
+typedef enum {
+    DL2CM_SECTION_UNLOCKED = 0,         /* the section is not locked */
+    DL2CM_SECTION_LOCKED,               /* the section is locked */
+    DL2CM_SECTION_LOCKING,              /* the section is locking */
+    DL2CM_SECTION_UNLOCKING,            /* the section is unlocking */
+} dl2cm_section_status;
+
+/* define dl2cm actions*/
+typedef enum {
+  DL2CM_ACTION_NON = 0,
+  DL2CM_ACTION_LOCK_ENTER_LOCK,
+  DL2CM_ACTION_LOCK_DO_NOTHING_RETURN,
+  DL2CM_ACTION_LOCK_ERROR_DURING_UNLOCKING_RETURN,
+  DL2CM_ACTION_LOCK_DURING_LOCKING_RETURN,
+  DL2CM_ACTION_LOCK_ERROR_SIZE_OVERUSE_RETURN,
+  DL2CM_ACTION_LOCK_ERROR_SPEED_OVERUSE_RETURN,
+  DL2CM_ACTION_LOCK_START_LOCKL2,
+  DL2CM_ACTION_LOCK_END_LOCKL2,
+  DL2CM_ACTION_UNLOCK_ENTER_UNLOCK = 20,
+  DL2CM_ACTION_UNLOCK_DO_NOTHING_RETURN,
+  DL2CM_ACTION_UNLOCK_ERROR_DURING_LOCKING_RETURN,
+  DL2CM_ACTION_UNLOCK_DURING_UNLOCKING_RETURN,
+  DL2CM_ACTION_UNLOCK_START_UNLOCKL2,
+  DL2CM_ACTION_UNLOCK_END_UNLOCKL2,
+} dl2cm_action;
+
+typedef struct _dl1cm_action_record {
+  dl2cm_section_id dl2cm_section_id;
+  kal_uint32     dl2cm_section_size;
+  kal_uint32     dl2cm_current_tick;
+  dl2cm_action     dl2cm_action;
+  kal_uint32     dl2cm_total_lock_size;
+  kal_uint32     dl2cm_exceed_and_current_lock_section;
+} dl2cm_action_record, *l2dl2cm_action_record_ptr;
+
+typedef struct _dl2cm_locked_area {
+  kal_uint32 start;
+  kal_uint32 size;
+} dl2cm_locked_area;
+
+
+/*******************************************************************************
+ * External Function Declaration
+ *******************************************************************************/
+typedef void (*dl2cm_trace_f)(const l2dl2cm_action_record_ptr dl2cm_record_ptr);
+dl2cm_status dl2cm_lock(dl2cm_section_id dl2cm_section_id, kal_uint32 block_size, kal_uint32 block_number, kal_uint32 *exceed_limitation);
+dl2cm_status dl2cm_unlock(dl2cm_section_id dl2cm_current_lock_id);
+dl2cm_section_status dl2cm_query_status(dl2cm_section_id dl2cm_section_id, kal_uint32 *section_size);
+void dl2cm_query_status_all( kal_uint32 *dl2cm_current_lock_id, kal_uint32 *dl2cm_current_lock_size, kal_uint32 *dl2cm_current_locking_id, kal_uint32 *dl2cm_current_locking_size);
+void dl2cm_register_trace_api(dl2cm_trace_f dl2cm_trace_cb);
+void dl2cm_get_speed_limitation(kal_uint32 *dl_kb_size, kal_uint32 *dl_us_time);
+dl2cm_locked_area *dl2cm_getLockedAreas(void);
+#endif /*__DL2CMGR_H__*/
diff --git a/mcu/interface/service/sys_svc/dsmgr.h b/mcu/interface/service/sys_svc/dsmgr.h
new file mode 100644
index 0000000..d84c6ea
--- /dev/null
+++ b/mcu/interface/service/sys_svc/dsmgr.h
@@ -0,0 +1,383 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   dsmgr.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   Dynamic Section Manager for dynamic section relocation into TCM(internal SRAM)
+ *
+ * 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 __DSMGR_H__
+#define __DSMGR_H__
+
+
+/*******************************************************************************
+ * Included header files
+ *******************************************************************************/
+
+
+
+/*******************************************************************************
+ * definition
+ *******************************************************************************/
+#if defined(__DSM_CONFIGURATION__)
+
+/* If you want to specify a section to be loaded by GDMA or CPU, please add 
+    DYNAMIC_SECTION_LOAD_BY_GDMA(section_id) or DYNAMIC_SECTION_LOAD_BY_CPU(section_id) in below, respectively.
+*/
+        
+        DYNAMIC_SECTION_LOAD_BY_CPU(DYNAMIC_SECTION_INTSRAM_UBIN_W_CORE0)
+        DYNAMIC_SECTION_LOAD_BY_CPU(DYNAMIC_SECTION_INTSRAM_UBIN_T_CORE0)
+        DYNAMIC_SECTION_LOAD_BY_GDMA(DYNAMIC_SECTION_INTSRAM_ADT_W_CORE0)
+        DYNAMIC_SECTION_LOAD_BY_GDMA(DYNAMIC_SECTION_INTSRAM_ADT_T_CORE0)
+        DYNAMIC_SECTION_LOAD_BY_GDMA(DYNAMIC_SECTION_INTSRAM_ADT_L_CORE0)
+        DYNAMIC_SECTION_LOAD_BY_GDMA(DYNAMIC_SECTION_INTSRAM_ADT_W2_CORE0)
+#else /* !efined(__DSM_CONFIGURATION__) */
+
+    typedef enum {
+        DYNAMIC_SECTION_INTSRAM_UBIN_W_CORE0 = 0,
+        DYNAMIC_SECTION_INTSRAM_UBIN_T_CORE0,
+        DYNAMIC_SECTION_INTSRAM_ADT_W_CORE0,
+        DYNAMIC_SECTION_INTSRAM_ADT_T_CORE0,
+        DYNAMIC_SECTION_INTSRAM_ADT_L_CORE0,
+        DYNAMIC_SECTION_INTSRAM_ADT_W2_CORE0,
+        /* insert id before this line*/
+        DYNAMIC_SECTION_NUM     /* 6 = TOTAL_DSM_SECTION */
+    } dsm_section_id;
+
+    /* make sure to define TOTAL_DSM_SECTION as valuse of DYNAMIC_SECTION_NUM */
+    #define TOTAL_DSM_SECTION (6)
+
+#define DSM_TOTAL_RECORD_COUNT                      20
+
+typedef enum {
+    DSM_ACTION_NO_ACTION,
+    DSM_ACTION_LOAD_BEFORE,
+    DSM_ACTION_LOAD_START,
+    DSM_ACTION_LOAD_UNLOAD_OVERLAP_SECTION,
+    DSM_ACTION_LOAD_END,
+    DSM_ACTION_LOAD_GDMA_LOAD_END,
+    DSM_ACTION_LOAD_CANCEL_GDMA_LOAD,
+    DSM_ACTION_LOAD_CONFIG_GDMA_LOAD_RO_CODE,
+    DSM_ACTION_UNLOAD_START,
+    DSM_ACTION_UNLOAD_END,
+} DSM_ACTION;
+
+#if defined(__MTK_TARGET__)
+
+#define LOAD_DYNAMIC_SECTION_INTSRAM_UBIN_W         DSM_Load(DYNAMIC_SECTION_INTSRAM_UBIN_W_CORE0);
+#define LOAD_DYNAMIC_SECTION_INTSRAM_UBIN_T         DSM_Load(DYNAMIC_SECTION_INTSRAM_UBIN_T_CORE0);
+#define LOAD_DYNAMIC_SECTION_INTSRAM_ADT_W          DSM_Load(DYNAMIC_SECTION_INTSRAM_ADT_W_CORE0);
+#define LOAD_DYNAMIC_SECTION_INTSRAM_ADT_T          DSM_Load(DYNAMIC_SECTION_INTSRAM_ADT_T_CORE0);
+#define LOAD_DYNAMIC_SECTION_INTSRAM_ADT_L          DSM_Load(DYNAMIC_SECTION_INTSRAM_ADT_L_CORE0);
+#define LOAD_DYNAMIC_SECTION_INTSRAM_ADT_W2         DSM_Load(DYNAMIC_SECTION_INTSRAM_ADT_W2_CORE0);
+
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_UBIN_W       DSM_Unload(DYNAMIC_SECTION_INTSRAM_UBIN_W_CORE0);
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_UBIN_T       DSM_Unload(DYNAMIC_SECTION_INTSRAM_UBIN_T_CORE0);
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_ADT_W        DSM_Unload(DYNAMIC_SECTION_INTSRAM_ADT_W_CORE0);
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_ADT_T        DSM_Unload(DYNAMIC_SECTION_INTSRAM_ADT_T_CORE0);
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_ADT_L        DSM_Unload(DYNAMIC_SECTION_INTSRAM_ADT_L_CORE0);
+#define UNLOAD_DYNAMIC_SECTION_INTSRAM_ADT_W2       DSM_Unload(DYNAMIC_SECTION_INTSRAM_ADT_W2_CORE0);
+
+#endif
+
+#define DYNAMIC_SECTION_INTSRAM_UBIN_W DYNAMIC_SECTION_INTSRAM_UBIN_W_CORE0
+#define DYNAMIC_SECTION_INTSRAM_UBIN_T DYNAMIC_SECTION_INTSRAM_UBIN_T_CORE0
+
+    
+/* define dsm function return status */
+typedef enum {
+    DSM_FAIL,               /* the operation has failed */
+    DSM_SUCCESS,            /* the operation is succeeded */
+    DSM_LOAD_BEFORE,        /* the section has been load before */
+    DSM_FAIL_TO_CANCEL_GDMA_LOADING, /* the section is loaded by CPU or loading by GDMA is done */
+    DSM_LOAD_BY_GDMA,       /* the section will be load by GDMA */  
+} dsm_status;
+
+/* define dsm section status */
+typedef enum {
+    DSM_LOAD,           /* the section is loaded */
+    DSM_LOADING,        /* the section is during loading */
+    DSM_UNLOAD,         /* the section is not loaded */
+    DSM_UNLOADING,      /* the section is during unloading */
+} dsm_section_status;
+
+
+
+typedef void (*DSM_gdma_pcb_f)(void *info);
+
+
+/*******************************************************************************
+ * External Function Declaration
+ *******************************************************************************/
+ /*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_Load
+ * DESCRIPTION
+ *  This function will load specified section to corresponding address which overlaps with other sections. 
+ *  There are 2 ways to load a section
+ *    1) Load by CPU (default)
+ *    2) Load by GDMA
+ *  If the section is loaded by CPU, it will return DSM_SUCCESS after the loading is done.
+ *  If the section is loaded by GDMA, it will return directly with return value DSM_LOAD_BY_GDMA. You can 
+ *  register a callback function by using DSM_RegisterGDMACallback. After the section is loaded by GDMA, 
+ *  the callback function will be executed in GDMA LISR.
+ *  If the specified section is loaded before, it will return directly with return value DSM_LOAD_BEFORE.
+ *  If there is an overlapped section is loaded, 
+ *    1) if no data in the overlapped loaded section, system will mark the loaded section to unload status and 
+ *        keep loading specified section to overwrite the overlapped section;
+ *    2) otherwise, fatal error will happened since there are unloaded data in overlapped section which could 
+ *        not be overwritten.
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section to load
+ * RETURN VALUES
+ *   1) DSM_SUCCESS: load the specified section successfully
+ *   2) DSM_LOAD_BEFORE: the specified section has been load before 
+ *   3) DSM_LOAD_BY_GDMA: the section will be load by GDMA  
+ * NOTE
+ *  If the specified section has not been loaded before, the section will be set to initial value which means 
+ *  loaded from load view; otherwise, the data will be restored from system.
+ * SEE ALSO
+ *  DSM_Unload, DSM_IsLoad, DSM_RegisterGDMACallback, DSM_CancelLoadingByGDMA
+ ******************************************************************************/
+dsm_status DSM_Load(kal_uint32 dynamic_section_id);
+
+/*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_Unload
+ * DESCRIPTION
+ *  This function will unload specified section which means the data in the specified section will be backed up 
+ *  by system. System backup the data by CPU. 
+ *  It will return DSM_SUCCESS after the un-loading is done.
+ *  If there is no data to backup, it will return directly with return value DSM_UNLOAD_NOTHING. 
+ *  Fatal error will happened if specified section has not been loaded before. 
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section to unload
+ * RETURN VALUES
+ *   1) DSM_SUCCESS: unload the specified section successfully
+ *   2) DSM_UNLOAD_NOTHING.: there is no data to backup  
+ * NOTE
+ *  N/A
+ * SEE ALSO
+ *  DSM_Load, DSM_QuerySectionStatus, DSM_IsLoad, DSM_RegisterGDMACallback, DSM_CancelLoadingByGDMA
+ ******************************************************************************/
+dsm_status DSM_Unload(kal_uint32 dynamic_section_id);
+
+/*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_QuerySectionStatus
+ * DESCRIPTION
+ *  This function return the status of specified section
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section to query
+ * RETURN VALUES
+ *  1) DSM_LOAD: the section is loaded 
+ *  2) DSM_LOADING: the section is during loading
+ *  3) DSM_UNLOAD: the section is not loaded
+ *  4) DSM_UNLOADING: the section is during unloading
+ * NOTE
+ *  N/A
+ * SEE ALSO
+ *  DSM_Load, DSM_Unload
+ ******************************************************************************/
+dsm_section_status DSM_QuerySectionStatus(kal_uint32 dynamic_section_id);
+
+
+
+/*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_IsLoad
+ * DESCRIPTION
+ *  This function return true if the specified section is loaded. 
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section to query
+ * RETURN VALUES
+ *   1) KAL_TRUE: the specified section is loaded.
+ *   2) KAL_FALSE: the specified section is not loaded.
+ * NOTE
+ *  N/A
+ * SEE ALSO
+ *  DSM_Load, DSM_Unload, DSM_QuerySectionStatus
+ ******************************************************************************/
+kal_bool DSM_IsLoad(kal_uint32 dynamic_section_id);
+
+/*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_RegisterGDMACallback
+ * DESCRIPTION
+ *  This function is designed for user to register callback function. If the specified section is loaded by GDMA 
+ *  and loading by GDMA is done, the callback function will be called during GDMA LISR.
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section
+ *  DSM_gdma_cb:          [IN] callback function. Prototype is "typedef void (*DSM_gdma_pcb_f)(void *info)"
+ *  DSM_gdma_param:    [IN] the argument for callback function
+ * RETURN VALUES
+ *  N/A
+ * NOTE
+ *  Fatal error is happened if the specified section is not load by GDMA.
+ * SEE ALSO
+ *  DSM_Load, DSM_IsLoad, DSM_QuerySectionStatus, DSM_CancelLoadingByGDMA
+ ******************************************************************************/
+void DSM_RegisterGDMACallback(kal_uint32 dynamic_section_id, DSM_gdma_pcb_f DSM_gdma_cb, void * DSM_gdma_param);
+
+/*******************************************************************************
+ * <GROUP Functions>
+ *
+ * FUNCTION
+ *  DSM_CancelLoadingByGDMA
+ * DESCRIPTION
+ *  This function will stop loading target section by GDMA.
+ * PARAMETERS
+ *  dynamic_section_id:   [IN] id of specified section
+ * RETURN VALUES
+ *  DSM_FAIL_TO_CANCEL_GDMA_LOADING : if the section not loading GDMA (i.e. loading by CPU)
+ *  DSM_SUCCESS : cancel loading successfully
+ * NOTE
+ *  (1) it may late to stop GDMA and the callback function will be executed in LISR before we stop GDMA.
+ *  Make sure to revert the things done by your callback function
+ *  (2) Do not cancel your first loading if there are RWZI in your section; Otherwise, we will restore
+ *  unexpected value from EMI and cause fatal error (checksum fail)
+ *  (3) If cancel your non-first loading with RWZI in your section; we will restore the data which unload
+ *  by you last time
+ * SEE ALSO
+ *  DSM_Load, DSM_IsLoad, DSM_QuerySectionStatus
+ ******************************************************************************/
+dsm_status DSM_CancelLoadingByGDMA(kal_uint32 dynamic_section_id);
+
+
+#endif /* end of !efined(__DSM_CONFIGURATION__) */
+
+#endif  /* __DSMGR_H__ */
diff --git a/mcu/interface/service/sys_svc/dspfm_public.h b/mcu/interface/service/sys_svc/dspfm_public.h
new file mode 100644
index 0000000..3cb0f6b
--- /dev/null
+++ b/mcu/interface/service/sys_svc/dspfm_public.h
@@ -0,0 +1,165 @@
+/*****************************************************************************
+*  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) 2013
+*
+*  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:
+ * ---------
+ *   dspfm_public.h
+ *
+ * Project:
+ * --------
+ *   Moly
+ *
+ * Description:
+ * ------------
+ *   Exported interface of LTE DSP file management
+ *
+ * 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!
+ *
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _DSPFM_PUBLIC_H
+#define _DSPFM_PUBLIC_H
+
+typedef enum{
+    DSPFM_OK = 0,
+    DSPFM_ERR_DSP_REGION_NOT_FOUND = -1,
+    DSPFM_ERR_DSP_FILE_NOT_OPEND = -2,
+    DSPFM_ERR_DSP_EXCEED_FILE_SIZE = -3,
+    DSPFM_ERR_DSP_READ_DATA_FAIL = -4,
+    DSPFM_ERR_DSP_READ_HEAD_DATA_FAIL = -5,
+    DSPFM_ERR_DSP_READ_TAIL_DATA_FAIL = -6,
+    DSPFM_ERR_DSP_GET_START_PAGE_FAIL = -7,
+    DSPFM_ERR_DSP_PTR_NOT_4B_ALIGN = -8, 
+    DSPFM_ERR_DSP_OFFSET_NOT_4B_ALIGN = -9, 
+    DSPFM_ERR_DSP_FAIL_GET_FILE_SIZE = -10,
+    DSPFM_ERR_DSP_FILE_SEEK_FAIL  = -11,
+    DSPFM_ERR_DSP_GFH_READ_FAIL  = -12,
+    DSPFM_ERR_DSP_WRONG_GFH_TYPE  = -13,
+    DSPFM_ERR_DSP_VERSION_CHECK_FAIL = -14,
+    DSPFM_ERR_DSP_INVALID_GFH = -15,
+    DSPFM_ERR_FILE_SIZE_TOO_LARGE = -16,
+    DSPFM_ERR_DSP_FILE_OPEN_FAIL = -17,
+}dspfm_errot_t;
+
+/*!
+ *  @brief  Open DSP file
+ *  @param  none
+ *  @return >0 - size of DSP image(not include GFH)
+ *              <=0 - error code
+ */
+extern kal_int32 dspfm_open(void);
+
+/*!
+ *  @brief  Read size of data to ptr from offset
+ *  @param  ptr - destination addr
+ *                offset - data offset 
+ *                size - data size
+ *  @return 0 - success
+ *              <0 - error code
+ */
+extern kal_int32 dspfm_read(kal_uint32 ptr, kal_uint32 offset, kal_uint32 size);
+
+/*!
+ *  @brief  Close DSP file 
+ *  @param  none
+ *  @return none
+ */
+extern void dspfm_close(void);
+
+/*!
+ *  @brief  Get GFH size in DSP image 
+ *  @param  none
+ *  @return size of DSP image's GFG
+ */
+extern kal_uint32 dspfm_get_DSP_GFH_length(void);
+
+
+#if defined(__MODEM_ONLY__)
+
+#define LTE_DSP_BIN_BASE  0x08000000
+
+#else /*else of __MODEM_ONLY__*/
+
+extern kal_uint32 Image$$EXTSRAM_DSP_DATA_ZI$$Base;
+#define LTE_DSP_BIN_BASE  &Image$$EXTSRAM_DSP_DATA_ZI$$Base
+
+#endif
+
+
+
+#endif /*_DSPFM_PUBLIC_H*/
diff --git a/mcu/interface/service/sys_svc/feature_def.h b/mcu/interface/service/sys_svc/feature_def.h
new file mode 100644
index 0000000..b50b4a6
--- /dev/null
+++ b/mcu/interface/service/sys_svc/feature_def.h
@@ -0,0 +1,233 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   feature_def.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Feature combination definition
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _FEATURE_DEF_H_
+#define _FEATURE_DEF_H_
+
+/* Features that will be referred by bootloader and FlashTool */
+#define   MAUI_FC_NONE                0x0000
+#define   MAUI_FC_SECURE              0x0001 
+#define   MAUI_FC_FOTA                0x0002
+#define   MAUI_FC_NOR_FLASH_BOOTING   0x0004
+#define   MAUI_FC_USBDL               0x0008
+#define   MAUI_FC_SW_ROOT_KEY_IN_BL   0x0010
+#define   MAUI_FC_MBA                 0x0020
+#define   MAUI_FC_SYSDRV_ON_NAND      0x0040
+#define   MAUI_FC_SECURE_RO           0x0080
+#define   MAUI_FC_USBDL_IN_BOOTROM    0x0100
+#define   MAUI_FC_EXT_BL_UPDATE       0x0200
+#define   MAUI_FC_SPLIT_BIN_SUPPORT   0x0400
+#define   MAUI_FC_FAST_LOGO           0x0800
+#define   MAUI_FC_DUAL_IMAGE        0x01000000  // bit[31:24] for MT6290
+
+//Define feature combination flag
+#ifdef __MTK_SECURE_PLATFORM__
+#define SECURE_SWITCH                 MAUI_FC_SECURE
+#else
+#define SECURE_SWITCH                 0
+#endif
+
+#ifdef __FOTA_DM__
+#define FOTA_SWITCH                   MAUI_FC_FOTA
+#else
+#define FOTA_SWITCH                   0
+#endif
+
+#ifdef __NOR_FLASH_BOOTING__
+#define NOR_FLASH_BOOTING_SWITCH      MAUI_FC_NOR_FLASH_BOOTING
+#else
+#define NOR_FLASH_BOOTING_SWITCH      0
+#endif
+
+#if defined(__USB_DOWNLOAD__) || defined(__UART_DOWNLOAD__)
+#define USBDL_SWITCH                  MAUI_FC_USBDL
+#else
+#define USBDL_SWITCH                  0
+#endif
+
+#ifdef __MULTIPLE_BINARY_FILES__
+#define MBA_SWITCH                    MAUI_FC_MBA
+#else
+#define MBA_SWITCH                    0
+#endif
+
+#if defined(__BIND_TO_CHIP__) || defined(__BIND_TO_KEY__)
+#define SW_ROOT_KEY_IN_BL_SWITCH      MAUI_FC_SW_ROOT_KEY_IN_BL
+#else
+#define SW_ROOT_KEY_IN_BL_SWITCH      0
+#endif
+
+#if defined (__FS_SYSDRV_ON_NAND__) && !defined (_NAND_FLASH_BOOTING_)
+#define SYSDRV_ON_NAND_SWITCH         MAUI_FC_SYSDRV_ON_NAND
+#else
+#define SYSDRV_ON_NAND_SWITCH         0
+#endif
+
+#define SECURE_RO_ENABLE_SWITCH       0
+
+
+#ifdef __USBDL_IN_BOOTROM__
+#define USBDL_IN_BOOTROM_SWITCH       MAUI_FC_USBDL_IN_BOOTROM
+#else
+#define USBDL_IN_BOOTROM_SWITCH       0
+#endif
+
+#ifdef __EXT_BL_UPDATE__
+#define EXT_BL_UPDATE_SWITCH          MAUI_FC_EXT_BL_UPDATE
+#else
+#define EXT_BL_UPDATE_SWITCH          0
+#endif
+
+#ifdef __SPLIT_BINARY__
+#define SPLIT_BIN_SUPPORT_SWITCH      MAUI_FC_SPLIT_BIN_SUPPORT
+#else
+#define SPLIT_BIN_SUPPORT_SWITCH      0
+#endif
+
+#ifdef __FAST_LOGO__
+#define FAST_LOGO_SWITCH              MAUI_FC_FAST_LOGO
+#else
+#define FAST_LOGO_SWITCH              0
+#endif
+
+#define DUAL_IMAGE_SWITCH       0
+
+
+
+#define FEATURE_COMBINATION           (SECURE_SWITCH | FOTA_SWITCH | NOR_FLASH_BOOTING_SWITCH | USBDL_SWITCH | SW_ROOT_KEY_IN_BL_SWITCH | MBA_SWITCH | SYSDRV_ON_NAND_SWITCH | SECURE_RO_ENABLE_SWITCH | USBDL_IN_BOOTROM_SWITCH | EXT_BL_UPDATE_SWITCH | SPLIT_BIN_SUPPORT_SWITCH | FAST_LOGO_SWITCH | DUAL_IMAGE_SWITCH)
+#define FEATURE_COMBINATINO_EX        (0)
+                    
+                    
+#define MIN_FLASHTOOL_VER_REQURIEMENT (0x00000003)
+
+#endif /* _FEATURE_DEF_H_ */
+
diff --git a/mcu/interface/service/sys_svc/init_memory_stack.h b/mcu/interface/service/sys_svc/init_memory_stack.h
new file mode 100644
index 0000000..0cb564b
--- /dev/null
+++ b/mcu/interface/service/sys_svc/init_memory_stack.h
@@ -0,0 +1,136 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   init_memory_stack.h
+ *
+ * Project:
+ * --------
+ *   MAUI
+ *
+ * Description:
+ * ------------
+ *   Exported APIs for non-HAL users
+ *
+ * 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!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef __INIT_MEMORY_STACK_H__
+#define __INIT_MEMORY_STACK_H__
+
+#include "kal_general_types.h"
+
+/*************************************************************************
+ * Define import function prototype
+ *************************************************************************/
+ 
+ /*******************************************************************************
+ * <GROUP Functions>
+ * 
+ * FUNCTION
+ *  INT_SwitchStackToRun
+ * DESCRIPTION
+ *  Switch current stack pointer to new_stack and then run func(...).
+ * PARAMETERS
+ *  stack_start: [IN] the start address of the new stack (NOT a pointer of start address)
+ *  stack_size: [IN] the size of the stack
+ *  func: [IN] the pointer of function which want to run
+ *  argc: [IN] the number of arguments of func
+ *  ...: [IN] the arguments of func
+ * RETURNS
+ *  The reture value of func 
+ ******************************************************************************/
+extern kal_uint32 INT_SwitchStackToRun(void *stack_start, kal_uint32 stack_size, kal_func_ptr func, kal_uint32 argc, ...);
+
+ /*******************************************************************************
+ * <GROUP Functions>
+ * 
+ * FUNCTION
+ *  INT_QueryHWITCRange
+ * DESCRIPTION
+ *  For quering range of kal_hw_itc
+ * PARAMETERS
+ *  base_addr: [OUT] the base address kal_hw_itc
+ *  length: [OUT] length of kal_hw_itc
+ * RETURNS
+ *  NA
+ ******************************************************************************/
+void INT_QueryHWITCRange(kal_uint32 *base_addr, kal_uint32 *length);
+
+
+#endif  /* !__INIT_MEMORY_STACK_H__ */
+
diff --git a/mcu/interface/service/sys_svc/init_public.h b/mcu/interface/service/sys_svc/init_public.h
new file mode 100644
index 0000000..c3ac237
--- /dev/null
+++ b/mcu/interface/service/sys_svc/init_public.h
@@ -0,0 +1,107 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   init.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _INIT_PUBLIC_H
+#define _INIT_PUBLIC_H
+
+/*******************************************************************************
+ * Include header files
+ *******************************************************************************/
+//MSBB remove #include "kal_non_specific_general_types.h"
+
+/*************************************************************************
+ * Define data structure
+ *************************************************************************/
+typedef enum {
+    CHL_USB,
+    CHL_SDIO,
+    CHL_UART,
+    CHL_NONE,
+    CHL_CCCI,
+} ser_chl_t;
+
+typedef struct
+{
+    kal_char * bb_chip;
+    kal_char * dsp_fw;
+    kal_char * dsp_ptch;
+    kal_char * mcu_sw;
+    kal_char * mcu_sw_branch;
+    kal_char * bb_board;
+    kal_char * mcu_sw_flavor;
+} version_struct;
+
+
+typedef struct
+{
+    kal_char * dsp_fw;
+    kal_char * dsp_btime;
+} lte_dsp_version_struct;
+
+
+extern void INT_VersionNumbers(version_struct *);
+extern kal_bool INT_LteDspVersionNumbers(lte_dsp_version_struct * ptr_version);
+extern void INT_SetMetaMode(void);
+extern ser_chl_t INT_GetBromBlSyncType();
+
+#endif  /* !_INIT_PUBLIC_H */
+
diff --git a/mcu/interface/service/sys_svc/meta_sec_support.h b/mcu/interface/service/sys_svc/meta_sec_support.h
new file mode 100644
index 0000000..93df1d3
--- /dev/null
+++ b/mcu/interface/service/sys_svc/meta_sec_support.h
@@ -0,0 +1,97 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   Meta_sec_support.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   The source is for META security support
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+ 
+#ifndef __META_SEC_SUPPORT__
+#define __META_SEC_SUPPORT__
+
+#define META_SLA_RND_LEN	16
+#define META_SLA_ENC_RND_LEN	256   //RSA 2048
+
+typedef enum{
+    META_SLA_ERROR_NONE = 0x0000,
+    META_SLA_GEN_END_ERR = 0x0001,    
+    META_SLA_GET_SLA_KEY_ERR = 0x0002,    
+    META_SLA_RSA_VERIFY_ERR = 0x0003,
+    META_SLA_DEC_RND_LEN_ERR = 0x0004,
+    META_SLA_DEC_RND_COMPARE_ERR = 0x0005,
+    META_SLA_RND_BUF_LEN_ERR = 0x0006,
+    META_SLA_RND_ENC_LEN_ERR = 0x0007,
+    META_SLA_RND_ENC_BUF_LEN_ERR = 0x0008,
+    META_SLA_RSA_ENCRYPT_ERR = 0x0009,
+    META_SLA_ENC_RND_LEN_ERR = 0x000A,
+}META_SLA_ERROR_E;
+
+kal_uint32 MetaSLA_Get_Sec_Err_Code(void);
+
+kal_bool MetaSLA_Is_Enabled(void);
+
+kal_bool MetaSLA_Is_Verified(void);
+
+kal_uint32 MetaSLA_Rnd_Gen(kal_uint8 *rnd_buf, kal_uint32 rnd_buf_len);
+
+kal_uint32 MetaSLA_Rnd_Verify(kal_uint8 *rnd_enc, kal_uint32 rnd_enc_len);
+
+#endif /*__META_SEC_SUPPORT__*/
diff --git a/mcu/interface/service/sys_svc/mipc_sec_support.h b/mcu/interface/service/sys_svc/mipc_sec_support.h
new file mode 100644
index 0000000..1b9f6d3
--- /dev/null
+++ b/mcu/interface/service/sys_svc/mipc_sec_support.h
@@ -0,0 +1,106 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   mipc_sec_support.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   The source is for MIPC security support
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+ 
+#ifndef __MIPC_SEC_SUPPORT__
+#define __MIPC_SEC_SUPPORT__
+
+#define MIPC_SLA_RND_LEN	16
+#define MIPC_SLA_ENC_RND_LEN	256   //RSA 2048
+
+typedef enum{
+    MIPC_SLA_ERROR_NONE = 0x0000,
+    MIPC_SLA_GEN_END_ERR = 0x0001,    
+    MIPC_SLA_GET_SLA_KEY_ERR = 0x0002,    
+    MIPC_SLA_RSA_VERIFY_ERR = 0x0003,
+    MIPC_SLA_DEC_RND_LEN_ERR = 0x0004,
+    MIPC_SLA_DEC_RND_COMPARE_ERR = 0x0005,
+    MIPC_SLA_RND_BUF_LEN_ERR = 0x0006,
+    MIPC_SLA_RND_ENC_LEN_ERR = 0x0007,
+    MIPC_SLA_RND_ENC_BUF_LEN_ERR = 0x0008,
+    MIPC_SLA_RSA_ENCRYPT_ERR = 0x0009,
+    MIPC_SLA_ENC_RND_LEN_ERR = 0x000A,
+    MIPC_SLA_RND_NOT_INIT_ERR = 0x000B,
+    MIPC_SLA_UNKNOWN_LEVEL_ERR = 0x000C
+}MIPC_SLA_ERROR_E;
+
+typedef enum{
+    MIPC_SLA_L1,
+    MIPC_SLA_L2,
+    MIPC_SLA_L3,
+    MIPC_SLA_LEVEL_NUM
+}MIPC_SLA_LEVEL;
+
+kal_uint32 MipcSLA_Get_Sec_Err_Code(MIPC_SLA_LEVEL level);
+
+kal_bool MipcSLA_Is_Enabled(void);
+
+kal_bool MipcSLA_Is_Verified(MIPC_SLA_LEVEL level);
+
+kal_uint32 MipcSLA_Rnd_Gen(MIPC_SLA_LEVEL level, kal_uint8 *rnd_buf, kal_uint32 rnd_buf_len);
+
+kal_uint32 MipcSLA_Rnd_Verify(MIPC_SLA_LEVEL level, kal_uint8 *rnd_enc, kal_uint32 rnd_enc_len);
+
+#endif /*__MIPC_SEC_SUPPORT__*/
diff --git a/mcu/interface/service/sys_svc/msm_service.h b/mcu/interface/service/sys_svc/msm_service.h
new file mode 100644
index 0000000..4245254
--- /dev/null
+++ b/mcu/interface/service/sys_svc/msm_service.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:
+ * ---------
+ *   msm_service.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   The source is for software management
+ *
+ * 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!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __MSM_SERVICE__
+#define __MSM_SERVICE__
+
+#define MSM_RSA_KEY_SIZE      256  //RSA 2048
+#define MSM_AES_KEY_SIZE      16
+
+#define MSM_RND_LEN	16
+#define MSM_ENC_RND_LEN	MSM_RSA_KEY_SIZE   
+
+#define MSM_CERT_MAGIC               0x00534D43  // "SMC"
+#define MSM_AUTH_MAGIC               0x00534D41  // "SMA"
+#define MSM_PLAT_MAGIC                0x5041  //"PA"
+#define MSM_GET_MAGIC(magic_ver)    ((magic_ver)&0x00FFFFFF)
+#define MSM_GET_VER(magic_ver)      ((magic_ver)>>24)
+
+#define MSM_FEATURE_MAX  16
+#define MSM_PLAT_MAX  32
+
+#define MSM_DEV_ID_LEN     20
+#define MSM_DEV_ID_HRID_OFFSET  4
+
+typedef enum{
+    MSM_ERROR_NONE = 0x0000,
+        
+    MSM_ERROR_START = 0x600,    
+
+    /* General error */
+    MSM_GEN_RND_ERR = 0x601, 
+    MSM_CONTEXT_FULL_ERR = 0x602, 
+    MSM_BLOCKING_ERR = 0x603, 
+    MSM_DEAD_ERR  = 0x604, 
+    MSM_UNEXPECT_STATE_ERR = 0x605, 
+    MSM_NULL_PTR_ERR = 0x606, 
+
+    /* Receive command in wrong state, the last 4bit indicates the state information */
+    MSM_WRONG_STATE_ERR = 0x610,   
+
+    /* CERT verification error */
+    MSM_CERT_VERIFY_ERR = 0x620, 
+    MSM_CERT_MAGIC_ERR = 0x621, 
+    MSM_CERT_SIZE_ERR = 0x622, 
+    MSM_CERT_TOTAL_SIZE_ERR = 0x623, 
+    MSM_CERT_RKEY_N_SIZE_ERR = 0x624, 
+    MSM_CERT_RKEY_E_SIZE_ERR = 0x625, 
+    MSM_CERT_PLAT_MATCH_ERR = 0x626, 
+    MSM_CERT_EXPIRED_ERR = 0x627, 
+
+     /* customer key verification error */
+    MSM_CUST_KEY_DEC_ERR = 0x630, 
+    MSM_CUST_KEY_N_LEN_ERR = 0x631, 
+    MSM_CUST_KEY_E_LEN_ERR = 0x632, 
+    MSM_CUST_KEY_SIZE_ERR = 0x633, 
+    MSM_CUST_KEY_RND_BUF_LEN_ERR = 0x634,  
+
+     /* AUTH msg verification error */
+    MSM_AUTH_RND_DEC_ERR = 0x640, 
+    MSM_AUTH_RND_LEN_ERR = 0x641, 
+    MSM_AUTH_RND_COMPARE_ERR = 0x642, 
+    MSM_AUTH_MSG_SIZE_ERR = 0x643, 
+    MSM_AUTH_KEY_SIZE_ERR = 0x644, 
+    MSM_AUTH_MAGIC_ERR = 0x645, 
+    MSM_AUTH_GEN_KEY_ERR = 0x646, 
+    MSM_AUTH_PLAT_MSG_SIZE_ERR = 0x647, 
+    MSM_AUTH_PLAT_MSG_DEC_ERR = 0x648, 
+    MSM_AUTH_PLAT_MSG_MAGIC_ERR = 0x649, 
+    MSM_AUTH_PLAT_MSG_VER_ERR = 0x650, 
+    MSM_AUTH_PLAT_MSG_SP_VER_ERR = 0x651, 
+    MSM_AUTH_PLAT_MSG_CERT_EXPIRED_ERR = 0x652, 
+
+     /* CERT cancel error */
+    MSM_CERT_CANCEL_DEC_ERR = 0x650, 
+    MSM_CERT_CANCEL_COMPARE_ERR = 0x651, 
+    MSM_CERT_CANCEL_ID_SIZE_ERR = 0x652, 
+
+     /* AT command decryption error */
+    MSM_AT_DEC_ECMD_SIZE_ERR = 0x660, 
+    MSM_AT_DEC_OUT_BUF_SIZE_ERR = 0x661, 
+    MSM_AT_DEC_CTX_NOT_FOUND_ERR = 0x662, 
+    MSM_AT_DEC_FAIL_ERR = 0x663, 
+
+     /* Feature checking error */
+    MSM_FEATURE_CTX_NOT_FOUND_ERR = 0x671,
+    MSM_FEATURE_NOT_SUPPORT_ERR = 0x672, 
+    MSM_FEATURE_DENIED = 0x673,
+
+    MSM_FEATURE_NOT_EXIST = 0x680,
+    
+    MSM_ERROR_END = 0x6FF
+}MSM_ERROR_E;
+
+typedef struct MSM_DEV_INFO
+{
+    kal_uint32 m_feature_support;
+    kal_uint8 m_dev_id[MSM_DEV_ID_LEN];
+}MSM_DEV_INFO_t;
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_0
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  p_cert          [IN]  pointer of CERT(X)  
+ *  c_size          [IN]  size of CERT     
+ *  p_cust_id       [OUT]  Customer id <CUST_ID> 
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_0(kal_uint8 *p_cert, kal_uint32 c_size, kal_uint32 *p_cust_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_1
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cust_key    [IN]  pointer of "E(K(XR)pri, K(XD)pub)" 
+ *  e_size          [IN]  size of e_cust_key
+ *  p_rnd_buf       [IN/OUT] Input the buffer pointer / function stores <RND(M)> into this buffer
+ *  rnd_buf_len     [IN] size of rnd_buf (must be MSM_RND_LEN )
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_1(kal_uint32 cust_id, kal_uint8 *p_e_cust_key, kal_uint32 e_size, kal_uint8 *p_rnd_buf, kal_uint32 rnd_buf_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_2
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  p_auth_msg      [IN]  pointer of "AUTH_MSG"
+ *  a_size          [IN]  size of auth_msg
+ *  p_sym_key       [IN/OUT] Input the buffer pointer / function stores K(M)sym into this buffer
+ *  s_size          [IN] size of sym_key (must be MSM_AES_KEY_SIZE)
+ *  p_cust_id       [OUT]  Customer id <CUST_ID> 
+ *  p_dev_info      [OUT] function stores the device information
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_2(kal_uint8 *p_auth_msg, kal_uint32 a_size, kal_uint8 *p_plat_msg, kal_uint32 p_size, kal_uint8 *p_sym_key, kal_uint32 s_size, kal_uint32 *p_cust_id, MSM_DEV_INFO_t *p_dev_info);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_3
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cust_id     [IN]  pointer of "AES(E(K(M)sym, CUST_ID))"
+ *  e_size          [IN]  size of e_cust_id
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_3(kal_uint32 cust_id, kal_uint8 *p_e_cust_id , kal_uint32 e_size);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Decrypt_Cmd
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cmd         [IN]  pointer of encrypted command
+ *  in_size         [IN]  size of e_cmd
+ *  p_cmd           [IN/OUT] Input the buffer pointer / function stores descrypted command into this buffer
+ *  p_out_size      [IN] size of cmd buffer
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Decrypt_Cmd(kal_uint32 cust_id, kal_uint8 *p_e_cmd, kal_uint32 in_size, kal_uint8 *p_cmd, kal_uint32 out_size);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Decrypt_Cmd
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  feature         [IN]  feature "XXXX"
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Check_Feature_Sts(kal_uint32 cust_id, kal_uint32 feature);
+
+#endif /*__MSM_SERVICE__*/