teei_client.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef __TEEI_CLIENT_H_
  2. #define __TEEI_CLIENT_H_
  3. #define TEEI_CLIENT_FULL_PATH_DEV_NAME "/dev/teei_client"
  4. #define TEEI_CLIENT_DEV "teei_client"
  5. #define TEEI_CLIENT_IOC_MAGIC 0x775B777F /* "TEEI Client" */
  6. /** IOCTL request */
  7. /**
  8. * @brief Encode command structure
  9. */
  10. struct teei_client_encode_cmd {
  11. unsigned int len;
  12. unsigned int data;
  13. /* unsigned long data; */
  14. int offset;
  15. int flags;
  16. int param_type;
  17. int encode_id;/* 命令参数编码数据块索引 */
  18. /* int service_id; */
  19. int session_id;
  20. unsigned int cmd_id;
  21. int value_flag;
  22. int param_pos;
  23. int param_pos_type;
  24. int return_value;
  25. int return_origin;
  26. };
  27. struct TEEC_UUID {
  28. uint32_t timeLow;
  29. uint16_t timeMid;
  30. uint16_t timeHiAndVersion;
  31. uint8_t clockSeqAndNode[8];
  32. };
  33. /**
  34. * @brief Session details structure
  35. */
  36. struct ser_ses_id {
  37. /* int service_id; */
  38. int session_id;
  39. struct TEEC_UUID uuid;
  40. int return_value;
  41. int return_origin;
  42. int paramtype;
  43. int params[8];
  44. };
  45. /**
  46. * @brief Session details structure
  47. */
  48. struct user_ses_init {
  49. int session_id;
  50. };
  51. struct ctx_data {
  52. char name[255]; /* context name */
  53. int ctx_ret; /* context return */
  54. };
  55. /**
  56. * @brief Shared memory information for the session
  57. */
  58. struct teei_session_shared_mem_info {
  59. /* unsigned long service_id; */
  60. unsigned int session_id;
  61. u32 user_mem_addr;
  62. };
  63. /**
  64. * @brief Shared memory used for smc processing
  65. */
  66. struct teei_smc_cdata {
  67. int cmd_addr;
  68. int size;
  69. int valid_flag;
  70. int ret_val;
  71. };
  72. /* For general service */
  73. #define TEEI_CLIENT_IOCTL_SEND_CMD_REQ \
  74. _IOWR(TEEI_CLIENT_IOC_MAGIC, 3, struct teei_client_encode_cmd)
  75. #define TEEI_CLIENT_IOCTL_SES_OPEN_REQ \
  76. _IOW(TEEI_CLIENT_IOC_MAGIC, 4, struct ser_ses_id)
  77. #define TEEI_CLIENT_IOCTL_SES_CLOSE_REQ \
  78. _IOWR(TEEI_CLIENT_IOC_MAGIC, 5, struct ser_ses_id)
  79. #define TEEI_CLIENT_IOCTL_SHR_MEM_FREE_REQ \
  80. _IOWR(TEEI_CLIENT_IOC_MAGIC, 6, struct teei_session_shared_mem_info)
  81. #define TEEI_CLIENT_IOCTL_ENC_UINT32 \
  82. _IOWR(TEEI_CLIENT_IOC_MAGIC, 7, struct teei_client_encode_cmd)
  83. #define TEEI_CLIENT_IOCTL_ENC_ARRAY \
  84. _IOWR(TEEI_CLIENT_IOC_MAGIC, 8, struct teei_client_encode_cmd)
  85. #define TEEI_CLIENT_IOCTL_ENC_ARRAY_SPACE \
  86. _IOWR(TEEI_CLIENT_IOC_MAGIC, 9, struct teei_client_encode_cmd)
  87. #define TEEI_CLIENT_IOCTL_ENC_MEM_REF \
  88. _IOWR(TEEI_CLIENT_IOC_MAGIC, 10, struct teei_client_encode_cmd)
  89. #define TEEI_CLIENT_IOCTL_DEC_UINT32 \
  90. _IOWR(TEEI_CLIENT_IOC_MAGIC, 11, struct teei_client_encode_cmd)
  91. #define TEEI_CLIENT_IOCTL_DEC_ARRAY_SPACE \
  92. _IOWR(TEEI_CLIENT_IOC_MAGIC, 12, struct teei_client_encode_cmd)
  93. #define TEEI_CLIENT_IOCTL_OPERATION_RELEASE \
  94. _IOWR(TEEI_CLIENT_IOC_MAGIC, 13, struct teei_client_encode_cmd)
  95. #define TEEI_CLIENT_IOCTL_SHR_MEM_ALLOCATE_REQ \
  96. _IOWR(TEEI_CLIENT_IOC_MAGIC, 14, struct teei_session_shared_mem_info)
  97. #define TEEI_CLIENT_IOCTL_GET_DECODE_TYPE \
  98. _IOWR(TEEI_CLIENT_IOC_MAGIC, 15, struct teei_client_encode_cmd)
  99. /* add by lodovico */
  100. #define TEEI_CLIENT_IOCTL_INITCONTEXT_REQ \
  101. _IOW(TEEI_CLIENT_IOC_MAGIC, 16, struct ctx_data)
  102. #define TEEI_CLIENT_IOCTL_CLOSECONTEXT_REQ \
  103. _IOW(TEEI_CLIENT_IOC_MAGIC, 17, struct ctx_data)
  104. /* add end */
  105. #define TEEI_CLIENT_IOCTL_SES_INIT_REQ \
  106. _IOW(TEEI_CLIENT_IOC_MAGIC, 18, struct user_ses_init)
  107. #define TEEI_GET_TEEI_CONFIG_STAT \
  108. _IO(TEEI_CLIENT_IOC_MAGIC, 0x1001)
  109. #endif /* __TEEI_CLIENT_H_ */