[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/sst/include/SST_Concurrent_utility.h b/mcu/service/sst/include/SST_Concurrent_utility.h
new file mode 100644
index 0000000..48f7353
--- /dev/null
+++ b/mcu/service/sst/include/SST_Concurrent_utility.h
@@ -0,0 +1,328 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   SST_concurrent_utility.h
+ *
+ * Project:
+ * --------
+ *   Maui_Software
+ *
+ * Description:
+ * ------------
+ *   This Module defines the necessary API needed by concurrent ulitity.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef _SST_CONCURRENT_UTILITY_
+#define _SST_CONCURRENT_UTILITY_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "kal_general_types.h"
+
+/*************************************************************************
+ * Platform Capabilities Definition   
+ *************************************************************************/
+
+/*************************************************************************
+ * Constant Definition : Option from NVRAM setting
+ *************************************************************************/
+#define SWLA_ADDON_EBM_R_LAT 0x10
+#define SWLA_ADDON_EBM_W_LAT 0x20
+
+/*************************************************************************
+ * Constant Definition : Sync with ELT Addon DLL
+ *************************************************************************/
+#define USAGE_TYPE_ELM       (1UL <<  0)
+#define USAGE_TYPE_EBM       (1UL <<  1)
+#define USAGE_TYPE_UR        (1UL <<  2)
+#define USAGE_TYPE_EBM_RLAT  (1UL <<  3)
+#define USAGE_TYPE_EBM_WLAT  (1UL <<  4)
+#define USAGE_TYPE_BMON      (1UL <<  5)
+
+
+/*************************************************************************
+ * ENUM Definition : Sync with Catcher 
+ *************************************************************************/
+typedef enum
+{
+   HEADER_ID_MAIN_TQCNT           = 0x00000001,
+   HEADER_ID_MAIN_USEC            = 0x00000002,
+   HEADER_ID_RTOS_V1              = 0x00000000,
+   HEADER_ID_RTOS_V2              = 0x00000010,
+   HEADER_ID_TIME_STAMP_BASE      = 0x00000100,
+   HEADER_ID_EXTRA_INFO           = 0x00000103,
+   HEADER_ID_TWO_RATIOS           = 0x00000104,
+   HEADER_ID_OVERHEAD             = 0x00000105,
+   HEADER_ID_CUST_OVERHEAD        = 0x00000106,
+   HEADER_ID_EXTERNAL_BN          = 0x00010005,
+   HEADER_ID_EXTERNAL_EMI_GERNAL  = 0x00010006,
+   HEADER_ID_EXTERNAL_EMI_PRO     = 0x00010007,
+   HEADER_ID_EXTERNAL_TST         = 0x00010008,
+   HEADER_ID_EXTERNAL_INST_COUNT  = 0x0001000A,
+   HEADER_ID_EXTERNAL_CONCURRENCY = 0x0001000B,
+   HEADER_ID_EXTERNAL_MAX         = 0x00010010,
+   
+   /* The following is for MALMO ASM SWLA*/
+   HEADER_ID_MALMO_ASM_BASE = 0x10000000,
+   HEADER_ID_MALMO_ASM_FRAMENO,
+   HEADER_ID_MALMO_ASM_MCU_PC, 
+   HEADER_ID_MALMO_ASM_CONTEXT_ID, 
+   HEADER_ID_MALMO_ASM_PMC0,
+   HEADER_ID_MALMO_ASM_PMC1, 
+   HEADER_ID_MALMO_ASM_PMC2,
+   HEADER_ID_MALMO_ASM_CYCLE_CNT, 
+   HEADER_ID_MALMO_ASM_EMI_BCNT, 
+   HEADER_ID_MALMO_ASM_EMI_BACT, 
+   HEADER_ID_MALMO_ASM_EMI_BSCT, 
+   HEADER_ID_MALMO_ASM_EMI_BSCT2, 
+   HEADER_ID_MALMO_ASM_EMI_BSCT3, 
+   HEADER_ID_MALMO_ASM_TIMESTAMP,
+   /* There might be more MALMO ASM entries in the future */
+ 
+   HEADER_ID_MALMO_ASM_EXTRA_BASE = 0x10001000,
+   HEADER_ID_MALMO_ASM_EXTRA0,
+   HEADER_ID_MALMO_ASM_EXTRA1, 
+   HEADER_ID_MALMO_ASM_EXTRA2, 
+   HEADER_ID_MALMO_ASM_EXTRA3
+
+} SA_HEADER_ID_T;
+
+/*************************************************************************
+ * Structure Definition : Basic and Professional EMI Monitor Logging Node
+ *************************************************************************/
+
+typedef struct SA_EBMAddonCounter_T
+{
+    kal_uint32 emi_md_r_wcnt;
+    kal_uint32 emi_md_w_wcnt;
+} SA_EBMAddonCounter;
+
+
+
+typedef struct SA_ELMAddonCounter_T
+{
+    kal_uint32 elm_r_tcnt; //mode 0 read trans count    
+    kal_uint32 elm_w_tcnt; //mode 0 wrtie trans count
+    kal_uint32 elm_r_lat;  //mode 0 read latency count    
+    kal_uint32 elm_w_lat;  //mode 0 write latency count
+#if defined(__MD95__)
+    kal_uint32 elm_r_wc;   //mode 0 read word count
+    kal_uint32 elm_w_wc;   //mode 0 write word count
+#endif
+} SA_ELMAddonCounter;
+
+//#define __SWLA_ADDON_SMIM__
+typedef struct BM_LOG_T
+{
+    // MD ELM
+    #if defined(__SWLA_ADDON_ELM__)	
+    kal_uint32 elm_r_tcnt; //mode 1 read trans count    
+    kal_uint32 elm_w_tcnt; //mode 1 read word count
+    kal_uint32 elm_r_lat;  //mode 1 read latency count    
+    kal_uint32 elm_w_lat;  //mode 1 write word count
+    #endif
+
+    #if defined(__SWLA_ADDON_EBM__)
+	kal_uint32 emi_md_r_wcnt;
+    kal_uint32 emi_md_w_wcnt;
+    #endif /* __SWLA_ADDON_EBM__ */
+
+    #if defined(__SWLA_ADDON_PMU__)
+    #if defined(__PROFILE_PMU_START_END_CYC__)
+    kal_uint32 cr4_pmu_cycle_start;
+    kal_uint32 cr4_pmu_cycle_end;
+    #else
+    kal_uint32 cr4_pmu_dur;
+    #endif /* __PROFILE_PMU_START_END_CYC__ */
+    kal_uint32 cr4_pmu_event[3];
+    #endif /* __SWLA_ADDON_PMU__ */
+
+    #if defined(__SWLA_ADDON_EBM_LAT__)
+    kal_uint32 emi_md_r_tcnt;
+    kal_uint32 emi_md_w_tcnt;
+	kal_uint32 emi_md_r_lat_cnt;
+    kal_uint32 emi_md_w_lat_cnt;
+    #endif /* __SWLA_ADDON_EBM_LAT__ */
+
+    #if defined(__SWLA_ADDON_BMON__)
+    kal_uint32 busmon_mcu_tot_cyc;
+    /* index 0 for IP0, index 1 for IP1 */
+//  kal_uint32 busmon_mcu_tot_nw_cycle[2]; // non weighted transaction cycles
+    kal_uint32 busmon_mcu_max_lat[2];      // maximal latency
+    kal_uint32 busmon_infra_max_lat[2];    // maximal latency
+    #endif /* __SWLA_ADDON_BMON__ */
+
+	#if defined(__SWLA_ADDON_SMIM__)
+    kal_uint32 smi_actCnt;
+    kal_uint32 smi_tCnt;
+    kal_uint32 smi_byteCnt;
+	#endif
+
+    #if !defined(__SWLA_ADDON_ELM__) && !defined(__SWLA_ADDON_EBM__) && !defined(__SWLA_ADDON_EBM_LAT__) && !defined(__SWLA_ADDON_PMU__)
+    kal_uint32 dummy;
+    #endif
+
+} BM_Log;
+
+/*************************************************************************
+ * Structure Definition : Auxiliary Structures
+ *************************************************************************/
+typedef struct EMI_Setting_T
+{
+    kal_uint32 usage_type;
+    kal_uint32 word_cnt;
+}EMI_Setting;
+
+/*************************************************************************
+ * Structure Definition : Basic and Professional EMI Monitor Init Reference
+ *************************************************************************/
+typedef struct BM_REF_T
+{
+    SA_HEADER_ID_T   id;
+    kal_uint32       szRef;
+    EMI_Setting      emi_settings;
+}BM_Ref;
+
+
+/*************************************************************************
+ * Exported APIs for Software LA
+ *************************************************************************/
+
+extern void Setup_AddOn_RefData(SA_HEADER_ID_T id,  kal_uint8 **ARef, kal_uint32 *szARef);
+extern void Get_BM_Log( BM_Log* pLog );
+extern void Enable_Normal_EMI_Monitor(void);
+
+extern void SWLA_EBM_Setup_DLLInfo(kal_uint8 **ARef, kal_uint32 *szARef);
+
+extern void SA_ELM_AddonLogging(kal_uint32 * buff);
+extern void SA_EBM_AddonInit();
+extern kal_uint8* SA_EBM_AddonLogging_HWmode();
+extern void SA_EBM_AddonLogging_SWmode(kal_uint32 * buff);
+
+
+
+#ifdef __cplusplus       
+}
+#endif
+
+#endif /* _SST_CONCURRENT_UTILITY_ */