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