AM64x MCU+ SDK  12.01.00
tisci_protocol.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017-2026 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
54 #ifndef TISCI_PROTOCOL_H
55 #define TISCI_PROTOCOL_H
56 
57 #ifdef __cplusplus
58 extern "C"
59 {
60 #endif
61 
62 
63 
67 #define TISCI_MSG_FLAG_RESERVED0 TISCI_BIT(0)
68 
75 #define TISCI_MSG_FLAG_AOP TISCI_BIT(1)
76 
78 #define TISCI_MSG_FLAG_SEC TISCI_BIT(2)
79 
81 #define TISCI_MSG_FLAG_REQ_NOTFWD2DM TISCI_BIT(3)
82 
87 #define TISCI_MSG_FLAG_ACK TISCI_BIT(1)
88 
97 struct tisci_header {
98  uint16_t type;
99  uint8_t host;
100  uint8_t seq;
101  uint32_t flags;
102 };
103 
104 /*
105  * Messages sent via secure transport need an additional field for integrity
106  * check in addition to the fields of a TISCI message. The below data structure
107  * is used to enhance the standard TISCI message header with a field for
108  * integrity check and a reserved field for future use.
109  *
110  * The below defined header is placed before the \ref tisci_header when
111  * transmitting a message via a secure transport.
112  *
113  * For more information, please refer to the TISCI documentation.
114  */
115 
127  uint16_t integ_check;
128  uint16_t rsvd;
129 };
130 
131 /* TISCI Message IDs */
132 #define TISCI_MSG_VERSION (0x0002U)
133 #define TISCI_MSG_DM_VERSION (0x000FU)
134 #define TISCI_MSG_BOOT_NOTIFICATION (0x000AU)
135 #define TISCI_MSG_BOARD_CONFIG (0x000BU)
136 #define TISCI_MSG_BOARD_CONFIG_RM (0x000CU)
137 #define TISCI_MSG_BOARD_CONFIG_SECURITY (0x000DU)
138 #define TISCI_MSG_BOARD_CONFIG_PM (0x000EU)
139 
140 #define TISCI_MSG_ENABLE_WDT (0x0000U)
141 #define TISCI_MSG_WAKE_RESET (0x0001U)
142 #define TISCI_MSG_WAKE_REASON (0x0003U)
143 #define TISCI_MSG_GOODBYE (0x0004U)
144 #define TISCI_MSG_SYS_RESET (0x0005U)
145 
146 #define TISCI_MSG_QUERY_MSMC (0x0020U)
147 #define TISCI_MSG_GET_TRACE_CONFIG (0x0021U)
148 #define TISCI_MSG_QUERY_FW_CAPS (0x0022U)
149 
150 #define TISCI_MSG_SET_CLOCK (0x0100U)
151 #define TISCI_MSG_GET_CLOCK (0x0101U)
152 #define TISCI_MSG_SET_CLOCK_PARENT (0x0102U)
153 #define TISCI_MSG_GET_CLOCK_PARENT (0x0103U)
154 #define TISCI_MSG_GET_NUM_CLOCK_PARENTS (0x0104U)
155 #define TISCI_MSG_SET_CLOCK_SSC (0x010aU)
156 #define TISCI_MSG_GET_CLOCK_SSC (0x010bU)
157 #define TISCI_MSG_SET_FREQ (0x010cU)
158 #define TISCI_MSG_QUERY_FREQ (0x010dU)
159 #define TISCI_MSG_GET_FREQ (0x010eU)
160 
161 #define TISCI_MSG_SET_DEVICE (0x0200U)
162 #define TISCI_MSG_GET_DEVICE (0x0201U)
163 #define TISCI_MSG_SET_DEVICE_RESETS (0x0202U)
164 #define TISCI_MSG_DEVICE_DROP_POWERUP_REF (0x0203U)
165 #define TISCI_MSG_GET_DEVICE_MULTIPLE (0x0204U)
166 
167 #define TISCI_MSG_PREPARE_SLEEP (0x0300U)
168 #define TISCI_MSG_ENTER_SLEEP (0x0301U)
169 
170 /*
171  * NOTE: These can likely be marked reserved here and defined in a
172  * tisci_protocol_priv.h?
173  */
174 #define TISCI_MSG_SYNC_RESUME (0x0302U)
175 #define TISCI_MSG_CONTINUE_RESUME (0x0303U)
176 #define TISCI_MSG_CORE_RESUME (0x0304U)
177 #define TISCI_MSG_DM_ABORT_SLEEP (0x0305U)
178 #define TISCI_MSG_LPM_WAKE_REASON (0x0306U)
179 #define TISCI_MSG_SET_IO_ISOLATION (0x0307U)
180 #define TISCI_MSG_MIN_CONTEXT_RESTORE (0x0308U)
181 #define TISCI_MSG_LPM_SET_DEVICE_CONSTRAINT (0x0309U)
182 #define TISCI_MSG_LPM_SET_LATENCY_CONSTRAINT (0x030AU)
183 #define TISCI_MSG_LPM_GET_DEVICE_CONSTRAINT (0x030BU)
184 #define TISCI_MSG_LPM_GET_LATENCY_CONSTRAINT (0x030CU)
185 #define TISCI_MSG_LPM_GET_NEXT_SYS_MODE (0x030DU)
186 #define TISCI_MSG_LPM_GET_NEXT_HOST_STATE (0x030EU)
187 
189 #define TISCI_MSG_LPM_ENCRYPT (0x030FU)
190 
191 #define TISCI_MSG_LPM_DECRYPT (0x0310U)
192 #define TISCI_MSG_LPM_ABORT (0x0311U)
193 #define TISCI_MSG_GET_SUSPEND_INITIATOR (0x0312U)
194 #define TISCI_MSG_LPM_SAVE_ADDR (0x0313U)
195 
196 #define TISCI_MSG_FIRMWARE_LOAD (0x8105U)
197 #define MSG_FIRMWARE_LOAD_RESULT (0x8805U)
198 
200 #define TISCI_MSG_SET_FWL_REGION (0x9000U)
201 
202 #define TISCI_MSG_GET_FWL_REGION (0x9001U)
203 
204 #define TISCI_MSG_CHANGE_FWL_OWNER (0x9002U)
205 
206 #define TISCI_MSG_CRYPTO_SET_DKEK (0x9003U)
207 /* Alias to prevent user code build issues */
208 #define TISCI_MSG_SA2UL_SET_DKEK TISCI_MSG_CRYPTO_SET_DKEK
209 
210 #define TISCI_MSG_CRYPTO_RELEASE_DKEK (0x9004U)
211 /* Alias to prevent user code build issues */
212 #define TISCI_MSG_SA2UL_RELEASE_DKEK TISCI_MSG_CRYPTO_RELEASE_DKEK
213 
214 #define TISCI_MSG_KEYSTORE_IMPORT_SKEY (0x9005U)
215 
216 #define TISCI_MSG_KEYSTORE_ERASE_SKEY (0x9006U)
217 /* Reserved ID not for (re)use */
218 #define TISCI_MSG_SEC_RESERVED_9007 (0x9007U)
219 /* Reserved ID not for (re)use */
220 #define TISCI_MSG_SEC_RESERVED_9008 (0x9008U)
221 
222 #define TISCI_MSG_SET_ISC_REGION (0x9009U)
223 
224 #define TISCI_MSG_GET_ISC_REGION (0x900AU)
225 
226 #define TISCI_MSG_FWL_EXCP_NOTIFICATION (0x900BU)
227 
228 #define TISCI_MSG_OPEN_DEBUG_FWLS (0x900CU)
229 
230 #define TISCI_MSG_INIT_FWL_DEVGRP (0x9046U)
231 
236 #define TISCI_MSG_KEYSTORE_WRITE (0x900DU)
237 
241 #define TISCI_MSG_KEYSTORE_EXPORT_ALL (0x900EU)
242 
243 #define TISCI_MSG_KEYSTORE_IMPORT_ALL (0x900FU)
244 /* Reserved ID not for (re)use */
245 #define TISCI_MSG_SEC_RESERVED_9010 (0x9010U)
246 /* Reserved ID not for (re)use */
247 #define TISCI_MSG_SEC_RESERVED_9011 (0x9011U)
248 /* Reserved ID not for (re)use */
249 #define TISCI_MSG_SEC_RESERVED_9012 (0x9012U)
250 /* Reserved ID not for (re)use */
251 #define TISCI_MSG_SEC_RESERVED_9013 (0x9013U)
252 /* Reserved ID not for (re)use */
253 #define TISCI_MSG_SEC_RESERVED_9014 (0x9014U)
254 /* Reserved ID not for (re)use */
255 #define TISCI_MSG_SEC_RESERVED_9015 (0x9015U)
256 
257 /* Reserved ID not for (re)use */
258 #define TISCI_MSG_SEC_RESERVED_9016 (0x9016U)
259 
261 #define TISCI_MSG_SA2UL_AUTH_RES_ACQUIRE (0x9017U)
262 
264 #define TISCI_MSG_SA2UL_AUTH_RES_RELEASE (0x9018U)
265 
266 /* Reserved ID not for (re)use */
267 #define TISCI_MSG_SEC_RESERVED_9020 (0x9020U)
268 
270 #define TISCI_MSG_GET_SOC_UID (0x9021U)
271 
272 /*********************************************************/
273 /* Messages for handling extended OTP area */
274 
276 #define TISCI_MSG_READ_OTP_MMR (0x9022U)
277 
279 #define TISCI_MSG_WRITE_OTP_ROW (0x9023U)
280 
282 #define TISCI_MSG_LOCK_OTP_ROW (0x9024U)
283 
285 #define TISCI_MSG_SOFT_LOCK_OTP_WRITE_GLOBAL (0x9025U)
286 
288 #define TISCI_MSG_GET_OTP_ROW_LOCK_STATUS (0x9026U)
289 
291 #define TISCI_MSG_RSVD_OTP_1 (0x9027U)
292 
294 #define TISCI_MSG_RSVD_OTP_2 (0x9028U)
295 
297 #define TISCI_MSG_CRYPTO_GET_DKEK (0x9029U)
298 /* Alias to prevent user code build issues */
299 #define TISCI_MSG_SA2UL_GET_DKEK TISCI_MSG_CRYPTO_GET_DKEK
300 
302 #define TISCI_MSG_ALLOW_FWL_CTRL_READ (0x902CU)
303 
305 #define TISCI_MSG_FORBID_FWL_CTRL_READ (0x902DU)
306 
310 #define TISCI_MSG_SEC_HANDOVER (0x9030U)
311 
312 /******************************************************/
313 
314 /* Keywriter TISCI message to write keys from a certificate */
315 #define TISCI_MSG_KEY_WRITER (0x9031U)
316 
318 #define TISCI_MSG_WRITE_SWREV (0x9032U)
319 
321 #define TISCI_MSG_READ_SWREV (0x9033U)
322 
324 #define TISCI_MSG_READ_KEYCNT_KEYREV (0x9034U)
325 
327 #define TISCI_MSG_WRITE_KEYREV (0x9035U)
328 
330 #define TISCI_MSG_CRYPTO_GET_DSMEK (0x9036U)
331 /* Alias to prevent user code build issues */
332 #define TISCI_MSG_SA2UL_GET_DSMEK TISCI_MSG_CRYPTO_GET_DSMEK
333 
335 #define TISCI_MSG_CRYPTO_SET_DSMEK (0x9037U)
336 /* Alias to prevent user code build issues */
337 #define TISCI_MSG_SA2UL_SET_DSMEK TISCI_MSG_CRYPTO_SET_DSMEK
338 
340 #define TISCI_MSG_CRYPTO_RELEASE_DSMEK (0x9038U)
341 /* Alias to prevent user code build issues */
342 #define TISCI_MSG_SA2UL_RELEASE_DSMEK TISCI_MSG_CRYPTO_RELEASE_DSMEK
343 
345 #define TISCI_MSG_KEYRING_IMPORT (0X9039U)
346 
348 #define TISCI_MSG_CRYPTO_SET_DKEK_CONST (0x902AU)
349 /* Alias to prevent user code build issues */
350 #define TISCI_MSG_SA2UL_SET_DKEK_CONST TISCI_MSG_CRYPTO_SET_DKEK_CONST
351 
353 #define TISCI_MSG_CRYPTO_GET_DKEK_CONST (0x902BU)
354 /* Alias to prevent user code build issues */
355 #define TISCI_MSG_SA2UL_GET_DKEK_CONST TISCI_MSG_CRYPTO_GET_DKEK_CONST
356 
358 #define TISCI_MSG_CRYPTO_AES_ENCRYPT (0x9040U)
359 /* Alias to prevent user code build issues */
360 #define TISCI_MSG_SA2UL_AES_ENCRYPT TISCI_MSG_CRYPTO_AES_ENCRYPT
361 
363 #define TISCI_MSG_CRYPTO_AES_DECRYPT (0x9041U)
364 /* Alias to prevent user code build issues */
365 #define TISCI_MSG_SA2UL_AES_DECRYPT TISCI_MSG_CRYPTO_AES_DECRYPT
366 
368 #define TISCI_MSG_DISABLE_JTAG_UNLOCK (0x9042U)
369 
371 #define TISCI_MSG_DISABLE_JTAG_UNLOCK_CHECK (0x9043U)
372 
374 #define TISCI_MSG_SET_OTP_BOOT_MODE (0x9044U)
375 
376 /* Keywriter lite TISCI message to write keys from a buffer */
377 #define TISCI_MSG_KEY_WRITER_LITE (0x9045U)
378 
379 /* Message to get the programmed key writer type */
380 #define TISCI_MSG_GET_KEY_WRITER_TYPE (0x9047U)
381 
382 /* Message to program the key writer type */
383 #define TISCI_MSG_SET_KEY_WRITER_TYPE (0x9048U)
384 
385 /******************************************************/
386 
387 /* Processor Control APIs */
388 
390 #define TISCI_MSG_PROC_REQUEST (0xC000U)
391 
392 #define TISCI_MSG_PROC_RELEASE (0xC001U)
393 
394 #define TISCI_MSG_PROC_HANDOVER (0xC005U)
395 
397 #define TISCI_MSG_PROC_SET_CONFIG (0xC100U)
398 
399 #define TISCI_MSG_PROC_SET_CONTROL (0xC101U)
400 
402 #define TISCI_MSG_PROC_GET_STATUS (0xC400U)
403 
405 #define TISCI_MSG_PROC_WAIT_STATUS (0xC401U)
406 
408 #define TISCI_MSG_PROC_AUTH_APPLY_FWLS (0xC402U)
409 
411 #define TISCI_MSG_PROC_AUTH_BOOT (0xC120U)
412 
414 #define TISCI_MSG_MCELF_PROC_AUTH_BOOT_INIT (0xC122U)
415 
417 #define TISCI_MSG_MCELF_PROC_AUTH_BOOT_UPDATE (0xC123U)
418 
423 #define TISCI_MSG_MCELF_PROC_AUTH_BOOT_FINISH (0xC124U)
424 
426 #define TISCI_MSG_CONFIGURE_CC_REGISTER (0xC125U)
427 
428 /* RM IDs */
429 
433 #define TISCI_MSG_RM_GET_RESOURCE_RANGE (0x1500U)
434 
437 #define TISCI_MSG_RM_IRQ_SET (0x1000U)
438 
441 #define TISCI_MSG_RM_IRQ_RELEASE (0x1001U)
442 /* Reserved ID not for (re)use */
443 #define TISCI_MSG_RM_RESERVED_1100 (0x1100U)
444 /* Reserved ID not for (re)use */
445 #define TISCI_MSG_RM_RESERVED_1101 (0x1101U)
446 /* Reserved ID not for (re)use */
447 #define TISCI_MSG_RM_RESERVED_1102 (0x1102U)
448 /* Reserved ID not for (re)use */
449 #define TISCI_MSG_RM_RESERVED_1103 (0x1103U)
450 
453 #define TISCI_MSG_RM_RING_CFG (0x1110U)
454 /* Reserved ID not for (re)use */
455 #define TISCI_MSG_RM_RESERVED_1111 (0x1111U)
456 
459 #define TISCI_MSG_RM_RING_MON_CFG (0x1120U)
460 /* Reserved ID not for (re)use */
461 #define TISCI_MSG_RM_RESERVED_1200 (0x1200U)
462 /* Reserved ID not for (re)use */
463 #define TISCI_MSG_RM_RESERVED_1201 (0x1201U)
464 
467 #define TISCI_MSG_RM_UDMAP_TX_CH_CFG (0x1205U)
468 /* Reserved ID not for (re)use */
469 #define TISCI_MSG_RM_RESERVED_1206 (0x1206U)
470 /* Reserved ID not for (re)use */
471 #define TISCI_MSG_RM_RESERVED_1210 (0x1210U)
472 /* Reserved ID not for (re)use */
473 #define TISCI_MSG_RM_RESERVED_1211 (0x1211U)
474 
477 #define TISCI_MSG_RM_UDMAP_RX_CH_CFG (0x1215U)
478 #define TISCI_MSG_RM_RESERVED_1216 (0x1216U)
479 /* Reserved ID not for (re)use */
480 #define TISCI_MSG_RM_RESERVED_1220 (0x1220U)
481 /* Reserved ID not for (re)use */
482 #define TISCI_MSG_RM_RESERVED_1221 (0x1221U)
483 
486 #define TISCI_MSG_RM_UDMAP_FLOW_CFG (0x1230U)
487 
491 #define TISCI_MSG_RM_UDMAP_FLOW_SIZE_THRESH_CFG (0x1231U)
492 /* Reserved ID not for (re)use */
493 #define TISCI_MSG_RM_RESERVED_1232 (0x1232U)
494 /* Reserved ID not for (re)use */
495 #define TISCI_MSG_RM_RESERVED_1233 (0x1233U)
496 
499 #define TISCI_MSG_RM_UDMAP_FLOW_DELEGATE (0x1234U)
500 
504 #define TISCI_MSG_RM_UDMAP_GCFG_CFG (0x1240U)
505 /* Reserved ID not for (re)use */
506 #define TISCI_MSG_RM_RESERVED_1241 (0x1241U)
507 
510 #define TISCI_MSG_RM_PSIL_PAIR (0x1280U)
511 
514 #define TISCI_MSG_RM_PSIL_UNPAIR (0x1281U)
515 
518 #define TISCI_MSG_RM_PSIL_READ (0x1282U)
519 
522 #define TISCI_MSG_RM_PSIL_WRITE (0x1283U)
523 
527 #define TISCI_MSG_RM_PROXY_CFG (0x1300U)
528 
529 
530 #ifdef __cplusplus
531 }
532 #endif
533 
534 #endif /* TISCI_PROTOCOL_H */
535 
tisci_sec_header
Header that prefixes all TISCI messages sent via secure transport.
Definition: tisci_protocol.h:126
tisci_header::type
uint16_t type
Definition: tisci_protocol.h:98
tisci_header
Header that prefixes all TISCI messages.
Definition: tisci_protocol.h:97
tisci_sec_header::integ_check
uint16_t integ_check
Definition: tisci_protocol.h:127
tisci_header::flags
uint32_t flags
Definition: tisci_protocol.h:101
tisci_header::seq
uint8_t seq
Definition: tisci_protocol.h:100
tisci_sec_header::rsvd
uint16_t rsvd
Definition: tisci_protocol.h:128
tisci_header::host
uint8_t host
Definition: tisci_protocol.h:99