hwkmregs.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #ifndef _QTI_HARDWARE_KEY_MANAGER_REGS_H_
  6. #define _QTI_HARDWARE_KEY_MANAGER_REGS_H_
  7. #define HWKM_VERSION_STEP_REV_MASK 0xFFFF
  8. #define HWKM_VERSION_STEP_REV 0 /* bit 15-0 */
  9. #define HWKM_VERSION_MAJOR_REV_MASK 0xFF000000
  10. #define HWKM_VERSION_MAJOR_REV 24 /* bit 31-24 */
  11. #define HWKM_VERSION_MINOR_REV_MASK 0xFF0000
  12. #define HWKM_VERSION_MINOR_REV 16 /* bit 23-16 */
  13. /* QTI HWKM ICE slave config and status registers */
  14. #define QTI_HWKM_ICE_RG_TZ_KM_CTL 0x1000
  15. #define QTI_HWKM_ICE_RG_TZ_KM_STATUS 0x1004
  16. #define QTI_HWKM_ICE_RG_TZ_KM_STATUS_IRQ_MASK 0x1008
  17. #define QTI_HWKM_ICE_RG_TZ_KM_BOOT_STAGE_OTP 0x100C
  18. #define QTI_HWKM_ICE_RG_TZ_KM_DEBUG_CTL 0x1010
  19. #define QTI_HWKM_ICE_RG_TZ_KM_DEBUG_WRITE 0x1014
  20. #define QTI_HWKM_ICE_RG_TZ_KM_DEBUG_READ 0x1018
  21. #define QTI_HWKM_ICE_RG_TZ_TPKEY_RECEIVE_CTL 0x101C
  22. #define QTI_HWKM_ICE_RG_TZ_TPKEY_RECEIVE_STATUS 0x1020
  23. #define QTI_HWKM_ICE_RG_TZ_KM_COMMON_IRQ_ROUTING 0x1024
  24. /* QTI HWKM ICE slave registers from SWI */
  25. /* QTI HWKM ICE slave shared registers */
  26. #define QTI_HWKM_ICE_RG_IPCAT_VERSION 0x0000
  27. #define QTI_HWKM_ICE_RG_KEY_POLICY_VERSION 0x0004
  28. #define QTI_HWKM_ICE_RG_SHARED_STATUS 0x0008
  29. #define QTI_HWKM_ICE_RG_KEYTABLE_SIZE 0x000C
  30. /* QTI HWKM ICE slave register bank 0 */
  31. #define QTI_HWKM_ICE_RG_BANK0_BANKN_CTL 0x2000
  32. #define QTI_HWKM_ICE_RG_BANK0_BANKN_STATUS 0x2004
  33. #define QTI_HWKM_ICE_RG_BANK0_BANKN_IRQ_STATUS 0x2008
  34. #define QTI_HWKM_ICE_RG_BANK0_BANKN_IRQ_MASK 0x200C
  35. #define QTI_HWKM_ICE_RG_BANK0_BANKN_ESR 0x2010
  36. #define QTI_HWKM_ICE_RG_BANK0_BANKN_ESR_IRQ_MASK 0x2014
  37. #define QTI_HWKM_ICE_RG_BANK0_BANKN_ESYNR 0x2018
  38. #define QTI_HWKM_ICE_RG_BANK0_CMD_0 0x201C
  39. #define QTI_HWKM_ICE_RG_BANK0_CMD_1 0x2020
  40. #define QTI_HWKM_ICE_RG_BANK0_CMD_2 0x2024
  41. #define QTI_HWKM_ICE_RG_BANK0_CMD_3 0x2028
  42. #define QTI_HWKM_ICE_RG_BANK0_CMD_4 0x202C
  43. #define QTI_HWKM_ICE_RG_BANK0_CMD_5 0x2030
  44. #define QTI_HWKM_ICE_RG_BANK0_CMD_6 0x2034
  45. #define QTI_HWKM_ICE_RG_BANK0_CMD_7 0x2038
  46. #define QTI_HWKM_ICE_RG_BANK0_CMD_8 0x203C
  47. #define QTI_HWKM_ICE_RG_BANK0_CMD_9 0x2040
  48. #define QTI_HWKM_ICE_RG_BANK0_CMD_10 0x2044
  49. #define QTI_HWKM_ICE_RG_BANK0_CMD_11 0x2048
  50. #define QTI_HWKM_ICE_RG_BANK0_CMD_12 0x204C
  51. #define QTI_HWKM_ICE_RG_BANK0_CMD_13 0x2050
  52. #define QTI_HWKM_ICE_RG_BANK0_CMD_14 0x2054
  53. #define QTI_HWKM_ICE_RG_BANK0_CMD_15 0x2058
  54. #define QTI_HWKM_ICE_RG_BANK0_RSP_0 0x205C
  55. #define QTI_HWKM_ICE_RG_BANK0_RSP_1 0x2060
  56. #define QTI_HWKM_ICE_RG_BANK0_RSP_2 0x2064
  57. #define QTI_HWKM_ICE_RG_BANK0_RSP_3 0x2068
  58. #define QTI_HWKM_ICE_RG_BANK0_RSP_4 0x206C
  59. #define QTI_HWKM_ICE_RG_BANK0_RSP_5 0x2070
  60. #define QTI_HWKM_ICE_RG_BANK0_RSP_6 0x2074
  61. #define QTI_HWKM_ICE_RG_BANK0_RSP_7 0x2078
  62. #define QTI_HWKM_ICE_RG_BANK0_RSP_8 0x207C
  63. #define QTI_HWKM_ICE_RG_BANK0_RSP_9 0x2080
  64. #define QTI_HWKM_ICE_RG_BANK0_RSP_10 0x2084
  65. #define QTI_HWKM_ICE_RG_BANK0_RSP_11 0x2088
  66. #define QTI_HWKM_ICE_RG_BANK0_RSP_12 0x208C
  67. #define QTI_HWKM_ICE_RG_BANK0_RSP_13 0x2090
  68. #define QTI_HWKM_ICE_RG_BANK0_RSP_14 0x2094
  69. #define QTI_HWKM_ICE_RG_BANK0_RSP_15 0x2098
  70. #define QTI_HWKM_ICE_RG_BANK0_BANKN_IRQ_ROUTING 0x209C
  71. #define QTI_HWKM_ICE_RG_BANK0_BANKN_BBAC_0 0x20A0
  72. #define QTI_HWKM_ICE_RG_BANK0_BANKN_BBAC_1 0x20A4
  73. #define QTI_HWKM_ICE_RG_BANK0_BANKN_BBAC_2 0x20A8
  74. #define QTI_HWKM_ICE_RG_BANK0_BANKN_BBAC_3 0x20AC
  75. #define QTI_HWKM_ICE_RG_BANK0_BANKN_BBAC_4 0x20B0
  76. /* QTI HWKM access control registers for Bank 2 */
  77. #define QTI_HWKM_ICE_RG_BANK0_AC_BANKN_BBAC_0 0x5000
  78. #define QTI_HWKM_ICE_RG_BANK0_AC_BANKN_BBAC_1 0x5004
  79. #define QTI_HWKM_ICE_RG_BANK0_AC_BANKN_BBAC_2 0x5008
  80. #define QTI_HWKM_ICE_RG_BANK0_AC_BANKN_BBAC_3 0x500C
  81. #define QTI_HWKM_ICE_RG_BANK0_AC_BANKN_BBAC_4 0x5010
  82. #if IS_ENABLED(CONFIG_QTI_HW_KEY_MANAGER_V1)
  83. /* QTI HWKM master register bank 2 */
  84. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_CTL 0x4000
  85. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_STATUS 0x4004
  86. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_IRQ_STATUS 0x4008
  87. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_IRQ_MASK 0x400C
  88. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_ESR 0x4010
  89. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_ESR_IRQ_MASK 0x4014
  90. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_ESYNR 0x4018
  91. #define QTI_HWKM_MASTER_RG_BANK2_CMD_0 0x401C
  92. #define QTI_HWKM_MASTER_RG_BANK2_CMD_1 0x4020
  93. #define QTI_HWKM_MASTER_RG_BANK2_CMD_2 0x4024
  94. #define QTI_HWKM_MASTER_RG_BANK2_CMD_3 0x4028
  95. #define QTI_HWKM_MASTER_RG_BANK2_CMD_4 0x402C
  96. #define QTI_HWKM_MASTER_RG_BANK2_CMD_5 0x4030
  97. #define QTI_HWKM_MASTER_RG_BANK2_CMD_6 0x4034
  98. #define QTI_HWKM_MASTER_RG_BANK2_CMD_7 0x4038
  99. #define QTI_HWKM_MASTER_RG_BANK2_CMD_8 0x403C
  100. #define QTI_HWKM_MASTER_RG_BANK2_CMD_9 0x4040
  101. #define QTI_HWKM_MASTER_RG_BANK2_CMD_10 0x4044
  102. #define QTI_HWKM_MASTER_RG_BANK2_CMD_11 0x4048
  103. #define QTI_HWKM_MASTER_RG_BANK2_CMD_12 0x404C
  104. #define QTI_HWKM_MASTER_RG_BANK2_CMD_13 0x4050
  105. #define QTI_HWKM_MASTER_RG_BANK2_CMD_14 0x4054
  106. #define QTI_HWKM_MASTER_RG_BANK2_CMD_15 0x4058
  107. #define QTI_HWKM_MASTER_RG_BANK2_RSP_0 0x405C
  108. #define QTI_HWKM_MASTER_RG_BANK2_RSP_1 0x4060
  109. #define QTI_HWKM_MASTER_RG_BANK2_RSP_2 0x4064
  110. #define QTI_HWKM_MASTER_RG_BANK2_RSP_3 0x4068
  111. #define QTI_HWKM_MASTER_RG_BANK2_RSP_4 0x406C
  112. #define QTI_HWKM_MASTER_RG_BANK2_RSP_5 0x4070
  113. #define QTI_HWKM_MASTER_RG_BANK2_RSP_6 0x4074
  114. #define QTI_HWKM_MASTER_RG_BANK2_RSP_7 0x4078
  115. #define QTI_HWKM_MASTER_RG_BANK2_RSP_8 0x407C
  116. #define QTI_HWKM_MASTER_RG_BANK2_RSP_9 0x4080
  117. #define QTI_HWKM_MASTER_RG_BANK2_RSP_10 0x4084
  118. #define QTI_HWKM_MASTER_RG_BANK2_RSP_11 0x4088
  119. #define QTI_HWKM_MASTER_RG_BANK2_RSP_12 0x408C
  120. #define QTI_HWKM_MASTER_RG_BANK2_RSP_13 0x4090
  121. #define QTI_HWKM_MASTER_RG_BANK2_RSP_14 0x4094
  122. #define QTI_HWKM_MASTER_RG_BANK2_RSP_15 0x4098
  123. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_IRQ_ROUTING 0x409C
  124. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_BBAC_0 0x40A0
  125. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_BBAC_1 0x40A4
  126. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_BBAC_2 0x40A8
  127. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_BBAC_3 0x40AC
  128. #define QTI_HWKM_MASTER_RG_BANK2_BANKN_BBAC_4 0x40B0
  129. /* QTI HWKM access control registers for Bank 2 */
  130. #define QTI_HWKM_MASTER_RG_BANK2_AC_BANKN_BBAC_0 0x8000
  131. #define QTI_HWKM_MASTER_RG_BANK2_AC_BANKN_BBAC_1 0x8004
  132. #define QTI_HWKM_MASTER_RG_BANK2_AC_BANKN_BBAC_2 0x8008
  133. #define QTI_HWKM_MASTER_RG_BANK2_AC_BANKN_BBAC_3 0x800C
  134. #define QTI_HWKM_MASTER_RG_BANK2_AC_BANKN_BBAC_4 0x8010
  135. #endif
  136. /* QTI HWKM ICE slave config reg vals */
  137. /* HWKM_ICEMEM_SLAVE_ICE_KM_RG_TZ_KM_CTL */
  138. #define CRC_CHECK_EN 0
  139. #define KEYTABLE_HW_WR_ACCESS_EN 1
  140. #define KEYTABLE_HW_RD_ACCESS_EN 2
  141. #define BOOT_INIT0_DISABLE 3
  142. #define BOOT_INIT1_DISABLE 4
  143. #define ICE_LEGACY_MODE_EN_OTP 5
  144. /* HWKM_ICEMEM_SLAVE_ICE_KM_RG_TZ_KM_STATUS */
  145. #define KT_CLEAR_DONE 0
  146. #define BOOT_CMD_LIST0_DONE 1
  147. #define BOOT_CMD_LIST1_DONE 2
  148. #if IS_ENABLED(CONFIG_QTI_HW_KEY_MANAGER)
  149. #define LAST_ACTIVITY_BANK 3
  150. #define CRYPTO_LIB_BIST_ERROR 6
  151. #define CRYPTO_LIB_BIST_DONE 7
  152. #define BIST_ERROR 8
  153. #define BIST_DONE 9
  154. #define LAST_ACTIVITY_BANK_MASK 0x38
  155. #endif /* CONFIG_QTI_HW_KEY_MANAGER */
  156. #if IS_ENABLED(CONFIG_QTI_HW_KEY_MANAGER_V1)
  157. #define KEYTABLE_KEY_POLICY 3
  158. #define KEYTABLE_INTEGRITY_ERROR 4
  159. #define KEYTABLE_KEY_SLOT_ERROR 5
  160. #define KEYTABLE_KEY_SLOT_NOT_EVEN_ERROR 6
  161. #define KEYTABLE_KEY_SLOT_OUT_OF_RANGE 7
  162. #define KEYTABLE_KEY_SIZE_ERROR 8
  163. #define KEYTABLE_OPERATION_ERROR 9
  164. #define LAST_ACTIVITY_BANK 10
  165. #define CRYPTO_LIB_BIST_ERROR 13
  166. #define CRYPTO_LIB_BIST_DONE 14
  167. #define BIST_ERROR 15
  168. #define BIST_DONE 16
  169. #define LAST_ACTIVITY_BANK_MASK 0x1c00
  170. #endif /* CONFIG_QTI_HW_KEY_MANAGER_V1 */
  171. /* HWKM_ICEMEM_SLAVE_ICE_KM_RG_TZ_TPKEY_RECEIVE_CTL */
  172. #define TPKEY_EN 8
  173. /* QTI HWKM Bank status & control reg vals */
  174. /* HWKM_MASTER_CFG_KM_BANKN_CTL */
  175. #define CMD_ENABLE_BIT 0
  176. #define CMD_FIFO_CLEAR_BIT 1
  177. /* HWKM_MASTER_CFG_KM_BANKN_STATUS */
  178. #define CURRENT_CMD_REMAINING_LENGTH 0
  179. #define MOST_RECENT_OPCODE 5
  180. #define RSP_FIFO_AVAILABLE_DATA 9
  181. #define CMD_FIFO_AVAILABLE_SPACE 14
  182. #define ICE_LEGACY_MODE_BIT 19
  183. #define CMD_FIFO_AVAILABLE_SPACE_MASK 0x7c000
  184. #define RSP_FIFO_AVAILABLE_DATA_MASK 0x3e00
  185. #define MOST_RECENT_OPCODE_MASK 0x1e0
  186. #define CURRENT_CMD_REMAINING_LENGTH_MASK 0x1f
  187. /* HWKM_MASTER_CFG_KM_BANKN_IRQ_STATUS */
  188. #define ARB_GRAN_WINNER 0
  189. #define CMD_DONE_BIT 1
  190. #define RSP_FIFO_NOT_EMPTY 2
  191. #define RSP_FIFO_FULL 3
  192. #define RSP_FIFO_UNDERFLOW 4
  193. #define CMD_FIFO_UNDERFLOW 5
  194. #endif /* __QTI_HARDWARE_KEY_MANAGER_REGS_H_ */