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