drivers/crypto/talitos.h
Source file repositories/reference/linux-study-clean/drivers/crypto/talitos.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/crypto/talitos.h- Extension
.h- Size
- 15583 bytes
- Lines
- 428
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- 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 talitos_ptrstruct talitos_descstruct talitos_edescstruct talitos_requeststruct talitos_channelstruct talitos_privatefunction has_ftr_sec1
Annotated Snippet
struct talitos_ptr {
union {
struct { /* SEC2 format */
__be16 len; /* length */
u8 j_extent; /* jump to sg link table and/or extent*/
u8 eptr; /* extended address */
};
struct { /* SEC1 format */
__be16 res;
__be16 len1; /* length */
};
};
__be32 ptr; /* address */
};
/* descriptor */
struct talitos_desc {
__be32 hdr; /* header high bits */
union {
__be32 hdr_lo; /* header low bits */
__be32 hdr1; /* header for SEC1 */
};
struct talitos_ptr ptr[7]; /* ptr/len pair array */
__be32 next_desc; /* next descriptor (SEC1) */
};
#define TALITOS_DESC_SIZE (sizeof(struct talitos_desc) - sizeof(__be32))
/*
* talitos_edesc - s/w-extended descriptor
* @bufsl: scatterlist buffer
* @src: pointer to input scatterlist
* @first: first descriptor of a chain
* @last: last descriptor of a chain
*
* @src_nents: number of segments in input scatterlist
* @dst_nents: number of segments in output scatterlist
* @iv_dma: dma address of iv for checking continuity and link table
* @dma_len: length of dma mapped link_tbl space
* @dma_link_tbl: bus physical address of link_tbl/buf
* @next_desc: next descriptor
* @desc: h/w descriptor
* @link_tbl: input and output h/w link tables (if {src,dst}_nents > 1) (SEC2)
* @buf: input and output buffeur (if {src,dst}_nents > 1) (SEC1)
*
* if decrypting (with authcheck), or either one of src_nents or dst_nents
* is greater than 1, an integrity check value is concatenated to the end
* of link_tbl data
*/
struct talitos_edesc {
struct scatterlist bufsl[2];
struct scatterlist *src;
int first;
int last;
int src_nents;
int dst_nents;
dma_addr_t iv_dma;
int dma_len;
dma_addr_t dma_link_tbl;
struct talitos_edesc *next_desc;
struct talitos_desc desc;
union {
DECLARE_FLEX_ARRAY(struct talitos_ptr, link_tbl);
DECLARE_FLEX_ARRAY(u8, buf);
};
};
/**
* talitos_request - descriptor submission request
* @desc: descriptor pointer (kernel virtual)
* @dma_desc: descriptor's physical bus address
* @callback: whom to call when descriptor processing is done
* @context: caller context (optional)
*/
struct talitos_request {
struct talitos_desc *desc;
dma_addr_t dma_desc;
void (*callback) (struct device *dev, struct talitos_desc *desc,
void *context, int error);
void *context;
};
/* per-channel fifo management */
struct talitos_channel {
void __iomem *reg;
/* request fifo */
struct talitos_request *fifo;
Annotation
- Detected declarations: `struct talitos_ptr`, `struct talitos_desc`, `struct talitos_edesc`, `struct talitos_request`, `struct talitos_channel`, `struct talitos_private`, `function has_ftr_sec1`.
- Atlas domain: Driver Families / drivers/crypto.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.