[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__*/