Commit | Line | Data |
---|---|---|
9fe757b0 JC |
1 | /* Copyright (C) 2003-2006, Advanced Micro Devices, Inc. |
2 | * | |
3 | * This program is free software; you can redistribute it and/or modify | |
4 | * it under the terms of the GNU General Public License as published by | |
5 | * the Free Software Foundation; either version 2 of the License, or | |
6 | * (at your option) any later version. | |
7 | */ | |
8 | ||
9 | #ifndef _GEODE_AES_H_ | |
10 | #define _GEODE_AES_H_ | |
11 | ||
b7a30da6 | 12 | /* driver logic flags */ |
9fe757b0 | 13 | #define AES_IV_LENGTH 16 |
b7a30da6 | 14 | #define AES_KEY_LENGTH 16 |
9fe757b0 JC |
15 | #define AES_MIN_BLOCK_SIZE 16 |
16 | ||
17 | #define AES_MODE_ECB 0 | |
18 | #define AES_MODE_CBC 1 | |
19 | ||
20 | #define AES_DIR_DECRYPT 0 | |
21 | #define AES_DIR_ENCRYPT 1 | |
22 | ||
761e7846 | 23 | #define AES_FLAGS_HIDDENKEY (1 << 0) |
9fe757b0 | 24 | |
b7a30da6 SS |
25 | /* Register definitions */ |
26 | ||
27 | #define AES_CTRLA_REG 0x0000 | |
28 | ||
29 | #define AES_CTRL_START 0x01 | |
30 | #define AES_CTRL_DECRYPT 0x00 | |
31 | #define AES_CTRL_ENCRYPT 0x02 | |
32 | #define AES_CTRL_WRKEY 0x04 | |
33 | #define AES_CTRL_DCA 0x08 | |
34 | #define AES_CTRL_SCA 0x10 | |
35 | #define AES_CTRL_CBC 0x20 | |
36 | ||
37 | #define AES_INTR_REG 0x0008 | |
38 | ||
39 | #define AES_INTRA_PENDING (1 << 16) | |
40 | #define AES_INTRB_PENDING (1 << 17) | |
41 | ||
42 | #define AES_INTR_PENDING (AES_INTRA_PENDING | AES_INTRB_PENDING) | |
43 | #define AES_INTR_MASK 0x07 | |
44 | ||
45 | #define AES_SOURCEA_REG 0x0010 | |
46 | #define AES_DSTA_REG 0x0014 | |
47 | #define AES_LENA_REG 0x0018 | |
48 | #define AES_WRITEKEY0_REG 0x0030 | |
49 | #define AES_WRITEIV0_REG 0x0040 | |
50 | ||
51 | /* A very large counter that is used to gracefully bail out of an | |
52 | * operation in case of trouble | |
53 | */ | |
54 | ||
55 | #define AES_OP_TIMEOUT 0x50000 | |
56 | ||
9fe757b0 JC |
57 | struct geode_aes_op { |
58 | ||
59 | void *src; | |
60 | void *dst; | |
61 | ||
62 | u32 mode; | |
63 | u32 dir; | |
64 | u32 flags; | |
65 | int len; | |
66 | ||
67 | u8 key[AES_KEY_LENGTH]; | |
d2456c66 | 68 | u8 *iv; |
cd7c3bfe SS |
69 | |
70 | union { | |
71 | struct crypto_blkcipher *blk; | |
72 | struct crypto_cipher *cip; | |
73 | } fallback; | |
74 | u32 keylen; | |
9fe757b0 JC |
75 | }; |
76 | ||
9fe757b0 | 77 | #endif |