xref: /OK3568_Linux_fs/kernel/drivers/crypto/geode-aes.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /* Copyright (C) 2003-2006, Advanced Micro Devices, Inc.
3*4882a593Smuzhiyun  */
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #ifndef _GEODE_AES_H_
6*4882a593Smuzhiyun #define _GEODE_AES_H_
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /* driver logic flags */
9*4882a593Smuzhiyun #define AES_MODE_ECB 0
10*4882a593Smuzhiyun #define AES_MODE_CBC 1
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define AES_DIR_DECRYPT 0
13*4882a593Smuzhiyun #define AES_DIR_ENCRYPT 1
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define AES_FLAGS_HIDDENKEY (1 << 0)
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun /* Register definitions */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #define AES_CTRLA_REG  0x0000
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define AES_CTRL_START     0x01
22*4882a593Smuzhiyun #define AES_CTRL_DECRYPT   0x00
23*4882a593Smuzhiyun #define AES_CTRL_ENCRYPT   0x02
24*4882a593Smuzhiyun #define AES_CTRL_WRKEY     0x04
25*4882a593Smuzhiyun #define AES_CTRL_DCA       0x08
26*4882a593Smuzhiyun #define AES_CTRL_SCA       0x10
27*4882a593Smuzhiyun #define AES_CTRL_CBC       0x20
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define AES_INTR_REG  0x0008
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #define AES_INTRA_PENDING (1 << 16)
32*4882a593Smuzhiyun #define AES_INTRB_PENDING (1 << 17)
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define AES_INTR_PENDING  (AES_INTRA_PENDING | AES_INTRB_PENDING)
35*4882a593Smuzhiyun #define AES_INTR_MASK     0x07
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define AES_SOURCEA_REG   0x0010
38*4882a593Smuzhiyun #define AES_DSTA_REG      0x0014
39*4882a593Smuzhiyun #define AES_LENA_REG      0x0018
40*4882a593Smuzhiyun #define AES_WRITEKEY0_REG 0x0030
41*4882a593Smuzhiyun #define AES_WRITEIV0_REG  0x0040
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun /*  A very large counter that is used to gracefully bail out of an
44*4882a593Smuzhiyun  *  operation in case of trouble
45*4882a593Smuzhiyun  */
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define AES_OP_TIMEOUT    0x50000
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun struct geode_aes_tfm_ctx {
50*4882a593Smuzhiyun 	u8 key[AES_KEYSIZE_128];
51*4882a593Smuzhiyun 	union {
52*4882a593Smuzhiyun 		struct crypto_skcipher *skcipher;
53*4882a593Smuzhiyun 		struct crypto_cipher *cip;
54*4882a593Smuzhiyun 	} fallback;
55*4882a593Smuzhiyun 	u32 keylen;
56*4882a593Smuzhiyun };
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #endif
59