rpc.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2017-2018 NXP
  4. *
  5. */
  6. #ifndef SC_RPC_H
  7. #define SC_RPC_H
  8. /* Note: Check SCFW API Released DOC before you want to modify something */
  9. #define SC_RPC_VERSION 1U
  10. #define SC_RPC_MAX_MSG 8U
  11. #define RPC_VER(MSG) ((MSG)->version)
  12. #define RPC_SIZE(MSG) ((MSG)->size)
  13. #define RPC_SVC(MSG) ((MSG)->svc)
  14. #define RPC_FUNC(MSG) ((MSG)->func)
  15. #define RPC_R8(MSG) ((MSG)->func)
  16. #define RPC_I32(MSG, IDX) ((MSG)->DATA.i32[(IDX) / 4U])
  17. #define RPC_I16(MSG, IDX) ((MSG)->DATA.i16[(IDX) / 2U])
  18. #define RPC_I8(MSG, IDX) ((MSG)->DATA.i8[(IDX)])
  19. #define RPC_U32(MSG, IDX) ((MSG)->DATA.u32[(IDX) / 4U])
  20. #define RPC_U16(MSG, IDX) ((MSG)->DATA.u16[(IDX) / 2U])
  21. #define RPC_U8(MSG, IDX) ((MSG)->DATA.u8[(IDX)])
  22. #define SC_RPC_SVC_UNKNOWN 0U
  23. #define SC_RPC_SVC_RETURN 1U
  24. #define SC_RPC_SVC_PM 2U
  25. #define SC_RPC_SVC_RM 3U
  26. #define SC_RPC_SVC_TIMER 5U
  27. #define SC_RPC_SVC_PAD 6U
  28. #define SC_RPC_SVC_MISC 7U
  29. #define SC_RPC_SVC_IRQ 8U
  30. #define SC_RPC_SVC_ABORT 9U
  31. /* Types */
  32. struct sc_rpc_msg_s {
  33. u8 version;
  34. u8 size;
  35. u8 svc;
  36. u8 func;
  37. union {
  38. s32 i32[(SC_RPC_MAX_MSG - 1U)];
  39. s16 i16[(SC_RPC_MAX_MSG - 1U) * 2U];
  40. s8 i8[(SC_RPC_MAX_MSG - 1U) * 4U];
  41. u32 u32[(SC_RPC_MAX_MSG - 1U)];
  42. u16 u16[(SC_RPC_MAX_MSG - 1U) * 2U];
  43. u8 u8[(SC_RPC_MAX_MSG - 1U) * 4U];
  44. } DATA;
  45. };
  46. /* PM RPC */
  47. #define PM_FUNC_UNKNOWN 0
  48. #define PM_FUNC_SET_SYS_POWER_MODE 19U
  49. #define PM_FUNC_SET_PARTITION_POWER_MODE 1U
  50. #define PM_FUNC_GET_SYS_POWER_MODE 2U
  51. #define PM_FUNC_SET_RESOURCE_POWER_MODE 3U
  52. #define PM_FUNC_GET_RESOURCE_POWER_MODE 4U
  53. #define PM_FUNC_REQ_LOW_POWER_MODE 16U
  54. #define PM_FUNC_REQ_CPU_LOW_POWER_MODE 20U
  55. #define PM_FUNC_SET_CPU_RESUME_ADDR 17U
  56. #define PM_FUNC_SET_CPU_RESUME 21U
  57. #define PM_FUNC_REQ_SYS_IF_POWER_MODE 18U
  58. #define PM_FUNC_SET_CLOCK_RATE 5U
  59. #define PM_FUNC_GET_CLOCK_RATE 6U
  60. #define PM_FUNC_CLOCK_ENABLE 7U
  61. #define PM_FUNC_SET_CLOCK_PARENT 14U
  62. #define PM_FUNC_GET_CLOCK_PARENT 15U
  63. #define PM_FUNC_RESET 13U
  64. #define PM_FUNC_RESET_REASON 10U
  65. #define PM_FUNC_BOOT 8U
  66. #define PM_FUNC_REBOOT 9U
  67. #define PM_FUNC_REBOOT_PARTITION 12U
  68. #define PM_FUNC_CPU_START 11U
  69. /* MISC RPC */
  70. #define MISC_FUNC_UNKNOWN 0
  71. #define MISC_FUNC_SET_CONTROL 1U
  72. #define MISC_FUNC_GET_CONTROL 2U
  73. #define MISC_FUNC_SET_MAX_DMA_GROUP 4U
  74. #define MISC_FUNC_SET_DMA_GROUP 5U
  75. #define MISC_FUNC_SECO_IMAGE_LOAD 8U
  76. #define MISC_FUNC_SECO_AUTHENTICATE 9U
  77. #define MISC_FUNC_SECO_FUSE_WRITE 20U
  78. #define MISC_FUNC_SECO_ENABLE_DEBUG 21U
  79. #define MISC_FUNC_SECO_FORWARD_LIFECYCLE 22U
  80. #define MISC_FUNC_SECO_RETURN_LIFECYCLE 23U
  81. #define MISC_FUNC_SECO_BUILD_INFO 24U
  82. #define MISC_FUNC_DEBUG_OUT 10U
  83. #define MISC_FUNC_WAVEFORM_CAPTURE 6U
  84. #define MISC_FUNC_BUILD_INFO 15U
  85. #define MISC_FUNC_UNIQUE_ID 19U
  86. #define MISC_FUNC_SET_ARI 3U
  87. #define MISC_FUNC_BOOT_STATUS 7U
  88. #define MISC_FUNC_BOOT_DONE 14U
  89. #define MISC_FUNC_OTP_FUSE_READ 11U
  90. #define MISC_FUNC_OTP_FUSE_WRITE 17U
  91. #define MISC_FUNC_SET_TEMP 12U
  92. #define MISC_FUNC_GET_TEMP 13U
  93. #define MISC_FUNC_GET_BOOT_DEV 16U
  94. #define MISC_FUNC_GET_BUTTON_STATUS 18U
  95. /* PAD RPC */
  96. #define PAD_FUNC_UNKNOWN 0
  97. #define PAD_FUNC_SET_MUX 1U
  98. #define PAD_FUNC_GET_MUX 6U
  99. #define PAD_FUNC_SET_GP 2U
  100. #define PAD_FUNC_GET_GP 7U
  101. #define PAD_FUNC_SET_WAKEUP 4U
  102. #define PAD_FUNC_GET_WAKEUP 9U
  103. #define PAD_FUNC_SET_ALL 5U
  104. #define PAD_FUNC_GET_ALL 10U
  105. #define PAD_FUNC_SET 15U
  106. #define PAD_FUNC_GET 16U
  107. #define PAD_FUNC_SET_GP_28FDSOI 11U
  108. #define PAD_FUNC_GET_GP_28FDSOI 12U
  109. #define PAD_FUNC_SET_GP_28FDSOI_HSIC 3U
  110. #define PAD_FUNC_GET_GP_28FDSOI_HSIC 8U
  111. #define PAD_FUNC_SET_GP_28FDSOI_COMP 13U
  112. #define PAD_FUNC_GET_GP_28FDSOI_COMP 14U
  113. /* RM RPC */
  114. #define RM_FUNC_UNKNOWN 0
  115. #define RM_FUNC_PARTITION_ALLOC 1U
  116. #define RM_FUNC_SET_CONFIDENTIAL 31U
  117. #define RM_FUNC_PARTITION_FREE 2U
  118. #define RM_FUNC_GET_DID 26U
  119. #define RM_FUNC_PARTITION_STATIC 3U
  120. #define RM_FUNC_PARTITION_LOCK 4U
  121. #define RM_FUNC_GET_PARTITION 5U
  122. #define RM_FUNC_SET_PARENT 6U
  123. #define RM_FUNC_MOVE_ALL 7U
  124. #define RM_FUNC_ASSIGN_RESOURCE 8U
  125. #define RM_FUNC_SET_RESOURCE_MOVABLE 9U
  126. #define RM_FUNC_SET_SUBSYS_RSRC_MOVABLE 28U
  127. #define RM_FUNC_SET_MASTER_ATTRIBUTES 10U
  128. #define RM_FUNC_SET_MASTER_SID 11U
  129. #define RM_FUNC_SET_PERIPHERAL_PERMISSIONS 12U
  130. #define RM_FUNC_IS_RESOURCE_OWNED 13U
  131. #define RM_FUNC_IS_RESOURCE_MASTER 14U
  132. #define RM_FUNC_IS_RESOURCE_PERIPHERAL 15U
  133. #define RM_FUNC_GET_RESOURCE_INFO 16U
  134. #define RM_FUNC_MEMREG_ALLOC 17U
  135. #define RM_FUNC_MEMREG_SPLIT 29U
  136. #define RM_FUNC_MEMREG_FREE 18U
  137. #define RM_FUNC_FIND_MEMREG 30U
  138. #define RM_FUNC_ASSIGN_MEMREG 19U
  139. #define RM_FUNC_SET_MEMREG_PERMISSIONS 20U
  140. #define RM_FUNC_IS_MEMREG_OWNED 21U
  141. #define RM_FUNC_GET_MEMREG_INFO 22U
  142. #define RM_FUNC_ASSIGN_PAD 23U
  143. #define RM_FUNC_SET_PAD_MOVABLE 24U
  144. #define RM_FUNC_IS_PAD_OWNED 25U
  145. #define RM_FUNC_DUMP 27U
  146. #endif /* SC_RPC_H */