blob: 48f7353cfeed34dd7af53edae22ea88c25c8659d [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 * SST_concurrent_utility.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * This Module defines the necessary API needed by concurrent ulitity.
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 * removed!
79 * removed!
80 *
81 * removed!
82 * removed!
83 * removed!
84 *
85 * removed!
86 * removed!
87 * removed!
88 * removed!
89 * removed!
90 *
91 * removed!
92 * removed!
93 * removed!
94 *
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 * removed!
105 * removed!
106 *
107 * removed!
108 * removed!
109 * removed!
110 * removed!
111 *
112 * removed!
113 * removed!
114 * removed!
115 * removed!
116 * removed!
117 * removed!
118 * removed!
119 * removed!
120 * removed!
121 * removed!
122 * removed!
123 * removed!
124 * removed!
125 * removed!
126 * removed!
127 * removed!
128 *
129 * removed!
130 *------------------------------------------------------------------------------
131 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
132 *============================================================================
133 ****************************************************************************/
134#ifndef _SST_CONCURRENT_UTILITY_
135#define _SST_CONCURRENT_UTILITY_
136#ifdef __cplusplus
137extern "C" {
138#endif
139
140#include "kal_general_types.h"
141
142/*************************************************************************
143 * Platform Capabilities Definition
144 *************************************************************************/
145
146/*************************************************************************
147 * Constant Definition : Option from NVRAM setting
148 *************************************************************************/
149#define SWLA_ADDON_EBM_R_LAT 0x10
150#define SWLA_ADDON_EBM_W_LAT 0x20
151
152/*************************************************************************
153 * Constant Definition : Sync with ELT Addon DLL
154 *************************************************************************/
155#define USAGE_TYPE_ELM (1UL << 0)
156#define USAGE_TYPE_EBM (1UL << 1)
157#define USAGE_TYPE_UR (1UL << 2)
158#define USAGE_TYPE_EBM_RLAT (1UL << 3)
159#define USAGE_TYPE_EBM_WLAT (1UL << 4)
160#define USAGE_TYPE_BMON (1UL << 5)
161
162
163/*************************************************************************
164 * ENUM Definition : Sync with Catcher
165 *************************************************************************/
166typedef enum
167{
168 HEADER_ID_MAIN_TQCNT = 0x00000001,
169 HEADER_ID_MAIN_USEC = 0x00000002,
170 HEADER_ID_RTOS_V1 = 0x00000000,
171 HEADER_ID_RTOS_V2 = 0x00000010,
172 HEADER_ID_TIME_STAMP_BASE = 0x00000100,
173 HEADER_ID_EXTRA_INFO = 0x00000103,
174 HEADER_ID_TWO_RATIOS = 0x00000104,
175 HEADER_ID_OVERHEAD = 0x00000105,
176 HEADER_ID_CUST_OVERHEAD = 0x00000106,
177 HEADER_ID_EXTERNAL_BN = 0x00010005,
178 HEADER_ID_EXTERNAL_EMI_GERNAL = 0x00010006,
179 HEADER_ID_EXTERNAL_EMI_PRO = 0x00010007,
180 HEADER_ID_EXTERNAL_TST = 0x00010008,
181 HEADER_ID_EXTERNAL_INST_COUNT = 0x0001000A,
182 HEADER_ID_EXTERNAL_CONCURRENCY = 0x0001000B,
183 HEADER_ID_EXTERNAL_MAX = 0x00010010,
184
185 /* The following is for MALMO ASM SWLA*/
186 HEADER_ID_MALMO_ASM_BASE = 0x10000000,
187 HEADER_ID_MALMO_ASM_FRAMENO,
188 HEADER_ID_MALMO_ASM_MCU_PC,
189 HEADER_ID_MALMO_ASM_CONTEXT_ID,
190 HEADER_ID_MALMO_ASM_PMC0,
191 HEADER_ID_MALMO_ASM_PMC1,
192 HEADER_ID_MALMO_ASM_PMC2,
193 HEADER_ID_MALMO_ASM_CYCLE_CNT,
194 HEADER_ID_MALMO_ASM_EMI_BCNT,
195 HEADER_ID_MALMO_ASM_EMI_BACT,
196 HEADER_ID_MALMO_ASM_EMI_BSCT,
197 HEADER_ID_MALMO_ASM_EMI_BSCT2,
198 HEADER_ID_MALMO_ASM_EMI_BSCT3,
199 HEADER_ID_MALMO_ASM_TIMESTAMP,
200 /* There might be more MALMO ASM entries in the future */
201
202 HEADER_ID_MALMO_ASM_EXTRA_BASE = 0x10001000,
203 HEADER_ID_MALMO_ASM_EXTRA0,
204 HEADER_ID_MALMO_ASM_EXTRA1,
205 HEADER_ID_MALMO_ASM_EXTRA2,
206 HEADER_ID_MALMO_ASM_EXTRA3
207
208} SA_HEADER_ID_T;
209
210/*************************************************************************
211 * Structure Definition : Basic and Professional EMI Monitor Logging Node
212 *************************************************************************/
213
214typedef struct SA_EBMAddonCounter_T
215{
216 kal_uint32 emi_md_r_wcnt;
217 kal_uint32 emi_md_w_wcnt;
218} SA_EBMAddonCounter;
219
220
221
222typedef struct SA_ELMAddonCounter_T
223{
224 kal_uint32 elm_r_tcnt; //mode 0 read trans count
225 kal_uint32 elm_w_tcnt; //mode 0 wrtie trans count
226 kal_uint32 elm_r_lat; //mode 0 read latency count
227 kal_uint32 elm_w_lat; //mode 0 write latency count
228#if defined(__MD95__)
229 kal_uint32 elm_r_wc; //mode 0 read word count
230 kal_uint32 elm_w_wc; //mode 0 write word count
231#endif
232} SA_ELMAddonCounter;
233
234//#define __SWLA_ADDON_SMIM__
235typedef struct BM_LOG_T
236{
237 // MD ELM
238 #if defined(__SWLA_ADDON_ELM__)
239 kal_uint32 elm_r_tcnt; //mode 1 read trans count
240 kal_uint32 elm_w_tcnt; //mode 1 read word count
241 kal_uint32 elm_r_lat; //mode 1 read latency count
242 kal_uint32 elm_w_lat; //mode 1 write word count
243 #endif
244
245 #if defined(__SWLA_ADDON_EBM__)
246 kal_uint32 emi_md_r_wcnt;
247 kal_uint32 emi_md_w_wcnt;
248 #endif /* __SWLA_ADDON_EBM__ */
249
250 #if defined(__SWLA_ADDON_PMU__)
251 #if defined(__PROFILE_PMU_START_END_CYC__)
252 kal_uint32 cr4_pmu_cycle_start;
253 kal_uint32 cr4_pmu_cycle_end;
254 #else
255 kal_uint32 cr4_pmu_dur;
256 #endif /* __PROFILE_PMU_START_END_CYC__ */
257 kal_uint32 cr4_pmu_event[3];
258 #endif /* __SWLA_ADDON_PMU__ */
259
260 #if defined(__SWLA_ADDON_EBM_LAT__)
261 kal_uint32 emi_md_r_tcnt;
262 kal_uint32 emi_md_w_tcnt;
263 kal_uint32 emi_md_r_lat_cnt;
264 kal_uint32 emi_md_w_lat_cnt;
265 #endif /* __SWLA_ADDON_EBM_LAT__ */
266
267 #if defined(__SWLA_ADDON_BMON__)
268 kal_uint32 busmon_mcu_tot_cyc;
269 /* index 0 for IP0, index 1 for IP1 */
270// kal_uint32 busmon_mcu_tot_nw_cycle[2]; // non weighted transaction cycles
271 kal_uint32 busmon_mcu_max_lat[2]; // maximal latency
272 kal_uint32 busmon_infra_max_lat[2]; // maximal latency
273 #endif /* __SWLA_ADDON_BMON__ */
274
275 #if defined(__SWLA_ADDON_SMIM__)
276 kal_uint32 smi_actCnt;
277 kal_uint32 smi_tCnt;
278 kal_uint32 smi_byteCnt;
279 #endif
280
281 #if !defined(__SWLA_ADDON_ELM__) && !defined(__SWLA_ADDON_EBM__) && !defined(__SWLA_ADDON_EBM_LAT__) && !defined(__SWLA_ADDON_PMU__)
282 kal_uint32 dummy;
283 #endif
284
285} BM_Log;
286
287/*************************************************************************
288 * Structure Definition : Auxiliary Structures
289 *************************************************************************/
290typedef struct EMI_Setting_T
291{
292 kal_uint32 usage_type;
293 kal_uint32 word_cnt;
294}EMI_Setting;
295
296/*************************************************************************
297 * Structure Definition : Basic and Professional EMI Monitor Init Reference
298 *************************************************************************/
299typedef struct BM_REF_T
300{
301 SA_HEADER_ID_T id;
302 kal_uint32 szRef;
303 EMI_Setting emi_settings;
304}BM_Ref;
305
306
307/*************************************************************************
308 * Exported APIs for Software LA
309 *************************************************************************/
310
311extern void Setup_AddOn_RefData(SA_HEADER_ID_T id, kal_uint8 **ARef, kal_uint32 *szARef);
312extern void Get_BM_Log( BM_Log* pLog );
313extern void Enable_Normal_EMI_Monitor(void);
314
315extern void SWLA_EBM_Setup_DLLInfo(kal_uint8 **ARef, kal_uint32 *szARef);
316
317extern void SA_ELM_AddonLogging(kal_uint32 * buff);
318extern void SA_EBM_AddonInit();
319extern kal_uint8* SA_EBM_AddonLogging_HWmode();
320extern void SA_EBM_AddonLogging_SWmode(kal_uint32 * buff);
321
322
323
324#ifdef __cplusplus
325}
326#endif
327
328#endif /* _SST_CONCURRENT_UTILITY_ */