blob: 76bb58bc14fb5dfb3a7356874cfdbb388fe78b01 [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) 2001
8*
9*****************************************************************************/
10
11/*****************************************************************************
12 *
13 * Filename:
14 * ---------
15 * ex_memory_manager.h
16 *
17 * Project:
18 * --------
19 * Moly
20 *
21 * Description:
22 * ------------
23 *
24 *
25 * Author:
26 * -------
27 *
28 *
29 *============================================================================
30 * HISTORY
31 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
32 *------------------------------------------------------------------------------
33 * removed!
34 * removed!
35 * removed!
36 *
37 * removed!
38 * removed!
39 * removed!
40 * removed!
41 *
42 * removed!
43 * removed!
44 * removed!
45 * removed!
46 *
47 * removed!
48 * removed!
49 * removed!
50 * removed!
51 *
52 * removed!
53 * removed!
54 * removed!
55 *
56 * removed!
57 * removed!
58 * removed!
59 *
60 * removed!
61 * removed!
62 * removed!
63 *
64 * removed!
65 * removed!
66 * removed!
67 * removed!
68 * removed!
69 * removed!
70 * removed!
71 * removed!
72 *
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 * removed!
79 *
80 * removed!
81 * removed!
82 * removed!
83 * removed!
84 * removed!
85 * removed!
86 * removed!
87 *
88 * removed!
89 * removed!
90 *
91 * removed!
92 * removed!
93 * removed!
94 * removed!
95 *
96 * removed!
97 * removed!
98 * removed!
99 *
100 * removed!
101 * removed!
102 * removed!
103 *
104 * removed!
105 * removed!
106 * removed!
107 *
108 * removed!
109 * removed!
110 * removed!
111 *
112 * removed!
113 * removed!
114 * removed!
115 *
116 * removed!
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 *
137 * removed!
138 * removed!
139 * removed!
140 * removed!
141 * removed!
142 *
143 * removed!
144 * removed!
145 * removed!
146 *
147 * removed!
148 * removed!
149 * removed!
150 *
151 * removed!
152 * removed!
153 * removed!
154 *
155 * removed!
156 *------------------------------------------------------------------------------
157 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
158 *============================================================================
159 ****************************************************************************/
160
161#ifndef __EX_MEM_MANAGER_H__
162#define __EX_MEM_MANAGER_H__
163
164
165
166
167#if !defined(__ASSEMBLER__)
168#include "ex_mem_manager_public.h"
169
170/*******************************************************************************
171 * Define data structure.
172 *******************************************************************************/
173typedef enum {
174 EMM_QUERY_FAIL = 0x1,
175 EMM_CHECK_FAIL = 0x2,
176 EMM_NO_CCCI_FAIL = 0x4,
177 EMM_PERMISSION_FAIL = 0x8,
178 EMM_UNSUPPORTED_SRC_TYPE_FAIL = 0x10,
179 EMM_CHECK_SUCCESS = 0x80,
180} EMM_QUERY_RESULT;
181
182typedef enum {
183 EMM_BUF_INMD_FROM_AP = 0x1,
184 EMM_BUF_EXMD_STATIC,
185 EMM_BUF_MAX,
186} EMM_BUF_SOURCE;
187
188#define EMM_MINIMUM_SIZE (sizeof(kal_uint32))
189
190#if defined(__MD97__) || defined(__MD97P__)
191#define EMM_EXRECORD_LEN (1024*10)
192/*EMM BOOTUPSTARTUPTRACE_START 76 bytes from EMM Debug info start*/
193#define EMM_BOOTUPTRACE_START (EMM_EXRECORD_LEN+76)
194
195#define EMM_DBGINFO_LEN 1024
196#define EMM_USERDIRINFO_LEN (3*1024)
197#define EMM_BOOTUPTRACE_LEN (3*1024)
198
199#define EMM_IDLETASK_SIZE (352/EMM_MINIMUM_SIZE)
200#define EMM_SLP_SIZE (68/EMM_MINIMUM_SIZE)
201#define EMM_DORMANT_SIZE (96/EMM_MINIMUM_SIZE)
202#define EMM_ELM_SIZE (300/EMM_MINIMUM_SIZE)
203#define EMM_BUS_SIZE (8*12/EMM_MINIMUM_SIZE)
204#define EMM_SWLA_SIZE (1440/EMM_MINIMUM_SIZE)
205#define EMM_NVRAM_DBG_SIZE (616/EMM_MINIMUM_SIZE)
206#else
207#error No config yet
208#endif
209
210
211#define EMM_INFO_TOTAL_LEN (EMM_DBGINFO_LEN+EMM_USERDIRINFO_LEN)
212
213
214/* dont use SYS_MCU_NUM_CORE SYS_MCU_NUM_VPE here because there might different
215 * value for different variant in same generation. use here max value
216 * for this generation */
217#if defined(__MD97__) || defined(__MD97P__)
218#define EMM_CORENUM 4
219#define EMM_VPENUM 3 // per core
220#else
221#error No config yet
222#endif
223
224
225#define EMM_BLOCKNUM (EMM_CORENUM)
226#define EMM_BOOTUPTRACE_BLOCKLEN (((EMM_BOOTUPTRACE_LEN/EMM_BLOCKNUM)>>2)<<2)
227
228#define EMM_EXRECORD_WORDLEN (EMM_EXRECORD_LEN/EMM_MINIMUM_SIZE)
229#define EMM_BOOTUPTRACE_BLOCKWORDLEN (EMM_BOOTUPTRACE_BLOCKLEN/EMM_MINIMUM_SIZE)
230#define EMM_DBGINFO_WORDLEN (EMM_DBGINFO_LEN/EMM_MINIMUM_SIZE)
231#define EMM_USERDIRINFO_WORDLEN (EMM_USERDIRINFO_LEN/EMM_MINIMUM_SIZE)
232
233
234#define EMM_INDICATOR 0x12345678 /* magic num */
235
236#define EMM_DIRINFO_GUARD_PATTERN_START(_index) ((0xEDEC << 16) | _index)
237#define EMM_DIRINFO_GUARD_PATTERN_END(_index) ((0xCEDE << 16) | _index)
238
239#define EMM_HS2_TRACE_START_PATTERN 0x48533230
240
241typedef struct _EMM_INFO {
242 EMM_BUF_SOURCE bufSourceType;
243 kal_uint32 u32Mainbuf_Addr;
244 kal_uint32 bufLen;
245
246 kal_uint32 *pexRecord;
247 kal_uint32 exRecordLen;
248
249 kal_uint32 *pBootupTraceInfo[EMM_BLOCKNUM];
250 kal_uint32 BootupTraceWordLen[EMM_BLOCKNUM];
251
252 kal_uint32 *pdbgInfo;
253 kal_uint32 dbgInfoWordLen;
254
255 kal_uint32 *pUserDirInfo; //user direct info
256 kal_uint32 userDirInfoWordLen; //user direct info
257
258 kal_uint8 bootTraceFinish;
259 kal_uint8 resultFail;
260} EMM_INFO;
261
262typedef struct {
263 kal_uint32 magic_number;
264 kal_uint32 last_write_index[EMM_CORENUM*EMM_VPENUM];
265 kal_uint32 last_write_vpe;
266 kal_uint32 reserved[2]; // make header 16 byte alignment for better looks
267 kal_uint32 log[EMM_INDEX_MAX];
268} EMM_DBGINFO_STRUC;
269
270typedef struct _EMM_BUF_CONTENT {
271 kal_uint32 exRecord[EMM_EXRECORD_WORDLEN];
272 kal_uint32 dbgInfo[EMM_DBGINFO_WORDLEN];
273} EMM_BUF_CONTENT;
274
275typedef struct _EMM_SWLA_PAIR {
276 kal_char name[4];
277 kal_uint32 timestamp;
278 kal_uint8 core_id;
279 kal_uint8 tc_id;
280 kal_uint8 reserved[2];
281} EMM_SWLA_PAIR;
282
283#if defined (__HIF_CCCI_SUPPORT__) && defined(__CCCI_PRODUCT_TYPE_THIN_MODEM__)
284typedef enum _SAP_SHM_QUERY_RESULT {
285 SAP_SHM_EXRECORD_QUERY_FAIL = 0x1,
286 SAP_SHM_EXRECORD_CHECKING_FAIL = 0x2,
287 SAP_SHM_MEMDUMP_QUERY_FAIL = 0x4,
288 SAP_SHM_MEMDUMP_CHECKING_FAIL = 0x8
289} SAP_SHM_QUERY_RESULT;
290
291typedef struct _SAP_SHM {
292 kal_uint32 ex_addr; // small ap exception record @ SHM
293 kal_uint32 ex_size;
294 kal_uint32 mem_addr; // small ap 64 MB memory
295 kal_uint32 mem_size;
296 SAP_SHM_QUERY_RESULT resultFail;
297} SAP_SHM;
298
299#define THIN_MODEM_SHM_SAP_EX_STATUS_OFFSET 8
300#define THIN_MODEM_SHM_MD_EX_STATUS_OFFSET 12
301extern SAP_SHM sap_shm;
302#endif
303
304#define EMM_BUS_SYSINFO_PAD_COMPENSATE_SIZE (\
305 /*sizeof(pattern)*/ EMM_MINIMUM_SIZE + \
306 /*sizeof(last_write_index)*/ EMM_MINIMUM_SIZE * (EMM_CORENUM*EMM_VPENUM) + \
307 /*sizeof(last_write_vpe)*/ EMM_MINIMUM_SIZE + \
308 /*sizeof(reserved[2])*/ EMM_MINIMUM_SIZE * 2 + \
309 /*sizeof(EMM_SYSINFO)*/ EMM_MINIMUM_SIZE * EMM_INDEX_MAX \
310 )
311
312typedef struct _EMM_BUF_SYSINFO {
313 kal_uint32 pattern;
314 kal_uint32 last_write_index[EMM_CORENUM*EMM_VPENUM];
315 kal_uint32 last_write_vpe;
316 kal_uint32 reserved[2];
317 kal_uint32 EMM_SYSINFO[EMM_INDEX_MAX];
318 kal_uint32 pad[(EMM_DBGINFO_LEN - EMM_BUS_SYSINFO_PAD_COMPENSATE_SIZE)/EMM_MINIMUM_SIZE];
319 kal_uint32 EDE_IDLETASK_HEAD;
320 kal_uint32 EDE_IDLETASK_STEP[EMM_IDLETASK_SIZE];
321 kal_uint32 EDE_IDLETASK_TAIL;
322 kal_uint32 EDE_SLP_HEAD;
323 kal_uint32 EDE_SLP_STEP[EMM_SLP_SIZE];
324 kal_uint32 EDE_SLP_TAIL;
325 kal_uint32 EDE_DOR_HEAD;
326 kal_uint32 EDE_DOR_STEP[EMM_DORMANT_SIZE];
327 kal_uint32 EDE_DOR_TAIL;
328 kal_uint32 EDE_ELM_HEAD;
329 kal_uint32 EDE_ELM_STEP[EMM_ELM_SIZE];
330 kal_uint32 EDE_ELM_TAIL;
331 kal_uint32 EDE_BUS_HEAD;
332 kal_uint32 EDE_BUS_STEP[EMM_BUS_SIZE];
333 kal_uint32 EDE_BUS_TAIL;
334 kal_uint32 EDE_SWLA_HEAD;
335 EMM_SWLA_PAIR EDE_SWLA[EMM_CORENUM][EMM_SWLA_SIZE*EMM_MINIMUM_SIZE/sizeof(EMM_SWLA_PAIR)/EMM_CORENUM];
336 kal_uint32 EDE_SWLA_TAIL;
337 kal_uint32 EDE_NVRAM_DBG_HEAD;
338 kal_uint32 EDE_NVRAM_DBG[EMM_NVRAM_DBG_SIZE];
339 kal_uint32 EDE_NVRAM_DBG_TAIL;
340} EMM_SYSINFO_STRUC;
341
342#endif /* __ASSEMBLER__ */
343#endif /* __EX_MEM_MANAGER_H__ */
344