xref: /optee_os/core/drivers/crypto/caam/include/caam_trace.h (revision faaf0c5975d2e5817d14d3f9227425896f5e43be)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright 2019-2021, 2023-2024 NXP
4  *
5  * Brief   CAAM driver trace include file.
6  *         Definition of the internal driver trace macros.
7  */
8 
9 #ifndef __CAAM_TRACE_H__
10 #define __CAAM_TRACE_H__
11 
12 #include <trace.h>
13 #include <util.h>
14 
15 #define CAAM_DBG_TRACE(var) (CFG_DBG_CAAM_TRACE & DBG_TRACE_##var)
16 #define CAAM_DBG_DESC(var)  (CFG_DBG_CAAM_DESC & DBG_TRACE_##var)
17 #define CAAM_DBG_BUF(var)   (CFG_DBG_CAAM_BUF & DBG_TRACE_##var)
18 
19 /*
20  * Debug Macros function of CAAM Debug Level setting
21  * CFG_DBG_CAAM_TRACE  Module print trace
22  * CFG_DBG_CAAM_DESC   Module descriptor dump
23  * CFG_DBG_CAAM_BUF    Module buffer dump
24  *
25  * A module is represented with the same bit in each configuration value.
26  * Module Bit definition is as follow:
27  */
28 #define DBG_TRACE_HAL	 BIT32(0)  /* HAL trace */
29 #define DBG_TRACE_CTRL	 BIT32(1)  /* Controller trace */
30 #define DBG_TRACE_MEM	 BIT32(2)  /* Memory utility trace */
31 #define DBG_TRACE_SGT	 BIT32(3)  /* Scatter Gather trace */
32 #define DBG_TRACE_PWR	 BIT32(4)  /* Power trace */
33 #define DBG_TRACE_JR	 BIT32(5)  /* Job Ring trace */
34 #define DBG_TRACE_RNG	 BIT32(6)  /* RNG trace */
35 #define DBG_TRACE_HASH	 BIT32(7)  /* Hash trace */
36 #define DBG_TRACE_RSA	 BIT32(8)  /* RSA trace */
37 #define DBG_TRACE_CIPHER BIT32(9)  /* Cipher dump Buffer */
38 #define DBG_TRACE_BLOB   BIT32(10) /* BLOB trace */
39 #define DBG_TRACE_DMAOBJ BIT32(11) /* DMA Object trace */
40 #define DBG_TRACE_ECC    BIT32(12) /* ECC trace */
41 #define DBG_TRACE_DH	 BIT32(13) /* DH trace */
42 #define DBG_TRACE_DSA	 BIT32(14) /* DSA trace */
43 #define DBG_TRACE_MP	 BIT32(15) /* MP trace */
44 #define DBG_TRACE_SM	 BIT32(16) /* Secure Memory trace */
45 #define DBG_TRACE_KEY	 BIT32(17) /* KEY trace */
46 #define DBG_TRACE_AE	 BIT32(18) /* AE trace */
47 
48 /* HAL */
49 #if CAAM_DBG_TRACE(HAL)
50 #define HAL_TRACE DRV_TRACE
51 #else
52 #define HAL_TRACE(...)
53 #endif
54 
55 /* Controller */
56 #if CAAM_DBG_TRACE(CTRL)
57 #define CTRL_TRACE DRV_TRACE
58 #else
59 #define CTRL_TRACE(...)
60 #endif
61 
62 /* Memory Utility */
63 #if CAAM_DBG_TRACE(MEM)
64 #define MEM_TRACE DRV_TRACE
65 #else
66 #define MEM_TRACE(...)
67 #endif
68 
69 /* Scatter Gether Table */
70 #if CAAM_DBG_TRACE(SGT)
71 #define SGT_TRACE DRV_TRACE
72 #else
73 #define SGT_TRACE(...)
74 #endif
75 
76 /* Power */
77 #if CAAM_DBG_TRACE(PWR)
78 #define PWR_TRACE DRV_TRACE
79 #else
80 #define PWR_TRACE(...)
81 #endif
82 
83 /* Job Ring */
84 #if CAAM_DBG_TRACE(JR)
85 #define JR_TRACE DRV_TRACE
86 #if CAAM_DBG_DESC(JR)
87 #define JR_DUMPDESC(desc)                                                      \
88 	do {                                                                   \
89 		JR_TRACE("Descriptor");                                        \
90 		DRV_DUMPDESC(desc);                                            \
91 	} while (0)
92 #else
93 #define JR_DUMPDESC(desc)
94 #endif
95 #else
96 #define JR_TRACE(...)
97 #define JR_DUMPDESC(desc)
98 #endif
99 
100 /* RNG */
101 #if CAAM_DBG_TRACE(RNG)
102 #define RNG_TRACE DRV_TRACE
103 #if CAAM_DBG_DESC(RNG)
104 #define RNG_DUMPDESC(desc)                                                     \
105 	do {                                                                   \
106 		RNG_TRACE("RNG Descriptor");                                   \
107 		DRV_DUMPDESC(desc);                                            \
108 	} while (0)
109 #else
110 #define RNG_DUMPDESC(desc)
111 #endif
112 #else
113 #define RNG_TRACE(...)
114 #define RNG_DUMPDESC(desc)
115 #endif
116 
117 /* Hash */
118 #if CAAM_DBG_TRACE(HASH)
119 #define HASH_TRACE DRV_TRACE
120 #if CAAM_DBG_DESC(HASH)
121 #define HASH_DUMPDESC(desc)                                                    \
122 	do {                                                                   \
123 		HASH_TRACE("HASH Descriptor");                                 \
124 		DRV_DUMPDESC(desc);                                            \
125 	} while (0)
126 #else
127 #define HASH_DUMPDESC(desc)
128 #endif
129 #if CAAM_DBG_BUF(HASH)
130 #define HASH_DUMPBUF DRV_DUMPBUF
131 #else
132 #define HASH_DUMPBUF(...)
133 #endif
134 #else
135 #define HASH_TRACE(...)
136 #define HASH_DUMPDESC(desc)
137 #define HASH_DUMPBUF(...)
138 #endif
139 
140 /* RSA */
141 #if CAAM_DBG_TRACE(RSA)
142 #define RSA_TRACE DRV_TRACE
143 #if CAAM_DBG_DESC(RSA)
144 #define RSA_DUMPDESC(desc)                                                     \
145 	do {                                                                   \
146 		RSA_TRACE("RSA Descriptor");                                   \
147 		DRV_DUMPDESC(desc);                                            \
148 	} while (0)
149 #else
150 #define RSA_DUMPDESC(desc)
151 #endif
152 #if CAAM_DBG_BUF(RSA)
153 #define RSA_DUMPBUF DRV_DUMPBUF
154 #else
155 #define RSA_DUMPBUF(...)
156 #endif
157 #else
158 #define RSA_TRACE(...)
159 #define RSA_DUMPDESC(desc)
160 #define RSA_DUMPBUF(...)
161 #endif
162 
163 /* Cipher */
164 #if CAAM_DBG_TRACE(CIPHER)
165 #define CIPHER_TRACE DRV_TRACE
166 #if CAAM_DBG_DESC(CIPHER)
167 #define CIPHER_DUMPDESC(desc)                                                  \
168 	do {                                                                   \
169 		CIPHER_TRACE("CIPHER Descriptor");                             \
170 		DRV_DUMPDESC(desc);                                            \
171 	} while (0)
172 #else
173 #define CIPHER_DUMPDESC(desc)
174 #endif
175 #if CAAM_DBG_BUF(CIPHER)
176 #define CIPHER_DUMPBUF DRV_DUMPBUF
177 #else
178 #define CIPHER_DUMPBUF(...)
179 #endif
180 #else
181 #define CIPHER_TRACE(...)
182 #define CIPHER_DUMPDESC(desc)
183 #define CIPHER_DUMPBUF(...)
184 #endif
185 
186 /* DMA Object */
187 #if CAAM_DBG_TRACE(DMAOBJ)
188 #define DMAOBJ_TRACE DRV_TRACE
189 #else
190 #define DMAOBJ_TRACE(...)
191 #endif
192 
193 /* ECC */
194 #if CAAM_DBG_TRACE(ECC)
195 #define ECC_TRACE DRV_TRACE
196 #if CAAM_DBG_DESC(ECC)
197 #define ECC_DUMPDESC(desc)                                                     \
198 	do {                                                                   \
199 		ECC_TRACE("ECC Descriptor");                                   \
200 		DRV_DUMPDESC(desc);                                            \
201 	} while (0)
202 #else
203 #define ECC_DUMPDESC(desc) do { } while (0)
204 #endif
205 #if CAAM_DBG_BUF(ECC)
206 #define ECC_DUMPBUF DRV_DUMPBUF
207 #else
208 #define ECC_DUMPBUF(...) do { } while (0)
209 #endif
210 #else
211 #define ECC_TRACE(...) do { } while (0)
212 #define ECC_DUMPDESC(desc) do { } while (0)
213 #define ECC_DUMPBUF(...) do { } while (0)
214 #endif
215 
216 /* DH */
217 #if CAAM_DBG_TRACE(DH)
218 #define DH_TRACE DRV_TRACE
219 #if CAAM_DBG_DESC(DH)
220 #define DH_DUMPDESC(desc)                                                      \
221 	{                                                                      \
222 		DH_TRACE("DH Descriptor");                                     \
223 		DRV_DUMPDESC(desc);                                            \
224 	}
225 #else
226 #define DH_DUMPDESC(desc)
227 #endif
228 #if CAAM_DBG_BUF(DH)
229 #define DH_DUMPBUF DRV_DUMPBUF
230 #else
231 #define DH_DUMPBUF(...)
232 #endif
233 #else
234 #define DH_TRACE(...)
235 #define DH_DUMPDESC(desc)
236 #define DH_DUMPBUF(...)
237 #endif
238 
239 /* DSA */
240 #if CAAM_DBG_TRACE(DSA)
241 #define DSA_TRACE DRV_TRACE
242 #if CAAM_DBG_DESC(DSA)
243 #define DSA_DUMPDESC(desc)                                                     \
244 	do {                                                                   \
245 		DSA_TRACE("DSA Descriptor");                                   \
246 		DRV_DUMPDESC(desc);                                            \
247 	} while (0)
248 #else
249 #define DSA_DUMPDESC(desc)
250 #endif
251 #if CAAM_DBG_BUF(DSA)
252 #define DSA_DUMPBUF DRV_DUMPBUF
253 #else
254 #define DSA_DUMPBUF(...)
255 #endif
256 #else
257 #define DSA_TRACE(...)
258 #define DSA_DUMPDESC(desc)
259 #define DSA_DUMPBUF(...)
260 #endif
261 
262 /* MP */
263 #if CAAM_DBG_TRACE(MP)
264 #define MP_TRACE DRV_TRACE
265 #if CAAM_DBG_DESC(MP)
266 #define MP_DUMPDESC(desc)                                                      \
267 	do {                                                                   \
268 		MP_TRACE("MP Descriptor");                                     \
269 		DRV_DUMPDESC(desc);                                            \
270 	} while (0)
271 #else
272 #define MP_DUMPDESC(desc)
273 #endif
274 #if CAAM_DBG_BUF(MP)
275 #define MP_DUMPBUF DRV_DUMPBUF
276 #else
277 #define MP_DUMPBUF(...)
278 #endif
279 #else
280 #define MP_TRACE(...) do { } while (0)
281 #define MP_DUMPDESC(desc)
282 #define MP_DUMPBUF(...)
283 #endif
284 
285 /* KEY */
286 #if CAAM_DBG_TRACE(KEY)
287 #define KEY_TRACE DRV_TRACE
288 #if CAAM_DBG_DESC(KEY)
289 #define KEY_DUMPDESC(desc)			\
290 	do {					\
291 		KEY_TRACE("KEY Descriptor");	\
292 		DRV_DUMPDESC(desc);		\
293 	} while (0)
294 #else
295 #define KEY_DUMPDESC(desc)
296 #endif
297 #if CAAM_DBG_BUF(KEY)
298 #define KEY_DUMPBUF DRV_DUMPBUF
299 #else
300 #define KEY_DUMPBUF(...)
301 #endif
302 #else
303 #define KEY_TRACE(...) do { } while (0)
304 #define KEY_DUMPDESC(desc) do { } while (0)
305 #define KEY_DUMPBUF(...) do { } while (0)
306 #endif
307 
308 #if (TRACE_LEVEL >= TRACE_DEBUG)
309 #define DRV_TRACE(...)                                                         \
310 	trace_printf(__func__, __LINE__, TRACE_DEBUG, true, __VA_ARGS__)
311 #define DRV_DUMPDESC(desc) dump_desc(desc)
312 
313 #define DRV_DUMPBUF(title, buf, len)                                           \
314 	do {                                                                   \
315 		__typeof__(buf) _buf = (buf);                                  \
316 		__typeof__(len) _len = (len);                                  \
317 									       \
318 		DRV_TRACE("%s @%p : %zu", title, _buf, _len);                  \
319 		dhex_dump(NULL, 0, 0, _buf, _len);                             \
320 	} while (0)
321 
322 #else
323 #define DRV_TRACE(...)
324 #define DRV_DUMPDESC(...)
325 #define DRV_DUMPBUF(...)
326 #endif
327 
328 /* BLOB */
329 #if CAAM_DBG_TRACE(BLOB)
330 #define BLOB_TRACE DRV_TRACE
331 #if CAAM_DBG_DESC(BLOB)
332 #define BLOB_DUMPDESC(desc)                                                    \
333 	do {                                                                   \
334 		BLOB_TRACE("BLOB Descriptor");                                 \
335 		DRV_DUMPDESC(desc);                                            \
336 	} while (0)
337 #else
338 #define BLOB_DUMPDESC(desc)
339 #endif
340 #if CAAM_DBG_BUF(BLOB)
341 #define BLOB_DUMPBUF DRV_DUMPBUF
342 #else
343 #define BLOB_DUMPBUF(...)
344 #endif
345 #else
346 #define BLOB_TRACE(...)
347 #define BLOB_DUMPDESC(desc)
348 #define BLOB_DUMPBUF(...)
349 #endif
350 
351 /* Secure Memory */
352 #if CAAM_DBG_TRACE(SM)
353 #define SM_TRACE DRV_TRACE
354 #else
355 #define SM_TRACE(...)
356 #endif
357 
358 /* Cipher AE */
359 #if CAAM_DBG_TRACE(AE)
360 #define AE_TRACE DRV_TRACE
361 #if CAAM_DBG_DESC(AE)
362 #define AE_DUMPDESC(desc)                                              \
363 	do {                                                           \
364 		AE_TRACE("AE Descriptor");                             \
365 		DRV_DUMPDESC(desc);                                    \
366 	} while (0)
367 #else
368 #define AE_DUMPDESC(...)
369 #endif
370 #if CAAM_DBG_BUF(AE)
371 #define AE_DUMPBUF DRV_DUMPBUF
372 #else
373 #define AE_DUMPBUF(...)
374 #endif
375 #else
376 #define AE_TRACE(...)
377 #define AE_DUMPDESC(...)
378 #define AE_DUMPBUF(...)
379 #endif
380 
381 #endif /* CAAM_TRACE_H__ */
382