ce_common.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /* Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved.
  2. * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in
  3. * the the People's Republic of China and other countries.
  4. * All Allwinner Technology Co.,Ltd. trademarks are used with permission.
  5. * DISCLAIMER
  6. * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT.
  7. * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
  8. * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN
  9. * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES.
  10. * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS
  11. * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE.
  12. * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY.
  13. * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT
  14. * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND,
  15. * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING
  16. * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE
  17. * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18. * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  19. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  20. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  21. * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION)
  22. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  23. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  24. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  25. * OF THE POSSIBILITY OF SUCH DAMAGE.
  26. */
  27. #ifndef __SUNXI_CE_H__
  28. #define __SUNXI_CE_H__
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32. //#define CE_DEBUG
  33. /* For debug */
  34. #if defined(CE_DEBUG)
  35. #define CE_DBG(fmt, arg...) hal_log_err("%s()%d - "fmt, __func__, __LINE__, ##arg)
  36. #else
  37. #define CE_DBG(fmt, arg...) do{} while(0)
  38. #endif
  39. #define CE_ERR(fmt, arg...) hal_log_err("%s()%d - "fmt, __func__, __LINE__, ##arg)
  40. #define AES_KEYSIZE_16 (16)
  41. #define AES_KEYSIZE_24 (24)
  42. #define AES_KEYSIZE_32 (32)
  43. #define AES_MAX_KEY_SIZE (32)
  44. /*ce flow*/
  45. #define CE_FLOW_NUM (4)
  46. #define CE_FLOW_AVAILABLE (0)
  47. #define CE_FLOW_UNAVAILABLE (1)
  48. typedef struct {
  49. uint32_t addr;
  50. uint32_t len; /* in word (4 bytes). Exception: in byte for AES_CTS */
  51. } ce_scatter_t;
  52. /*define the return value for aes*/
  53. typedef enum{
  54. HAL_AES_STATUS_OK = 0,
  55. HAL_AES_INPUT_ERROR = -1,
  56. HAL_AES_MALLOC_ERROR = -2,
  57. HAL_AES_CRYPTO_ERROR = -3,
  58. HAL_AES_TIME_OUT = -4,
  59. } hal_aes_status_t;
  60. /*define the return value for hal_hash*/
  61. typedef enum{
  62. HAL_HASH_STATUS_OK = 0,
  63. HAL_HASH_INPUT_ERROR = -1,
  64. HAL_HASH_MALLOC_ERROR = -2,
  65. HAL_HASH_CRYPTO_ERROR = -3,
  66. HAL_HASH_TIME_OUT = -4,
  67. } hal_hash_status_t;
  68. /*define the return value for hal_rsa*/
  69. typedef enum{
  70. HAL_RSA_STATUS_OK = 0,
  71. HAL_RSA_INPUT_ERROR = -1,
  72. HAL_RSA_MALLOC_ERROR = -2,
  73. HAL_RSA_CRYPTO_ERROR = -3,
  74. HAL_RSA_TIME_OUT = -4,
  75. } hal_rsa_status_t;
  76. /*define the return value for hal_hash*/
  77. typedef enum{
  78. HAL_RNG_STATUS_OK = 0,
  79. HAL_RNG_INPUT_ERROR = -1,
  80. HAL_RNG_MALLOC_ERROR = -2,
  81. HAL_RNG_CRYPTO_ERROR = -3,
  82. HAL_RNG_TIME_OUT = -4,
  83. } hal_rng_status_t;
  84. typedef struct ce_task_desc {
  85. uint32_t chan_id;
  86. uint32_t comm_ctl;
  87. uint32_t sym_ctl;
  88. uint32_t asym_ctl;
  89. uint32_t key_addr;
  90. uint32_t iv_addr;
  91. uint32_t ctr_addr;
  92. uint32_t data_len; /* in word(4 byte). Exception: in byte for AES_CTS */
  93. ce_scatter_t src[8];
  94. ce_scatter_t dst[8];
  95. struct ce_task_desc *next;
  96. uint32_t reserved[3];
  97. } ce_task_desc_t;
  98. #ifdef __cplusplus
  99. }
  100. #endif
  101. #endif /* __SUNXI_CE_H__ */