xref: /OK3568_Linux_fs/kernel/drivers/crypto/rockchip/rk_crypto_v2_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun 
3*4882a593Smuzhiyun /* Copyright (c) 2018 Rockchip Electronics Co. Ltd. */
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #ifndef __RK_CRYPTO_V2_REG_H__
6*4882a593Smuzhiyun #define __RK_CRYPTO_V2_REG_H__
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #define _SBF(s, v)			((v) << (s))
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #define CRYPTO_WRITE_MASK_SHIFT		(16)
11*4882a593Smuzhiyun #define CRYPTO_WRITE_MASK_ALL		((0xffffu << CRYPTO_WRITE_MASK_SHIFT))
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define WRITE_MASK			(16)
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* Crypto control registers*/
16*4882a593Smuzhiyun #define CRYPTO_CLK_CTL			0x0000
17*4882a593Smuzhiyun #define CRYPTO_AUTO_CLKGATE_EN		BIT(0)
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define CRYPTO_RST_CTL			0x0004
20*4882a593Smuzhiyun #define CRYPTO_SW_PKA_RESET		BIT(2)
21*4882a593Smuzhiyun #define CRYPTO_SW_RNG_RESET		BIT(1)
22*4882a593Smuzhiyun #define CRYPTO_SW_CC_RESET		BIT(0)
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /* Crypto DMA control registers*/
25*4882a593Smuzhiyun #define CRYPTO_DMA_INT_EN		0x0008
26*4882a593Smuzhiyun #define CRYPTO_ZERO_ERR_INT_EN		BIT(6)
27*4882a593Smuzhiyun #define CRYPTO_LIST_ERR_INT_EN		BIT(5)
28*4882a593Smuzhiyun #define CRYPTO_SRC_ERR_INT_EN		BIT(4)
29*4882a593Smuzhiyun #define CRYPTO_DST_ERR_INT_EN		BIT(3)
30*4882a593Smuzhiyun #define CRYPTO_SRC_ITEM_INT_EN		BIT(2)
31*4882a593Smuzhiyun #define CRYPTO_DST_ITEM_DONE_INT_EN	BIT(1)
32*4882a593Smuzhiyun #define CRYPTO_LIST_DONE_INT_EN		BIT(0)
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define CRYPTO_DMA_INT_ST		0x000C
35*4882a593Smuzhiyun #define CRYPTO_LOCKSTEP_INT_ST		BIT(7)
36*4882a593Smuzhiyun #define CRYPTO_ZERO_LEN_INT_ST		BIT(6)
37*4882a593Smuzhiyun #define CRYPTO_LIST_ERR_INT_ST		BIT(5)
38*4882a593Smuzhiyun #define CRYPTO_SRC_ERR_INT_ST		BIT(4)
39*4882a593Smuzhiyun #define CRYPTO_DST_ERR_INT_ST		BIT(3)
40*4882a593Smuzhiyun #define CRYPTO_SRC_ITEM_DONE_INT_ST	BIT(2)
41*4882a593Smuzhiyun #define CRYPTO_DST_ITEM_DONE_INT_ST	BIT(1)
42*4882a593Smuzhiyun #define CRYPTO_LIST_DONE_INT_ST		BIT(0)
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define CRYPTO_LOCKSTEP_MASK		(~((u32)CRYPTO_LOCKSTEP_INT_ST))
45*4882a593Smuzhiyun #define CRYPTO_DMA_CTL			0x0010
46*4882a593Smuzhiyun #define CRYPTO_DMA_RESTART		BIT(1)
47*4882a593Smuzhiyun #define CRYPTO_DMA_START		BIT(0)
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /* DMA LIST Start Address Register */
50*4882a593Smuzhiyun #define CRYPTO_DMA_LLI_ADDR		0x0014
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun #define CRYPTO_DMA_ST			0x0018
53*4882a593Smuzhiyun #define CRYPTO_DMA_BUSY			BIT(0)
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun #define CRYPTO_DMA_STATE		0x001C
56*4882a593Smuzhiyun #define CRYPTO_LLI_IDLE_STATE		_SBF(4, 0x00)
57*4882a593Smuzhiyun #define CRYPTO_LLI_FETCH_STATE		_SBF(4, 0x01)
58*4882a593Smuzhiyun #define CRYPTO_LLI_WORK_STATE		_SBF(4, 0x02)
59*4882a593Smuzhiyun #define CRYPTO_SRC_IDLE_STATE		_SBF(2, 0x00)
60*4882a593Smuzhiyun #define CRYPTO_SRC_LOAD_STATE		_SBF(2, 0x01)
61*4882a593Smuzhiyun #define CRYPTO_SRC_WORK_STATE		_SBF(2, 0x02)
62*4882a593Smuzhiyun #define CRYPTO_DST_IDLE_STATE		_SBF(0, 0x00)
63*4882a593Smuzhiyun #define CRYPTO_DST_LOAD_STATE		_SBF(0, 0x01)
64*4882a593Smuzhiyun #define CRYPTO_DST_WORK_STATE		_SBF(0, 0x02)
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /* DMA LLI Read Address Register */
67*4882a593Smuzhiyun #define CRYPTO_DMA_LLI_RADDR		0x0020
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /* DMA Source Data Read Address Register */
70*4882a593Smuzhiyun #define CRYPTO_DMA_SRC_RADDR		0x0024
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun /* DMA Destination Data Read Address Register */
73*4882a593Smuzhiyun #define CRYPTO_DMA_DST_RADDR		0x0028
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define CRYPTO_DMA_ITEM_ID		0x002C
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define CRYPTO_FIFO_CTL			0x0040
78*4882a593Smuzhiyun #define CRYPTO_DOUT_BYTESWAP		BIT(1)
79*4882a593Smuzhiyun #define CRYPTO_DOIN_BYTESWAP		BIT(0)
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /* Block Cipher Control Register */
82*4882a593Smuzhiyun #define CRYPTO_BC_CTL			0x0044
83*4882a593Smuzhiyun #define CRYPTO_BC_AES			_SBF(8, 0x00)
84*4882a593Smuzhiyun #define CRYPTO_BC_SM4			_SBF(8, 0x01)
85*4882a593Smuzhiyun #define CRYPTO_BC_DES			_SBF(8, 0x02)
86*4882a593Smuzhiyun #define CRYPTO_BC_TDES			_SBF(8, 0x03)
87*4882a593Smuzhiyun #define CRYPTO_BC_ECB			_SBF(4, 0x00)
88*4882a593Smuzhiyun #define CRYPTO_BC_CBC			_SBF(4, 0x01)
89*4882a593Smuzhiyun #define CRYPTO_BC_CTS			_SBF(4, 0x02)
90*4882a593Smuzhiyun #define CRYPTO_BC_CTR			_SBF(4, 0x03)
91*4882a593Smuzhiyun #define CRYPTO_BC_CFB			_SBF(4, 0x04)
92*4882a593Smuzhiyun #define CRYPTO_BC_OFB			_SBF(4, 0x05)
93*4882a593Smuzhiyun #define CRYPTO_BC_XTS			_SBF(4, 0x06)
94*4882a593Smuzhiyun #define CRYPTO_BC_CCM			_SBF(4, 0x07)
95*4882a593Smuzhiyun #define CRYPTO_BC_GCM			_SBF(4, 0x08)
96*4882a593Smuzhiyun #define CRYPTO_BC_CMAC			_SBF(4, 0x09)
97*4882a593Smuzhiyun #define CRYPTO_BC_CBC_MAC		_SBF(4, 0x0A)
98*4882a593Smuzhiyun #define CRYPTO_BC_128_bit_key		_SBF(2, 0x00)
99*4882a593Smuzhiyun #define CRYPTO_BC_192_bit_key		_SBF(2, 0x01)
100*4882a593Smuzhiyun #define CRYPTO_BC_256_bit_key		_SBF(2, 0x02)
101*4882a593Smuzhiyun #define CRYPTO_BC_DECRYPT		BIT(1)
102*4882a593Smuzhiyun #define CRYPTO_BC_ENABLE		BIT(0)
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun /* Hash Control Register */
105*4882a593Smuzhiyun #define CRYPTO_HASH_CTL			0x0048
106*4882a593Smuzhiyun #define CRYPTO_SHA1			_SBF(4, 0x00)
107*4882a593Smuzhiyun #define CRYPTO_MD5			_SBF(4, 0x01)
108*4882a593Smuzhiyun #define CRYPTO_SHA256			_SBF(4, 0x02)
109*4882a593Smuzhiyun #define CRYPTO_SHA224			_SBF(4, 0x03)
110*4882a593Smuzhiyun #define CRYPTO_SM3			_SBF(4, 0x06)
111*4882a593Smuzhiyun #define CRYPTO_SHA512			_SBF(4, 0x08)
112*4882a593Smuzhiyun #define CRYPTO_SHA384			_SBF(4, 0x09)
113*4882a593Smuzhiyun #define CRYPTO_SHA512_224		_SBF(4, 0x0A)
114*4882a593Smuzhiyun #define CRYPTO_SHA512_256		_SBF(4, 0x0B)
115*4882a593Smuzhiyun #define CRYPTO_HMAC_ENABLE		BIT(3)
116*4882a593Smuzhiyun #define CRYPTO_HW_PAD_ENABLE		BIT(2)
117*4882a593Smuzhiyun #define CRYPTO_HASH_SRC_SEL		BIT(1)
118*4882a593Smuzhiyun #define CRYPTO_HASH_ENABLE		BIT(0)
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun /* Cipher Status Register */
121*4882a593Smuzhiyun #define CRYPTO_CIPHER_ST		0x004C
122*4882a593Smuzhiyun #define CRYPTO_OTP_KEY_VALID		BIT(2)
123*4882a593Smuzhiyun #define CRYPTO_HASH_BUSY		BIT(1)
124*4882a593Smuzhiyun #define CRYPTO_BLOCK_CIPHER_BUSY	BIT(0)
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun #define CRYPTO_CIPHER_STATE		0x0050
127*4882a593Smuzhiyun #define CRYPTO_HASH_IDLE_STATE		_SBF(10, 0x01)
128*4882a593Smuzhiyun #define CRYPTO_HASH_IPAD_STATE		_SBF(10, 0x02)
129*4882a593Smuzhiyun #define CRYPTO_HASH_TEXT_STATE		_SBF(10, 0x04)
130*4882a593Smuzhiyun #define CRYPTO_HASH_OPAD_STATE		_SBF(10, 0x08)
131*4882a593Smuzhiyun #define CRYPTO_HASH_OPAD_EXT_STATE	_SBF(10, 0x10)
132*4882a593Smuzhiyun #define CRYPTO_GCM_IDLE_STATE		_SBF(8, 0x00)
133*4882a593Smuzhiyun #define CRYPTO_GCM_PRE_STATE		_SBF(8, 0x01)
134*4882a593Smuzhiyun #define CRYPTO_GCM_NA_STATE		_SBF(8, 0x02)
135*4882a593Smuzhiyun #define CRYPTO_GCM_PC_STATE		_SBF(8, 0x03)
136*4882a593Smuzhiyun #define CRYPTO_CCM_IDLE_STATE		_SBF(6, 0x00)
137*4882a593Smuzhiyun #define CRYPTO_CCM_PRE_STATE		_SBF(6, 0x01)
138*4882a593Smuzhiyun #define CRYPTO_CCM_NA_STATE		_SBF(6, 0x02)
139*4882a593Smuzhiyun #define CRYPTO_CCM_PC_STATE		_SBF(6, 0x03)
140*4882a593Smuzhiyun #define CRYPTO_PARALLEL_IDLE_STATE	_SBF(4, 0x00)
141*4882a593Smuzhiyun #define CRYPTO_PARALLEL_PRE_STATE	_SBF(4, 0x01)
142*4882a593Smuzhiyun #define CRYPTO_PARALLEL_BULK_STATE	_SBF(4, 0x02)
143*4882a593Smuzhiyun #define CRYPTO_MAC_IDLE_STATE		_SBF(2, 0x00)
144*4882a593Smuzhiyun #define CRYPTO_MAC_PRE_STATE		_SBF(2, 0x01)
145*4882a593Smuzhiyun #define CRYPTO_MAC_BULK_STATE		_SBF(2, 0x02)
146*4882a593Smuzhiyun #define CRYPTO_SERIAL_IDLE_STATE	_SBF(0, 0x00)
147*4882a593Smuzhiyun #define CRYPTO_SERIAL_PRE_STATE		_SBF(0, 0x01)
148*4882a593Smuzhiyun #define CRYPTO_SERIAL_BULK_STATE	_SBF(0, 0x02)
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define CRYPTO_CH0_IV_0         0x0100
151*4882a593Smuzhiyun #define CRYPTO_CH0_IV_1         0x0104
152*4882a593Smuzhiyun #define CRYPTO_CH0_IV_2         0x0108
153*4882a593Smuzhiyun #define CRYPTO_CH0_IV_3         0x010c
154*4882a593Smuzhiyun #define CRYPTO_CH1_IV_0         0x0110
155*4882a593Smuzhiyun #define CRYPTO_CH1_IV_1         0x0114
156*4882a593Smuzhiyun #define CRYPTO_CH1_IV_2         0x0118
157*4882a593Smuzhiyun #define CRYPTO_CH1_IV_3         0x011c
158*4882a593Smuzhiyun #define CRYPTO_CH2_IV_0         0x0120
159*4882a593Smuzhiyun #define CRYPTO_CH2_IV_1         0x0124
160*4882a593Smuzhiyun #define CRYPTO_CH2_IV_2         0x0128
161*4882a593Smuzhiyun #define CRYPTO_CH2_IV_3         0x012c
162*4882a593Smuzhiyun #define CRYPTO_CH3_IV_0         0x0130
163*4882a593Smuzhiyun #define CRYPTO_CH3_IV_1         0x0134
164*4882a593Smuzhiyun #define CRYPTO_CH3_IV_2         0x0138
165*4882a593Smuzhiyun #define CRYPTO_CH3_IV_3         0x013c
166*4882a593Smuzhiyun #define CRYPTO_CH4_IV_0         0x0140
167*4882a593Smuzhiyun #define CRYPTO_CH4_IV_1         0x0144
168*4882a593Smuzhiyun #define CRYPTO_CH4_IV_2         0x0148
169*4882a593Smuzhiyun #define CRYPTO_CH4_IV_3         0x014c
170*4882a593Smuzhiyun #define CRYPTO_CH5_IV_0         0x0150
171*4882a593Smuzhiyun #define CRYPTO_CH5_IV_1         0x0154
172*4882a593Smuzhiyun #define CRYPTO_CH5_IV_2         0x0158
173*4882a593Smuzhiyun #define CRYPTO_CH5_IV_3         0x015c
174*4882a593Smuzhiyun #define CRYPTO_CH6_IV_0         0x0160
175*4882a593Smuzhiyun #define CRYPTO_CH6_IV_1         0x0164
176*4882a593Smuzhiyun #define CRYPTO_CH6_IV_2         0x0168
177*4882a593Smuzhiyun #define CRYPTO_CH6_IV_3         0x016c
178*4882a593Smuzhiyun #define CRYPTO_CH7_IV_0         0x0170
179*4882a593Smuzhiyun #define CRYPTO_CH7_IV_1         0x0174
180*4882a593Smuzhiyun #define CRYPTO_CH7_IV_2         0x0178
181*4882a593Smuzhiyun #define CRYPTO_CH7_IV_3         0x017c
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun #define CRYPTO_CH0_KEY_0        0x0180
184*4882a593Smuzhiyun #define CRYPTO_CH0_KEY_1        0x0184
185*4882a593Smuzhiyun #define CRYPTO_CH0_KEY_2        0x0188
186*4882a593Smuzhiyun #define CRYPTO_CH0_KEY_3        0x018c
187*4882a593Smuzhiyun #define CRYPTO_CH1_KEY_0        0x0190
188*4882a593Smuzhiyun #define CRYPTO_CH1_KEY_1        0x0194
189*4882a593Smuzhiyun #define CRYPTO_CH1_KEY_2        0x0198
190*4882a593Smuzhiyun #define CRYPTO_CH1_KEY_3        0x019c
191*4882a593Smuzhiyun #define CRYPTO_CH2_KEY_0        0x01a0
192*4882a593Smuzhiyun #define CRYPTO_CH2_KEY_1        0x01a4
193*4882a593Smuzhiyun #define CRYPTO_CH2_KEY_2        0x01a8
194*4882a593Smuzhiyun #define CRYPTO_CH2_KEY_3        0x01ac
195*4882a593Smuzhiyun #define CRYPTO_CH3_KEY_0        0x01b0
196*4882a593Smuzhiyun #define CRYPTO_CH3_KEY_1        0x01b4
197*4882a593Smuzhiyun #define CRYPTO_CH3_KEY_2        0x01b8
198*4882a593Smuzhiyun #define CRYPTO_CH3_KEY_3        0x01bc
199*4882a593Smuzhiyun #define CRYPTO_CH4_KEY_0        0x01c0
200*4882a593Smuzhiyun #define CRYPTO_CH4_KEY_1        0x01c4
201*4882a593Smuzhiyun #define CRYPTO_CH4_KEY_2        0x01c8
202*4882a593Smuzhiyun #define CRYPTO_CH4_KEY_3        0x01cc
203*4882a593Smuzhiyun #define CRYPTO_CH5_KEY_0        0x01d0
204*4882a593Smuzhiyun #define CRYPTO_CH5_KEY_1        0x01d4
205*4882a593Smuzhiyun #define CRYPTO_CH5_KEY_2        0x01d8
206*4882a593Smuzhiyun #define CRYPTO_CH5_KEY_3        0x01dc
207*4882a593Smuzhiyun #define CRYPTO_CH6_KEY_0        0x01e0
208*4882a593Smuzhiyun #define CRYPTO_CH6_KEY_1        0x01e4
209*4882a593Smuzhiyun #define CRYPTO_CH6_KEY_2        0x01e8
210*4882a593Smuzhiyun #define CRYPTO_CH6_KEY_3        0x01ec
211*4882a593Smuzhiyun #define CRYPTO_CH7_KEY_0        0x01f0
212*4882a593Smuzhiyun #define CRYPTO_CH7_KEY_1        0x01f4
213*4882a593Smuzhiyun #define CRYPTO_CH7_KEY_2        0x01f8
214*4882a593Smuzhiyun #define CRYPTO_CH7_KEY_3        0x01fc
215*4882a593Smuzhiyun #define CRYPTO_KEY_CHANNEL_NUM	8
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun #define	CRYPTO_CH0_PC_LEN_0	0x0280
218*4882a593Smuzhiyun #define	CRYPTO_CH0_PC_LEN_1	0x0284
219*4882a593Smuzhiyun #define	CRYPTO_CH1_PC_LEN_0	0x0288
220*4882a593Smuzhiyun #define	CRYPTO_CH1_PC_LEN_1	0x028c
221*4882a593Smuzhiyun #define	CRYPTO_CH2_PC_LEN_0	0x0290
222*4882a593Smuzhiyun #define	CRYPTO_CH2_PC_LEN_1	0x0294
223*4882a593Smuzhiyun #define	CRYPTO_CH3_PC_LEN_0	0x0298
224*4882a593Smuzhiyun #define	CRYPTO_CH3_PC_LEN_1	0x029c
225*4882a593Smuzhiyun #define	CRYPTO_CH4_PC_LEN_0	0x02a0
226*4882a593Smuzhiyun #define	CRYPTO_CH4_PC_LEN_1	0x02a4
227*4882a593Smuzhiyun #define	CRYPTO_CH5_PC_LEN_0	0x02a8
228*4882a593Smuzhiyun #define	CRYPTO_CH5_PC_LEN_1	0x02ac
229*4882a593Smuzhiyun #define	CRYPTO_CH6_PC_LEN_0	0x02b0
230*4882a593Smuzhiyun #define	CRYPTO_CH6_PC_LEN_1	0x02b4
231*4882a593Smuzhiyun #define	CRYPTO_CH7_PC_LEN_0	0x02b8
232*4882a593Smuzhiyun #define	CRYPTO_CH7_PC_LEN_1	0x02bc
233*4882a593Smuzhiyun 
234*4882a593Smuzhiyun #define	CRYPTO_CH0_AAD_LEN_0	0x02c0
235*4882a593Smuzhiyun #define	CRYPTO_CH0_AAD_LEN_1	0x02c4
236*4882a593Smuzhiyun #define	CRYPTO_CH1_AAD_LEN_0	0x02c8
237*4882a593Smuzhiyun #define	CRYPTO_CH1_AAD_LEN_1	0x02cc
238*4882a593Smuzhiyun #define	CRYPTO_CH2_AAD_LEN_0	0x02d0
239*4882a593Smuzhiyun #define	CRYPTO_CH2_AAD_LEN_1	0x02d4
240*4882a593Smuzhiyun #define	CRYPTO_CH3_AAD_LEN_0	0x02d8
241*4882a593Smuzhiyun #define	CRYPTO_CH3_AAD_LEN_1	0x02dc
242*4882a593Smuzhiyun #define	CRYPTO_CH4_AAD_LEN_0	0x02e0
243*4882a593Smuzhiyun #define	CRYPTO_CH4_AAD_LEN_1	0x02e4
244*4882a593Smuzhiyun #define	CRYPTO_CH5_AAD_LEN_0	0x02e8
245*4882a593Smuzhiyun #define	CRYPTO_CH5_AAD_LEN_1	0x02ec
246*4882a593Smuzhiyun #define	CRYPTO_CH6_AAD_LEN_0	0x02f0
247*4882a593Smuzhiyun #define	CRYPTO_CH6_AAD_LEN_1	0x02f4
248*4882a593Smuzhiyun #define	CRYPTO_CH7_AAD_LEN_0	0x02f8
249*4882a593Smuzhiyun #define	CRYPTO_CH7_AAD_LEN_1	0x02fc
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun #define CRYPTO_CH0_IV_LEN_0     0x0300
252*4882a593Smuzhiyun #define CRYPTO_CH1_IV_LEN_0     0x0304
253*4882a593Smuzhiyun #define CRYPTO_CH2_IV_LEN_0     0x0308
254*4882a593Smuzhiyun #define CRYPTO_CH3_IV_LEN_0     0x030c
255*4882a593Smuzhiyun #define CRYPTO_CH4_IV_LEN_0     0x0310
256*4882a593Smuzhiyun #define CRYPTO_CH5_IV_LEN_0     0x0314
257*4882a593Smuzhiyun #define CRYPTO_CH6_IV_LEN_0     0x0318
258*4882a593Smuzhiyun #define CRYPTO_CH7_IV_LEN_0     0x031c
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun #define CRYPTO_CH0_TAG_0        0x0320
261*4882a593Smuzhiyun #define CRYPTO_CH0_TAG_1        0x0324
262*4882a593Smuzhiyun #define CRYPTO_CH0_TAG_2        0x0328
263*4882a593Smuzhiyun #define CRYPTO_CH0_TAG_3        0x032c
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_0      0x03a0
266*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_1      0x03a4
267*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_2      0x03a8
268*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_3      0x03ac
269*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_4      0x03b0
270*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_5      0x03b4
271*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_6      0x03b8
272*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_7      0x03bc
273*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_8      0x03c0
274*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_9      0x03c4
275*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_10     0x03c8
276*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_11     0x03cc
277*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_12     0x03d0
278*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_13     0x03d4
279*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_14     0x03d8
280*4882a593Smuzhiyun #define CRYPTO_HASH_DOUT_15     0x03dc
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define CRYPTO_TAG_VALID        0x03e0
283*4882a593Smuzhiyun #define CRYPTO_CH0_TAG_VALID    BIT(0)
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun #define CRYPTO_HASH_VALID       0x03e4
286*4882a593Smuzhiyun #define CRYPTO_HASH_IS_VALID	BIT(0)
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #define	LLI_DMA_CTRL_LAST	BIT(0)
289*4882a593Smuzhiyun #define	LLI_DMA_CTRL_PAUSE	BIT(1)
290*4882a593Smuzhiyun #define	LLI_DMA_CTRL_LIST_DONE	BIT(8)
291*4882a593Smuzhiyun #define	LLI_DMA_CTRL_DST_DONE	BIT(9)
292*4882a593Smuzhiyun #define	LLI_DMA_CTRL_SRC_DONE	BIT(10)
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #define LLI_USER_CIPHER_START	BIT(0)
295*4882a593Smuzhiyun #define LLI_USER_STRING_START	BIT(1)
296*4882a593Smuzhiyun #define LLI_USER_STRING_LAST	BIT(2)
297*4882a593Smuzhiyun #define LLI_USER_STRING_AAD	BIT(3)
298*4882a593Smuzhiyun #define LLI_USER_PRIVACY_KEY	BIT(7)
299*4882a593Smuzhiyun #define LLI_USER_ROOT_KEY	BIT(8)
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun #define CRYPTO_PKA_BASE_OFFSET		0x0480
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun #define	CRYPTO_RAM_CTL			(0x0480 - CRYPTO_PKA_BASE_OFFSET)
304*4882a593Smuzhiyun #define	CRYPTO_RAM_PKA_RDY		BIT(0)
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun #define	CRYPTO_RAM_ST			(0x0484 - CRYPTO_PKA_BASE_OFFSET)
307*4882a593Smuzhiyun #define	CRYPTO_CLK_RAM_RDY		BIT(0)
308*4882a593Smuzhiyun #define	CRYPTO_CLK_RAM_RDY_MASK		BIT(0)
309*4882a593Smuzhiyun 
310*4882a593Smuzhiyun #define	CRYPTO_DEBUG_CTL		(0x04a0 - CRYPTO_PKA_BASE_OFFSET)
311*4882a593Smuzhiyun #define	CRYPTO_DEBUG_MODE		BIT(0)
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun #define	CRYPTO_DEBUG_ST			(0x04a4 - CRYPTO_PKA_BASE_OFFSET)
314*4882a593Smuzhiyun #define	CRYPTO_PKA_DEBUG_CLK_EN		BIT(0)
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun #define	CRYPTO_DEBUG_MONITOR		(0x04a8 - CRYPTO_PKA_BASE_OFFSET)
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun /* MAP0 ~ MAP31 */
319*4882a593Smuzhiyun #define	CRYPTO_MEMORY_MAP0		(0x00800 - CRYPTO_PKA_BASE_OFFSET)
320*4882a593Smuzhiyun #define CRYPTO_MAP_REG_NUM		32
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define	CRYPTO_OPCODE			(0x00880 - CRYPTO_PKA_BASE_OFFSET)
323*4882a593Smuzhiyun #define	CRYPTO_OPCODE_TAG_SHIFT		0
324*4882a593Smuzhiyun #define	CRYPTO_OPCODE_R_SHIFT		6
325*4882a593Smuzhiyun #define CRYPTO_OPCODE_R_DIS_SHIFT	11
326*4882a593Smuzhiyun #define	CRYPTO_OPCODE_B_SHIFT		12
327*4882a593Smuzhiyun #define CRYPTO_OPCODE_B_IMMED_SHIFT	17
328*4882a593Smuzhiyun #define	CRYPTO_OPCODE_A_SHIFT		18
329*4882a593Smuzhiyun #define CRYPTO_OPCODE_A_IMMED_SHIFT	23
330*4882a593Smuzhiyun #define	CRYPTO_OPCODE_LEN_SHIFT		24
331*4882a593Smuzhiyun #define	CRYPTO_OPCODE_CODE_SHIFT	27
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun #define	CRYPTO_N_NP_T0_T1_ADDR		(0x00884 - CRYPTO_PKA_BASE_OFFSET)
334*4882a593Smuzhiyun #define	CRYPTO_N_VIRTUAL_ADDR_SHIFT	0
335*4882a593Smuzhiyun #define	CRYPTO_N_VIRTUAL_ADDR_MASK	0x0000001f
336*4882a593Smuzhiyun #define	CRYPTO_NP_VIRTUAL_ADDR_SHIFT	5
337*4882a593Smuzhiyun #define	CRYPTO_NP_VIRTUAL_ADDR_MASK	0x000003e0
338*4882a593Smuzhiyun #define	CRYPTO_T0_VIRTUAL_ADDR_SHIFT	10
339*4882a593Smuzhiyun #define	CRYPTO_T0_VIRTUAL_ADDR_MASK	0x00007c00
340*4882a593Smuzhiyun #define	CRYPTO_T1_VIRTUAL_ADDR_SHIFT	15
341*4882a593Smuzhiyun #define	CRYPTO_T1_VIRTUAL_ADDR_MASK	0x000f8000
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun #define	CRYPTO_PKA_STATUS		(0x00888 - CRYPTO_PKA_BASE_OFFSET)
344*4882a593Smuzhiyun #define	CRYPTO_PKA_PIPE_IS_RDY		BIT(0)
345*4882a593Smuzhiyun #define	CRYPTO_PKA_BUSY			BIT(1)
346*4882a593Smuzhiyun #define	CRYPTO_PKA_ALU_OUT_ZERO		BIT(2)
347*4882a593Smuzhiyun #define	CRYPTO_PKA_ALU_MODOVRFLW	BIT(3)
348*4882a593Smuzhiyun #define	CRYPTO_PKA_DIV_BY_ZERO		BIT(4)
349*4882a593Smuzhiyun #define	CRYPTO_PKA_ALU_CARRY		BIT(5)
350*4882a593Smuzhiyun #define	CRYPTO_PKA_ALU_SIGN_OUT		BIT(6)
351*4882a593Smuzhiyun #define	CRYPTO_PKA_MODINV_OF_ZERO	BIT(7)
352*4882a593Smuzhiyun #define	CRYPTO_PKA_CPU_BUSY		BIT(8)
353*4882a593Smuzhiyun #define	CRYPTO_PKA_OPCODE_STATUS_SHIFT	9
354*4882a593Smuzhiyun #define	CRYPTO_PKA_OPCODE_STATUS_MASK	0x00003e00
355*4882a593Smuzhiyun #define	CRYPTO_PKA_TAG_STATUS_SHIFT	14
356*4882a593Smuzhiyun #define	CRYPTO_PKA_TAG_STATUS_MASK	0x0003c000
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun #define	CRYPTO_PKA_SW_RESET		(0x0088C - CRYPTO_PKA_BASE_OFFSET)
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun /* PKA_L0 ~ PKA_L7 */
361*4882a593Smuzhiyun #define	CRYPTO_PKA_L0			(0x00890 - CRYPTO_PKA_BASE_OFFSET)
362*4882a593Smuzhiyun #define CRYPTO_LEN_REG_NUM		8
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun #define	CRYPTO_PKA_PIPE_RDY		(0x008B0 - CRYPTO_PKA_BASE_OFFSET)
365*4882a593Smuzhiyun #define	CRYPTO_PKA_DONE			(0x008B4 - CRYPTO_PKA_BASE_OFFSET)
366*4882a593Smuzhiyun #define	CRYPTO_PKA_MON_SELECT		(0x008B8 - CRYPTO_PKA_BASE_OFFSET)
367*4882a593Smuzhiyun #define	CRYPTO_PKA_DEBUG_REG_EN		(0x008BC - CRYPTO_PKA_BASE_OFFSET)
368*4882a593Smuzhiyun #define	CRYPTO_DEBUG_CNT_ADDR		(0x008C0 - CRYPTO_PKA_BASE_OFFSET)
369*4882a593Smuzhiyun #define	CRYPTO_DEBUG_EXT_ADDR		(0x008C4 - CRYPTO_PKA_BASE_OFFSET)
370*4882a593Smuzhiyun #define	CRYPTO_PKA_DEBUG_HALT		(0x008C8 - CRYPTO_PKA_BASE_OFFSET)
371*4882a593Smuzhiyun #define	CRYPTO_PKA_MON_READ		(0x008D0 - CRYPTO_PKA_BASE_OFFSET)
372*4882a593Smuzhiyun #define	CRYPTO_PKA_INT_ENA		(0x008D4 - CRYPTO_PKA_BASE_OFFSET)
373*4882a593Smuzhiyun #define	CRYPTO_PKA_INT_ST		(0x008D8 - CRYPTO_PKA_BASE_OFFSET)
374*4882a593Smuzhiyun #define	CRYPTO_SRAM_BASE		(0x01000 - CRYPTO_PKA_BASE_OFFSET)
375*4882a593Smuzhiyun #define	CRYPTO_SRAM_SIZE		0x01000
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun #endif
378*4882a593Smuzhiyun 
379