blob: e1f66cd12527f3bb11aaaf315de44029bd8a9e6c [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * cc_ex_item.h
41 *
42 * Description:
43 * ------------
44 * Header file for cross core exception handling
45 *
46 *
47 * Author:
48 * -------
49 * -------
50 *
51 *============================================================================
52 * HISTORY
53 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
54 *------------------------------------------------------------------------------
55 * removed!
56 * removed!
57 * removed!
58 *
59 * removed!
60 * removed!
61 * removed!
62 *
63 * removed!
64 * removed!
65 * removed!
66 * removed!
67 * removed!
68 * removed!
69 * removed!
70 * removed!
71 * removed!
72 * removed!
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 * removed!
79 *
80 * removed!
81 * removed!
82 * removed!
83 * removed!
84 *
85 * removed!
86 * removed!
87 *
88 * removed!
89 *
90 * removed!
91 * removed!
92 *
93 * removed!
94 * removed!
95 * removed!
96 *
97 * removed!
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 * removed!
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 *
111 * removed!
112 *
113 * removed!
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 * removed!
120 *
121 * removed!
122 * removed!
123 * removed!
124 *
125 * removed!
126 * removed!
127 * removed!
128 *
129 * removed!
130 * removed!
131 * removed!
132 *
133 * removed!
134 * removed!
135 * removed!
136 * removed!
137 * removed!
138 * removed!
139 * removed!
140 *
141 * removed!
142 * removed!
143 * removed!
144 *
145 * removed!
146 * removed!
147 * removed!
148 *
149 * removed!
150 * removed!
151 * removed!
152 * removed!
153 * removed!
154 * removed!
155 * removed!
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 *
167 * removed!
168 * removed!
169 *
170 * removed!
171 *
172 * removed!
173 * removed!
174 * removed!
175 *
176 * removed!
177 * removed!
178 * removed!
179 *
180 * removed!
181 * removed!
182 * removed!
183 *
184 * removed!
185 * removed!
186 * removed!
187 *
188 * removed!
189 * removed!
190 * removed!
191 * removed!
192 * removed!
193 * removed!
194 * removed!
195 *
196 * removed!
197 * removed!
198 *
199 * removed!
200 *
201 * removed!
202 * removed!
203 *
204 * removed!
205 *
206 * removed!
207 * removed!
208 * removed!
209 *
210 * removed!
211 * removed!
212 *
213 * removed!
214 * removed!
215 *
216 * removed!
217 * removed!
218 *
219 * removed!
220 * removed!
221 * removed!
222 *
223 * removed!
224 * removed!
225 * removed!
226 *
227 * removed!
228 * removed!
229 * removed!
230 *
231 * removed!
232 * removed!
233 * removed!
234 *
235 * removed!
236 * removed!
237 * removed!
238 *
239 * removed!
240 * removed!
241 * removed!
242 *
243 * removed!
244 * removed!
245 * removed!
246 *
247 * removed!
248 * removed!
249 *
250 * removed!
251 *
252 * removed!
253 * removed!
254 * removed!
255 *
256 * removed!
257 * removed!
258 *
259 * removed!
260 *
261 * removed!
262 * removed!
263 * removed!
264 *
265 * removed!
266 * removed!
267 * removed!
268 *
269 * removed!
270 * removed!
271 *
272 * removed!
273 *
274 * removed!
275 * removed!
276 * removed!
277 *
278 * removed!
279 * removed!
280 *
281 * removed!
282 *
283 * removed!
284 * removed!
285 * removed!
286 *
287 * removed!
288 * removed!
289 *
290 * removed!
291 *
292 * removed!
293 * removed!
294 * removed!
295 *
296 * removed!
297 * removed!
298 * removed!
299 *
300 * removed!
301 * removed!
302 * removed!
303 *
304 * removed!
305 * removed!
306 * removed!
307 *
308 * removed!
309 * removed!
310 *
311 * removed!
312 *
313 * removed!
314 * removed!
315 * removed!
316 *
317 * removed!
318 * removed!
319 * removed!
320 *
321 * removed!
322 * removed!
323 * removed!
324 *
325 * removed!
326 * removed!
327 * removed!
328 *
329 * removed!
330 * removed!
331 * removed!
332 *
333 * removed!
334 * removed!
335 * removed!
336 *
337 * removed!
338 * removed!
339 * removed!
340 *
341 * removed!
342 * removed!
343 * removed!
344 *
345 * removed!
346 * removed!
347 * removed!
348 * removed!
349 * removed!
350 *
351 * removed!
352 * removed!
353 * removed!
354 *
355 * removed!
356 * removed!
357 * removed!
358 *
359 * removed!
360 * removed!
361 * removed!
362 *
363 * removed!
364 * removed!
365 * removed!
366 *
367 * removed!
368 * removed!
369 * removed!
370 *
371 * removed!
372 * removed!
373 * removed!
374 *
375 *
376 * removed!
377 * removed!
378 * removed!
379 *
380 *------------------------------------------------------------------------------
381 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
382 *============================================================================
383 ****************************************************************************/
384
385#ifndef _CC_EX_ITEM_H
386#define _CC_EX_ITEM_H
387
388#if !defined(__OFFLINE_EX_LOG_PARSER__)
389#include "kal_general_types.h"
390#include "kal_public_defs.h"
391#include "kal_internal_def.h"
392#include "DVFS_drv_public.h"
393#else
394//NOTE: for exLogAnalyzer.exe only. Copy it here to avoid including DVFS_drv_public
395#define DVFS_DUMP_NUM 48 /* Note: This number should also sync to EE owner.(Kari Suvanto) */
396#endif /* __OFFLINE_EX_LOG_PARSER__ */
397#include "ex_item.h"
398#include "ex_public.h"
399#include "us_excep_hdlr_format.h"
400#include "md32_excep_hdlr.h"
401#include "vc_excep_hdlr_format.h"
402#if defined(__MD97__) || defined(__MD97P__)
403#include "ex_cs_excep_hdlr_format.h"
404#endif
405#include "busmpu.h"
406#include "drv_pcmon.h"
407#include "mpu_public.h"
408#include "sst_defs.h"
409
410/*******************************************************************************
411 * Compiler Option Definition
412 *******************************************************************************/
413
414
415/*******************************************************************************
416 * Constant Definition - ex record overview
417 *******************************************************************************/
418/* total: EX_CC_LOG_SIZE */
419/***************************
420* overview * =EX_CC_OVERVIEW_SIZE
421
422**************************** mcu main info total: EX_CORE_MAIN_SIZE
423* exlog * =EX_CORE_SIZE
424
425**************************** us total: EX_USIP_SCQ_CORE_SIZE
426* us hs status * =EX_USIP_HS_STATUS_SIZE
427* us exlog * =EX_USIP_SCQ_CORE_SIZE
428
429**************************** md32 total: EX_MD32_CORE_SIZE
430* md32 hs status * =EX_MD32_HS_STATUS_SIZE
431* md32 exlog * =EX_MD32_CORE_SIZE
432
433**************************** sonic total: EX_SONIC_CORE_SIZE
434* sonic hs status * =EX_SONIC_HS_STATUS_SIZE
435* sonic exlog * =EX_SONIC_CORE_SIZE
436
437**************************** mcu minor info total: EX_CORE_MINOR_SIZE
438* nested exlog * =EX_NESTED_LOG_SIZE
439* pcmon * =EX_PCMON_SIZE
440* nested pcmon * =EX_NESTED_PCMON_SIZE
441* bus err * =EX_BUS_ERR_SIZE
442* dsm info * =EX_DSM_SIZE
443* reserved * =EX_MINOR_INFO_RESERVED_SIZE(216)
444* step logging * =EX_STEP_LOG_SIZE
445
446
447****************************/
448// EX_CC_LOG_SIZE (7*1024) //defined in ex_public.h
449
450#define EX_CC_OVERVIEW_SIZE 640
451#define EX_AFOUND_MSG_SIZE 1024
452
453
454// EX_LOG_SIZE 2560 //2.5K //defined in ex_public.h - run out
455
456#define EX_USIP_SCQ_CORE_SIZE (USIP_SCQ16_TOTAL_THREAD_NUM*100)
457#define EX_MD32_CORE_SIZE 100
458#if defined(__MD97__) || defined(__MD97P__)
459#define EX_SONIC_CORE_SIZE (EX_SONIC_TOTAL_CORE_NUM*100)
460#else
461#define EX_SONIC_CORE_SIZE 0
462#endif
463#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)
464
465
466#define EX_PCMON_SIZE 64
467#define EX_BUS_ERR_SIZE 16
468//#define EX_STEP_LOG_SIZE (sizeof(EX_STEP_T)*TOTAL_VPE_COUNT)
469
470#define EX_USIP_HS_STATUS_SIZE sizeof(kal_uint32)
471#define EX_MD32_HS_STATUS_SIZE sizeof(kal_uint32)
472#if defined(__MD97__) || defined(__MD97P__)
473#define EX_SONIC_HS_STATUS_SIZE sizeof(kal_uint32)
474#endif
475
476
477#define DSM_STATUS_COUNT 3
478#define EX_PROFILING_SET_COUNT 13
479#define EX_USIP_SCQ_CORE_USED_SIZE (sizeof(USIP_SCQ_EXCEPTION_RECORD_T)+EX_USIP_HS_STATUS_SIZE)
480#define EX_MD32_CORE_USED_SIZE (sizeof(MD32_ExceptionLog_T) +EX_MD32_HS_STATUS_SIZE)
481#if defined(__MD97__) || defined(__MD97P__)
482#define EX_SONIC_CORE_USED_SIZE (sizeof(EX_SONIC_EXCEPTION_RECORD_T)+EX_SONIC_HS_STATUS_SIZE)
483#endif
484
485
486/************************* * SYNC TIME ***************************************/
487#define EX_OFFENDING_VPE_MORE_SYNC_TIME (200000) // 0.2s
488#define EX_SYNC_DSP_FLOW_TIME (5000000) // 5s
489#define EX_INT_SYNC_TIME (5000000) // 5s
490#define EX_US_SYNC_TIME (2000000) // 2s
491#define EX_MD32_SYNC_TIME (1000000) // 1s
492#if defined(__MD97__) || defined(__MD97P__)
493#define EX_SONIC_SYNC_TIME (2000000) // 2s
494#endif
495#define EX_SAP_SYNC_TIME (4000000) // 4s
496#define EX_OP_SYNC_TIME (1000000) // 1s
497/*******************************************************************************
498 * Enum Type Definition
499 *******************************************************************************/
500
501typedef enum ex_core_t
502{
503 EX_MCU = 0,
504 EX_USIP0_0,
505 EX_USIP0_1,
506 EX_USIP1_0,
507 EX_USIP1_1,
508 EX_SCQ_0,
509 EX_SCQ_1,
510#if defined(__MD97__) || defined(__MD97P__)
511 EX_SCQ_2,
512 EX_SCQ_3,
513#endif
514 EX_RAKE,
515#if defined(__MD97__) || defined(__MD97P__)
516 EX_SONIC_M0,
517 EX_SONIC_V0,
518#endif
519 EX_CORE_AMOUNT,
520} EX_CORE_T;
521
522typedef enum ex_coretype_t
523{
524 EX_CORETYPE_MCU = 0,
525 EX_CORETYPE_USIP_SCQ,
526 EX_CORETYPE_MD32,
527#if defined(__MD97__) || defined(__MD97P__)
528 EX_CORETYPE_SONIC
529#endif
530#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER)
531} EX_CORETYPE_T;
532#else
533} EX_CORETYPE_T_FORMAT;
534typedef kal_uint8 EX_CORETYPE_T;
535#endif /*__OFFLINE_EX_LOG_PARSER__*/
536
537
538
539#if !defined(__OFFLINE_EX_LOG_PARSER__)
540typedef enum ex_flowstep_t
541{
542 /*mcu*/
543 EX_FLOWSTEP_INIT_BEGIN = 0,
544 EX_FLOWSTEP_INIT_DONE,
545 EX_FLOWSTEP_MAINREASON_INIT_DONE,
546 EX_FLOWSTEP_COMM_DONE,
547 EX_FLOWSTEP_PROCESS_DONE,
548 EX_FLOWSTEP_REBOOT_DONE,
549 /*dsp*/
550 EX_FLOWSTEP_DSPINIT_BEGIN,
551 EX_FLOWSTEP_USIPINIT_DONE,
552 EX_FLOWSTEP_MD32INIT_DONE,
553#if defined(__MD97__) || defined(__MD97P__)
554 EX_FLOWSTEP_SONICINIT_DONE,
555#endif
556 EX_FLOWSTEP_DSPINIT_DONE,
557 /*stophw*/
558 EX_FLOWSTEP_STOPHW_BEGIN,
559 EX_FLOWSTEP_STOPHW_DONE,
560 EX_FLOWSTEP_END = EX_PROFILING_SET_COUNT, /*15*/
561#if !defined(_MSC_VER)
562} EX_FLOWSTEP_T;
563#else
564} EX_FLOWSTEP_T_;
565typedef kal_uint8 EX_FLOWSTEP_T;
566#endif
567
568
569typedef enum ex_sync
570{
571 NEVER_SYNCED = 0,
572 SYNC_SUCCESS = 1,
573 SYNC_FAIL = 2,
574 NO_NEED_TO_SYNC = 3,
575 NESTED_SYNC = 4,
576} EX_SYNC;
577
578#else
579#include "ex_item_types.h"
580#endif /*__OFFLINE_EX_LOG_PARSER__*/
581
582typedef enum ex_thin_modem_sync_pattern
583{
584 THIN_MODEM_EX_HS_AP_ENTER = 0xAAAAAAAA,
585 THIN_MODEM_EX_HS_AP_DONE = 0xBBBBBBBB,
586 THIN_MODEM_EX_HS_MD_ENTER = 0xCCCCCCCC,
587 THIN_MODEM_EX_HS_MD_DONE = 0xDDDDDDDD
588} EX_THIN_MODEM_SYNC_PATTERN;
589
590
591#if defined(__MTK_TARGET__) || defined(__OFFLINE_EX_LOG_PARSER__) || defined(KAL_ON_OSCAR)
592/*******************************************************************************
593 * Data Structure Definition
594 *******************************************************************************/
595PRAGMA_BEGIN_PACK_STRUCT
596/***************************** +Debug Structure+ *******************************/
597
598typedef struct _ex_brief_assertfail_t
599{
600 kal_char filepath[EX_ASSERTFAIL_FILEPATH_LEN]; /* length: 256 */
601 kal_uint32 linenumber; /* length: 4 */
602 kal_uint32 parameters[3]; /* length: 12 */
603 kal_uint32 lr; /* length: 4 */
604} EX_BRIEF_ASSERTFAIL_T;
605
606typedef struct _ex_brief_fatalerr_t
607{
608 kal_uint32 code1;
609 kal_uint32 code2;
610 kal_uint32 code3;
611 kal_char offender[EX_FATALERR_ANALYSIS_OWNER_LEN];
612 kal_bool is_cadefa_supported;
613 kal_bool is_filename_supported;
614 kal_uint8 error_section;
615 kal_uint8 is_valid_dispatch_arg;
616 kal_uint8 pad[4];
617 kal_uint32 error_status;
618 kal_uint32 error_sp;
619 kal_uint32 error_pc;
620 kal_uint32 error_lr;
621 kal_uint32 error_address;
622 kal_uint32 error_cause;
623 kal_char filename[sizeof(EX_BRIEF_ASSERTFAIL_T) - 52];
624} EX_BRIEF_FATALERR_T;
625
626typedef union
627{
628 EX_BRIEF_FATALERR_T fatalerr;
629 EX_BRIEF_ASSERTFAIL_T assert;
630} EX_MAINCONTENT_T;
631
632typedef struct _ex_brief_maininfo_t
633{
634 kal_uint16 ex_type; /* offset: 0x, length: 2 */
635 EX_CORETYPE_T ex_type_format; //0=mcu, 1=usip|scq, 2=md32, 3=sonic
636 EX_MAINCONTENT_TYPE_T maincontent_type; //0=assert, 1=fatal
637 kal_uint8 elm_status;
638 kal_uint8 system_info1; //ex_offending_vpe_id
639 kal_uint8 system_info2; //ex_offending_tc_id
640 kal_uint8 pad;
641 EX_MAINCONTENT_T content;
642} EX_BRIEF_MAININFO_T;
643
644typedef struct ex_step_t_s
645{
646 volatile kal_uint32 step;
647 volatile kal_uint32 timestamp;
648}EX_STEP_T;
649
650#define EX_MD32_CORE_NUM 1
651#define EX_USIP_CORE_NUM (USIP_CORE_NUMBER*USIP_THREAD_NUMBER)// 4
652#define EX_SCQ_CORE_NUM (SCQ16_MAXIMUM_NUM) // 2 or 4
653#if defined(__MD97__) || defined(__MD97P__)
654# define EX_SONIC_CORE_NUM (EX_SONIC_TOTAL_CORE_NUM)// 2
655# define EX_SONIC_OFFENDING_CORE_SIZE (sizeof(kal_uint8))
656#else
657# define EX_SONIC_CORE_NUM (0)
658# define EX_SONIC_OFFENDING_CORE_SIZE (0)
659#endif
660#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
661#define EX_CORE_NAME_MAX_SIZE 11
662typedef struct _ex_main_reason_t
663{
664 kal_char core_name[EX_CORE_NAME_MAX_SIZE];
665 kal_bool is_offender;
666} EX_MAIN_REASON_T;
667
668#define EX_OVERVIEW_PAD_COMPENSATE_SIZE (\
669 /*sizeof(overview_verno)*/sizeof(kal_uint32) + \
670 /*sizeof(core_num)*/sizeof(kal_uint32) + \
671 /*sizeof(main_reason)*/sizeof(EX_MAIN_REASON_T)* EX_CORE_NUM +\
672 /*sizeof(info)*/sizeof(EX_BRIEF_MAININFO_T) +\
673 /*sizeof(mips_vpe_num)*/sizeof(kal_uint32) + \
674 /*sizeof(ex_steplog)*/sizeof(EX_STEP_T)* TOTAL_VPE_COUNT +\
675 /*sizeof(ect_status)*/sizeof(kal_uint32) + \
676 /*sizeof(afound_buffer_offset)*/sizeof(kal_uint32)+ \
677 /*sizeof(afound_buffer_size)*/sizeof(kal_uint32) + \
678 /*sizeof(usip_scq_offending_core)*/sizeof(kal_uint8) + \
679 /*sizeof(sonic_offending_core)*/EX_SONIC_OFFENDING_CORE_SIZE + \
680 /*sizeof(mcu_exception_count)*/sizeof(kal_uint8)* TOTAL_VPE_COUNT + \
681 /*sizeof(core_offset)*/sizeof(kal_uint32)* EX_CORE_NUM \
682 )
683
684typedef struct _ex_overview_t
685{
686 kal_uint32 overview_verno; // 4
687 kal_uint32 core_num; // 4 //EX_CORE_NUM
688 EX_MAIN_REASON_T main_reason[EX_CORE_NUM]; // 96 = 12*EX_CORE_NUM
689 EX_BRIEF_MAININFO_T info; // 284
690 kal_uint32 mips_vpe_num; // 4
691 volatile EX_STEP_T ex_steplog[TOTAL_VPE_COUNT]; // 48 = 8*6
692 kal_uint32 ect_status; // 4 //offending vpe
693 kal_uint32 afound_buffer_offset;
694 kal_uint32 afound_buffer_size;
695 kal_uint8 usip_scq_offending_core; // 1 usip+scq
696#if defined(__MD97__) || defined(__MD97P__)
697 kal_uint8 sonic_offending_core; // 1
698#endif
699 kal_uint8 mcu_exception_count[TOTAL_VPE_COUNT]; // 6
700 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)
701 kal_uint32 core_offset[EX_CORE_NUM]; // 32 = 4*8
702} EX_OVERVIEW_T;
703
704typedef struct ex_dsm_status_t_s
705{
706 kal_uint32 DSM_load_label;
707 kal_uint32 DSM_init_label;
708 kal_uint32 DSM_loading_label;
709 kal_uint32 DSM_unloading_label;
710}EX_DSM_T;
711
712typedef struct _ex_mculog_t
713{
714 EX_LOG_T ex_log;
715} EX_MCULOG_T;
716
717typedef struct _ex_usiplog_t
718{
719 volatile kal_uint32 ex_hs;
720 USIP_SCQ_EXCEPTION_RECORD_T ex_log;
721 kal_uint32 pad[(EX_USIP_SCQ_CORE_SIZE - EX_USIP_SCQ_CORE_USED_SIZE)/ sizeof(kal_uint32)];
722} EX_USLOG_T;
723
724typedef struct _ex_md32log_t
725{
726 volatile kal_uint32 ex_hs;
727 MD32_ExceptionLog_T ex_log;
728#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
729 kal_uint32 pad[(EX_MD32_CORE_SIZE - EX_MD32_CORE_USED_SIZE)/ sizeof(kal_uint32)];
730#endif
731} EX_MD32LOG_T;
732
733#if defined(__MD97__) || defined(__MD97P__)
734typedef struct _ex_soniclog_t
735{
736 volatile kal_uint32 ex_hs;
737 EX_SONIC_EXCEPTION_RECORD_T ex_log;
738#if !defined(__OFFLINE_EX_LOG_PARSER__) && !defined(_MSC_VER) //NOTE: this pad is currently zero sized and visual studio cannot handle it
739 kal_uint32 pad[(EX_SONIC_CORE_SIZE - EX_SONIC_CORE_USED_SIZE)/ sizeof(kal_uint32)];
740#endif
741} EX_SONICLOG_T;
742#endif
743
744typedef struct _ex_busmpu_t
745{
746 busmpu_iocu_vio_data ex_busmpu_iocu_err;
747 busmpu_irq_status ex_busmpu_irq_sts;
748#if defined(EMIMPU_MD2AP_INFODUMP_ENABLE)
749 emimpu_vio_info ex_emimpu_vio_dump;
750#else
751 kal_uint32 reserved[8]; //to keep struct size same
752#endif
753} EX_BUSMPU_T;
754
755#define PLL_INFO_NUM 48
756
757#define EX_MCU_SYSINFO_USED_SIZE ( \
758 sizeof(kal_uint32)*(EX_PROFILING_SET_COUNT) + \
759 sizeof(kal_uint32)*3 + \
760 sizeof(kal_uint32)*TOTAL_VPE_COUNT*2 + \
761 sizeof(EX_DSM_T) + \
762 sizeof(EX_NE_LOG_T) + \
763 sizeof(PDAMON_EX_RAW_T) + \
764 sizeof(PDAMON_NEX_RAW_T) + \
765 EX_BUS_ERR_SIZE + \
766 sizeof(EX_BUSMPU_T) + \
767 sizeof(kal_uint32)*(PLL_INFO_NUM) + \
768 sizeof(kal_uint32)*(DVFS_DUMP_NUM) + \
769 (sizeof(_MPU_REG)*NBR_CORE))
770
771typedef struct _ex_mcu_sysinfo_t
772{
773 kal_uint32 ex_profiling_timestamp[EX_PROFILING_SET_COUNT];
774 kal_uint32 ex_GLBTS;
775 kal_uint32 ex_sst_dc_offshoot_vpeid;
776 kal_uint32 ex_sst_hw_offshoot_vpeid;
777 kal_uint32 ex_ISR_Executing[TOTAL_VPE_COUNT]; //GSAL_GE_ISR_Executing
778 kal_uint32 ex_ect_status[TOTAL_VPE_COUNT];
779 EX_DSM_T ex_dsm_status;
780 EX_NE_LOG_T ex_nested_log;
781 PDAMON_EX_RAW_T ex_pcmon;
782 PDAMON_NEX_RAW_T ex_nested_pcmon;
783 kal_uint32 ex_buserr[EX_BUS_ERR_SIZE / sizeof(kal_uint32)];
784 EX_BUSMPU_T ex_busmpuerr;
785 kal_uint32 ex_pll_info[PLL_INFO_NUM];
786 kal_uint32 ex_DVFS_data[DVFS_DUMP_NUM];
787 _MPU_REG ex_mpu[NBR_CORE];
788 kal_uint32 pad[(EX_MCU_SYSINFO_SIZE - EX_MCU_SYSINFO_USED_SIZE)/ sizeof(kal_uint32)];
789} EX_MCU_SYSINFO_T;
790
791
792typedef struct ex_fulllog_t
793{
794 EX_OVERVIEW_T overview;
795 char afound[EX_AFOUND_MSG_SIZE];
796 EX_MCULOG_T mcu;
797 EX_USLOG_T usip_scq;
798 EX_MD32LOG_T md32;
799#if defined(__MD97__) || defined(__MD97P__)
800 EX_SONICLOG_T sonic;
801#endif
802 EX_MCU_SYSINFO_T mcu_sysinfo;
803} EX_FULLLOG_T;
804
805typedef struct ex_dump_comm_t
806{
807 volatile kal_uint32 addr;
808 volatile kal_uint32 len;
809 volatile kal_uint32 op;
810} EX_DUMP_COMM_T;
811
812
813/***************************** -Debug Structure- *******************************/
814PRAGMA_END_PACK_STRUCT
815#endif /* __MTK_TARGET__ */
816/*******************************************************************************
817 * Global Definition
818 *******************************************************************************/
819
820/*******************************************************************************
821 * Globally Exported variables
822 *******************************************************************************/
823#if defined(__MTK_TARGET__)
824extern EX_FULLLOG_T *ex_fulllog_ptr;
825extern EX_LOG_T *ex_log_ptr; // for OfflineSST
826extern USIP_SCQ_EXCEPTION_RECORD_T *usip_scq_ex_log_ptr;
827extern MD32_ExceptionLog_T *md32_ex_log_ptr;
828extern char *afound_ptr;
829#if defined(__MD97__) || defined(__MD97P__)
830extern EX_SONIC_EXCEPTION_RECORD_T *sonic_ex_log_ptr;
831#endif
832extern EX_NE_LOG_T *ex_nested_log_ptr;
833extern PDAMON_EX_RAW_T *ex_pcmon_ptr;
834extern PDAMON_NEX_RAW_T *ex_nested_pcmon_ptr;
835extern kal_uint32 *ex_buserr_ptr;
836extern EX_DSM_T *ex_dsm_ptr;
837extern EX_BUSMPU_T *ex_busmpuerr_ptr;
838extern kal_uint32 *ex_pll_info_ptr;
839extern kal_uint32 *ex_DVFS_data;
840extern _MPU_REG *ex_mpu_ptr;
841extern volatile kal_uint32 *ex_steplog_ptr;
842extern volatile kal_uint32 *ex_md32_hs_ptr;
843#if defined(__MD97__) || defined(__MD97P__)
844extern volatile kal_uint32 *ex_sonic_hs_ptr;
845#endif
846#endif /* __MTK_TARGET__ */
847 /*******************************************************************************
848 * Globally Exported functions
849 *******************************************************************************/
850extern kal_bool INT_IsEXT_CC_COMMDone();
851extern kal_bool SST_HandleDumpRegion(kal_uint32 **address, kal_uint32* length, kal_uint32* option);
852extern kal_uint32 ex_get_step_logging(kal_uint32 vpe, kal_bool bNested);
853extern void ex_unguard_l1core_tcm();
854extern kal_uint32 ex_get_value(kal_uint32* _ptr);
855extern void ex_init_overview();
856 extern void ex_init_usip();
857extern void ex_wait_init_usip();
858extern void ex_init_md32();
859extern void ex_wait_init_md32();
860#if defined (__HIF_CCCI_SUPPORT__) && defined(__CCCI_PRODUCT_TYPE_THIN_MODEM__)
861extern void ex_sync_with_thinmodem_sap();
862#endif
863#if defined(__MD97__) || defined(__MD97P__)
864extern void ex_init_sonic();
865extern void ex_wait_init_sonic();
866#endif
867extern kal_bool ex_is_ap_triggered_cross_core_error();
868extern kal_uint32 ex_GetECTStatus();
869extern void ex_output_usip_log();
870extern void ex_output_md32_log();
871extern void ex_output_sonic_log();
872extern void ex_usip_cadefa();
873extern void ex_md32_cadefa();
874#if defined(__MD97__) || defined(__MD97P__)
875extern void ex_sonic_cadefa();
876#endif
877extern void ex_detect_dsp_version_mismatched();
878extern void ex_query_cc_ex_reason(kal_uint32 ect_status, kal_char** reason, kal_char* local_sys_info_str, kal_uint32 len);
879extern void ex_query_ap_ex_reason(kal_uint32 code1, kal_uint32 code2, kal_char** reason);
880extern void ex_ondemand_op();
881extern void ex_init_dc_offshoot();
882extern void ex_init_hw_offshoot();
883extern void ex_init_mcu_sysinfo();
884extern void ex_set_value(kal_uint32* _ptr, kal_uint32 value);
885extern kal_uint32 ex_get_value(kal_uint32* _ptr);
886#if defined(__MTK_TARGET__)
887extern void ex_set_flowstep(EX_FLOWSTEP_T step);
888#endif /* __MTK_TARGET__ */
889extern kal_char* ex_get_dsp_build_date_time(EX_CORE_T dsp_core);
890extern kal_char* ex_get_usipscq_build_date_time(EX_CORE_T dsp_core);
891extern kal_char* ex_get_rake_build_date_time(EX_CORE_T dsp_core);
892extern kal_char* ex_get_sonic_build_date_time(EX_CORE_T dsp_core);
893#endif /* _CC_EX_ITEM_H */
894
895