1*b353a43cSLin Jinhan /* SPDX-License-Identifier: GPL-2.0+ */ 2*b353a43cSLin Jinhan /* 3*b353a43cSLin Jinhan * (C) Copyright 2019 Rockchip Electronics Co., Ltd 4*b353a43cSLin Jinhan */ 5*b353a43cSLin Jinhan 6*b353a43cSLin Jinhan #ifndef _ROCKCHIP_CRYPTO_V2_H_ 7*b353a43cSLin Jinhan #define _ROCKCHIP_CRYPTO_V2_H_ 8*b353a43cSLin Jinhan 9*b353a43cSLin Jinhan #include <asm/io.h> 10*b353a43cSLin Jinhan 11*b353a43cSLin Jinhan #define cache_op_inner(area, addr, size) \ 12*b353a43cSLin Jinhan flush_cache((unsigned long)addr, (unsigned long)size) 13*b353a43cSLin Jinhan 14*b353a43cSLin Jinhan #define RK_CRYPTO_KEY_ROOT 0x00010000 15*b353a43cSLin Jinhan #define RK_CRYPTO_KEY_PRIVATE 0x00020000 16*b353a43cSLin Jinhan #define RK_CRYPTO_MODE_MASK 0x0000ffff 17*b353a43cSLin Jinhan #define RK_GET_CRYPTO_MODE(mode) (mode & RK_CRYPTO_MODE_MASK) 18*b353a43cSLin Jinhan #define RK_IS_CRYPTO_USE_ROOT_KEY(mode) (!!(mode & RK_CRYPTO_KEY_ROOT)) 19*b353a43cSLin Jinhan #define RK_IS_CRYPTO_USE_PRIVATE_KEY(mode) (!!(mode & RK_CRYPTO_KEY_PRIVATE) 20*b353a43cSLin Jinhan 21*b353a43cSLin Jinhan #define RK_AES_HASH_RX 0 22*b353a43cSLin Jinhan #define RK_AES_HASH_TX 1 23*b353a43cSLin Jinhan 24*b353a43cSLin Jinhan enum rk_hash_algo { 25*b353a43cSLin Jinhan TEE_ALG_SHA1 = 1, 26*b353a43cSLin Jinhan TEE_ALG_MD5, 27*b353a43cSLin Jinhan TEE_ALG_SHA256, 28*b353a43cSLin Jinhan TEE_ALG_SHA224, 29*b353a43cSLin Jinhan TEE_ALG_SHA512, 30*b353a43cSLin Jinhan TEE_ALG_SHA384, 31*b353a43cSLin Jinhan TEE_ALG_SHA512_224, 32*b353a43cSLin Jinhan TEE_ALG_SHA512_256, 33*b353a43cSLin Jinhan }; 34*b353a43cSLin Jinhan 35*b353a43cSLin Jinhan #define _SBF(s, v) ((v) << (s)) 36*b353a43cSLin Jinhan #define _BIT(b) _SBF(b, 1) 37*b353a43cSLin Jinhan 38*b353a43cSLin Jinhan #define DES_KEYSIZE 8 39*b353a43cSLin Jinhan #define TDES_EDE_KEYSIZE 24 40*b353a43cSLin Jinhan #define AES_KEYSIZE_128 16 41*b353a43cSLin Jinhan #define AES_KEYSIZE_192 24 42*b353a43cSLin Jinhan #define AES_KEYSIZE_256 32 43*b353a43cSLin Jinhan 44*b353a43cSLin Jinhan #define DES_BLOCK_SIZE 8 45*b353a43cSLin Jinhan #define AES_BLOCK_SIZE 16 46*b353a43cSLin Jinhan 47*b353a43cSLin Jinhan #define RK_MODE_ENCRYPT 0 48*b353a43cSLin Jinhan #define RK_MODE_DECRYPT 1 49*b353a43cSLin Jinhan 50*b353a43cSLin Jinhan #define HASH_MAX_SIZE 8192 51*b353a43cSLin Jinhan #define CIPHER_MAX_SIZE 8192 52*b353a43cSLin Jinhan 53*b353a43cSLin Jinhan #define _SBF(s, v) ((v) << (s)) 54*b353a43cSLin Jinhan #define _BIT(b) _SBF(b, 1) 55*b353a43cSLin Jinhan 56*b353a43cSLin Jinhan #define DES_KEYSIZE 8 57*b353a43cSLin Jinhan #define TDES_EDE_KEYSIZE 24 58*b353a43cSLin Jinhan #define AES_KEYSIZE_128 16 59*b353a43cSLin Jinhan #define AES_KEYSIZE_192 24 60*b353a43cSLin Jinhan #define AES_KEYSIZE_256 32 61*b353a43cSLin Jinhan 62*b353a43cSLin Jinhan #define DES_BLOCK_SIZE 8 63*b353a43cSLin Jinhan #define AES_BLOCK_SIZE 16 64*b353a43cSLin Jinhan 65*b353a43cSLin Jinhan #define RK_MODE_ENCRYPT 0 66*b353a43cSLin Jinhan #define RK_MODE_DECRYPT 1 67*b353a43cSLin Jinhan 68*b353a43cSLin Jinhan #define CRYPTO_WRITE_MASK_SHIFT (16) 69*b353a43cSLin Jinhan #define CRYPTO_WRITE_MASK_ALL ((0xffffu << CRYPTO_WRITE_MASK_SHIFT)) 70*b353a43cSLin Jinhan 71*b353a43cSLin Jinhan #define WRITE_MASK (16) 72*b353a43cSLin Jinhan 73*b353a43cSLin Jinhan #define CRU_CLKGATE_CON8_ALLCLK_EN _SBF(12, 0x0F) 74*b353a43cSLin Jinhan #define CRU_CLKGATE_CON9_ALLCLK_EN _SBF(2, 0x0F) 75*b353a43cSLin Jinhan 76*b353a43cSLin Jinhan #define CRYPTO_MST_NON_SECURE _SBF(0, 0x03) 77*b353a43cSLin Jinhan #define CRYPTO_SLV_SECURE _BIT(8) 78*b353a43cSLin Jinhan 79*b353a43cSLin Jinhan /* Crypto control registers*/ 80*b353a43cSLin Jinhan #define CRYPTO_CLK_CTL 0x0000 81*b353a43cSLin Jinhan #define CRYPTO_AUTO_CLKGATE_EN _BIT(0) 82*b353a43cSLin Jinhan 83*b353a43cSLin Jinhan #define CRYPTO_RST_CTL 0x0004 84*b353a43cSLin Jinhan #define CRYPTO_SW_PKA_RESET _BIT(2) 85*b353a43cSLin Jinhan #define CRYPTO_SW_RNG_RESET _BIT(1) 86*b353a43cSLin Jinhan #define CRYPTO_SW_CC_RESET _BIT(0) 87*b353a43cSLin Jinhan 88*b353a43cSLin Jinhan /* Crypto DMA control registers*/ 89*b353a43cSLin Jinhan #define CRYPTO_DMA_INT_EN 0x0008 90*b353a43cSLin Jinhan #define CRYPTO_ZERO_ERR_INT_EN _BIT(6) 91*b353a43cSLin Jinhan #define CRYPTO_LIST_ERR_INT_EN _BIT(5) 92*b353a43cSLin Jinhan #define CRYPTO_SRC_ERR_INT_EN _BIT(4) 93*b353a43cSLin Jinhan #define CRYPTO_DST_ERR_INT_EN _BIT(3) 94*b353a43cSLin Jinhan #define CRYPTO_SRC_ITEM_INT_EN _BIT(2) 95*b353a43cSLin Jinhan #define CRYPTO_DST_ITEM_DONE_INT_EN _BIT(1) 96*b353a43cSLin Jinhan #define CRYPTO_LIST_DONE_INT_EN _BIT(0) 97*b353a43cSLin Jinhan 98*b353a43cSLin Jinhan #define CRYPTO_DMA_INT_ST 0x000C 99*b353a43cSLin Jinhan #define CRYPTO_ZERO_LEN_INT_ST _BIT(6) 100*b353a43cSLin Jinhan #define CRYPTO_LIST_ERR_INT_ST _BIT(5) 101*b353a43cSLin Jinhan #define CRYPTO_SRC_ERR_INT_ST _BIT(4) 102*b353a43cSLin Jinhan #define CRYPTO_DST_ERR_INT_ST _BIT(3) 103*b353a43cSLin Jinhan #define CRYPTO_SRC_ITEM_DONE_INT_ST _BIT(2) 104*b353a43cSLin Jinhan #define CRYPTO_DST_ITEM_DONE_INT_ST _BIT(1) 105*b353a43cSLin Jinhan #define CRYPTO_LIST_DONE_INT_ST _BIT(0) 106*b353a43cSLin Jinhan 107*b353a43cSLin Jinhan #define CRYPTO_DMA_CTL 0x0010 108*b353a43cSLin Jinhan #define CRYPTO_DMA_RESTART _BIT(1) 109*b353a43cSLin Jinhan #define CRYPTO_DMA_START _BIT(0) 110*b353a43cSLin Jinhan 111*b353a43cSLin Jinhan /* DMA LIST Start Address Register */ 112*b353a43cSLin Jinhan #define CRYPTO_DMA_LLI_ADDR 0x0014 113*b353a43cSLin Jinhan 114*b353a43cSLin Jinhan #define CRYPTO_DMA_ST 0x0018 115*b353a43cSLin Jinhan #define CRYPTO_DMA_BUSY _BIT(0) 116*b353a43cSLin Jinhan 117*b353a43cSLin Jinhan #define CRYPTO_DMA_STATE 0x001C 118*b353a43cSLin Jinhan #define CRYPTO_LLI_IDLE_STATE _SBF(4, 0x00) 119*b353a43cSLin Jinhan #define CRYPTO_LLI_FETCH_STATE _SBF(4, 0x01) 120*b353a43cSLin Jinhan #define CRYPTO_LLI_WORK_STATE _SBF(4, 0x02) 121*b353a43cSLin Jinhan #define CRYPTO_SRC_IDLE_STATE _SBF(2, 0x00) 122*b353a43cSLin Jinhan #define CRYPTO_SRC_LOAD_STATE _SBF(2, 0x01) 123*b353a43cSLin Jinhan #define CRYPTO_SRC_WORK_STATE _SBF(2, 0x02) 124*b353a43cSLin Jinhan #define CRYPTO_DST_IDLE_STATE _SBF(0, 0x00) 125*b353a43cSLin Jinhan #define CRYPTO_DST_LOAD_STATE _SBF(0, 0x01) 126*b353a43cSLin Jinhan #define CRYPTO_DST_WORK_STATE _SBF(0, 0x02) 127*b353a43cSLin Jinhan 128*b353a43cSLin Jinhan /* DMA LLI Read Address Register */ 129*b353a43cSLin Jinhan #define CRYPTO_DMA_LLI_RADDR 0x0020 130*b353a43cSLin Jinhan 131*b353a43cSLin Jinhan /* DMA Source Data Read Address Register */ 132*b353a43cSLin Jinhan #define CRYPTO_DMA_SRC_RADDR 0x0024 133*b353a43cSLin Jinhan 134*b353a43cSLin Jinhan /* DMA Destination Data Read Address Register */ 135*b353a43cSLin Jinhan #define CRYPTO_DMA_DST_RADDR 0x0028 136*b353a43cSLin Jinhan 137*b353a43cSLin Jinhan #define CRYPTO_DMA_ITEM_ID 0x002C 138*b353a43cSLin Jinhan 139*b353a43cSLin Jinhan #define CRYPTO_FIFO_CTL 0x0040 140*b353a43cSLin Jinhan #define CRYPTO_DOUT_BYTESWAP _BIT(1) 141*b353a43cSLin Jinhan #define CRYPTO_DOIN_BYTESWAP _BIT(0) 142*b353a43cSLin Jinhan 143*b353a43cSLin Jinhan /* Block Cipher Control Register */ 144*b353a43cSLin Jinhan #define CRYPTO_BC_CTL 0x0044 145*b353a43cSLin Jinhan #define CRYPTO_BC_AES _SBF(8, 0x00) 146*b353a43cSLin Jinhan #define CRYPTO_BC_DES _SBF(8, 0x02) 147*b353a43cSLin Jinhan #define CRYPTO_BC_TDES _SBF(8, 0x03) 148*b353a43cSLin Jinhan #define CRYPTO_BC_ECB _SBF(4, 0x00) 149*b353a43cSLin Jinhan #define CRYPTO_BC_CBC _SBF(4, 0x01) 150*b353a43cSLin Jinhan #define CRYPTO_BC_CTS _SBF(4, 0x02) 151*b353a43cSLin Jinhan #define CRYPTO_BC_CTR _SBF(4, 0x03) 152*b353a43cSLin Jinhan #define CRYPTO_BC_CFB _SBF(4, 0x04) 153*b353a43cSLin Jinhan #define CRYPTO_BC_OFB _SBF(4, 0x05) 154*b353a43cSLin Jinhan #define CRYPTO_BC_XTS _SBF(4, 0x06) 155*b353a43cSLin Jinhan #define CRYPTO_BC_CCM _SBF(4, 0x07) 156*b353a43cSLin Jinhan #define CRYPTO_BC_GCM _SBF(4, 0x08) 157*b353a43cSLin Jinhan #define CRYPTO_BC_CMAC _SBF(4, 0x09) 158*b353a43cSLin Jinhan #define CRYPTO_BC_CBC_MAC _SBF(4, 0x0A) 159*b353a43cSLin Jinhan #define CRYPTO_BC_128_bit_key _SBF(2, 0x00) 160*b353a43cSLin Jinhan #define CRYPTO_BC_192_bit_key _SBF(2, 0x01) 161*b353a43cSLin Jinhan #define CRYPTO_BC_256_bit_key _SBF(2, 0x02) 162*b353a43cSLin Jinhan #define CRYPTO_BC_DECRYPT _BIT(1) 163*b353a43cSLin Jinhan #define CRYPTO_BC_ENABLE _BIT(0) 164*b353a43cSLin Jinhan 165*b353a43cSLin Jinhan /* Hash Control Register */ 166*b353a43cSLin Jinhan #define CRYPTO_HASH_CTL 0x0048 167*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA1 _SBF(4, 0x00) 168*b353a43cSLin Jinhan #define CRYPTO_MODE_MD5 _SBF(4, 0x01) 169*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA256 _SBF(4, 0x02) 170*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA224 _SBF(4, 0x03) 171*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA512 _SBF(4, 0x08) 172*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA384 _SBF(4, 0x09) 173*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA512_224 _SBF(4, 0x0A) 174*b353a43cSLin Jinhan #define CRYPTO_MODE_SHA512_256 _SBF(4, 0x0B) 175*b353a43cSLin Jinhan #define CRYPTO_HMAC_ENABLE _BIT(3) 176*b353a43cSLin Jinhan #define CRYPTO_HW_PAD_ENABLE _BIT(2) 177*b353a43cSLin Jinhan #define CRYPTO_HASH_SRC_SEL _BIT(1) 178*b353a43cSLin Jinhan #define CRYPTO_HASH_ENABLE _BIT(0) 179*b353a43cSLin Jinhan 180*b353a43cSLin Jinhan /* Cipher Status Register */ 181*b353a43cSLin Jinhan #define CRYPTO_CIPHER_ST 0x004C 182*b353a43cSLin Jinhan #define CRYPTO_OTP_KEY_VALID _BIT(2) 183*b353a43cSLin Jinhan #define CRYPTO_HASH_BUSY _BIT(1) 184*b353a43cSLin Jinhan #define CRYPTO_BLOCK_CIPHER_BUSY _BIT(0) 185*b353a43cSLin Jinhan 186*b353a43cSLin Jinhan #define CRYPTO_CIPHER_STATE 0x0050 187*b353a43cSLin Jinhan #define CRYPTO_HASH_IDLE_STATE _SBF(10, 0x01) 188*b353a43cSLin Jinhan #define CRYPTO_HASH_IPAD_STATE _SBF(10, 0x02) 189*b353a43cSLin Jinhan #define CRYPTO_HASH_TEXT_STATE _SBF(10, 0x04) 190*b353a43cSLin Jinhan #define CRYPTO_HASH_OPAD_STATE _SBF(10, 0x08) 191*b353a43cSLin Jinhan #define CRYPTO_HASH_OPAD_EXT_STATE _SBF(10, 0x10) 192*b353a43cSLin Jinhan #define CRYPTO_GCM_IDLE_STATE _SBF(8, 0x00) 193*b353a43cSLin Jinhan #define CRYPTO_GCM_PRE_STATE _SBF(8, 0x01) 194*b353a43cSLin Jinhan #define CRYPTO_GCM_NA_STATE _SBF(8, 0x02) 195*b353a43cSLin Jinhan #define CRYPTO_GCM_PC_STATE _SBF(8, 0x03) 196*b353a43cSLin Jinhan #define CRYPTO_CCM_IDLE_STATE _SBF(6, 0x00) 197*b353a43cSLin Jinhan #define CRYPTO_CCM_PRE_STATE _SBF(6, 0x01) 198*b353a43cSLin Jinhan #define CRYPTO_CCM_NA_STATE _SBF(6, 0x02) 199*b353a43cSLin Jinhan #define CRYPTO_CCM_PC_STATE _SBF(6, 0x03) 200*b353a43cSLin Jinhan #define CRYPTO_PARALLEL_IDLE_STATE _SBF(4, 0x00) 201*b353a43cSLin Jinhan #define CRYPTO_PARALLEL_PRE_STATE _SBF(4, 0x01) 202*b353a43cSLin Jinhan #define CRYPTO_PARALLEL_BULK_STATE _SBF(4, 0x02) 203*b353a43cSLin Jinhan #define CRYPTO_MAC_IDLE_STATE _SBF(2, 0x00) 204*b353a43cSLin Jinhan #define CRYPTO_MAC_PRE_STATE _SBF(2, 0x01) 205*b353a43cSLin Jinhan #define CRYPTO_MAC_BULK_STATE _SBF(2, 0x02) 206*b353a43cSLin Jinhan #define CRYPTO_SERIAL_IDLE_STATE _SBF(0, 0x00) 207*b353a43cSLin Jinhan #define CRYPTO_SERIAL_PRE_STATE _SBF(0, 0x01) 208*b353a43cSLin Jinhan #define CRYPTO_SERIAL_BULK_STATE _SBF(0, 0x02) 209*b353a43cSLin Jinhan 210*b353a43cSLin Jinhan #define CRYPTO_CH0_IV_0 0x0100 211*b353a43cSLin Jinhan #define CRYPTO_CH0_IV_1 0x0104 212*b353a43cSLin Jinhan #define CRYPTO_CH0_IV_2 0x0108 213*b353a43cSLin Jinhan #define CRYPTO_CH0_IV_3 0x010c 214*b353a43cSLin Jinhan #define CRYPTO_CH1_IV_0 0x0110 215*b353a43cSLin Jinhan #define CRYPTO_CH1_IV_1 0x0114 216*b353a43cSLin Jinhan #define CRYPTO_CH1_IV_2 0x0118 217*b353a43cSLin Jinhan #define CRYPTO_CH1_IV_3 0x011c 218*b353a43cSLin Jinhan #define CRYPTO_CH2_IV_0 0x0120 219*b353a43cSLin Jinhan #define CRYPTO_CH2_IV_1 0x0124 220*b353a43cSLin Jinhan #define CRYPTO_CH2_IV_2 0x0128 221*b353a43cSLin Jinhan #define CRYPTO_CH2_IV_3 0x012c 222*b353a43cSLin Jinhan #define CRYPTO_CH3_IV_0 0x0130 223*b353a43cSLin Jinhan #define CRYPTO_CH3_IV_1 0x0134 224*b353a43cSLin Jinhan #define CRYPTO_CH3_IV_2 0x0138 225*b353a43cSLin Jinhan #define CRYPTO_CH3_IV_3 0x013c 226*b353a43cSLin Jinhan #define CRYPTO_CH4_IV_0 0x0140 227*b353a43cSLin Jinhan #define CRYPTO_CH4_IV_1 0x0144 228*b353a43cSLin Jinhan #define CRYPTO_CH4_IV_2 0x0148 229*b353a43cSLin Jinhan #define CRYPTO_CH4_IV_3 0x014c 230*b353a43cSLin Jinhan #define CRYPTO_CH5_IV_0 0x0150 231*b353a43cSLin Jinhan #define CRYPTO_CH5_IV_1 0x0154 232*b353a43cSLin Jinhan #define CRYPTO_CH5_IV_2 0x0158 233*b353a43cSLin Jinhan #define CRYPTO_CH5_IV_3 0x015c 234*b353a43cSLin Jinhan #define CRYPTO_CH6_IV_0 0x0160 235*b353a43cSLin Jinhan #define CRYPTO_CH6_IV_1 0x0164 236*b353a43cSLin Jinhan #define CRYPTO_CH6_IV_2 0x0168 237*b353a43cSLin Jinhan #define CRYPTO_CH6_IV_3 0x016c 238*b353a43cSLin Jinhan #define CRYPTO_CH7_IV_0 0x0170 239*b353a43cSLin Jinhan #define CRYPTO_CH7_IV_1 0x0174 240*b353a43cSLin Jinhan #define CRYPTO_CH7_IV_2 0x0178 241*b353a43cSLin Jinhan #define CRYPTO_CH7_IV_3 0x017c 242*b353a43cSLin Jinhan 243*b353a43cSLin Jinhan #define CRYPTO_CH0_KEY_0 0x0180 244*b353a43cSLin Jinhan #define CRYPTO_CH0_KEY_1 0x0184 245*b353a43cSLin Jinhan #define CRYPTO_CH0_KEY_2 0x0188 246*b353a43cSLin Jinhan #define CRYPTO_CH0_KEY_3 0x018c 247*b353a43cSLin Jinhan #define CRYPTO_CH1_KEY_0 0x0190 248*b353a43cSLin Jinhan #define CRYPTO_CH1_KEY_1 0x0194 249*b353a43cSLin Jinhan #define CRYPTO_CH1_KEY_2 0x0198 250*b353a43cSLin Jinhan #define CRYPTO_CH1_KEY_3 0x019c 251*b353a43cSLin Jinhan #define CRYPTO_CH2_KEY_0 0x01a0 252*b353a43cSLin Jinhan #define CRYPTO_CH2_KEY_1 0x01a4 253*b353a43cSLin Jinhan #define CRYPTO_CH2_KEY_2 0x01a8 254*b353a43cSLin Jinhan #define CRYPTO_CH2_KEY_3 0x01ac 255*b353a43cSLin Jinhan #define CRYPTO_CH3_KEY_0 0x01b0 256*b353a43cSLin Jinhan #define CRYPTO_CH3_KEY_1 0x01b4 257*b353a43cSLin Jinhan #define CRYPTO_CH3_KEY_2 0x01b8 258*b353a43cSLin Jinhan #define CRYPTO_CH3_KEY_3 0x01bc 259*b353a43cSLin Jinhan #define CRYPTO_CH4_KEY_0 0x01c0 260*b353a43cSLin Jinhan #define CRYPTO_CH4_KEY_1 0x01c4 261*b353a43cSLin Jinhan #define CRYPTO_CH4_KEY_2 0x01c8 262*b353a43cSLin Jinhan #define CRYPTO_CH4_KEY_3 0x01cc 263*b353a43cSLin Jinhan #define CRYPTO_CH5_KEY_0 0x01d0 264*b353a43cSLin Jinhan #define CRYPTO_CH5_KEY_1 0x01d4 265*b353a43cSLin Jinhan #define CRYPTO_CH5_KEY_2 0x01d8 266*b353a43cSLin Jinhan #define CRYPTO_CH5_KEY_3 0x01dc 267*b353a43cSLin Jinhan #define CRYPTO_CH6_KEY_0 0x01e0 268*b353a43cSLin Jinhan #define CRYPTO_CH6_KEY_1 0x01e4 269*b353a43cSLin Jinhan #define CRYPTO_CH6_KEY_2 0x01e8 270*b353a43cSLin Jinhan #define CRYPTO_CH6_KEY_3 0x01ec 271*b353a43cSLin Jinhan #define CRYPTO_CH7_KEY_0 0x01f0 272*b353a43cSLin Jinhan #define CRYPTO_CH7_KEY_1 0x01f4 273*b353a43cSLin Jinhan #define CRYPTO_CH7_KEY_2 0x01f8 274*b353a43cSLin Jinhan #define CRYPTO_CH7_KEY_3 0x01fc 275*b353a43cSLin Jinhan #define CRYPTO_KEY_CHANNLE_NUM 8 276*b353a43cSLin Jinhan 277*b353a43cSLin Jinhan #define CRYPTO_CH0_PKEY_0 0x0200 278*b353a43cSLin Jinhan #define CRYPTO_CH0_PKEY_1 0x0204 279*b353a43cSLin Jinhan #define CRYPTO_CH0_PKEY_2 0x0208 280*b353a43cSLin Jinhan #define CRYPTO_CH0_PKEY_3 0x020c 281*b353a43cSLin Jinhan #define CRYPTO_CH1_PKEY_0 0x0210 282*b353a43cSLin Jinhan #define CRYPTO_CH1_PKEY_1 0x0214 283*b353a43cSLin Jinhan #define CRYPTO_CH1_PKEY_2 0x0218 284*b353a43cSLin Jinhan #define CRYPTO_CH1_PKEY_3 0x021c 285*b353a43cSLin Jinhan #define CRYPTO_CH2_PKEY_0 0x0220 286*b353a43cSLin Jinhan #define CRYPTO_CH2_PKEY_1 0x0224 287*b353a43cSLin Jinhan #define CRYPTO_CH2_PKEY_2 0x0228 288*b353a43cSLin Jinhan #define CRYPTO_CH2_PKEY_3 0x022c 289*b353a43cSLin Jinhan #define CRYPTO_CH3_PKEY_0 0x0230 290*b353a43cSLin Jinhan #define CRYPTO_CH3_PKEY_1 0x0234 291*b353a43cSLin Jinhan #define CRYPTO_CH3_PKEY_2 0x0238 292*b353a43cSLin Jinhan #define CRYPTO_CH3_PKEY_3 0x023c 293*b353a43cSLin Jinhan #define CRYPTO_CH4_PKEY_0 0x0240 294*b353a43cSLin Jinhan #define CRYPTO_CH4_PKEY_1 0x0244 295*b353a43cSLin Jinhan #define CRYPTO_CH4_PKEY_2 0x0248 296*b353a43cSLin Jinhan #define CRYPTO_CH4_PKEY_3 0x024c 297*b353a43cSLin Jinhan #define CRYPTO_CH5_PKEY_0 0x0250 298*b353a43cSLin Jinhan #define CRYPTO_CH5_PKEY_1 0x0254 299*b353a43cSLin Jinhan #define CRYPTO_CH5_PKEY_2 0x0258 300*b353a43cSLin Jinhan #define CRYPTO_CH5_PKEY_3 0x025c 301*b353a43cSLin Jinhan #define CRYPTO_CH6_PKEY_0 0x0260 302*b353a43cSLin Jinhan #define CRYPTO_CH6_PKEY_1 0x0264 303*b353a43cSLin Jinhan #define CRYPTO_CH6_PKEY_2 0x0268 304*b353a43cSLin Jinhan #define CRYPTO_CH6_PKEY_3 0x026c 305*b353a43cSLin Jinhan #define CRYPTO_CH7_PKEY_0 0x0270 306*b353a43cSLin Jinhan #define CRYPTO_CH7_PKEY_1 0x0274 307*b353a43cSLin Jinhan #define CRYPTO_CH7_PKEY_2 0x0278 308*b353a43cSLin Jinhan #define CRYPTO_CH7_PKEY_3 0x027c 309*b353a43cSLin Jinhan #define CRYPTO_PKEY_CHANNLE_NUM 8 310*b353a43cSLin Jinhan 311*b353a43cSLin Jinhan #define CRYPTO_CH0_PC_LEN_0 0x0280 312*b353a43cSLin Jinhan #define CRYPTO_CH0_PC_LEN_1 0x0284 313*b353a43cSLin Jinhan #define CRYPTO_CH1_PC_LEN_0 0x0288 314*b353a43cSLin Jinhan #define CRYPTO_CH1_PC_LEN_1 0x028c 315*b353a43cSLin Jinhan #define CRYPTO_CH2_PC_LEN_0 0x0290 316*b353a43cSLin Jinhan #define CRYPTO_CH2_PC_LEN_1 0x0294 317*b353a43cSLin Jinhan #define CRYPTO_CH3_PC_LEN_0 0x0298 318*b353a43cSLin Jinhan #define CRYPTO_CH3_PC_LEN_1 0x029c 319*b353a43cSLin Jinhan #define CRYPTO_CH4_PC_LEN_0 0x02a0 320*b353a43cSLin Jinhan #define CRYPTO_CH4_PC_LEN_1 0x02a4 321*b353a43cSLin Jinhan #define CRYPTO_CH5_PC_LEN_0 0x02a8 322*b353a43cSLin Jinhan #define CRYPTO_CH5_PC_LEN_1 0x02ac 323*b353a43cSLin Jinhan #define CRYPTO_CH6_PC_LEN_0 0x02b0 324*b353a43cSLin Jinhan #define CRYPTO_CH6_PC_LEN_1 0x02b4 325*b353a43cSLin Jinhan #define CRYPTO_CH7_PC_LEN_0 0x02b8 326*b353a43cSLin Jinhan #define CRYPTO_CH7_PC_LEN_1 0x02bc 327*b353a43cSLin Jinhan 328*b353a43cSLin Jinhan #define CRYPTO_CH0_AAD_LEN_0 0x02c0 329*b353a43cSLin Jinhan #define CRYPTO_CH0_AAD_LEN_1 0x02c4 330*b353a43cSLin Jinhan #define CRYPTO_CH1_AAD_LEN_0 0x02c8 331*b353a43cSLin Jinhan #define CRYPTO_CH1_AAD_LEN_1 0x02cc 332*b353a43cSLin Jinhan #define CRYPTO_CH2_AAD_LEN_0 0x02d0 333*b353a43cSLin Jinhan #define CRYPTO_CH2_AAD_LEN_1 0x02d4 334*b353a43cSLin Jinhan #define CRYPTO_CH3_AAD_LEN_0 0x02d8 335*b353a43cSLin Jinhan #define CRYPTO_CH3_AAD_LEN_1 0x02dc 336*b353a43cSLin Jinhan #define CRYPTO_CH4_AAD_LEN_0 0x02e0 337*b353a43cSLin Jinhan #define CRYPTO_CH4_AAD_LEN_1 0x02e4 338*b353a43cSLin Jinhan #define CRYPTO_CH5_AAD_LEN_0 0x02e8 339*b353a43cSLin Jinhan #define CRYPTO_CH5_AAD_LEN_1 0x02ec 340*b353a43cSLin Jinhan #define CRYPTO_CH6_AAD_LEN_0 0x02f0 341*b353a43cSLin Jinhan #define CRYPTO_CH6_AAD_LEN_1 0x02f4 342*b353a43cSLin Jinhan #define CRYPTO_CH7_AAD_LEN_0 0x02f8 343*b353a43cSLin Jinhan #define CRYPTO_CH7_AAD_LEN_1 0x02fc 344*b353a43cSLin Jinhan 345*b353a43cSLin Jinhan #define CRYPTO_CH0_IV_LEN_0 0x0300 346*b353a43cSLin Jinhan #define CRYPTO_CH1_IV_LEN_0 0x0304 347*b353a43cSLin Jinhan #define CRYPTO_CH2_IV_LEN_0 0x0308 348*b353a43cSLin Jinhan #define CRYPTO_CH3_IV_LEN_0 0x030c 349*b353a43cSLin Jinhan #define CRYPTO_CH4_IV_LEN_0 0x0310 350*b353a43cSLin Jinhan #define CRYPTO_CH5_IV_LEN_0 0x0314 351*b353a43cSLin Jinhan #define CRYPTO_CH6_IV_LEN_0 0x0318 352*b353a43cSLin Jinhan #define CRYPTO_CH7_IV_LEN_0 0x031c 353*b353a43cSLin Jinhan 354*b353a43cSLin Jinhan #define CRYPTO_CH0_TAG_0 0x0320 355*b353a43cSLin Jinhan #define CRYPTO_CH0_TAG_1 0x0324 356*b353a43cSLin Jinhan #define CRYPTO_CH0_TAG_2 0x0328 357*b353a43cSLin Jinhan #define CRYPTO_CH0_TAG_3 0x032c 358*b353a43cSLin Jinhan #define CRYPTO_CH1_TAG_0 0x0330 359*b353a43cSLin Jinhan #define CRYPTO_CH1_TAG_1 0x0334 360*b353a43cSLin Jinhan #define CRYPTO_CH1_TAG_2 0x0338 361*b353a43cSLin Jinhan #define CRYPTO_CH1_TAG_3 0x033c 362*b353a43cSLin Jinhan #define CRYPTO_CH2_TAG_0 0x0340 363*b353a43cSLin Jinhan #define CRYPTO_CH2_TAG_1 0x0344 364*b353a43cSLin Jinhan #define CRYPTO_CH2_TAG_2 0x0348 365*b353a43cSLin Jinhan #define CRYPTO_CH2_TAG_3 0x034c 366*b353a43cSLin Jinhan #define CRYPTO_CH3_TAG_0 0x0350 367*b353a43cSLin Jinhan #define CRYPTO_CH3_TAG_1 0x0354 368*b353a43cSLin Jinhan #define CRYPTO_CH3_TAG_2 0x0358 369*b353a43cSLin Jinhan #define CRYPTO_CH3_TAG_3 0x035c 370*b353a43cSLin Jinhan #define CRYPTO_CH4_TAG_0 0x0360 371*b353a43cSLin Jinhan #define CRYPTO_CH4_TAG_1 0x0364 372*b353a43cSLin Jinhan #define CRYPTO_CH4_TAG_2 0x0368 373*b353a43cSLin Jinhan #define CRYPTO_CH4_TAG_3 0x036c 374*b353a43cSLin Jinhan #define CRYPTO_CH5_TAG_0 0x0370 375*b353a43cSLin Jinhan #define CRYPTO_CH5_TAG_1 0x0374 376*b353a43cSLin Jinhan #define CRYPTO_CH5_TAG_2 0x0378 377*b353a43cSLin Jinhan #define CRYPTO_CH5_TAG_3 0x037c 378*b353a43cSLin Jinhan #define CRYPTO_CH6_TAG_0 0x0380 379*b353a43cSLin Jinhan #define CRYPTO_CH6_TAG_1 0x0384 380*b353a43cSLin Jinhan #define CRYPTO_CH6_TAG_2 0x0388 381*b353a43cSLin Jinhan #define CRYPTO_CH6_TAG_3 0x038c 382*b353a43cSLin Jinhan #define CRYPTO_CH7_TAG_0 0x0390 383*b353a43cSLin Jinhan #define CRYPTO_CH7_TAG_1 0x0394 384*b353a43cSLin Jinhan #define CRYPTO_CH7_TAG_2 0x0398 385*b353a43cSLin Jinhan #define CRYPTO_CH7_TAG_3 0x039c 386*b353a43cSLin Jinhan 387*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_0 0x03a0 388*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_1 0x03a4 389*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_2 0x03a8 390*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_3 0x03ac 391*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_4 0x03b0 392*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_5 0x03b4 393*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_6 0x03b8 394*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_7 0x03bc 395*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_8 0x03c0 396*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_9 0x03c4 397*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_10 0x03c8 398*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_11 0x03cc 399*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_12 0x03d0 400*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_13 0x03d4 401*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_14 0x03d8 402*b353a43cSLin Jinhan #define CRYPTO_HASH_DOUT_15 0x03dc 403*b353a43cSLin Jinhan 404*b353a43cSLin Jinhan #define CRYPTO_TAG_VALID 0x03e0 405*b353a43cSLin Jinhan #define CRYPTO_CH7_TAG_VALID _BIT(7) 406*b353a43cSLin Jinhan #define CRYPTO_CH6_TAG_VALID _BIT(6) 407*b353a43cSLin Jinhan #define CRYPTO_CH5_TAG_VALID _BIT(5) 408*b353a43cSLin Jinhan #define CRYPTO_CH4_TAG_VALID _BIT(4) 409*b353a43cSLin Jinhan #define CRYPTO_CH3_TAG_VALID _BIT(3) 410*b353a43cSLin Jinhan #define CRYPTO_CH2_TAG_VALID _BIT(2) 411*b353a43cSLin Jinhan #define CRYPTO_CH1_TAG_VALID _BIT(1) 412*b353a43cSLin Jinhan #define CRYPTO_CH0_TAG_VALID _BIT(0) 413*b353a43cSLin Jinhan 414*b353a43cSLin Jinhan #define CRYPTO_HASH_VALID 0x03e4 415*b353a43cSLin Jinhan #define CRYPTO_HASH_IS_VALID _BIT(0) 416*b353a43cSLin Jinhan 417*b353a43cSLin Jinhan #define CRYPTO_VERSION 0x03f0 418*b353a43cSLin Jinhan 419*b353a43cSLin Jinhan #define CRYPTO_RNG_CTL 0x0400 420*b353a43cSLin Jinhan #define CRYPTO_RNG_64_bit_len _SBF(4, 0x00) 421*b353a43cSLin Jinhan #define CRYPTO_RNG_128_bit_len _SBF(4, 0x01) 422*b353a43cSLin Jinhan #define CRYPTO_RNG_192_bit_len _SBF(4, 0x02) 423*b353a43cSLin Jinhan #define CRYPTO_RNG_256_bit_len _SBF(4, 0x03) 424*b353a43cSLin Jinhan #define CRYPTO_RNG_FATESY_SOC_RING _SBF(2, 0x00) 425*b353a43cSLin Jinhan #define CRYPTO_RNG_SLOWER_SOC_RING_0 _SBF(2, 0x01) 426*b353a43cSLin Jinhan #define CRYPTO_RNG_SLOWER_SOC_RING_1 _SBF(2, 0x02) 427*b353a43cSLin Jinhan #define CRYPTO_RNG_SLOWEST_SOC_RING _SBF(2, 0x03) 428*b353a43cSLin Jinhan #define CRYPTO_RNG_ENABLE _BIT(1) 429*b353a43cSLin Jinhan #define CRYPTO_RNG_START _BIT(0) 430*b353a43cSLin Jinhan 431*b353a43cSLin Jinhan #define CRYPTO_RNG_SAMPLE_CNT 0x0404 432*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_0 0x0410 433*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_1 0x0414 434*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_2 0x0418 435*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_3 0x041c 436*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_4 0x0420 437*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_5 0x0424 438*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_6 0x0428 439*b353a43cSLin Jinhan #define CRYPTO_RNG_DOUT_7 0x042c 440*b353a43cSLin Jinhan 441*b353a43cSLin Jinhan #define CRYPTO_RAM_CTL 0x0480 442*b353a43cSLin Jinhan #define CRYPTO_RAM_PKA_RDY _BIT(0) 443*b353a43cSLin Jinhan 444*b353a43cSLin Jinhan #define CRYPTO_RAM_ST 0x0484 445*b353a43cSLin Jinhan #define CRYPTO_CLK_RAM_RDY _BIT(0) 446*b353a43cSLin Jinhan 447*b353a43cSLin Jinhan #define CRYPTO_DEBUG_CTL 0x04a0 448*b353a43cSLin Jinhan #define CRYPTO_DEBUG_MODE _BIT(0) 449*b353a43cSLin Jinhan 450*b353a43cSLin Jinhan #define CRYPTO_DEBUG_ST 0x04a4 451*b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_CLK_EN _BIT(0) 452*b353a43cSLin Jinhan 453*b353a43cSLin Jinhan #define CRYPTO_DEBUG_MONITOR 0x04a8 454*b353a43cSLin Jinhan 455*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP0 0x00800 456*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP1 0x00804 457*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP2 0x00808 458*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP3 0x0080C 459*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP4 0x00810 460*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP5 0x00814 461*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP6 0x00818 462*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP7 0x0081C 463*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP8 0x00820 464*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP9 0x00824 465*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP10 0x00828 466*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP11 0x0082C 467*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP12 0x00830 468*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP13 0x00834 469*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP14 0x00838 470*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP15 0x0083C 471*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP16 0x00840 472*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP17 0x00844 473*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP18 0x00848 474*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP19 0x0084C 475*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP20 0x00850 476*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP21 0x00854 477*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP22 0x00858 478*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP23 0x0085C 479*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP24 0x00860 480*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP25 0x00864 481*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP26 0x00868 482*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP27 0x0086C 483*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP28 0x00870 484*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP29 0x00874 485*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP30 0x00878 486*b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP31 0x0087C 487*b353a43cSLin Jinhan 488*b353a43cSLin Jinhan #define CRYPTO_OPCODE 0x00880 489*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_TAG_SHIFT 0 490*b353a43cSLin Jinhan #define CRYPTO_OPCODE_TAG_MASK 0x0000003f 491*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_R_SHIFT 6 492*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_R_MASK 0x00000fc0 493*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_B_SHIFT 12 494*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_B_MASK 0x0003f000 495*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_A_SHIFT 18 496*b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_A_MASK 0x00fc0000 497*b353a43cSLin Jinhan #define CRYPTO_OPCODE_LEN_SHIFT 24 498*b353a43cSLin Jinhan #define CRYPTO_OPCODE_LEN_MASK 0x03000000 499*b353a43cSLin Jinhan #define CRYPTO_OPCODE_CODE_SHIFT 27 500*b353a43cSLin Jinhan #define CRYPTO_OPCODE_CODE_MASK 0xfc000000 501*b353a43cSLin Jinhan 502*b353a43cSLin Jinhan #define CRYPTO_N_NP_T0_T1_ADDR 0x00884 503*b353a43cSLin Jinhan #define CRYPTO_N_VIRTUAL_ADDR_SHIFT 0 504*b353a43cSLin Jinhan #define CRYPTO_N_VIRTUAL_ADDR_MASK 0x0000001f 505*b353a43cSLin Jinhan #define CRYPTO_NP_VIRTUAL_ADDR_SHIFT 5 506*b353a43cSLin Jinhan #define CRYPTO_NP_VIRTUAL_ADDR_MASK 0x000003e0 507*b353a43cSLin Jinhan #define CRYPTO_T0_VIRTUAL_ADDR_SHIFT 10 508*b353a43cSLin Jinhan #define CRYPTO_T0_VIRTUAL_ADDR_MASK 0x00007c00 509*b353a43cSLin Jinhan #define CRYPTO_T1_VIRTUAL_ADDR_SHIFT 15 510*b353a43cSLin Jinhan #define CRYPTO_T1_VIRTUAL_ADDR_MASK 0x000f8000 511*b353a43cSLin Jinhan 512*b353a43cSLin Jinhan #define CRYPTO_PKA_STATUS 0x00888 513*b353a43cSLin Jinhan #define CRYPTO_PKA_PIPE_IS_RDY _BIT(0) 514*b353a43cSLin Jinhan #define CRYPTO_PKA_BUSY _BIT(1) 515*b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_OUT_ZERO _BIT(2) 516*b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_MODOVRFLW _BIT(3) 517*b353a43cSLin Jinhan #define CRYPTO_PKA_DIV_BY_ZERO _BIT(4) 518*b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_CARRY _BIT(5) 519*b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_SIGN_OUT _BIT(6) 520*b353a43cSLin Jinhan #define CRYPTO_PKA_MODINV_OF_ZERO _BIT(7) 521*b353a43cSLin Jinhan #define CRYPTO_PKA_CPU_BUSY _BIT(8) 522*b353a43cSLin Jinhan #define CRYPTO_PKA_OPCODE_STATUS_SHIFT 9 523*b353a43cSLin Jinhan #define CRYPTO_PKA_OPCODE_STATUS_MASK 0x00003e00 524*b353a43cSLin Jinhan #define CRYPTO_PKA_TAG_STATUS_SHIFT 14 525*b353a43cSLin Jinhan #define CRYPTO_PKA_TAG_STATUS_MASK 0x0003c000 526*b353a43cSLin Jinhan 527*b353a43cSLin Jinhan #define CRYPTO_PKA_SW_RESET 0x0088C 528*b353a43cSLin Jinhan #define CRYPTO_PKA_L0 0x00890 529*b353a43cSLin Jinhan #define CRYPTO_PKA_L1 0x00894 530*b353a43cSLin Jinhan #define CRYPTO_PKA_L2 0x00898 531*b353a43cSLin Jinhan #define CRYPTO_PKA_L3 0x0089C 532*b353a43cSLin Jinhan #define CRYPTO_PKA_L4 0x008A0 533*b353a43cSLin Jinhan #define CRYPTO_PKA_L5 0x008A4 534*b353a43cSLin Jinhan #define CRYPTO_PKA_L6 0x008A8 535*b353a43cSLin Jinhan #define CRYPTO_PKA_L7 0x008AC 536*b353a43cSLin Jinhan #define CRYPTO_PKA_PIPE_RDY 0x008B0 537*b353a43cSLin Jinhan #define CRYPTO_PKA_DONE 0x008B4 538*b353a43cSLin Jinhan #define CRYPTO_PKA_MON_SELECT 0x008B8 539*b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_REG_EN 0x008BC 540*b353a43cSLin Jinhan #define CRYPTO_DEBUG_CNT_ADDR 0x008C0 541*b353a43cSLin Jinhan #define CRYPTO_DEBUG_EXT_ADDR 0x008C4 542*b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_HALT 0x008C8 543*b353a43cSLin Jinhan #define CRYPTO_PKA_MON_READ 0x008D0 544*b353a43cSLin Jinhan #define CRYPTO_PKA_INT_ENA 0x008D4 545*b353a43cSLin Jinhan #define CRYPTO_PKA_INT_ST 0x008D8 546*b353a43cSLin Jinhan #define CRYPTO_SRAM_ADDR 0x01000 547*b353a43cSLin Jinhan #define CRYPTO_SRAM_BASE 0x1000 548*b353a43cSLin Jinhan 549*b353a43cSLin Jinhan #define LLI_DMA_CTRL_LAST _BIT(0) 550*b353a43cSLin Jinhan #define LLI_DMA_CTRL_PAUSE _BIT(1) 551*b353a43cSLin Jinhan #define LLI_DMA_CTRL_LIST_DONE _BIT(8) 552*b353a43cSLin Jinhan #define LLI_DMA_CTRL_DST_DONE _BIT(9) 553*b353a43cSLin Jinhan #define LLI_DMA_CTRL_SRC_DONE _BIT(10) 554*b353a43cSLin Jinhan 555*b353a43cSLin Jinhan #define LLI_USER_CPIHER_START _BIT(0) 556*b353a43cSLin Jinhan #define LLI_USER_STRING_START _BIT(1) 557*b353a43cSLin Jinhan #define LLI_USER_STRING_LAST _BIT(2) 558*b353a43cSLin Jinhan #define LLI_USER_STRING_ADA _BIT(3) 559*b353a43cSLin Jinhan #define LLI_USER_PRIVACY_KEY _BIT(7) 560*b353a43cSLin Jinhan #define LLI_USER_ROOT_KEY _BIT(8) 561*b353a43cSLin Jinhan 562*b353a43cSLin Jinhan enum endian_mode { 563*b353a43cSLin Jinhan BIG_ENDIAN = 0, 564*b353a43cSLin Jinhan LITTLE_ENDIAN 565*b353a43cSLin Jinhan }; 566*b353a43cSLin Jinhan 567*b353a43cSLin Jinhan enum clk_type { 568*b353a43cSLin Jinhan CLK = 0, 569*b353a43cSLin Jinhan HCLK 570*b353a43cSLin Jinhan }; 571*b353a43cSLin Jinhan 572*b353a43cSLin Jinhan struct crypto_lli_desc { 573*b353a43cSLin Jinhan u32 src_addr; 574*b353a43cSLin Jinhan u32 src_len; 575*b353a43cSLin Jinhan u32 dst_addr; 576*b353a43cSLin Jinhan u32 dst_len; 577*b353a43cSLin Jinhan u32 user_define; 578*b353a43cSLin Jinhan u32 reserve; 579*b353a43cSLin Jinhan u32 dma_ctrl; 580*b353a43cSLin Jinhan u32 next_addr; 581*b353a43cSLin Jinhan }; 582*b353a43cSLin Jinhan 583*b353a43cSLin Jinhan struct rk_hash_ctx { 584*b353a43cSLin Jinhan const u8 *null_hash; /* when hash is null or length is zero */ 585*b353a43cSLin Jinhan void *cur_data_lli; /* to recored the lli that not computed */ 586*b353a43cSLin Jinhan void *free_data_lli; /* free lli that can use for next lli */ 587*b353a43cSLin Jinhan void *vir_src_addr; /* virt addr for hash src data*/ 588*b353a43cSLin Jinhan u32 magic; /* to check whether the ctx is correct */ 589*b353a43cSLin Jinhan u32 algo; /* hash algo */ 590*b353a43cSLin Jinhan u32 digest_size; /* hash out length according to hash algo*/ 591*b353a43cSLin Jinhan u32 dma_started; /* choose use start or restart */ 592*b353a43cSLin Jinhan }; 593*b353a43cSLin Jinhan 594*b353a43cSLin Jinhan #define RK_HASH_CTX_MAGIC 0x1A1A1A1A 595*b353a43cSLin Jinhan 596*b353a43cSLin Jinhan extern fdt_addr_t crypto_base; 597*b353a43cSLin Jinhan 598*b353a43cSLin Jinhan static inline u32 crypto_read(u32 offset) 599*b353a43cSLin Jinhan { 600*b353a43cSLin Jinhan return readl(crypto_base + offset); 601*b353a43cSLin Jinhan } 602*b353a43cSLin Jinhan 603*b353a43cSLin Jinhan static inline void crypto_write(u32 val, u32 offset) 604*b353a43cSLin Jinhan { 605*b353a43cSLin Jinhan writel(val, crypto_base + offset); 606*b353a43cSLin Jinhan } 607*b353a43cSLin Jinhan 608*b353a43cSLin Jinhan #endif 609