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