drivers/crypto/hisilicon/hpre/hpre.h

Source file repositories/reference/linux-study-clean/drivers/crypto/hisilicon/hpre/hpre.h

File Facts

System
Linux kernel
Corpus path
drivers/crypto/hisilicon/hpre/hpre.h
Extension
.h
Size
2670 bytes
Lines
130
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 hpre_debugfs_file {
	int index;
	enum hpre_ctrl_dbgfs_file type;
	spinlock_t lock;
	struct hpre_debug *debug;
};

struct hpre_dfx {
	atomic64_t value;
	enum hpre_dfx_dbgfs_file type;
};

/*
 * One HPRE controller has one PF and multiple VFs, some global configurations
 * which PF has need this structure.
 * Just relevant for PF.
 */
struct hpre_debug {
	struct hpre_dfx dfx[HPRE_DFX_FILE_NUM];
	struct hpre_debugfs_file files[HPRE_DEBUGFS_FILE_NUM];
};

struct hpre {
	struct hisi_qm qm;
	struct hpre_debug debug;
	unsigned long status;
};

enum hpre_alg_type {
	HPRE_ALG_NC_NCRT = 0x0,
	HPRE_ALG_NC_CRT = 0x1,
	HPRE_ALG_KG_STD = 0x2,
	HPRE_ALG_KG_CRT = 0x3,
	HPRE_ALG_DH_G2 = 0x4,
	HPRE_ALG_DH = 0x5,
	HPRE_ALG_ECC_MUL = 0xD,
	/* shared by x25519 and x448, but x448 is not supported now */
	HPRE_ALG_CURVE25519_MUL = 0x10,
};

struct hpre_sqe {
	__le32 dw0;
	__u8 task_len1;
	__u8 task_len2;
	__u8 mrttest_num;
	__u8 resv1;
	__le64 key;
	__le64 in;
	__le64 out;
	__le64 tag;
#define _HPRE_SQE_ALIGN_EXT	6
	__le32 rsvd1[_HPRE_SQE_ALIGN_EXT];
};

enum hpre_cap_table_type {
	QM_RAS_NFE_TYPE = 0x0,
	QM_RAS_NFE_RESET,
	QM_RAS_CE_TYPE,
	HPRE_RAS_NFE_TYPE,
	HPRE_RAS_NFE_RESET,
	HPRE_RAS_CE_TYPE,
	HPRE_CORE_INFO,
	HPRE_CORE_EN,
	HPRE_DRV_ALG_BITMAP,
	HPRE_ALG_BITMAP,
	HPRE_CORE1_BITMAP_CAP,
	HPRE_CORE2_BITMAP_CAP,
	HPRE_CORE3_BITMAP_CAP,
	HPRE_CORE4_BITMAP_CAP,
	HPRE_CORE5_BITMAP_CAP,
	HPRE_CORE6_BITMAP_CAP,
	HPRE_CORE7_BITMAP_CAP,
	HPRE_CORE8_BITMAP_CAP,
	HPRE_CORE9_BITMAP_CAP,
	HPRE_CORE10_BITMAP_CAP,
};

struct hisi_qp *hpre_create_qp(u8 type);
int hpre_algs_register(struct hisi_qm *qm);
void hpre_algs_unregister(struct hisi_qm *qm);
bool hpre_check_alg_support(struct hisi_qm *qm, u32 alg);
#endif

Annotation

Implementation Notes