1 /** 2 * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #pragma once 7 8 #include <stdint.h> 9 #include "soc/soc.h" 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 /** ECC_MULT_INT_RAW_REG register 15 * ECC interrupt raw register, valid in level. 16 */ 17 #define ECC_MULT_INT_RAW_REG (DR_REG_ECC_MULT_BASE + 0xc) 18 /** ECC_MULT_CALC_DONE_INT_RAW : RO/WTC/SS; bitpos: [0]; default: 0; 19 * The raw interrupt status bit for the ecc_calc_done_int interrupt 20 */ 21 #define ECC_MULT_CALC_DONE_INT_RAW (BIT(0)) 22 #define ECC_MULT_CALC_DONE_INT_RAW_M (ECC_MULT_CALC_DONE_INT_RAW_V << ECC_MULT_CALC_DONE_INT_RAW_S) 23 #define ECC_MULT_CALC_DONE_INT_RAW_V 0x00000001U 24 #define ECC_MULT_CALC_DONE_INT_RAW_S 0 25 26 /** ECC_MULT_INT_ST_REG register 27 * ECC interrupt status register. 28 */ 29 #define ECC_MULT_INT_ST_REG (DR_REG_ECC_MULT_BASE + 0x10) 30 /** ECC_MULT_CALC_DONE_INT_ST : RO; bitpos: [0]; default: 0; 31 * The masked interrupt status bit for the ecc_calc_done_int interrupt 32 */ 33 #define ECC_MULT_CALC_DONE_INT_ST (BIT(0)) 34 #define ECC_MULT_CALC_DONE_INT_ST_M (ECC_MULT_CALC_DONE_INT_ST_V << ECC_MULT_CALC_DONE_INT_ST_S) 35 #define ECC_MULT_CALC_DONE_INT_ST_V 0x00000001U 36 #define ECC_MULT_CALC_DONE_INT_ST_S 0 37 38 /** ECC_MULT_INT_ENA_REG register 39 * ECC interrupt enable register. 40 */ 41 #define ECC_MULT_INT_ENA_REG (DR_REG_ECC_MULT_BASE + 0x14) 42 /** ECC_MULT_CALC_DONE_INT_ENA : R/W; bitpos: [0]; default: 0; 43 * The interrupt enable bit for the ecc_calc_done_int interrupt 44 */ 45 #define ECC_MULT_CALC_DONE_INT_ENA (BIT(0)) 46 #define ECC_MULT_CALC_DONE_INT_ENA_M (ECC_MULT_CALC_DONE_INT_ENA_V << ECC_MULT_CALC_DONE_INT_ENA_S) 47 #define ECC_MULT_CALC_DONE_INT_ENA_V 0x00000001U 48 #define ECC_MULT_CALC_DONE_INT_ENA_S 0 49 50 /** ECC_MULT_INT_CLR_REG register 51 * ECC interrupt clear register. 52 */ 53 #define ECC_MULT_INT_CLR_REG (DR_REG_ECC_MULT_BASE + 0x18) 54 /** ECC_MULT_CALC_DONE_INT_CLR : WT; bitpos: [0]; default: 0; 55 * Set this bit to clear the ecc_calc_done_int interrupt 56 */ 57 #define ECC_MULT_CALC_DONE_INT_CLR (BIT(0)) 58 #define ECC_MULT_CALC_DONE_INT_CLR_M (ECC_MULT_CALC_DONE_INT_CLR_V << ECC_MULT_CALC_DONE_INT_CLR_S) 59 #define ECC_MULT_CALC_DONE_INT_CLR_V 0x00000001U 60 #define ECC_MULT_CALC_DONE_INT_CLR_S 0 61 62 /** ECC_MULT_CONF_REG register 63 * ECC configure register 64 */ 65 #define ECC_MULT_CONF_REG (DR_REG_ECC_MULT_BASE + 0x1c) 66 /** ECC_MULT_START : R/W/SC; bitpos: [0]; default: 0; 67 * Write 1 to start caculation of ECC Accelerator. This bit will be self-cleared after 68 * the caculatrion is done. 69 */ 70 #define ECC_MULT_START (BIT(0)) 71 #define ECC_MULT_START_M (ECC_MULT_START_V << ECC_MULT_START_S) 72 #define ECC_MULT_START_V 0x00000001U 73 #define ECC_MULT_START_S 0 74 /** ECC_MULT_RESET : WT; bitpos: [1]; default: 0; 75 * Write 1 to reset ECC Accelerator. 76 */ 77 #define ECC_MULT_RESET (BIT(1)) 78 #define ECC_MULT_RESET_M (ECC_MULT_RESET_V << ECC_MULT_RESET_S) 79 #define ECC_MULT_RESET_V 0x00000001U 80 #define ECC_MULT_RESET_S 1 81 /** ECC_MULT_KEY_LENGTH : R/W; bitpos: [2]; default: 0; 82 * The key length mode bit of ECC Accelerator. 0: P-192. 1: P-256. 83 */ 84 #define ECC_MULT_KEY_LENGTH (BIT(2)) 85 #define ECC_MULT_KEY_LENGTH_M (ECC_MULT_KEY_LENGTH_V << ECC_MULT_KEY_LENGTH_S) 86 #define ECC_MULT_KEY_LENGTH_V 0x00000001U 87 #define ECC_MULT_KEY_LENGTH_S 2 88 /** ECC_MULT_MOD_BASE : R/W; bitpos: [3]; default: 0; 89 * The mod base of mod operation, only valid in work_mode 8-11. 0: n(order of curve). 90 * 1: p(mod base of curve) 91 */ 92 #define ECC_MULT_MOD_BASE (BIT(3)) 93 #define ECC_MULT_MOD_BASE_M (ECC_MULT_MOD_BASE_V << ECC_MULT_MOD_BASE_S) 94 #define ECC_MULT_MOD_BASE_V 0x00000001U 95 #define ECC_MULT_MOD_BASE_S 3 96 /** ECC_MULT_WORK_MODE : R/W; bitpos: [7:4]; default: 0; 97 * The work mode bits of ECC Accelerator. 0: Point Mult Mode. 1: Reserved. 2: Point 98 * verification mode. 3: Point Verif+mult mode. 4: Jacobian Point Mult Mode. 5: Point 99 * Add Mode. 6: Jacobian Point Verification Mode. 7: Point Verif + Jacobian Mult Mode. 100 * 8: mod addition. 9. mod substraction. 10: mod multiplication. 11: mod division. 101 */ 102 #define ECC_MULT_WORK_MODE 0x0000000FU 103 #define ECC_MULT_WORK_MODE_M (ECC_MULT_WORK_MODE_V << ECC_MULT_WORK_MODE_S) 104 #define ECC_MULT_WORK_MODE_V 0x0000000FU 105 #define ECC_MULT_WORK_MODE_S 4 106 /** ECC_MULT_SECURITY_MODE : R/W; bitpos: [8]; default: 0; 107 * Reserved 108 */ 109 #define ECC_MULT_SECURITY_MODE (BIT(8)) 110 #define ECC_MULT_SECURITY_MODE_M (ECC_MULT_SECURITY_MODE_V << ECC_MULT_SECURITY_MODE_S) 111 #define ECC_MULT_SECURITY_MODE_V 0x00000001U 112 #define ECC_MULT_SECURITY_MODE_S 8 113 /** ECC_MULT_VERIFICATION_RESULT : RO/SS; bitpos: [29]; default: 0; 114 * The verification result bit of ECC Accelerator, only valid when calculation is done. 115 */ 116 #define ECC_MULT_VERIFICATION_RESULT (BIT(29)) 117 #define ECC_MULT_VERIFICATION_RESULT_M (ECC_MULT_VERIFICATION_RESULT_V << ECC_MULT_VERIFICATION_RESULT_S) 118 #define ECC_MULT_VERIFICATION_RESULT_V 0x00000001U 119 #define ECC_MULT_VERIFICATION_RESULT_S 29 120 /** ECC_MULT_CLK_EN : R/W; bitpos: [30]; default: 0; 121 * Write 1 to force on register clock gate. 122 */ 123 #define ECC_MULT_CLK_EN (BIT(30)) 124 #define ECC_MULT_CLK_EN_M (ECC_MULT_CLK_EN_V << ECC_MULT_CLK_EN_S) 125 #define ECC_MULT_CLK_EN_V 0x00000001U 126 #define ECC_MULT_CLK_EN_S 30 127 /** ECC_MULT_MEM_CLOCK_GATE_FORCE_ON : R/W; bitpos: [31]; default: 1; 128 * ECC memory clock gate force on register 129 */ 130 #define ECC_MULT_MEM_CLOCK_GATE_FORCE_ON (BIT(31)) 131 #define ECC_MULT_MEM_CLOCK_GATE_FORCE_ON_M (ECC_MULT_MEM_CLOCK_GATE_FORCE_ON_V << ECC_MULT_MEM_CLOCK_GATE_FORCE_ON_S) 132 #define ECC_MULT_MEM_CLOCK_GATE_FORCE_ON_V 0x00000001U 133 #define ECC_MULT_MEM_CLOCK_GATE_FORCE_ON_S 31 134 135 /** ECC_MULT_DATE_REG register 136 * Version control register 137 */ 138 #define ECC_MULT_DATE_REG (DR_REG_ECC_MULT_BASE + 0xfc) 139 /** ECC_MULT_DATE : R/W; bitpos: [27:0]; default: 35680640; 140 * ECC mult version control register 141 */ 142 #define ECC_MULT_DATE 0x0FFFFFFFU 143 #define ECC_MULT_DATE_M (ECC_MULT_DATE_V << ECC_MULT_DATE_S) 144 #define ECC_MULT_DATE_V 0x0FFFFFFFU 145 #define ECC_MULT_DATE_S 0 146 147 /** ECC_MULT_K_MEM register 148 * The memory that stores k. 149 */ 150 #define ECC_MULT_K_MEM (DR_REG_ECC_MULT_BASE + 0x100) 151 #define ECC_MULT_K_MEM_SIZE_BYTES 32 152 153 /** ECC_MULT_PX_MEM register 154 * The memory that stores Px. 155 */ 156 #define ECC_MULT_PX_MEM (DR_REG_ECC_MULT_BASE + 0x120) 157 #define ECC_MULT_PX_MEM_SIZE_BYTES 32 158 159 /** ECC_MULT_PY_MEM register 160 * The memory that stores Py. 161 */ 162 #define ECC_MULT_PY_MEM (DR_REG_ECC_MULT_BASE + 0x140) 163 #define ECC_MULT_PY_MEM_SIZE_BYTES 32 164 165 /** ECC_MULT_QX_MEM register 166 * The memory that stores Qx. 167 */ 168 #define ECC_MULT_QX_MEM (DR_REG_ECC_MULT_BASE + 0x160) 169 #define ECC_MULT_QX_MEM_SIZE_BYTES 32 170 171 /** ECC_MULT_QY_MEM register 172 * The memory that stores Qy. 173 */ 174 #define ECC_MULT_QY_MEM (DR_REG_ECC_MULT_BASE + 0x180) 175 #define ECC_MULT_QY_MEM_SIZE_BYTES 32 176 177 /** ECC_MULT_QZ_MEM register 178 * The memory that stores Qz. 179 */ 180 #define ECC_MULT_QZ_MEM (DR_REG_ECC_MULT_BASE + 0x1A0) 181 #define ECC_MULT_QZ_MEM_SIZE_BYTES 32 182 183 #ifdef __cplusplus 184 } 185 #endif 186