include/linux/firmware/xlnx-zynqmp-crypto.h
Source file repositories/reference/linux-study-clean/include/linux/firmware/xlnx-zynqmp-crypto.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/firmware/xlnx-zynqmp-crypto.h- Extension
.h- Size
- 2970 bytes
- Lines
- 120
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
struct xlnx_featurefunction zynqmp_pm_aes_enginefunction zynqmp_pm_sha_hashfunction versal_pm_aes_key_writefunction versal_pm_aes_key_zerofunction versal_pm_aes_op_initfunction versal_pm_aes_update_aadfunction versal_pm_aes_enc_updatefunction versal_pm_aes_dec_updatefunction versal_pm_aes_enc_finalfunction versal_pm_aes_dec_finalfunction versal_pm_aes_init
Annotated Snippet
struct xlnx_feature {
u32 family;
u32 feature_id;
void *data;
};
/* xilSecure API commands module id + api id */
#define XSECURE_API_AES_INIT 0x509
#define XSECURE_API_AES_OP_INIT 0x50a
#define XSECURE_API_AES_UPDATE_AAD 0x50b
#define XSECURE_API_AES_ENCRYPT_UPDATE 0x50c
#define XSECURE_API_AES_ENCRYPT_FINAL 0x50d
#define XSECURE_API_AES_DECRYPT_UPDATE 0x50e
#define XSECURE_API_AES_DECRYPT_FINAL 0x50f
#define XSECURE_API_AES_KEY_ZERO 0x510
#define XSECURE_API_AES_WRITE_KEY 0x511
#if IS_REACHABLE(CONFIG_ZYNQMP_FIRMWARE)
int zynqmp_pm_aes_engine(const u64 address, u32 *out);
int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags);
void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map);
int versal_pm_aes_key_write(const u32 keylen,
const u32 keysrc, const u64 keyaddr);
int versal_pm_aes_key_zero(const u32 keysrc);
int versal_pm_aes_op_init(const u64 hw_req);
int versal_pm_aes_update_aad(const u64 aad_addr, const u32 aad_len);
int versal_pm_aes_enc_update(const u64 in_params, const u64 in_addr);
int versal_pm_aes_dec_update(const u64 in_params, const u64 in_addr);
int versal_pm_aes_dec_final(const u64 gcm_addr);
int versal_pm_aes_enc_final(const u64 gcm_addr);
int versal_pm_aes_init(void);
#else
static inline int zynqmp_pm_aes_engine(const u64 address, u32 *out)
{
return -ENODEV;
}
static inline int zynqmp_pm_sha_hash(const u64 address, const u32 size,
const u32 flags)
{
return -ENODEV;
}
static inline void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map)
{
return ERR_PTR(-ENODEV);
}
static inline int versal_pm_aes_key_write(const u32 keylen,
const u32 keysrc, const u64 keyaddr)
{
return -ENODEV;
}
static inline int versal_pm_aes_key_zero(const u32 keysrc)
{
return -ENODEV;
}
static inline int versal_pm_aes_op_init(const u64 hw_req)
{
return -ENODEV;
}
static inline int versal_pm_aes_update_aad(const u64 aad_addr,
const u32 aad_len)
{
return -ENODEV;
}
static inline int versal_pm_aes_enc_update(const u64 in_params,
const u64 in_addr)
{
return -ENODEV;
}
static inline int versal_pm_aes_dec_update(const u64 in_params,
const u64 in_addr)
{
return -ENODEV;
}
static inline int versal_pm_aes_enc_final(const u64 gcm_addr)
{
return -ENODEV;
}
static inline int versal_pm_aes_dec_final(const u64 gcm_addr)
{
Annotation
- Detected declarations: `struct xlnx_feature`, `function zynqmp_pm_aes_engine`, `function zynqmp_pm_sha_hash`, `function versal_pm_aes_key_write`, `function versal_pm_aes_key_zero`, `function versal_pm_aes_op_init`, `function versal_pm_aes_update_aad`, `function versal_pm_aes_enc_update`, `function versal_pm_aes_dec_update`, `function versal_pm_aes_enc_final`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.