xref: /optee_os/ta/remoteproc/include/ta_remoteproc.h (revision 7749dda24cf2b1f0a04d1de529cde03b6ca79867)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (C) 2023, STMicroelectronics
4  */
5 
6 #ifndef TA_REMOTEPROC_H
7 #define TA_REMOTEPROC_H
8 
9 /*
10  * This UUID is generated with uuidgen
11  * the ITU-T UUID generator at http://www.itu.int/ITU-T/asn1/uuid.html
12  */
13 #define TA_REMOTEPROC_UUID { 0x80a4c275, 0x0a47, 0x4905, \
14 			     { 0x82, 0x85, 0x14, 0x86, 0xa9, 0x77, 0x1a, 0x08} }
15 
16 /* The command IDs implemented in this TA */
17 
18 /*
19  * Authentication of the firmware and load in the remote processor memory.
20  *
21  * [in]  params[0].value.a:	Unique 32bit remote processor identifier
22  * [in]  params[1].memref:	buffer containing the image of the firmware
23  */
24 #define TA_RPROC_CMD_LOAD_FW		1
25 
26 /*
27  * Start the remote processor.
28  *
29  * [in]  params[0].value.a:	Unique 32bit remote processor identifier
30  */
31 #define TA_RPROC_CMD_START_FW		2
32 
33 /*
34  * Stop the remote processor.
35  *
36  * [in]  params[0].value.a:	Unique 32bit remote processor identifier
37  */
38 #define TA_RPROC_CMD_STOP_FW		3
39 
40 /*
41  * Return the physical address of the resource table, or 0 if not found
42  * No check is done to verify that the address returned is accessible by the
43  * non-secure world. If the resource table is loaded in a protected memory,
44  * then accesses from non-secure world will likely fail.
45  *
46  * [in]  params[0].value.a:	Unique 32bit remote processor identifier
47  * [out] params[1].value.a:	32bit LSB resource table memory address
48  * [out] params[1].value.b:	32bit MSB resource table memory address
49  * [out] params[2].value.a:	32bit LSB resource table memory size
50  * [out] params[2].value.b:	32bit MSB resource table memory size
51  */
52 #define TA_RPROC_CMD_GET_RSC_TABLE	4
53 
54 /*
55  * Get remote processor firmware core dump. If found, return either
56  * TEE_SUCCESS on successful completion or TEE_ERROR_SHORT_BUFFER if output
57  * buffer is too short to store the core dump.
58  *
59  * [in]  params[0].value.a:	Unique 32bit remote processor identifier
60  * [out] params[1].memref:	Core dump, if found
61  */
62 #define TA_RPROC_CMD_GET_COREDUMP	5
63 
64 /*
65  * Release remote processor firmware images and associated resources.
66  * This command should be used in case an error occurs between the loading of
67  * the firmware images (TA_RPROC_CMD_LOAD_FW) and the starting of the remote
68  * processor (TA_RPROC_CMD_START_FW) or after stopping the remote processor
69  * to release associated resources (TA_RPROC_CMD_STOP_FW).
70  *
71  * [in]  params[0].value.a: Unique 32-bit remote processor identifier
72  */
73 #define TA_RPROC_CMD_RELEASE_FW		6
74 #endif /*TA_REMOTEPROC_H*/
75