gh_crypto.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. /*!
  2. *******************************************************************************
  3. **
  4. ** \file gh_crypto.h
  5. **
  6. ** \brief Cryptography Engine.
  7. **
  8. ** Copyright: 2012 - 2016 (C) GoKe Microelectronics
  9. **
  10. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  11. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  12. ** OMMISSIONS.
  13. **
  14. ** \note Do not modify this file as it is generated automatically.
  15. **
  16. ******************************************************************************/
  17. #ifndef _GH_CRYPTO_H
  18. #define _GH_CRYPTO_H
  19. #ifdef __LINUX__
  20. #include "reg4linux.h"
  21. #else
  22. #define FIO_ADDRESS(block,address) (address)
  23. #define FIO_MOFFSET(block,moffset) (moffset)
  24. #endif
  25. #ifndef __LINUX__
  26. #include "gtypes.h" /* global type definitions */
  27. #include "gh_lib_cfg.h" /* configuration */
  28. #endif
  29. #define GH_CRYPTO_ENABLE_DEBUG_PRINT 0
  30. #ifdef __LINUX__
  31. #define GH_CRYPTO_DEBUG_PRINT_FUNCTION printk
  32. #else
  33. #define GH_CRYPTO_DEBUG_PRINT_FUNCTION printf
  34. #endif
  35. #ifndef __LINUX__
  36. #if GH_CRYPTO_ENABLE_DEBUG_PRINT
  37. #include <stdio.h>
  38. #endif
  39. #endif
  40. /*----------------------------------------------------------------------------*/
  41. /* registers */
  42. /*----------------------------------------------------------------------------*/
  43. #define REG_CRYPTO_DES_KEY FIO_ADDRESS(CRYPTO,0x90014000) /* read/write */
  44. #define REG_CRYPTO_DES_INPUT FIO_ADDRESS(CRYPTO,0x90014008) /* read/write */
  45. #define REG_CRYPTO_DES_OPCODE FIO_ADDRESS(CRYPTO,0x90014010) /* read/write */
  46. #define REG_CRYPTO_DES_OUTPUT_RDY FIO_ADDRESS(CRYPTO,0x90014014) /* read */
  47. #define REG_CRYPTO_DES_OUTPUT FIO_ADDRESS(CRYPTO,0x90014018) /* read */
  48. #define REG_CRYPTO_DES_INTERRUPT FIO_ADDRESS(CRYPTO,0x90014020) /* read/write */
  49. #define REG_CRYPTO_AES_128_KEY FIO_ADDRESS(CRYPTO,0x90014024) /* read/write */
  50. #define REG_CRYPTO_AES_192_KEY FIO_ADDRESS(CRYPTO,0x90014034) /* read/write */
  51. #define REG_CRYPTO_AES_256_KEY FIO_ADDRESS(CRYPTO,0x9001404C) /* read/write */
  52. #define REG_CRYPTO_AES_INPUT FIO_ADDRESS(CRYPTO,0x9001406C) /* read/write */
  53. #define REG_CRYPTO_AES_OPCODE FIO_ADDRESS(CRYPTO,0x9001407C) /* read/write */
  54. #define REG_CRYPTO_AES_OUTPUT_RDY FIO_ADDRESS(CRYPTO,0x90014080) /* read */
  55. #define REG_CRYPTO_AES_OUTPUT FIO_ADDRESS(CRYPTO,0x90014084) /* read */
  56. #define REG_CRYPTO_AES_INTERRUPT FIO_ADDRESS(CRYPTO,0x90014094) /* read/write */
  57. #define REG_CRYPTO_EFUSE_BOOT_SW_DIS FIO_ADDRESS(CRYPTO,0x90014098) /* read/write */
  58. /*----------------------------------------------------------------------------*/
  59. /* bit group structures */
  60. /*----------------------------------------------------------------------------*/
  61. typedef union { /* CRYPTO_DES_Opcode */
  62. U32 all;
  63. struct {
  64. U32 mode : 1;
  65. U32 : 31;
  66. } bitc;
  67. } GH_CRYPTO_DES_OPCODE_S;
  68. typedef union { /* CRYPTO_DES_Output_Rdy */
  69. U32 all;
  70. struct {
  71. U32 rdy : 1;
  72. U32 : 31;
  73. } bitc;
  74. } GH_CRYPTO_DES_OUTPUT_RDY_S;
  75. typedef union { /* CRYPTO_DES_Interrupt */
  76. U32 all;
  77. struct {
  78. U32 en : 1;
  79. U32 : 31;
  80. } bitc;
  81. } GH_CRYPTO_DES_INTERRUPT_S;
  82. typedef union { /* CRYPTO_AES_Opcode */
  83. U32 all;
  84. struct {
  85. U32 mode : 1;
  86. U32 : 31;
  87. } bitc;
  88. } GH_CRYPTO_AES_OPCODE_S;
  89. typedef union { /* CRYPTO_AES_Output_Rdy */
  90. U32 all;
  91. struct {
  92. U32 rdy : 1;
  93. U32 : 31;
  94. } bitc;
  95. } GH_CRYPTO_AES_OUTPUT_RDY_S;
  96. typedef union { /* CRYPTO_AES_Interrupt */
  97. U32 all;
  98. struct {
  99. U32 en : 1;
  100. U32 : 31;
  101. } bitc;
  102. } GH_CRYPTO_AES_INTERRUPT_S;
  103. typedef union { /* CRYPTO_EFUSE_BOOT_SW_DIS */
  104. U32 all;
  105. struct {
  106. U32 efuse_boot_sw : 1;
  107. U32 efuse_boot_dis : 1;
  108. U32 : 30;
  109. } bitc;
  110. } GH_CRYPTO_EFUSE_BOOT_SW_DIS_S;
  111. /*----------------------------------------------------------------------------*/
  112. /* mirror variables */
  113. /*----------------------------------------------------------------------------*/
  114. #ifdef __cplusplus
  115. extern "C" {
  116. #endif
  117. /*----------------------------------------------------------------------------*/
  118. /* register CRYPTO_DES_Key (read/write) */
  119. /*----------------------------------------------------------------------------*/
  120. /*! \brief Writes the register 'CRYPTO_DES_Key'. */
  121. void GH_CRYPTO_set_DES_Key(U8 index, U32 data);
  122. /*! \brief Reads the register 'CRYPTO_DES_Key'. */
  123. U32 GH_CRYPTO_get_DES_Key(U8 index);
  124. /*----------------------------------------------------------------------------*/
  125. /* register CRYPTO_DES_Input (read/write) */
  126. /*----------------------------------------------------------------------------*/
  127. /*! \brief Writes the register 'CRYPTO_DES_Input'. */
  128. void GH_CRYPTO_set_DES_Input(U8 index, U32 data);
  129. /*! \brief Reads the register 'CRYPTO_DES_Input'. */
  130. U32 GH_CRYPTO_get_DES_Input(U8 index);
  131. /*----------------------------------------------------------------------------*/
  132. /* register CRYPTO_DES_Opcode (read/write) */
  133. /*----------------------------------------------------------------------------*/
  134. /*! \brief Writes the register 'CRYPTO_DES_Opcode'. */
  135. void GH_CRYPTO_set_DES_Opcode(U32 data);
  136. /*! \brief Reads the register 'CRYPTO_DES_Opcode'. */
  137. U32 GH_CRYPTO_get_DES_Opcode(void);
  138. /*! \brief Writes the bit group 'mode' of register 'CRYPTO_DES_Opcode'. */
  139. void GH_CRYPTO_set_DES_Opcode_mode(U8 data);
  140. /*! \brief Reads the bit group 'mode' of register 'CRYPTO_DES_Opcode'. */
  141. U8 GH_CRYPTO_get_DES_Opcode_mode(void);
  142. /*----------------------------------------------------------------------------*/
  143. /* register CRYPTO_DES_Output_Rdy (read) */
  144. /*----------------------------------------------------------------------------*/
  145. /*! \brief Reads the register 'CRYPTO_DES_Output_Rdy'. */
  146. U32 GH_CRYPTO_get_DES_Output_Rdy(void);
  147. /*! \brief Reads the bit group 'Rdy' of register 'CRYPTO_DES_Output_Rdy'. */
  148. U8 GH_CRYPTO_get_DES_Output_Rdy_Rdy(void);
  149. /*----------------------------------------------------------------------------*/
  150. /* register CRYPTO_DES_Output (read) */
  151. /*----------------------------------------------------------------------------*/
  152. /*! \brief Reads the register 'CRYPTO_DES_Output'. */
  153. U32 GH_CRYPTO_get_DES_Output(U8 index);
  154. /*----------------------------------------------------------------------------*/
  155. /* register CRYPTO_DES_Interrupt (read/write) */
  156. /*----------------------------------------------------------------------------*/
  157. /*! \brief Writes the register 'CRYPTO_DES_Interrupt'. */
  158. void GH_CRYPTO_set_DES_Interrupt(U32 data);
  159. /*! \brief Reads the register 'CRYPTO_DES_Interrupt'. */
  160. U32 GH_CRYPTO_get_DES_Interrupt(void);
  161. /*! \brief Writes the bit group 'En' of register 'CRYPTO_DES_Interrupt'. */
  162. void GH_CRYPTO_set_DES_Interrupt_En(U8 data);
  163. /*! \brief Reads the bit group 'En' of register 'CRYPTO_DES_Interrupt'. */
  164. U8 GH_CRYPTO_get_DES_Interrupt_En(void);
  165. /*----------------------------------------------------------------------------*/
  166. /* register CRYPTO_AES_128_Key (read/write) */
  167. /*----------------------------------------------------------------------------*/
  168. /*! \brief Writes the register 'CRYPTO_AES_128_Key'. */
  169. void GH_CRYPTO_set_AES_128_Key(U8 index, U32 data);
  170. /*! \brief Reads the register 'CRYPTO_AES_128_Key'. */
  171. U32 GH_CRYPTO_get_AES_128_Key(U8 index);
  172. /*----------------------------------------------------------------------------*/
  173. /* register CRYPTO_AES_192_Key (read/write) */
  174. /*----------------------------------------------------------------------------*/
  175. /*! \brief Writes the register 'CRYPTO_AES_192_Key'. */
  176. void GH_CRYPTO_set_AES_192_Key(U8 index, U32 data);
  177. /*! \brief Reads the register 'CRYPTO_AES_192_Key'. */
  178. U32 GH_CRYPTO_get_AES_192_Key(U8 index);
  179. /*----------------------------------------------------------------------------*/
  180. /* register CRYPTO_AES_256_Key (read/write) */
  181. /*----------------------------------------------------------------------------*/
  182. /*! \brief Writes the register 'CRYPTO_AES_256_Key'. */
  183. void GH_CRYPTO_set_AES_256_Key(U8 index, U32 data);
  184. /*! \brief Reads the register 'CRYPTO_AES_256_Key'. */
  185. U32 GH_CRYPTO_get_AES_256_Key(U8 index);
  186. /*----------------------------------------------------------------------------*/
  187. /* register CRYPTO_AES_Input (read/write) */
  188. /*----------------------------------------------------------------------------*/
  189. /*! \brief Writes the register 'CRYPTO_AES_Input'. */
  190. void GH_CRYPTO_set_AES_Input(U8 index, U32 data);
  191. /*! \brief Reads the register 'CRYPTO_AES_Input'. */
  192. U32 GH_CRYPTO_get_AES_Input(U8 index);
  193. /*----------------------------------------------------------------------------*/
  194. /* register CRYPTO_AES_Opcode (read/write) */
  195. /*----------------------------------------------------------------------------*/
  196. /*! \brief Writes the register 'CRYPTO_AES_Opcode'. */
  197. void GH_CRYPTO_set_AES_Opcode(U32 data);
  198. /*! \brief Reads the register 'CRYPTO_AES_Opcode'. */
  199. U32 GH_CRYPTO_get_AES_Opcode(void);
  200. /*! \brief Writes the bit group 'mode' of register 'CRYPTO_AES_Opcode'. */
  201. void GH_CRYPTO_set_AES_Opcode_mode(U8 data);
  202. /*! \brief Reads the bit group 'mode' of register 'CRYPTO_AES_Opcode'. */
  203. U8 GH_CRYPTO_get_AES_Opcode_mode(void);
  204. /*----------------------------------------------------------------------------*/
  205. /* register CRYPTO_AES_Output_Rdy (read) */
  206. /*----------------------------------------------------------------------------*/
  207. /*! \brief Reads the register 'CRYPTO_AES_Output_Rdy'. */
  208. U32 GH_CRYPTO_get_AES_Output_Rdy(void);
  209. /*! \brief Reads the bit group 'Rdy' of register 'CRYPTO_AES_Output_Rdy'. */
  210. U8 GH_CRYPTO_get_AES_Output_Rdy_Rdy(void);
  211. /*----------------------------------------------------------------------------*/
  212. /* register CRYPTO_AES_Output (read) */
  213. /*----------------------------------------------------------------------------*/
  214. /*! \brief Reads the register 'CRYPTO_AES_Output'. */
  215. U32 GH_CRYPTO_get_AES_Output(U8 index);
  216. /*----------------------------------------------------------------------------*/
  217. /* register CRYPTO_AES_Interrupt (read/write) */
  218. /*----------------------------------------------------------------------------*/
  219. /*! \brief Writes the register 'CRYPTO_AES_Interrupt'. */
  220. void GH_CRYPTO_set_AES_Interrupt(U32 data);
  221. /*! \brief Reads the register 'CRYPTO_AES_Interrupt'. */
  222. U32 GH_CRYPTO_get_AES_Interrupt(void);
  223. /*! \brief Writes the bit group 'En' of register 'CRYPTO_AES_Interrupt'. */
  224. void GH_CRYPTO_set_AES_Interrupt_En(U8 data);
  225. /*! \brief Reads the bit group 'En' of register 'CRYPTO_AES_Interrupt'. */
  226. U8 GH_CRYPTO_get_AES_Interrupt_En(void);
  227. /*----------------------------------------------------------------------------*/
  228. /* register CRYPTO_EFUSE_BOOT_SW_DIS (read/write) */
  229. /*----------------------------------------------------------------------------*/
  230. /*! \brief Writes the register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  231. void GH_CRYPTO_set_EFUSE_BOOT_SW_DIS(U32 data);
  232. /*! \brief Reads the register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  233. U32 GH_CRYPTO_get_EFUSE_BOOT_SW_DIS(void);
  234. /*! \brief Writes the bit group 'Efuse_boot_sw' of register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  235. void GH_CRYPTO_set_EFUSE_BOOT_SW_DIS_Efuse_boot_sw(U8 data);
  236. /*! \brief Reads the bit group 'Efuse_boot_sw' of register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  237. U8 GH_CRYPTO_get_EFUSE_BOOT_SW_DIS_Efuse_boot_sw(void);
  238. /*! \brief Writes the bit group 'Efuse_boot_dis' of register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  239. void GH_CRYPTO_set_EFUSE_BOOT_SW_DIS_Efuse_boot_dis(U8 data);
  240. /*! \brief Reads the bit group 'Efuse_boot_dis' of register 'CRYPTO_EFUSE_BOOT_SW_DIS'. */
  241. U8 GH_CRYPTO_get_EFUSE_BOOT_SW_DIS_Efuse_boot_dis(void);
  242. /*----------------------------------------------------------------------------*/
  243. /* init function */
  244. /*----------------------------------------------------------------------------*/
  245. /*! \brief Initialises the registers and mirror variables. */
  246. void GH_CRYPTO_init(void);
  247. #ifdef SRC_INLINE
  248. #define SRC_INC 1
  249. #include "gh_crypto.c"
  250. #undef SRC_INC
  251. #endif
  252. #ifdef __cplusplus
  253. }
  254. #endif
  255. #endif /* _GH_CRYPTO_H */
  256. /*----------------------------------------------------------------------------*/
  257. /* end of file */
  258. /*----------------------------------------------------------------------------*/