[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/sst/include/cc_ex_item.h b/mcu/service/sst/include/cc_ex_item.h
new file mode 100644
index 0000000..e1f66cd
--- /dev/null
+++ b/mcu/service/sst/include/cc_ex_item.h
@@ -0,0 +1,895 @@
+/*****************************************************************************
+* 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:
+ * ---------
+ * cc_ex_item.h
+ *
+ * Description:
+ * ------------
+ * Header file for cross core exception handling
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef _CC_EX_ITEM_H
+#define _CC_EX_ITEM_H
+
+#if !defined(__OFFLINE_EX_LOG_PARSER__)
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "kal_internal_def.h"
+#include "DVFS_drv_public.h"
+#else
+//NOTE: for exLogAnalyzer.exe only. Copy it here to avoid including DVFS_drv_public
+#define DVFS_DUMP_NUM 48 /* Note: This number should also sync to EE owner.(Kari Suvanto) */
+#endif /* __OFFLINE_EX_LOG_PARSER__ */
+#include "ex_item.h"
+#include "ex_public.h"
+#include "us_excep_hdlr_format.h"
+#include "md32_excep_hdlr.h"
+#include "vc_excep_hdlr_format.h"
+#if defined(__MD97__) || defined(__MD97P__)
+#include "ex_cs_excep_hdlr_format.h"
+#endif
+#include "busmpu.h"
+#include "drv_pcmon.h"
+#include "mpu_public.h"
+#include "sst_defs.h"
+
+/*******************************************************************************
+ * Compiler Option Definition
+ *******************************************************************************/
+
+
+/*******************************************************************************
+ * Constant Definition - ex record overview
+ *******************************************************************************/
+/* total: EX_CC_LOG_SIZE */
+/***************************
+* overview * =EX_CC_OVERVIEW_SIZE
+
+**************************** mcu main info total: EX_CORE_MAIN_SIZE
+* exlog * =EX_CORE_SIZE
+
+**************************** us total: EX_USIP_SCQ_CORE_SIZE
+* us hs status * =EX_USIP_HS_STATUS_SIZE
+* us exlog * =EX_USIP_SCQ_CORE_SIZE
+
+**************************** md32 total: EX_MD32_CORE_SIZE
+* md32 hs status * =EX_MD32_HS_STATUS_SIZE
+* md32 exlog * =EX_MD32_CORE_SIZE
+
+**************************** sonic total: EX_SONIC_CORE_SIZE
+* sonic hs status * =EX_SONIC_HS_STATUS_SIZE
+* sonic exlog * =EX_SONIC_CORE_SIZE
+
+**************************** mcu minor info total: EX_CORE_MINOR_SIZE
+* nested exlog * =EX_NESTED_LOG_SIZE
+* pcmon * =EX_PCMON_SIZE
+* nested pcmon * =EX_NESTED_PCMON_SIZE
+* bus err * =EX_BUS_ERR_SIZE
+* dsm info * =EX_DSM_SIZE
+* reserved * =EX_MINOR_INFO_RESERVED_SIZE(216)
+* step logging * =EX_STEP_LOG_SIZE
+
+
+****************************/
+// EX_CC_LOG_SIZE (7*1024) //defined in ex_public.h
+
+#define EX_CC_OVERVIEW_SIZE 640
+#define EX_AFOUND_MSG_SIZE 1024
+
+
+// EX_LOG_SIZE 2560 //2.5K //defined in ex_public.h - run out
+
+#define EX_USIP_SCQ_CORE_SIZE (USIP_SCQ16_TOTAL_THREAD_NUM*100)
+#define EX_MD32_CORE_SIZE 100
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_CORE_SIZE (EX_SONIC_TOTAL_CORE_NUM*100)
+#else
+#define EX_SONIC_CORE_SIZE 0
+#endif
+#define EX_MCU_SYSINFO_SIZE (EX_CC_LOG_SIZE-EX_AFOUND_MSG_SIZE-EX_CC_OVERVIEW_SIZE-EX_LOG_SIZE-EX_USIP_SCQ_CORE_SIZE-EX_MD32_CORE_SIZE-EX_SONIC_CORE_SIZE)
+
+
+#define EX_PCMON_SIZE 64
+#define EX_BUS_ERR_SIZE 16
+//#define EX_STEP_LOG_SIZE (sizeof(EX_STEP_T)*TOTAL_VPE_COUNT)
+
+#define EX_USIP_HS_STATUS_SIZE sizeof(kal_uint32)
+#define EX_MD32_HS_STATUS_SIZE sizeof(kal_uint32)
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_HS_STATUS_SIZE sizeof(kal_uint32)
+#endif
+
+
+#define DSM_STATUS_COUNT 3
+#define EX_PROFILING_SET_COUNT 13
+#define EX_USIP_SCQ_CORE_USED_SIZE (sizeof(USIP_SCQ_EXCEPTION_RECORD_T)+EX_USIP_HS_STATUS_SIZE)
+#define EX_MD32_CORE_USED_SIZE (sizeof(MD32_ExceptionLog_T) +EX_MD32_HS_STATUS_SIZE)
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_CORE_USED_SIZE (sizeof(EX_SONIC_EXCEPTION_RECORD_T)+EX_SONIC_HS_STATUS_SIZE)
+#endif
+
+
+/************************* * SYNC TIME ***************************************/
+#define EX_OFFENDING_VPE_MORE_SYNC_TIME (200000) // 0.2s
+#define EX_SYNC_DSP_FLOW_TIME (5000000) // 5s
+#define EX_INT_SYNC_TIME (5000000) // 5s
+#define EX_US_SYNC_TIME (2000000) // 2s
+#define EX_MD32_SYNC_TIME (1000000) // 1s
+#if defined(__MD97__) || defined(__MD97P__)
+#define EX_SONIC_SYNC_TIME (2000000) // 2s
+#endif
+#define EX_SAP_SYNC_TIME (4000000) // 4s
+#define EX_OP_SYNC_TIME (1000000) // 1s
+/*******************************************************************************
+ * Enum Type Definition
+ *******************************************************************************/
+
+typedef enum ex_core_t
+{
+ EX_MCU = 0,
+ EX_USIP0_0,
+ EX_USIP0_1,
+ EX_USIP1_0,
+ EX_USIP1_1,
+ EX_SCQ_0,
+ EX_SCQ_1,
+#if defined(__MD97__) || defined(__MD97P__)
+ EX_SCQ_2,
+ EX_SCQ_3,
+#endif
+ EX_RAKE,
+#if defined(__MD97__) || defined(__MD97P__)
+ EX_SONIC_M0,
+ EX_SONIC_V0,
+#endif
+ EX_CORE_AMOUNT,
+} EX_CORE_T;
+
+typedef enum ex_coretype_t
+{
+ EX_CORETYPE_MCU = 0,
+ EX_CORETYPE_USIP_SCQ,
+ EX_CORETYPE_MD32,
+#if defined(__MD97__) || defined(__MD97P__)
+ EX_CORETYPE_SONIC
+#endif
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER)
+} EX_CORETYPE_T;
+#else
+} EX_CORETYPE_T_FORMAT;
+typedef kal_uint8 EX_CORETYPE_T;
+#endif /*__OFFLINE_EX_LOG_PARSER__*/
+
+
+
+#if !defined(__OFFLINE_EX_LOG_PARSER__)
+typedef enum ex_flowstep_t
+{
+ /*mcu*/
+ EX_FLOWSTEP_INIT_BEGIN = 0,
+ EX_FLOWSTEP_INIT_DONE,
+ EX_FLOWSTEP_MAINREASON_INIT_DONE,
+ EX_FLOWSTEP_COMM_DONE,
+ EX_FLOWSTEP_PROCESS_DONE,
+ EX_FLOWSTEP_REBOOT_DONE,
+ /*dsp*/
+ EX_FLOWSTEP_DSPINIT_BEGIN,
+ EX_FLOWSTEP_USIPINIT_DONE,
+ EX_FLOWSTEP_MD32INIT_DONE,
+#if defined(__MD97__) || defined(__MD97P__)
+ EX_FLOWSTEP_SONICINIT_DONE,
+#endif
+ EX_FLOWSTEP_DSPINIT_DONE,
+ /*stophw*/
+ EX_FLOWSTEP_STOPHW_BEGIN,
+ EX_FLOWSTEP_STOPHW_DONE,
+ EX_FLOWSTEP_END = EX_PROFILING_SET_COUNT, /*15*/
+#if !defined(_MSC_VER)
+} EX_FLOWSTEP_T;
+#else
+} EX_FLOWSTEP_T_;
+typedef kal_uint8 EX_FLOWSTEP_T;
+#endif
+
+
+typedef enum ex_sync
+{
+ NEVER_SYNCED = 0,
+ SYNC_SUCCESS = 1,
+ SYNC_FAIL = 2,
+ NO_NEED_TO_SYNC = 3,
+ NESTED_SYNC = 4,
+} EX_SYNC;
+
+#else
+#include "ex_item_types.h"
+#endif /*__OFFLINE_EX_LOG_PARSER__*/
+
+typedef enum ex_thin_modem_sync_pattern
+{
+ THIN_MODEM_EX_HS_AP_ENTER = 0xAAAAAAAA,
+ THIN_MODEM_EX_HS_AP_DONE = 0xBBBBBBBB,
+ THIN_MODEM_EX_HS_MD_ENTER = 0xCCCCCCCC,
+ THIN_MODEM_EX_HS_MD_DONE = 0xDDDDDDDD
+} EX_THIN_MODEM_SYNC_PATTERN;
+
+
+#if defined(__MTK_TARGET__) || defined(__OFFLINE_EX_LOG_PARSER__) || defined(KAL_ON_OSCAR)
+/*******************************************************************************
+ * Data Structure Definition
+ *******************************************************************************/
+PRAGMA_BEGIN_PACK_STRUCT
+/***************************** +Debug Structure+ *******************************/
+
+typedef struct _ex_brief_assertfail_t
+{
+ kal_char filepath[EX_ASSERTFAIL_FILEPATH_LEN]; /* length: 256 */
+ kal_uint32 linenumber; /* length: 4 */
+ kal_uint32 parameters[3]; /* length: 12 */
+ kal_uint32 lr; /* length: 4 */
+} EX_BRIEF_ASSERTFAIL_T;
+
+typedef struct _ex_brief_fatalerr_t
+{
+ kal_uint32 code1;
+ kal_uint32 code2;
+ kal_uint32 code3;
+ kal_char offender[EX_FATALERR_ANALYSIS_OWNER_LEN];
+ kal_bool is_cadefa_supported;
+ kal_bool is_filename_supported;
+ kal_uint8 error_section;
+ kal_uint8 is_valid_dispatch_arg;
+ kal_uint8 pad[4];
+ kal_uint32 error_status;
+ kal_uint32 error_sp;
+ kal_uint32 error_pc;
+ kal_uint32 error_lr;
+ kal_uint32 error_address;
+ kal_uint32 error_cause;
+ kal_char filename[sizeof(EX_BRIEF_ASSERTFAIL_T) - 52];
+} EX_BRIEF_FATALERR_T;
+
+typedef union
+{
+ EX_BRIEF_FATALERR_T fatalerr;
+ EX_BRIEF_ASSERTFAIL_T assert;
+} EX_MAINCONTENT_T;
+
+typedef struct _ex_brief_maininfo_t
+{
+ kal_uint16 ex_type; /* offset: 0x, length: 2 */
+ EX_CORETYPE_T ex_type_format; //0=mcu, 1=usip|scq, 2=md32, 3=sonic
+ EX_MAINCONTENT_TYPE_T maincontent_type; //0=assert, 1=fatal
+ kal_uint8 elm_status;
+ kal_uint8 system_info1; //ex_offending_vpe_id
+ kal_uint8 system_info2; //ex_offending_tc_id
+ kal_uint8 pad;
+ EX_MAINCONTENT_T content;
+} EX_BRIEF_MAININFO_T;
+
+typedef struct ex_step_t_s
+{
+ volatile kal_uint32 step;
+ volatile kal_uint32 timestamp;
+}EX_STEP_T;
+
+#define EX_MD32_CORE_NUM 1
+#define EX_USIP_CORE_NUM (USIP_CORE_NUMBER*USIP_THREAD_NUMBER)// 4
+#define EX_SCQ_CORE_NUM (SCQ16_MAXIMUM_NUM) // 2 or 4
+#if defined(__MD97__) || defined(__MD97P__)
+# define EX_SONIC_CORE_NUM (EX_SONIC_TOTAL_CORE_NUM)// 2
+# define EX_SONIC_OFFENDING_CORE_SIZE (sizeof(kal_uint8))
+#else
+# define EX_SONIC_CORE_NUM (0)
+# define EX_SONIC_OFFENDING_CORE_SIZE (0)
+#endif
+#define EX_CORE_NUM (1+EX_USIP_CORE_NUM+EX_SCQ_CORE_NUM+EX_MD32_CORE_NUM+EX_SONIC_CORE_NUM) //mcu+usip*N+scq*N+RAKE+sonic*N
+#define EX_CORE_NAME_MAX_SIZE 11
+typedef struct _ex_main_reason_t
+{
+ kal_char core_name[EX_CORE_NAME_MAX_SIZE];
+ kal_bool is_offender;
+} EX_MAIN_REASON_T;
+
+#define EX_OVERVIEW_PAD_COMPENSATE_SIZE (\
+ /*sizeof(overview_verno)*/sizeof(kal_uint32) + \
+ /*sizeof(core_num)*/sizeof(kal_uint32) + \
+ /*sizeof(main_reason)*/sizeof(EX_MAIN_REASON_T)* EX_CORE_NUM +\
+ /*sizeof(info)*/sizeof(EX_BRIEF_MAININFO_T) +\
+ /*sizeof(mips_vpe_num)*/sizeof(kal_uint32) + \
+ /*sizeof(ex_steplog)*/sizeof(EX_STEP_T)* TOTAL_VPE_COUNT +\
+ /*sizeof(ect_status)*/sizeof(kal_uint32) + \
+ /*sizeof(afound_buffer_offset)*/sizeof(kal_uint32)+ \
+ /*sizeof(afound_buffer_size)*/sizeof(kal_uint32) + \
+ /*sizeof(usip_scq_offending_core)*/sizeof(kal_uint8) + \
+ /*sizeof(sonic_offending_core)*/EX_SONIC_OFFENDING_CORE_SIZE + \
+ /*sizeof(mcu_exception_count)*/sizeof(kal_uint8)* TOTAL_VPE_COUNT + \
+ /*sizeof(core_offset)*/sizeof(kal_uint32)* EX_CORE_NUM \
+ )
+
+typedef struct _ex_overview_t
+{
+ kal_uint32 overview_verno; // 4
+ kal_uint32 core_num; // 4 //EX_CORE_NUM
+ EX_MAIN_REASON_T main_reason[EX_CORE_NUM]; // 96 = 12*EX_CORE_NUM
+ EX_BRIEF_MAININFO_T info; // 284
+ kal_uint32 mips_vpe_num; // 4
+ volatile EX_STEP_T ex_steplog[TOTAL_VPE_COUNT]; // 48 = 8*6
+ kal_uint32 ect_status; // 4 //offending vpe
+ kal_uint32 afound_buffer_offset;
+ kal_uint32 afound_buffer_size;
+ kal_uint8 usip_scq_offending_core; // 1 usip+scq
+#if defined(__MD97__) || defined(__MD97P__)
+ kal_uint8 sonic_offending_core; // 1
+#endif
+ kal_uint8 mcu_exception_count[TOTAL_VPE_COUNT]; // 6
+ kal_uint8 pad[EX_CC_OVERVIEW_SIZE-EX_OVERVIEW_PAD_COMPENSATE_SIZE]; // 97:29 = 512-(4+4+96+284+4+48+4+1+6+32), before 97: 29 = 512-(4+4+96+284+4+48+4+1+6+32)
+ kal_uint32 core_offset[EX_CORE_NUM]; // 32 = 4*8
+} EX_OVERVIEW_T;
+
+typedef struct ex_dsm_status_t_s
+{
+ kal_uint32 DSM_load_label;
+ kal_uint32 DSM_init_label;
+ kal_uint32 DSM_loading_label;
+ kal_uint32 DSM_unloading_label;
+}EX_DSM_T;
+
+typedef struct _ex_mculog_t
+{
+ EX_LOG_T ex_log;
+} EX_MCULOG_T;
+
+typedef struct _ex_usiplog_t
+{
+ volatile kal_uint32 ex_hs;
+ USIP_SCQ_EXCEPTION_RECORD_T ex_log;
+ kal_uint32 pad[(EX_USIP_SCQ_CORE_SIZE - EX_USIP_SCQ_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+} EX_USLOG_T;
+
+typedef struct _ex_md32log_t
+{
+ volatile kal_uint32 ex_hs;
+ MD32_ExceptionLog_T ex_log;
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
+ kal_uint32 pad[(EX_MD32_CORE_SIZE - EX_MD32_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+#endif
+} EX_MD32LOG_T;
+
+#if defined(__MD97__) || defined(__MD97P__)
+typedef struct _ex_soniclog_t
+{
+ volatile kal_uint32 ex_hs;
+ EX_SONIC_EXCEPTION_RECORD_T ex_log;
+#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
+ kal_uint32 pad[(EX_SONIC_CORE_SIZE - EX_SONIC_CORE_USED_SIZE)/ sizeof(kal_uint32)];
+#endif
+} EX_SONICLOG_T;
+#endif
+
+typedef struct _ex_busmpu_t
+{
+ busmpu_iocu_vio_data ex_busmpu_iocu_err;
+ busmpu_irq_status ex_busmpu_irq_sts;
+#if defined(EMIMPU_MD2AP_INFODUMP_ENABLE)
+ emimpu_vio_info ex_emimpu_vio_dump;
+#else
+ kal_uint32 reserved[8]; //to keep struct size same
+#endif
+} EX_BUSMPU_T;
+
+#define PLL_INFO_NUM 48
+
+#define EX_MCU_SYSINFO_USED_SIZE ( \
+ sizeof(kal_uint32)*(EX_PROFILING_SET_COUNT) + \
+ sizeof(kal_uint32)*3 + \
+ sizeof(kal_uint32)*TOTAL_VPE_COUNT*2 + \
+ sizeof(EX_DSM_T) + \
+ sizeof(EX_NE_LOG_T) + \
+ sizeof(PDAMON_EX_RAW_T) + \
+ sizeof(PDAMON_NEX_RAW_T) + \
+ EX_BUS_ERR_SIZE + \
+ sizeof(EX_BUSMPU_T) + \
+ sizeof(kal_uint32)*(PLL_INFO_NUM) + \
+ sizeof(kal_uint32)*(DVFS_DUMP_NUM) + \
+ (sizeof(_MPU_REG)*NBR_CORE))
+
+typedef struct _ex_mcu_sysinfo_t
+{
+ kal_uint32 ex_profiling_timestamp[EX_PROFILING_SET_COUNT];
+ kal_uint32 ex_GLBTS;
+ kal_uint32 ex_sst_dc_offshoot_vpeid;
+ kal_uint32 ex_sst_hw_offshoot_vpeid;
+ kal_uint32 ex_ISR_Executing[TOTAL_VPE_COUNT]; //GSAL_GE_ISR_Executing
+ kal_uint32 ex_ect_status[TOTAL_VPE_COUNT];
+ EX_DSM_T ex_dsm_status;
+ EX_NE_LOG_T ex_nested_log;
+ PDAMON_EX_RAW_T ex_pcmon;
+ PDAMON_NEX_RAW_T ex_nested_pcmon;
+ kal_uint32 ex_buserr[EX_BUS_ERR_SIZE / sizeof(kal_uint32)];
+ EX_BUSMPU_T ex_busmpuerr;
+ kal_uint32 ex_pll_info[PLL_INFO_NUM];
+ kal_uint32 ex_DVFS_data[DVFS_DUMP_NUM];
+ _MPU_REG ex_mpu[NBR_CORE];
+ kal_uint32 pad[(EX_MCU_SYSINFO_SIZE - EX_MCU_SYSINFO_USED_SIZE)/ sizeof(kal_uint32)];
+} EX_MCU_SYSINFO_T;
+
+
+typedef struct ex_fulllog_t
+{
+ EX_OVERVIEW_T overview;
+ char afound[EX_AFOUND_MSG_SIZE];
+ EX_MCULOG_T mcu;
+ EX_USLOG_T usip_scq;
+ EX_MD32LOG_T md32;
+#if defined(__MD97__) || defined(__MD97P__)
+ EX_SONICLOG_T sonic;
+#endif
+ EX_MCU_SYSINFO_T mcu_sysinfo;
+} EX_FULLLOG_T;
+
+typedef struct ex_dump_comm_t
+{
+ volatile kal_uint32 addr;
+ volatile kal_uint32 len;
+ volatile kal_uint32 op;
+} EX_DUMP_COMM_T;
+
+
+/***************************** -Debug Structure- *******************************/
+PRAGMA_END_PACK_STRUCT
+#endif /* __MTK_TARGET__ */
+/*******************************************************************************
+ * Global Definition
+ *******************************************************************************/
+
+/*******************************************************************************
+ * Globally Exported variables
+ *******************************************************************************/
+#if defined(__MTK_TARGET__)
+extern EX_FULLLOG_T *ex_fulllog_ptr;
+extern EX_LOG_T *ex_log_ptr; // for OfflineSST
+extern USIP_SCQ_EXCEPTION_RECORD_T *usip_scq_ex_log_ptr;
+extern MD32_ExceptionLog_T *md32_ex_log_ptr;
+extern char *afound_ptr;
+#if defined(__MD97__) || defined(__MD97P__)
+extern EX_SONIC_EXCEPTION_RECORD_T *sonic_ex_log_ptr;
+#endif
+extern EX_NE_LOG_T *ex_nested_log_ptr;
+extern PDAMON_EX_RAW_T *ex_pcmon_ptr;
+extern PDAMON_NEX_RAW_T *ex_nested_pcmon_ptr;
+extern kal_uint32 *ex_buserr_ptr;
+extern EX_DSM_T *ex_dsm_ptr;
+extern EX_BUSMPU_T *ex_busmpuerr_ptr;
+extern kal_uint32 *ex_pll_info_ptr;
+extern kal_uint32 *ex_DVFS_data;
+extern _MPU_REG *ex_mpu_ptr;
+extern volatile kal_uint32 *ex_steplog_ptr;
+extern volatile kal_uint32 *ex_md32_hs_ptr;
+#if defined(__MD97__) || defined(__MD97P__)
+extern volatile kal_uint32 *ex_sonic_hs_ptr;
+#endif
+#endif /* __MTK_TARGET__ */
+ /*******************************************************************************
+ * Globally Exported functions
+ *******************************************************************************/
+extern kal_bool INT_IsEXT_CC_COMMDone();
+extern kal_bool SST_HandleDumpRegion(kal_uint32 **address, kal_uint32* length, kal_uint32* option);
+extern kal_uint32 ex_get_step_logging(kal_uint32 vpe, kal_bool bNested);
+extern void ex_unguard_l1core_tcm();
+extern kal_uint32 ex_get_value(kal_uint32* _ptr);
+extern void ex_init_overview();
+ extern void ex_init_usip();
+extern void ex_wait_init_usip();
+extern void ex_init_md32();
+extern void ex_wait_init_md32();
+#if defined (__HIF_CCCI_SUPPORT__) && defined(__CCCI_PRODUCT_TYPE_THIN_MODEM__)
+extern void ex_sync_with_thinmodem_sap();
+#endif
+#if defined(__MD97__) || defined(__MD97P__)
+extern void ex_init_sonic();
+extern void ex_wait_init_sonic();
+#endif
+extern kal_bool ex_is_ap_triggered_cross_core_error();
+extern kal_uint32 ex_GetECTStatus();
+extern void ex_output_usip_log();
+extern void ex_output_md32_log();
+extern void ex_output_sonic_log();
+extern void ex_usip_cadefa();
+extern void ex_md32_cadefa();
+#if defined(__MD97__) || defined(__MD97P__)
+extern void ex_sonic_cadefa();
+#endif
+extern void ex_detect_dsp_version_mismatched();
+extern void ex_query_cc_ex_reason(kal_uint32 ect_status, kal_char** reason, kal_char* local_sys_info_str, kal_uint32 len);
+extern void ex_query_ap_ex_reason(kal_uint32 code1, kal_uint32 code2, kal_char** reason);
+extern void ex_ondemand_op();
+extern void ex_init_dc_offshoot();
+extern void ex_init_hw_offshoot();
+extern void ex_init_mcu_sysinfo();
+extern void ex_set_value(kal_uint32* _ptr, kal_uint32 value);
+extern kal_uint32 ex_get_value(kal_uint32* _ptr);
+#if defined(__MTK_TARGET__)
+extern void ex_set_flowstep(EX_FLOWSTEP_T step);
+#endif /* __MTK_TARGET__ */
+extern kal_char* ex_get_dsp_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_usipscq_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_rake_build_date_time(EX_CORE_T dsp_core);
+extern kal_char* ex_get_sonic_build_date_time(EX_CORE_T dsp_core);
+#endif /* _CC_EX_ITEM_H */
+
+