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