162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* Copyright (C) 2003-2006, Advanced Micro Devices, Inc. 362306a36Sopenharmony_ci */ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#ifndef _GEODE_AES_H_ 662306a36Sopenharmony_ci#define _GEODE_AES_H_ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* driver logic flags */ 962306a36Sopenharmony_ci#define AES_MODE_ECB 0 1062306a36Sopenharmony_ci#define AES_MODE_CBC 1 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define AES_DIR_DECRYPT 0 1362306a36Sopenharmony_ci#define AES_DIR_ENCRYPT 1 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define AES_FLAGS_HIDDENKEY (1 << 0) 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* Register definitions */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define AES_CTRLA_REG 0x0000 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define AES_CTRL_START 0x01 2262306a36Sopenharmony_ci#define AES_CTRL_DECRYPT 0x00 2362306a36Sopenharmony_ci#define AES_CTRL_ENCRYPT 0x02 2462306a36Sopenharmony_ci#define AES_CTRL_WRKEY 0x04 2562306a36Sopenharmony_ci#define AES_CTRL_DCA 0x08 2662306a36Sopenharmony_ci#define AES_CTRL_SCA 0x10 2762306a36Sopenharmony_ci#define AES_CTRL_CBC 0x20 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#define AES_INTR_REG 0x0008 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#define AES_INTRA_PENDING (1 << 16) 3262306a36Sopenharmony_ci#define AES_INTRB_PENDING (1 << 17) 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define AES_INTR_PENDING (AES_INTRA_PENDING | AES_INTRB_PENDING) 3562306a36Sopenharmony_ci#define AES_INTR_MASK 0x07 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define AES_SOURCEA_REG 0x0010 3862306a36Sopenharmony_ci#define AES_DSTA_REG 0x0014 3962306a36Sopenharmony_ci#define AES_LENA_REG 0x0018 4062306a36Sopenharmony_ci#define AES_WRITEKEY0_REG 0x0030 4162306a36Sopenharmony_ci#define AES_WRITEIV0_REG 0x0040 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci/* A very large counter that is used to gracefully bail out of an 4462306a36Sopenharmony_ci * operation in case of trouble 4562306a36Sopenharmony_ci */ 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#define AES_OP_TIMEOUT 0x50000 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct geode_aes_tfm_ctx { 5062306a36Sopenharmony_ci u8 key[AES_KEYSIZE_128]; 5162306a36Sopenharmony_ci union { 5262306a36Sopenharmony_ci struct crypto_skcipher *skcipher; 5362306a36Sopenharmony_ci struct crypto_cipher *cip; 5462306a36Sopenharmony_ci } fallback; 5562306a36Sopenharmony_ci u32 keylen; 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#endif 59