drivers/crypto/inside-secure/safexcel.h

Source file repositories/reference/linux-study-clean/drivers/crypto/inside-secure/safexcel.h

File Facts

System
Linux kernel
Corpus path
drivers/crypto/inside-secure/safexcel.h
Extension
.h
Size
34744 bytes
Lines
1003
Domain
Driver Families
Bucket
drivers/crypto
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct safexcel_context_record {
	__le32 control0;
	__le32 control1;

	__le32 data[40];
} __packed;

/* control0 */
#define CONTEXT_CONTROL_TYPE_NULL_OUT		0x0
#define CONTEXT_CONTROL_TYPE_NULL_IN		0x1
#define CONTEXT_CONTROL_TYPE_HASH_OUT		0x2
#define CONTEXT_CONTROL_TYPE_HASH_IN		0x3
#define CONTEXT_CONTROL_TYPE_CRYPTO_OUT		0x4
#define CONTEXT_CONTROL_TYPE_CRYPTO_IN		0x5
#define CONTEXT_CONTROL_TYPE_ENCRYPT_HASH_OUT	0x6
#define CONTEXT_CONTROL_TYPE_DECRYPT_HASH_IN	0x7
#define CONTEXT_CONTROL_TYPE_HASH_ENCRYPT_OUT	0xe
#define CONTEXT_CONTROL_TYPE_HASH_DECRYPT_IN	0xf
#define CONTEXT_CONTROL_RESTART_HASH		BIT(4)
#define CONTEXT_CONTROL_NO_FINISH_HASH		BIT(5)
#define CONTEXT_CONTROL_SIZE(n)			((n) << 8)
#define CONTEXT_CONTROL_KEY_EN			BIT(16)
#define CONTEXT_CONTROL_CRYPTO_ALG_DES		(0x0 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_3DES		(0x2 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_AES128	(0x5 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_AES192	(0x6 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_AES256	(0x7 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_CHACHA20	(0x8 << 17)
#define CONTEXT_CONTROL_CRYPTO_ALG_SM4		(0xd << 17)
#define CONTEXT_CONTROL_DIGEST_INITIAL		(0x0 << 21)
#define CONTEXT_CONTROL_DIGEST_PRECOMPUTED	(0x1 << 21)
#define CONTEXT_CONTROL_DIGEST_XCM		(0x2 << 21)
#define CONTEXT_CONTROL_DIGEST_HMAC		(0x3 << 21)
#define CONTEXT_CONTROL_CRYPTO_ALG_MD5		(0x0 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_CRC32	(0x0 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA1		(0x2 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA224	(0x4 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA256	(0x3 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA384	(0x6 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA512	(0x5 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_GHASH	(0x4 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_XCBC128	(0x1 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_XCBC192	(0x2 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_XCBC256	(0x3 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SM3		(0x7 << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA3_256	(0xb << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA3_224	(0xc << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA3_512	(0xd << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_SHA3_384	(0xe << 23)
#define CONTEXT_CONTROL_CRYPTO_ALG_POLY1305	(0xf << 23)
#define CONTEXT_CONTROL_INV_FR			(0x5 << 24)
#define CONTEXT_CONTROL_INV_TR			(0x6 << 24)

/* control1 */
#define CONTEXT_CONTROL_CRYPTO_MODE_ECB		(0 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_CBC		(1 << 0)
#define CONTEXT_CONTROL_CHACHA20_MODE_256_32	(2 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_OFB		(4 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_CFB		(5 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD	(6 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_XTS		(7 << 0)
#define CONTEXT_CONTROL_CRYPTO_MODE_XCM		((6 << 0) | BIT(17))
#define CONTEXT_CONTROL_CHACHA20_MODE_CALC_OTK	(12 << 0)
#define CONTEXT_CONTROL_IV0			BIT(5)
#define CONTEXT_CONTROL_IV1			BIT(6)
#define CONTEXT_CONTROL_IV2			BIT(7)
#define CONTEXT_CONTROL_IV3			BIT(8)
#define CONTEXT_CONTROL_DIGEST_CNT		BIT(9)
#define CONTEXT_CONTROL_COUNTER_MODE		BIT(10)
#define CONTEXT_CONTROL_CRYPTO_STORE		BIT(12)
#define CONTEXT_CONTROL_HASH_STORE		BIT(19)

#define EIP197_XCM_MODE_GCM			1
#define EIP197_XCM_MODE_CCM			2

#define EIP197_AEAD_TYPE_IPSEC_ESP		2
#define EIP197_AEAD_TYPE_IPSEC_ESP_GMAC		3
#define EIP197_AEAD_IPSEC_IV_SIZE		8
#define EIP197_AEAD_IPSEC_NONCE_SIZE		4
#define EIP197_AEAD_IPSEC_COUNTER_SIZE		4
#define EIP197_AEAD_IPSEC_CCM_NONCE_SIZE	3

/* The hash counter given to the engine in the context has a granularity of
 * 64 bits.
 */
#define EIP197_COUNTER_BLOCK_SIZE		64

/* EIP197_CS_RAM_CTRL */
#define EIP197_TRC_ENABLE_0			BIT(4)
#define EIP197_TRC_ENABLE_1			BIT(5)

Annotation

Implementation Notes