[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/sst/system_profiler_public.h b/mcu/interface/service/sst/system_profiler_public.h
new file mode 100644
index 0000000..744358a
--- /dev/null
+++ b/mcu/interface/service/sst/system_profiler_public.h
@@ -0,0 +1,611 @@
+/*****************************************************************************
+*  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:
+ * ---------
+ *   system_profiler.h
+ *
+ * Project:
+ * --------
+ *   
+ *
+ * Description:
+ * ------------
+ *   
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * 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 SYSPROFILER_PUBLIC_H
+#define SYSPROFILER_PUBLIC_H
+
+#include "swla_public.h"
+#include "mcu_pmu_montr_public.h"
+#include "kal_public_defs.h"
+#include "cpu_info.h"
+#include "ex_public.h"
+
+
+typedef enum {
+	SYSPRO_SW_SWLA_MODE = 0,
+	SYSPRO_SW_SWTR_MODE,
+	SYSPRO_MODE_END
+}SYSPRO_MODE;
+
+typedef enum 
+{
+    SYSPRO_CORE0 = 0,
+    SYSPRO_CORE1,
+#if defined(__MD95__)
+#ifndef __MD95_IS_2CORES__
+    SYSPRO_CORE2,
+#endif // ifndef(__MD95_IS_2CORES__)
+
+#elif defined(__MD97__) || defined(__MD97P__)
+    SYSPRO_CORE2,
+    SYSPRO_CORE3,
+#endif
+    SYSPRO_NUM
+}SYSPRO_MCU_CORE;
+
+
+#if defined(__MTK_TARGET__) && !defined(__MAUI_BASIC__)  && !defined(__ESL_HRT__)
+
+#if defined(__MD95__)
+
+#define __SYSTEM_PROFILER_ON__
+#define __SWLA_SNAPSHOT_FEATURE__
+#define __SWLA_SNAPSHOT_FEATURE_DEBUG__
+
+#elif defined(__MD97__) || defined(__MD97P__)
+
+#define __SYSTEM_PROFILER_ON__
+#define __SYSPRO_DEFAULT_MIN_BUFF_SIZE__
+//#define __SWLA_SNAPSHOT_FEATURE__
+//#define __SWLA_SNAPSHOT_FEATURE_DEBUG__
+
+#else
+    #error "Unsupported chip"
+#endif
+#endif
+
+/* DHL will call PMU API. So APIs should be exported to be linked.*/
+#if defined(__MTK_TARGET__)
+#define __SWLA_MIPS_PMU_EXIST__
+#endif
+
+#define MAX_SYSPRO_NUMBER (SYS_MCU_NUM_CORE)
+#define MAX_SWLA_NUMBER (SYS_MCU_NUM_CORE)
+#define MAX_SWTR_NUMBER (SYS_MCU_NUM_CORE)
+#define MAX_SW_SWTR_NUMBER (SYS_MCU_NUM_CORE)
+#define BASIC_INFO_SIZE (8)
+#define SYSPROFILER_INITCORE (0)
+#define SYSPRO_HW_SWTR_DEFAULT_SAMPLE_RATE (4096)
+
+#if defined(__MD95__)
+#define MAX_TC_NUMBER (4)
+#elif defined(__MD97__) || defined(__MD97P__)
+#define MAX_TC_NUMBER (6)
+#else
+    #error "Unsupported chip"
+#endif
+
+#if defined(__MD95__)
+#define SYS_PRO_HEADER_MINOR_VER (3)
+#define SYS_PRO_HEADER_MAJOR_VER (1)
+#elif defined(__MD97__) || defined(__MD97P__)
+#define SYS_PRO_HEADER_MINOR_VER (0)
+#define SYS_PRO_HEADER_MAJOR_VER (4)
+#else
+    #error "Unsupported chip"
+#endif
+#define SYS_PRO_HEADER_PADDING   (0)
+#define SYS_PRO_HEADER_MAGIC     (0xEE)
+
+/* 
+ * IF extra add-on parts are required, please modify this following number
+ */
+// 14 is the number of ASM add-on (6 built-in and 8 extra data)  --> but current is no ASM, can change
+#define MAX_ADDON_INFO_NUM 14
+#define MAX_PLATFORM_NAME_LEN 16
+#define MAX_FLAVOR_NAME_LEN 32
+#define MAX_SW_LABEL_LEN 64
+#define HEADER_SCRATCHPAD_LEN 128
+
+typedef struct SysProfiler_SummayHeader_T
+{
+    // version Info: since ver 1.03
+    kal_uint8     minor_ver;
+    kal_uint8     major_ver;
+    kal_uint8     padding;
+    kal_uint8     magic;   // should always be 0xEE
+    
+#if defined(__MD95__)     // version Info: since ver1.03(For Gen93/95)
+    kal_uint32    header_sz;
+    kal_uint32    main_desc_sz;
+#elif defined(__MD97__) || defined(__MD97P__)    // version Info: since ver4.0 (For Gen97)  
+    kal_uint8     vpe0_ic_info;
+    kal_uint8     vpe1_ic_info;
+    kal_uint8     vpe2_ic_info;
+    kal_uint8     vpe3_ic_info;
+    kal_uint32    platform_info;
+#else
+    #error "Unsupported chip"    
+#endif
+    kal_uint32    addon_desc_sz;
+} SysProfiler_SummaryHeader;
+
+typedef struct SysProfiler_MainDescHeader_T
+{
+    kal_char      mode_name[4];
+    kal_uint32    core_id;
+    kal_uint32    mdsys_timebase;
+    kal_uint32    modemsys_timebase_low;
+    kal_uint32    modemsys_timebase_high;
+    kal_uint32    log_sz;
+    kal_uint32    raw_begin_pos;    
+#if defined(__MD97__) || defined(__MD97P__)	
+    kal_uint32    cpu_clock_mhz;
+#else
+	kal_uint32    padding;
+#endif
+    kal_char      platformName[MAX_PLATFORM_NAME_LEN];
+    kal_char      flavorName[MAX_FLAVOR_NAME_LEN];
+    kal_char      SWLabel[MAX_SW_LABEL_LEN];
+} SysProfiler_MainDescHeader;
+
+typedef struct SysProfiler_AddonDescHeader_T
+{
+  kal_uint32     log_sz;
+  kal_char       ext_name[12];
+} SysProfiler_AddonDescHeader;
+
+typedef struct SysProfiler_LoggingHeader_T
+{
+   SysProfiler_SummaryHeader    summary;
+   SysProfiler_MainDescHeader   main_desc;
+   SysProfiler_AddonDescHeader  addon_info[MAX_ADDON_INFO_NUM]; 
+   kal_char                     header_padding[HEADER_SCRATCHPAD_LEN]; /* SPV scratchpad, content will be output to header region of sla.bins */
+} SysProfiler_LoggingHeader;
+
+typedef struct SysProfiler_DumpMemoryInfo_T
+{
+    kal_uint32 base_addr1;
+    kal_uint32 length1;
+    kal_uint32 base_addr2;
+    kal_uint32 length2;
+} SysProfiler_DumpMemInfo;
+
+#if defined(__MD95__)
+#if defined(__SWLA_MIPS_PMU_EXIST__)
+typedef struct SysProfiler_PMCSettingParameter_T
+{
+   SYSPRO_MODE                  mode;
+   SYSPRO_MCU_CORE              coreID;
+   kal_uint8                    TCID;
+   IAPMU_MONITOR_EVENT_TYPE     PMC0Event;
+   IAPMU_MONITOR_TARGET_TYPE    PMC0Type;
+   IAPMU_MONITOR_EVENT_TYPE     PMC1Event;
+   IAPMU_MONITOR_TARGET_TYPE    PMC1Type;
+} SysProfiler_PMCSettingParameter;
+
+typedef struct SysProfiler_DHLPMCParameter_T
+{
+   SysProfiler_PMCSettingParameter    parameter[MAX_SWLA_NUMBER * MAX_TC_NUMBER];
+} SysProfiler_DHLPMCParameter;
+
+typedef struct SysProfiler_PMCSettingLocalParameterForILM_T
+{
+   LOCAL_PARA_HDR
+   SysProfiler_PMCSettingParameter    parameter[MAX_TC_NUMBER];
+} SysProfiler_PMCSettingLocalParameterForILM;
+
+#endif
+#elif defined(__MD97__) || defined(__MD97P__)
+
+#define SYSPROFILER_CM2_NUM 4
+typedef struct CM2ConfigParameter_T
+{
+    kal_uint32 Event;
+    kal_uint32 Qualifier;
+    kal_uint32 BegAddr;
+    kal_uint32 EndAddr;
+    kal_uint32 VPEMask;
+}CM2ConfigParameter;
+
+#define SYSPROFILER_PMC_NUM 4
+typedef struct PMCConfigParameter_T
+{
+    kal_uint32 Event;
+    kal_uint32 Type;
+}PMCConfigParameter;
+
+typedef struct SysProfiler_CM2SettingParameter_T
+{
+    SYSPRO_MODE     mode;
+    SYSPRO_MCU_CORE coreID;
+    CM2ConfigParameter    CM2_parameter[SYSPROFILER_CM2_NUM];
+}SysProfiler_CM2SettingParameter;
+
+typedef struct SysProfiler_PMCSettingParameter_T
+{
+   SYSPRO_MODE                  mode;
+   SYSPRO_MCU_CORE              coreID;
+   PMCConfigParameter           PMC_parameter[SYSPROFILER_PMC_NUM];
+} SysProfiler_PMCSettingParameter;
+
+typedef struct SysProfiler_DHLPMCParameter_T
+{
+   SysProfiler_PMCSettingParameter    parameter[MAX_SWLA_NUMBER * MAX_TC_NUMBER];
+} SysProfiler_DHLPMCParameter;
+
+typedef struct SysProfiler_PMCSettingLocalParameterForILM_T
+{
+   LOCAL_PARA_HDR
+   SysProfiler_PMCSettingParameter    parameter;
+} SysProfiler_PMCSettingLocalParameterForILM;
+
+#else
+    #error "Unsupported chip"    
+#endif
+
+
+typedef enum
+{
+    SYSPRO_SW_ADDON,
+    SYSPRO_ADDON_TYPE_END,
+} SYSPROFILER_ADDON_TYPE;
+
+typedef enum
+{
+    SYSPRO_SWLA_ADDON,
+    SYSPRO_SWTR_ADDON,
+    SYSPRO_ADDON_PROFILER_TYPE_END,
+} SYSPROFILER_ADDON_PROFILER_TYPE;
+
+typedef enum{
+    SYSPRO_ERROR_CODE_SUCCESS = 0,
+    SYSPRO_ERROR_CODE_START = 0x10,
+    SYSPRO_ERROR_CODE_BUFFER_TOO_SMALL,
+    SYSPRO_ERROR_CODE_BUFFER_TOO_LARGE,
+    SYSPRO_ERROR_CODE_WRONG_MODE,
+    SYSPRO_ERROR_CODE_WAIT_IDLE_FAIL,
+    SYSPRO_ERROR_CODE_OVER_ADDON_INDEX,
+    SYSPRO_ERROR_CODE_OVER_ADDON_SIZE,
+    SYSPRO_ERROR_CODE_INVALID_SAMPLE_RATE,
+    SYSPRO_ERROR_CODE_SW_START = 0x20,
+    SYSPRO_ERROR_CODE_SWLA_ALREADY_ENABLE,
+    SYSPRO_ERROR_CODE_SWLA_RAM_BUFFER_IN_USED,
+    SYSPRO_ERROR_CODE_SWTR_ALREADY_ENABLE,
+    SYSPRO_ERROR_CODE_SWTR_RAM_BUFFER_IN_USED,
+    SYSPRO_ERROR_CODE_OUT_OF_SUPPORT_COREID,
+    SYSPRO_ERROR_CODE_INVALID_MODE,
+    SYSPRO_ERROR_CODE_BUFFER_ADDRESS_SIZE,
+    SYSPRO_ERROR_CODE_PROFILER_NOT_ENABLE,
+    SYSPRO_ERROR_CODE_INVALID_PROFILER_ADDON,
+    SYSPRO_ERROR_CODE_INVALID_ADDON_OPTION,
+    SYSPRO_ERROR_CODE_NO_ADDON_AVAILABLE,
+    SYSPRO_ERROR_CODE_NO_EXTRA_ADDON_AVAILABLE,
+    SYSPRO_ERROR_CODE_DUPLICATED_ADDON,
+    SYSPRO_ERROR_CODE_NULL_FUNCTION_PTR,
+    SYSPRO_ERROR_CODE_PMC_PARAMETER_INVALID,
+    SYSPRO_ERROR_CODE_DEPRECATED_FUNCTION,
+    SYSPRO_ERROR_CODE_NO_AVAILABLE_SNAPSHOT_BUFFER,
+    SYSPRO_ERROR_CODE_SNAPSHOT_AGAIN_IN_SHORT_TIME,
+    SYSPRO_ERROR_CODE_NO_SUPPORT_DUMP_LEVEL,
+    SYSPRO_ERROR_CODE_INIT_FAIL,
+    
+
+    SYSPRO_ERROR_CODE_CORE_0    = 0x0000,
+    SYSPRO_ERROR_CODE_CORE_1    = 0x0100,
+    SYSPRO_ERROR_CODE_CORE_2    = 0x0200,
+    SYSPRO_ERROR_CODE_CORE_3    = 0x0300,
+    //SYSPRO_ERROR_CODE_MCU_ASM   = 0x0400,
+    //SYSPRO_ERROR_CODE_INFRA_ASM = 0x0500,
+
+    SYSPRO_ERROR_CODE_END,
+} SYSPROFILER_ERROR_CODE;
+
+
+#if defined(__SWLA_SNAPSHOT_FEATURE__)
+
+typedef enum
+{
+    SYSPRO_SNAPSHOT_CORE_IDLE,
+    SYSPRO_SNAPSHOT_CORE_START,
+    SYSPRO_SNAPSHOT_CORE_DONE
+} SYSPROFILER_SNAPSHOT_CORE_STATUS_TYPE ;
+
+
+typedef enum
+{
+    SYSPRO_SNAPSHOT_BUFF_INDEX_0,
+/*
+    SYSPRO_SNAPSHOT_BUFF_INDEX_1,
+    SYSPRO_SNAPSHOT_BUFF_INDEX_2,
+    SYSPRO_SNAPSHOT_BUFF_INDEX_3,
+    SYSPRO_SNAPSHOT_BUFF_INDEX_4,
+    SYSPRO_SNAPSHOT_BUFF_INDEX_5,
+    SYSPRO_SNAPSHOT_BUFF_INDEX_19=19,
+*/
+    SYSPRO_SNAPSHOT_BUFF_NUM,
+    SYSPRO_SNAPSHOT_BUFF_COMMON,            /* Reserved for common case */
+    SYSPRO_SNAPSHOT_BUFF_HRT_FAIL,          /* For Hard-Read-Time fail case */
+    SYSPRO_SNAPSHOT_BUFF_END = 0xFFFFFFFF   /* Force this enum 32bit */
+} SYSPROFILER_SNAPSHOT_BUFF_ID_ENUM ;
+
+/* if this structure change, should also modify tool */
+typedef struct SysProifler_Snapshot_Core_t
+{
+    kal_uint32 seg1_src_addr;
+    kal_uint32 seg1_dst_addr;
+    kal_uint32 seg1_size;
+    kal_uint32 seg1_gdma_result;
+    kal_uint32 seg2_src_addr;
+    kal_uint32 seg2_dst_addr;
+    kal_uint32 seg2_size;
+    kal_uint32 seg2_gdma_result;
+    kal_uint32 lisr_used;
+    kal_uint32 lisr_in_time;
+    kal_uint32 lisr_out_time;
+    SysProfiler_LoggingHeader header;
+    SYSPROFILER_ERROR_CODE err_code;
+    SYSPROFILER_SNAPSHOT_CORE_STATUS_TYPE status;
+    SYSPRO_MODE mode;
+    
+} SysProfiler_Snapshot_Core;
+
+/* if this structure change, should also modify tool */
+typedef struct SysProfiler_Snapshot_Info_t
+{
+    kal_uint32 has_snapshot;
+    kal_uint32 trigger_time_us;
+    kal_uint32 trigger_time_tick;
+    kal_uint32 trigger_vpe;
+    kal_uint32 caller;
+    SysProfiler_Snapshot_Core core[MAX_SYSPRO_NUMBER];
+}SysProfiler_Snapshot_Info;
+
+#endif
+
+typedef enum
+{
+    SYSPRO_MIN_BUFF_SIZE,
+    SYSPRO_MAX_BUFF_SIZE,
+    SYSPRO_CUSTOM_BUFF_SIZE,    
+}SYSPROFILER_ADJUST_BUFF_TYPE;
+
+#define IS_SWLA_MODE(MODE) ( MODE == SYSPRO_SW_SWLA_MODE )
+#define IS_SWTR_MODE(MODE) ( MODE == SYSPRO_SW_SWTR_MODE )
+
+void SysProfiler_Init(void);
+kal_uint32 SysProfiler_Start(void);
+kal_uint32 SysProfiler_StartCoreProfilerByMode( SYSPRO_MODE mode, kal_uint32 samplingRate);
+kal_uint32 SysProfiler_StartPlatformProfilerByMode( SYSPRO_MODE mode, kal_uint32 sysSamplingRate, kal_uint32 infraSamplingRate);
+kal_uint32 SysProfiler_Stop(void);
+kal_uint32 SysProfiler_StopCoreProfiler(void);
+kal_uint32 SysProfiler_StopPlatformProfiler(void);
+void SysProfiler_ASMStop(void);
+SYSPROFILER_ERROR_CODE SysProfiler_SetMode(SYSPRO_MODE mode);
+SYSPROFILER_ERROR_CODE SysProfiler_SetSampleRate(kal_uint32 sampleRate);
+kal_uint32 SysProfiler_RetriveHeader( kal_uint8** headerStartAddress, kal_uint32* headerSize, kal_uint8 coreID);
+kal_uint32 SysProfiler_RetriveLoggingBuffer(kal_uint32 **info, kal_uint16 *count, kal_uint8* region_config, kal_uint8 coreID);
+kal_bool SysProfiler_CheckRAMAvailability(kal_uint32 idx, kal_uint8 coreID);
+SYSPROFILER_ERROR_CODE SysProfiler_RegisterAddon( SYSPROFILER_ADDON_TYPE addonType, kal_uint32 addonSize, kal_char addonName[], void (*SYSPRO_AddonInfoInitFunc)(void), void *SA_AddonInfoLoggingFunc, kal_bool SA_SwapOutLogging, SYSPROFILER_ADDON_PROFILER_TYPE profilerType, SYSPRO_MCU_CORE coreID);
+kal_bool SysProfiler_QueryCoreProfilerModeAndRunningStatus( SYSPRO_MODE* returnMode, kal_bool* returnRunningStatus);
+kal_bool SysProfiler_QueryPlatformProfilerModeAndRunningStatus( SYSPRO_MODE* returnMode, kal_bool* returnRunningStatus);
+kal_bool SysProfiler_QueryAddonExist(char *addonPrefix, SYSPRO_MODE mode, kal_uint32 coreID);
+kal_bool SysProfiler_QueryHeaderScratchpad(kal_uint8 coreID, kal_uint8** addr, kal_uint32* size, kal_uint32* header_offset);
+
+#if defined(__SWLA_MIPS_PMU_EXIST__)
+SYSPROFILER_ERROR_CODE SysProfiler_PassPMCParameterFromDHL(SysProfiler_DHLPMCParameter* DHLParameter);
+#if defined(__MD95__)
+kal_bool SysProfiler_PassPMCParameterFromMDDBG(SysProfiler_PMCSettingParameter PMCParameter[], ilm_struct ilm);
+#elif defined(__MD97__) || defined(__MD97P__)
+kal_bool SysProfiler_PassPMCParameterFromMDDBG(SysProfiler_PMCSettingParameter PMCParameter, ilm_struct ilm);
+#else
+    #error "Unsupported chip"
+#endif
+#endif
+SYSPROFILER_ERROR_CODE SysProfiler_PassPMCParameterByATCMD(kal_uint8* data_str);
+SYSPROFILER_ERROR_CODE SysProfiler_TurnOnELMAddon(kal_uint32 coreID);
+SYSPROFILER_ERROR_CODE SysProfiler_TurnOnEBMAddon(kal_uint32 coreID);
+#if defined(__MD95__)
+SYSPROFILER_ERROR_CODE SysProfiler_TurnOnCM2Addon(kal_uint32 coreID, kal_uint32 counter);
+SYSPROFILER_ERROR_CODE SysProfiler_TurnOnICM2Addon(kal_uint32 coreID, kal_uint32 counter);
+#elif defined(__MD97__) || defined(__MD97P__)
+SYSPROFILER_ERROR_CODE SysProfiler_ConfigCM2fromATCMD(kal_uint32 coreID, kal_uint8* data_str, SysProfiler_CM2SettingParameter* config);
+SYSPROFILER_ERROR_CODE SysProfiler_TurnOnCM2Addon(kal_uint32 coreID, SysProfiler_CM2SettingParameter *config);
+#else
+    #error "Unsupported chip"
+#endif
+void SysProfiler_Adjust_buffer(SYSPROFILER_ADJUST_BUFF_TYPE type, kal_uint32 buffersize);
+SYSPROFILER_ERROR_CODE SysProfiler_TriggerInitAddonByATCMD(kal_uint8 *data_str);
+kal_bool SysProfiler_RegisterDefaultAddonFromMDDBG(void);
+#if defined(__SWLA_SNAPSHOT_FEATURE__)
+SYSPROFILER_ERROR_CODE SysProfiler_BufferSnapshot(SYSPROFILER_SNAPSHOT_BUFF_ID_ENUM* buffer_id);
+#endif
+
+#endif