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