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