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