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
41002b4cf42SLin Jinhan #define CRYPTO_RAM_CTL_SEL_MASK _SBF(16, 3)
41102b4cf42SLin Jinhan #define CRYPTO_RAM_CTL_CPU _SBF(0, 0)
41202b4cf42SLin Jinhan #define CRYPTO_RAM_CTL_PKA _SBF(0, 1)
41302b4cf42SLin Jinhan #define CRYPTO_RAM_CTL_ECC _SBF(0, 2)
414b353a43cSLin Jinhan
415b353a43cSLin Jinhan #define CRYPTO_RAM_ST 0x0484
416b353a43cSLin Jinhan #define CRYPTO_CLK_RAM_RDY _BIT(0)
417b353a43cSLin Jinhan
418b353a43cSLin Jinhan #define CRYPTO_DEBUG_CTL 0x04a0
419b353a43cSLin Jinhan #define CRYPTO_DEBUG_MODE _BIT(0)
420b353a43cSLin Jinhan
421b353a43cSLin Jinhan #define CRYPTO_DEBUG_ST 0x04a4
422b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_CLK_EN _BIT(0)
423b353a43cSLin Jinhan
424b353a43cSLin Jinhan #define CRYPTO_DEBUG_MONITOR 0x04a8
425b353a43cSLin Jinhan
426*eecb3765SLin Jinhan #define CRYPTO_KEY_SEL 0x0610
427*eecb3765SLin Jinhan #define CRYPTO_SEL_USER 0x0
428*eecb3765SLin Jinhan #define CRYPTO_SEL_KEYTABLE 0x5a5a5a5a
429*eecb3765SLin Jinhan
43058432b6fSLin Jinhan #define CRYPTO_AES_VERSION 0x0680
43158432b6fSLin Jinhan #define CRYPTO_DES_VERSION 0x0684
43258432b6fSLin Jinhan #define CRYPTO_SM4_VERSION 0x0688
43358432b6fSLin Jinhan
43458432b6fSLin Jinhan #define CRYPTO_ECB_FLAG BIT(0)
43558432b6fSLin Jinhan #define CRYPTO_CBC_FLAG BIT(1)
43658432b6fSLin Jinhan #define CRYPTO_CTS_FLAG BIT(2)
43758432b6fSLin Jinhan #define CRYPTO_CTR_FLAG BIT(3)
43858432b6fSLin Jinhan #define CRYPTO_CFB_FLAG BIT(4)
43958432b6fSLin Jinhan #define CRYPTO_OFB_FLAG BIT(5)
44058432b6fSLin Jinhan #define CRYPTO_XTS_FLAG BIT(6)
44158432b6fSLin Jinhan #define CRYPTO_CCM_FLAG BIT(7)
44258432b6fSLin Jinhan #define CRYPTO_GCM_FLAG BIT(8)
44358432b6fSLin Jinhan #define CRYPTO_CMAC_FLAG BIT(9)
44458432b6fSLin Jinhan #define CRYPTO_CBCMAC_FLAG BIT(10)
44558432b6fSLin Jinhan
44658432b6fSLin Jinhan #define CRYPTO_AES128_FLAG BIT(16)
44758432b6fSLin Jinhan #define CRYPTO_AES192_FLAG BIT(17)
44858432b6fSLin Jinhan #define CRYPTO_AES256_FLAG BIT(18)
44958432b6fSLin Jinhan
45058432b6fSLin Jinhan #define CRYPTO_TDES_FLAG BIT(16)
45158432b6fSLin Jinhan
45258432b6fSLin Jinhan #define CRYPTO_LOCKSEP_FLAG BIT(20)
45358432b6fSLin Jinhan #define CRYPTO_SECURE_FLAG BIT(21)
45458432b6fSLin Jinhan #define CRYPTO_MULTI_CHN_FLAG BIT(22)
45558432b6fSLin Jinhan
45658432b6fSLin Jinhan #define CRYPTO_HASH_VERSION 0x068C
45758432b6fSLin Jinhan #define CRYPTO_HASH_SHA1_FLAG BIT(0)
45858432b6fSLin Jinhan #define CRYPTO_HASH_SHA224_FLAG BIT(1)
45958432b6fSLin Jinhan #define CRYPTO_HASH_SHA256_FLAG BIT(2)
46058432b6fSLin Jinhan #define CRYPTO_HASH_SHA384_FLAG BIT(3)
46158432b6fSLin Jinhan #define CRYPTO_HASH_SHA512_FLAG BIT(4)
46258432b6fSLin Jinhan #define CRYPTO_HASH_SHA512_224_FLAG BIT(5)
46358432b6fSLin Jinhan #define CRYPTO_HASH_SHA512_256_FLAG BIT(6)
46458432b6fSLin Jinhan #define CRYPTO_HASH_MD5_FLAG BIT(7)
46558432b6fSLin Jinhan #define CRYPTO_HASH_SM3_FLAG BIT(8)
46658432b6fSLin Jinhan
46758432b6fSLin Jinhan #define CRYPTO_HMAC_VERSION 0x0690
46858432b6fSLin Jinhan #define CRYPTO_HMAC_SHA1_FLAG BIT(0)
46958432b6fSLin Jinhan #define CRYPTO_HMAC_SHA256_FLAG BIT(1)
47058432b6fSLin Jinhan #define CRYPTO_HMAC_SHA512_FLAG BIT(2)
47158432b6fSLin Jinhan #define CRYPTO_HMAC_MD5_FLAG BIT(3)
47258432b6fSLin Jinhan #define CRYPTO_HMAC_SM3_FLAG BIT(4)
47358432b6fSLin Jinhan
474e0c259feSLin Jinhan #define CRYPTO_CRYPTO_VERSION_NEW 0x06f0
475e0c259feSLin Jinhan
476b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP0 0x00800
477b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP1 0x00804
478b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP2 0x00808
479b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP3 0x0080C
480b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP4 0x00810
481b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP5 0x00814
482b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP6 0x00818
483b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP7 0x0081C
484b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP8 0x00820
485b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP9 0x00824
486b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP10 0x00828
487b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP11 0x0082C
488b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP12 0x00830
489b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP13 0x00834
490b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP14 0x00838
491b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP15 0x0083C
492b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP16 0x00840
493b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP17 0x00844
494b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP18 0x00848
495b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP19 0x0084C
496b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP20 0x00850
497b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP21 0x00854
498b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP22 0x00858
499b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP23 0x0085C
500b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP24 0x00860
501b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP25 0x00864
502b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP26 0x00868
503b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP27 0x0086C
504b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP28 0x00870
505b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP29 0x00874
506b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP30 0x00878
507b353a43cSLin Jinhan #define CRYPTO_MEMORY_MAP31 0x0087C
508b353a43cSLin Jinhan
509b353a43cSLin Jinhan #define CRYPTO_OPCODE 0x00880
510b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_TAG_SHIFT 0
511b353a43cSLin Jinhan #define CRYPTO_OPCODE_TAG_MASK 0x0000003f
512b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_R_SHIFT 6
513b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_R_MASK 0x00000fc0
514b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_B_SHIFT 12
515b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_B_MASK 0x0003f000
516b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_A_SHIFT 18
517b353a43cSLin Jinhan #define CRYPTO_OPCODE_REG_A_MASK 0x00fc0000
518b353a43cSLin Jinhan #define CRYPTO_OPCODE_LEN_SHIFT 24
519b353a43cSLin Jinhan #define CRYPTO_OPCODE_LEN_MASK 0x03000000
520b353a43cSLin Jinhan #define CRYPTO_OPCODE_CODE_SHIFT 27
521b353a43cSLin Jinhan #define CRYPTO_OPCODE_CODE_MASK 0xfc000000
522b353a43cSLin Jinhan
523b353a43cSLin Jinhan #define CRYPTO_N_NP_T0_T1_ADDR 0x00884
524b353a43cSLin Jinhan #define CRYPTO_N_VIRTUAL_ADDR_SHIFT 0
525b353a43cSLin Jinhan #define CRYPTO_N_VIRTUAL_ADDR_MASK 0x0000001f
526b353a43cSLin Jinhan #define CRYPTO_NP_VIRTUAL_ADDR_SHIFT 5
527b353a43cSLin Jinhan #define CRYPTO_NP_VIRTUAL_ADDR_MASK 0x000003e0
528b353a43cSLin Jinhan #define CRYPTO_T0_VIRTUAL_ADDR_SHIFT 10
529b353a43cSLin Jinhan #define CRYPTO_T0_VIRTUAL_ADDR_MASK 0x00007c00
530b353a43cSLin Jinhan #define CRYPTO_T1_VIRTUAL_ADDR_SHIFT 15
531b353a43cSLin Jinhan #define CRYPTO_T1_VIRTUAL_ADDR_MASK 0x000f8000
532b353a43cSLin Jinhan
533b353a43cSLin Jinhan #define CRYPTO_PKA_STATUS 0x00888
534b353a43cSLin Jinhan #define CRYPTO_PKA_PIPE_IS_RDY _BIT(0)
535b353a43cSLin Jinhan #define CRYPTO_PKA_BUSY _BIT(1)
536b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_OUT_ZERO _BIT(2)
537b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_MODOVRFLW _BIT(3)
538b353a43cSLin Jinhan #define CRYPTO_PKA_DIV_BY_ZERO _BIT(4)
539b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_CARRY _BIT(5)
540b353a43cSLin Jinhan #define CRYPTO_PKA_ALU_SIGN_OUT _BIT(6)
541b353a43cSLin Jinhan #define CRYPTO_PKA_MODINV_OF_ZERO _BIT(7)
542b353a43cSLin Jinhan #define CRYPTO_PKA_CPU_BUSY _BIT(8)
543b353a43cSLin Jinhan #define CRYPTO_PKA_OPCODE_STATUS_SHIFT 9
544b353a43cSLin Jinhan #define CRYPTO_PKA_OPCODE_STATUS_MASK 0x00003e00
545b353a43cSLin Jinhan #define CRYPTO_PKA_TAG_STATUS_SHIFT 14
546b353a43cSLin Jinhan #define CRYPTO_PKA_TAG_STATUS_MASK 0x0003c000
547b353a43cSLin Jinhan
548b353a43cSLin Jinhan #define CRYPTO_PKA_SW_RESET 0x0088C
549b353a43cSLin Jinhan #define CRYPTO_PKA_L0 0x00890
550b353a43cSLin Jinhan #define CRYPTO_PKA_L1 0x00894
551b353a43cSLin Jinhan #define CRYPTO_PKA_L2 0x00898
552b353a43cSLin Jinhan #define CRYPTO_PKA_L3 0x0089C
553b353a43cSLin Jinhan #define CRYPTO_PKA_L4 0x008A0
554b353a43cSLin Jinhan #define CRYPTO_PKA_L5 0x008A4
555b353a43cSLin Jinhan #define CRYPTO_PKA_L6 0x008A8
556b353a43cSLin Jinhan #define CRYPTO_PKA_L7 0x008AC
557b353a43cSLin Jinhan #define CRYPTO_PKA_PIPE_RDY 0x008B0
558b353a43cSLin Jinhan #define CRYPTO_PKA_DONE 0x008B4
559b353a43cSLin Jinhan #define CRYPTO_PKA_MON_SELECT 0x008B8
560b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_REG_EN 0x008BC
561b353a43cSLin Jinhan #define CRYPTO_DEBUG_CNT_ADDR 0x008C0
562b353a43cSLin Jinhan #define CRYPTO_DEBUG_EXT_ADDR 0x008C4
563b353a43cSLin Jinhan #define CRYPTO_PKA_DEBUG_HALT 0x008C8
564b353a43cSLin Jinhan #define CRYPTO_PKA_MON_READ 0x008D0
565b353a43cSLin Jinhan #define CRYPTO_PKA_INT_ENA 0x008D4
566b353a43cSLin Jinhan #define CRYPTO_PKA_INT_ST 0x008D8
567b353a43cSLin Jinhan #define CRYPTO_SRAM_ADDR 0x01000
568b353a43cSLin Jinhan #define CRYPTO_SRAM_BASE 0x1000
569b353a43cSLin Jinhan
570b353a43cSLin Jinhan #define LLI_DMA_CTRL_LAST _BIT(0)
571b353a43cSLin Jinhan #define LLI_DMA_CTRL_PAUSE _BIT(1)
572b353a43cSLin Jinhan #define LLI_DMA_CTRL_LIST_DONE _BIT(8)
573b353a43cSLin Jinhan #define LLI_DMA_CTRL_DST_DONE _BIT(9)
574b353a43cSLin Jinhan #define LLI_DMA_CTRL_SRC_DONE _BIT(10)
575b353a43cSLin Jinhan
576ce7f4cd6SLin Jinhan #define LLI_USER_CIPHER_START _BIT(0)
577b353a43cSLin Jinhan #define LLI_USER_STRING_START _BIT(1)
578b353a43cSLin Jinhan #define LLI_USER_STRING_LAST _BIT(2)
579c3ce9937SLin Jinhan #define LLI_USER_STRING_AAD _BIT(3)
580b353a43cSLin Jinhan #define LLI_USER_PRIVACY_KEY _BIT(7)
581b353a43cSLin Jinhan #define LLI_USER_ROOT_KEY _BIT(8)
582b353a43cSLin Jinhan
583b353a43cSLin Jinhan extern fdt_addr_t crypto_base;
584b353a43cSLin Jinhan
crypto_read(u32 offset)585b353a43cSLin Jinhan static inline u32 crypto_read(u32 offset)
586b353a43cSLin Jinhan {
587b353a43cSLin Jinhan return readl(crypto_base + offset);
588b353a43cSLin Jinhan }
589b353a43cSLin Jinhan
crypto_write(u32 val,u32 offset)590b353a43cSLin Jinhan static inline void crypto_write(u32 val, u32 offset)
591b353a43cSLin Jinhan {
592b353a43cSLin Jinhan writel(val, crypto_base + offset);
593b353a43cSLin Jinhan }
594b353a43cSLin Jinhan
595b353a43cSLin Jinhan #endif
596