soc_se.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. * Copyright (c) 2020 Actions Semiconductor Co., Ltd
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @file security engine for Actions SoC
  8. */
  9. #ifndef SOC_SE_H_
  10. #define SOC_SE_H_
  11. //#include <device.h>
  12. //#include <drivers/dma.h>
  13. #define AES_CTRL (SE_REG_BASE+0x0000)
  14. #define AES_MODE (SE_REG_BASE+0x0004)
  15. #define AES_LEN (SE_REG_BASE+0x0008)
  16. #define AES_KEY0 (SE_REG_BASE+0x0010)
  17. #define AES_KEY1 (SE_REG_BASE+0x0014)
  18. #define AES_KEY2 (SE_REG_BASE+0x0018)
  19. #define AES_KEY3 (SE_REG_BASE+0x001c)
  20. #define AES_KEY4 (SE_REG_BASE+0x0020)
  21. #define AES_KEY5 (SE_REG_BASE+0x0024)
  22. #define AES_KEY6 (SE_REG_BASE+0x0028)
  23. #define AES_KEY7 (SE_REG_BASE+0x002c)
  24. #define AES_IV0 (SE_REG_BASE+0x0040)
  25. #define AES_IV1 (SE_REG_BASE+0x0044)
  26. #define AES_IV2 (SE_REG_BASE+0x0048)
  27. #define AES_IV3 (SE_REG_BASE+0x004c)
  28. #define AES_INOUTFIFOCTL (SE_REG_BASE+0x0080)
  29. #define AES_INFIFO (SE_REG_BASE+0x0084)
  30. #define AES_OUTFIFO (SE_REG_BASE+0x0088)
  31. #define TRNG_CTRL (SE_REG_BASE+0x0400)
  32. #define TRNG_LR (SE_REG_BASE+0x0404)
  33. #define TRNG_MR (SE_REG_BASE+0x0408)
  34. #define TRNG_ILR (SE_REG_BASE+0x040c)
  35. #define TRNG_IMR (SE_REG_BASE+0x0410)
  36. #define CRC_CTRL (SE_REG_BASE+0x0600)
  37. #define CRC_MODE (SE_REG_BASE+0x0604)
  38. #define CRC_LEN (SE_REG_BASE+0x0608)
  39. #define CRC_INFIFOCTL (SE_REG_BASE+0x060c)
  40. #define CRC_INFIFO (SE_REG_BASE+0x0610)
  41. #define CRC_DATAOUT (SE_REG_BASE+0x0614)
  42. #define CRC_DATAINIT (SE_REG_BASE+0x0618)
  43. #define CRC_DATAOUTXOR (SE_REG_BASE+0x061c)
  44. #define CRC_DEBUGOUT (SE_REG_BASE+0x0630)
  45. #define SE_FIFOCTRL (SE_REG_BASE+0x0800)
  46. struct acts_se_data {
  47. void *dma_dev;
  48. uint32_t dma_chan;
  49. uint32_t dma_chan_out; /*only aes need*/
  50. };
  51. #if 0
  52. int se_aes_init(void);
  53. int se_aes_deinit(void);
  54. uint32_t se_aes_process(int mode, uint8_t *in_buf, uint32_t in_len, uint8_t *out_buf);
  55. #endif
  56. int se_trng_init(void);
  57. int se_trng_deinit(void);
  58. uint32_t se_trng_process(uint32_t *trng_low, uint32_t *trng_high);
  59. #if 0
  60. int se_crc_init(void);
  61. int se_crc_deinit(void);
  62. #define CRC32_MODE_CRC32 0
  63. #define CRC32_MODE_MPEG2 1
  64. #define CONFIG_CRC32_MODE CRC32_MODE_CRC32
  65. uint32_t se_crc32_process(uint8_t *buffer, uint32_t buf_len, uint32_t crc_initial, bool last);
  66. uint32_t se_crc32(uint8_t *buffer, uint32_t buf_len);
  67. #define CRC16_MODE_CCITT 0
  68. #define CRC16_MODE_CCITT_FALSE 1
  69. #define CRC16_MODE_XMODEM 2
  70. #define CRC16_MODE_X25 3
  71. #define CRC16_MODE_MODBUS 4
  72. #define CRC16_MODE_IBM 5
  73. #define CRC16_MODE_MAXIM 6
  74. #define CRC16_MODE_USB 7
  75. #define CONFIG_CRC16_MODE CRC16_MODE_CCITT
  76. uint16_t se_crc16_process(uint8_t *buffer, uint32_t buf_len, uint16_t crc_initial, bool last);
  77. uint16_t se_crc16(uint8_t *buffer, uint32_t buf_len);
  78. #endif
  79. #endif /* SOC_SE_H_ */