optee_msg_supplicant.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. /* SPDX-License-Identifier: BSD-2-Clause */
  2. /*
  3. * Copyright (c) 2016-2018, Linaro Limited
  4. */
  5. #ifndef __OPTEE_MSG_SUPPLICANT_H
  6. #define __OPTEE_MSG_SUPPLICANT_H
  7. /*
  8. * This file is based on
  9. * https://github.com/OP-TEE/optee_os/blob/master/core/include/optee_msg_supplicant.h
  10. * and may need to be updated when introducing new features.
  11. */
  12. /*
  13. * Load a TA into memory
  14. */
  15. #define OPTEE_MSG_RPC_CMD_LOAD_TA 0
  16. /*
  17. * Replay Protected Memory Block access
  18. */
  19. #define OPTEE_MSG_RPC_CMD_RPMB 1
  20. /*
  21. * File system access
  22. */
  23. #define OPTEE_MSG_RPC_CMD_FS 2
  24. /*
  25. * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_FS and first
  26. * parameter has the attribute OPTEE_MSG_ATTR_TYPE_VALUE_INPUT.
  27. */
  28. /*
  29. * Open a file
  30. *
  31. * [in] param[0].u.value.a OPTEE_MRF_OPEN
  32. * [in] param[1].u.tmem a string holding the file name
  33. * [out] param[2].u.value.a file descriptor of open file
  34. */
  35. #define OPTEE_MRF_OPEN 0
  36. /*
  37. * Create a file
  38. *
  39. * [in] param[0].u.value.a OPTEE_MRF_CREATE
  40. * [in] param[1].u.tmem a string holding the file name
  41. * [out] param[2].u.value.a file descriptor of open file
  42. */
  43. #define OPTEE_MRF_CREATE 1
  44. /*
  45. * Close a file
  46. *
  47. * [in] param[0].u.value.a OPTEE_MRF_CLOSE
  48. * [in] param[0].u.value.b file descriptor of open file.
  49. */
  50. #define OPTEE_MRF_CLOSE 2
  51. /*
  52. * Read from a file
  53. *
  54. * [in] param[0].u.value.a OPTEE_MRF_READ
  55. * [in] param[0].u.value.b file descriptor of open file
  56. * [in] param[0].u.value.c offset into file
  57. * [out] param[1].u.tmem buffer to hold returned data
  58. */
  59. #define OPTEE_MRF_READ 3
  60. /*
  61. * Write to a file
  62. *
  63. * [in] param[0].u.value.a OPTEE_MRF_WRITE
  64. * [in] param[0].u.value.b file descriptor of open file
  65. * [in] param[0].u.value.c offset into file
  66. * [in] param[1].u.tmem buffer holding data to be written
  67. */
  68. #define OPTEE_MRF_WRITE 4
  69. /*
  70. * Truncate a file
  71. *
  72. * [in] param[0].u.value.a OPTEE_MRF_TRUNCATE
  73. * [in] param[0].u.value.b file descriptor of open file
  74. * [in] param[0].u.value.c length of file.
  75. */
  76. #define OPTEE_MRF_TRUNCATE 5
  77. /*
  78. * Remove a file
  79. *
  80. * [in] param[0].u.value.a OPTEE_MRF_REMOVE
  81. * [in] param[1].u.tmem a string holding the file name
  82. */
  83. #define OPTEE_MRF_REMOVE 6
  84. /*
  85. * Rename a file
  86. *
  87. * [in] param[0].u.value.a OPTEE_MRF_RENAME
  88. * [in] param[0].u.value.b true if existing target should be removed
  89. * [in] param[1].u.tmem a string holding the old file name
  90. * [in] param[2].u.tmem a string holding the new file name
  91. */
  92. #define OPTEE_MRF_RENAME 7
  93. /*
  94. * Opens a directory for file listing
  95. *
  96. * [in] param[0].u.value.a OPTEE_MRF_OPENDIR
  97. * [in] param[1].u.tmem a string holding the name of the directory
  98. * [out] param[2].u.value.a handle to open directory
  99. */
  100. #define OPTEE_MRF_OPENDIR 8
  101. /*
  102. * Closes a directory handle
  103. *
  104. * [in] param[0].u.value.a OPTEE_MRF_CLOSEDIR
  105. * [in] param[0].u.value.b handle to open directory
  106. */
  107. #define OPTEE_MRF_CLOSEDIR 9
  108. /*
  109. * Read next file name of directory
  110. *
  111. *
  112. * [in] param[0].u.value.a OPTEE_MRF_READDIR
  113. * [in] param[0].u.value.b handle to open directory
  114. * [out] param[1].u.tmem a string holding the file name
  115. */
  116. #define OPTEE_MRF_READDIR 10
  117. /*
  118. * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_FS
  119. */
  120. /*
  121. * Command Ids 3, 4 and 5 of OPTEE_MSG_RPC_CMD_xxx macros are reserved for use
  122. * by the kernel driver.
  123. */
  124. /*
  125. * Shared memory allocation
  126. */
  127. #define OPTEE_MSG_RPC_CMD_SHM_ALLOC 6
  128. #define OPTEE_MSG_RPC_CMD_SHM_FREE 7
  129. /*
  130. * Was OPTEE_MSG_RPC_CMD_SQL_FS, which isn't supported any longer
  131. */
  132. #define OPTEE_MSG_RPC_CMD_SQL_FS_RESERVED 8
  133. /*
  134. * GPROF support management commands
  135. */
  136. #define OPTEE_MSG_RPC_CMD_GPROF 9
  137. /*
  138. * Socket commands
  139. */
  140. #define OPTEE_MSG_RPC_CMD_SOCKET 10
  141. /*
  142. * Define protocol for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
  143. */
  144. #define OPTEE_MRC_SOCKET_TIMEOUT_NONBLOCKING 0
  145. #define OPTEE_MRC_SOCKET_TIMEOUT_BLOCKING 0xffffffff
  146. /*
  147. * Open socket
  148. *
  149. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_OPEN
  150. * [in] param[0].u.value.b TA instance id
  151. * [in] param[1].u.value.a server port number
  152. * [in] param[1].u.value.b protocol, TEE_ISOCKET_PROTOCOLID_*
  153. * [in] param[1].u.value.c ip version TEE_IP_VERSION_* from tee_ipsocket.h
  154. * [in] param[2].u.tmem server address
  155. * [out] param[3].u.value.a socket handle (32-bit)
  156. */
  157. #define OPTEE_MRC_SOCKET_OPEN 0
  158. /*
  159. * Close socket
  160. *
  161. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE
  162. * [in] param[0].u.value.b TA instance id
  163. * [in] param[0].u.value.c socket handle
  164. */
  165. #define OPTEE_MRC_SOCKET_CLOSE 1
  166. /*
  167. * Close all sockets
  168. *
  169. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_CLOSE_ALL
  170. * [in] param[0].u.value.b TA instance id
  171. */
  172. #define OPTEE_MRC_SOCKET_CLOSE_ALL 2
  173. /*
  174. * Send data on socket
  175. *
  176. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_SEND
  177. * [in] param[0].u.value.b TA instance id
  178. * [in] param[0].u.value.c socket handle
  179. * [in] param[1].u.tmem buffer to transmit
  180. * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
  181. * [out] param[2].u.value.b number of transmitted bytes
  182. */
  183. #define OPTEE_MRC_SOCKET_SEND 3
  184. /*
  185. * Receive data on socket
  186. *
  187. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_RECV
  188. * [in] param[0].u.value.b TA instance id
  189. * [in] param[0].u.value.c socket handle
  190. * [out] param[1].u.tmem buffer to receive
  191. * [in] param[2].u.value.a timeout ms or OPTEE_MRC_SOCKET_TIMEOUT_*
  192. */
  193. #define OPTEE_MRC_SOCKET_RECV 4
  194. /*
  195. * Perform IOCTL on socket
  196. *
  197. * [in] param[0].u.value.a OPTEE_MRC_SOCKET_IOCTL
  198. * [in] param[0].u.value.b TA instance id
  199. * [in] param[0].u.value.c socket handle
  200. * [in/out] param[1].u.tmem buffer
  201. * [in] param[2].u.value.a ioctl command
  202. */
  203. #define OPTEE_MRC_SOCKET_IOCTL 5
  204. /*
  205. * End of definitions for messages with .cmd == OPTEE_MSG_RPC_CMD_SOCKET
  206. */
  207. #endif /* __OPTEE_MSG_SUPPLICANT_H */