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