xref: /openbmc/linux/drivers/crypto/geode-aes.h (revision c95baf12f5077419db01313ab61c2aac007d40cd)
12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29fe757b0SJordan Crouse /* Copyright (C) 2003-2006, Advanced Micro Devices, Inc.
39fe757b0SJordan Crouse  */
49fe757b0SJordan Crouse 
59fe757b0SJordan Crouse #ifndef _GEODE_AES_H_
69fe757b0SJordan Crouse #define _GEODE_AES_H_
79fe757b0SJordan Crouse 
8b7a30da6SSebastian Siewior /* driver logic flags */
99fe757b0SJordan Crouse #define AES_MODE_ECB 0
109fe757b0SJordan Crouse #define AES_MODE_CBC 1
119fe757b0SJordan Crouse 
129fe757b0SJordan Crouse #define AES_DIR_DECRYPT 0
139fe757b0SJordan Crouse #define AES_DIR_ENCRYPT 1
149fe757b0SJordan Crouse 
15761e7846SJordan Crouse #define AES_FLAGS_HIDDENKEY (1 << 0)
169fe757b0SJordan Crouse 
17b7a30da6SSebastian Siewior /* Register definitions */
18b7a30da6SSebastian Siewior 
19b7a30da6SSebastian Siewior #define AES_CTRLA_REG  0x0000
20b7a30da6SSebastian Siewior 
21b7a30da6SSebastian Siewior #define AES_CTRL_START     0x01
22b7a30da6SSebastian Siewior #define AES_CTRL_DECRYPT   0x00
23b7a30da6SSebastian Siewior #define AES_CTRL_ENCRYPT   0x02
24b7a30da6SSebastian Siewior #define AES_CTRL_WRKEY     0x04
25b7a30da6SSebastian Siewior #define AES_CTRL_DCA       0x08
26b7a30da6SSebastian Siewior #define AES_CTRL_SCA       0x10
27b7a30da6SSebastian Siewior #define AES_CTRL_CBC       0x20
28b7a30da6SSebastian Siewior 
29b7a30da6SSebastian Siewior #define AES_INTR_REG  0x0008
30b7a30da6SSebastian Siewior 
31b7a30da6SSebastian Siewior #define AES_INTRA_PENDING (1 << 16)
32b7a30da6SSebastian Siewior #define AES_INTRB_PENDING (1 << 17)
33b7a30da6SSebastian Siewior 
34b7a30da6SSebastian Siewior #define AES_INTR_PENDING  (AES_INTRA_PENDING | AES_INTRB_PENDING)
35b7a30da6SSebastian Siewior #define AES_INTR_MASK     0x07
36b7a30da6SSebastian Siewior 
37b7a30da6SSebastian Siewior #define AES_SOURCEA_REG   0x0010
38b7a30da6SSebastian Siewior #define AES_DSTA_REG      0x0014
39b7a30da6SSebastian Siewior #define AES_LENA_REG      0x0018
40b7a30da6SSebastian Siewior #define AES_WRITEKEY0_REG 0x0030
41b7a30da6SSebastian Siewior #define AES_WRITEIV0_REG  0x0040
42b7a30da6SSebastian Siewior 
43b7a30da6SSebastian Siewior /*  A very large counter that is used to gracefully bail out of an
44b7a30da6SSebastian Siewior  *  operation in case of trouble
45b7a30da6SSebastian Siewior  */
46b7a30da6SSebastian Siewior 
47b7a30da6SSebastian Siewior #define AES_OP_TIMEOUT    0x50000
48b7a30da6SSebastian Siewior 
49*4549f7e5SEric Biggers struct geode_aes_tfm_ctx {
502e1fc34bSMarek Vasut 	u8 key[AES_KEYSIZE_128];
51cd7c3bfeSSebastian Siewior 	union {
52*4549f7e5SEric Biggers 		struct crypto_skcipher *skcipher;
53cd7c3bfeSSebastian Siewior 		struct crypto_cipher *cip;
54cd7c3bfeSSebastian Siewior 	} fallback;
55cd7c3bfeSSebastian Siewior 	u32 keylen;
569fe757b0SJordan Crouse };
579fe757b0SJordan Crouse 
589fe757b0SJordan Crouse #endif
59