include/linux/dma/ti-cppi5.h
Source file repositories/reference/linux-study-clean/include/linux/dma/ti-cppi5.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/dma/ti-cppi5.h- Extension
.h- Size
- 34138 bytes
- Lines
- 1074
- 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
linux/bitops.hlinux/printk.hlinux/bug.h
Detected Declarations
struct cppi5_desc_hdr_tstruct cppi5_host_desc_tstruct cppi5_desc_epib_tstruct cppi5_monolithic_desc_tstruct cppi5_tr_type0_tstruct cppi5_tr_type1_tstruct cppi5_tr_type2_tstruct cppi5_tr_type3_tstruct cppi5_tr_type15_tstruct cppi5_tr_resp_tenum cppi5_tr_typesenum cppi5_tr_event_sizeenum cppi5_tr_triggerenum cppi5_tr_trigger_typeenum cppi5_tr_resp_status_typeenum cppi5_tr_resp_status_submissionenum cppi5_tr_resp_status_unsupportedfunction cppi5_desc_dumpfunction cppi5_desc_is_tdcmfunction cppi5_desc_get_typefunction cppi5_desc_get_errflagsfunction cppi5_desc_get_pktidsfunction cppi5_desc_set_pktidsfunction cppi5_desc_set_retpolicyfunction cppi5_desc_get_tags_idsfunction cppi5_desc_set_tags_idsfunction cppi5_hdesc_calc_sizefunction cppi5_hdesc_initfunction cppi5_hdesc_update_flagsfunction cppi5_hdesc_update_psdata_sizefunction cppi5_hdesc_get_psdata_sizefunction cppi5_hdesc_get_pktlenfunction cppi5_hdesc_set_pktlenfunction cppi5_hdesc_get_psflagsfunction cppi5_hdesc_set_psflagsfunction cppi5_hdesc_get_pkttypefunction cppi5_hdesc_set_pkttypefunction cppi5_hdesc_attach_buffunction cppi5_hdesc_get_obuffunction cppi5_hdesc_reset_to_originalfunction cppi5_hdesc_link_hbdescfunction cppi5_hdesc_get_next_hbdescfunction cppi5_hdesc_reset_hbdescfunction cppi5_hdesc_epib_presentfunction cppi5_trdesc_calc_sizefunction cppi5_trdesc_initfunction cppi5_tr_initfunction cppi5_tr_set_trigger
Annotated Snippet
struct cppi5_desc_hdr_t {
u32 pkt_info0;
u32 pkt_info1;
u32 pkt_info2;
u32 src_dst_tag;
} __packed;
/**
* struct cppi5_host_desc_t - Host-mode packet and buffer descriptor definition
* @hdr: Descriptor header
* @next_desc: word 4/5: Linking word
* @buf_ptr: word 6/7: Buffer pointer
* @buf_info1: word 8: Buffer valid data length
* @org_buf_len: word 9: Original buffer length
* @org_buf_ptr: word 10/11: Original buffer pointer
* @epib: Extended Packet Info Data (optional, 4 words), and/or
* Protocol Specific Data (optional, 0-128 bytes in
* multiples of 4), and/or
* Other Software Data (0-N bytes, optional)
*/
struct cppi5_host_desc_t {
struct cppi5_desc_hdr_t hdr;
u64 next_desc;
u64 buf_ptr;
u32 buf_info1;
u32 org_buf_len;
u64 org_buf_ptr;
u32 epib[];
} __packed;
#define CPPI5_DESC_MIN_ALIGN (16U)
#define CPPI5_INFO0_HDESC_EPIB_SIZE (16U)
#define CPPI5_INFO0_HDESC_PSDATA_MAX_SIZE (128U)
#define CPPI5_INFO0_HDESC_TYPE_SHIFT (30U)
#define CPPI5_INFO0_HDESC_TYPE_MASK GENMASK(31, 30)
#define CPPI5_INFO0_DESC_TYPE_VAL_HOST (1U)
#define CPPI5_INFO0_DESC_TYPE_VAL_MONO (2U)
#define CPPI5_INFO0_DESC_TYPE_VAL_TR (3U)
#define CPPI5_INFO0_HDESC_EPIB_PRESENT BIT(29)
/*
* Protocol Specific Words location:
* 0 - located in the descriptor,
* 1 = located in the SOP Buffer immediately prior to the data.
*/
#define CPPI5_INFO0_HDESC_PSINFO_LOCATION BIT(28)
#define CPPI5_INFO0_HDESC_PSINFO_SIZE_SHIFT (22U)
#define CPPI5_INFO0_HDESC_PSINFO_SIZE_MASK GENMASK(27, 22)
#define CPPI5_INFO0_HDESC_PKTLEN_SHIFT (0)
#define CPPI5_INFO0_HDESC_PKTLEN_MASK GENMASK(21, 0)
#define CPPI5_INFO1_DESC_PKTERROR_SHIFT (28U)
#define CPPI5_INFO1_DESC_PKTERROR_MASK GENMASK(31, 28)
#define CPPI5_INFO1_HDESC_PSFLGS_SHIFT (24U)
#define CPPI5_INFO1_HDESC_PSFLGS_MASK GENMASK(27, 24)
#define CPPI5_INFO1_DESC_PKTID_SHIFT (14U)
#define CPPI5_INFO1_DESC_PKTID_MASK GENMASK(23, 14)
#define CPPI5_INFO1_DESC_FLOWID_SHIFT (0)
#define CPPI5_INFO1_DESC_FLOWID_MASK GENMASK(13, 0)
#define CPPI5_INFO1_DESC_FLOWID_DEFAULT CPPI5_INFO1_DESC_FLOWID_MASK
#define CPPI5_INFO2_HDESC_PKTTYPE_SHIFT (27U)
#define CPPI5_INFO2_HDESC_PKTTYPE_MASK GENMASK(31, 27)
/* Return Policy: 0 - Entire packet 1 - Each buffer */
#define CPPI5_INFO2_HDESC_RETPOLICY BIT(18)
/*
* Early Return:
* 0 = desc pointers should be returned after all reads have been completed
* 1 = desc pointers should be returned immediately upon fetching
* the descriptor and beginning to transfer data.
*/
#define CPPI5_INFO2_HDESC_EARLYRET BIT(17)
/*
* Return Push Policy:
* 0 = Descriptor must be returned to tail of queue
* 1 = Descriptor must be returned to head of queue
*/
#define CPPI5_INFO2_DESC_RETPUSHPOLICY BIT(16)
#define CPPI5_INFO2_DESC_RETP_MASK GENMASK(18, 16)
#define CPPI5_INFO2_DESC_RETQ_SHIFT (0)
#define CPPI5_INFO2_DESC_RETQ_MASK GENMASK(15, 0)
#define CPPI5_INFO3_DESC_SRCTAG_SHIFT (16U)
#define CPPI5_INFO3_DESC_SRCTAG_MASK GENMASK(31, 16)
#define CPPI5_INFO3_DESC_DSTTAG_SHIFT (0)
#define CPPI5_INFO3_DESC_DSTTAG_MASK GENMASK(15, 0)
#define CPPI5_BUFINFO1_HDESC_DATA_LEN_SHIFT (0)
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/printk.h`, `linux/bug.h`.
- Detected declarations: `struct cppi5_desc_hdr_t`, `struct cppi5_host_desc_t`, `struct cppi5_desc_epib_t`, `struct cppi5_monolithic_desc_t`, `struct cppi5_tr_type0_t`, `struct cppi5_tr_type1_t`, `struct cppi5_tr_type2_t`, `struct cppi5_tr_type3_t`, `struct cppi5_tr_type15_t`, `struct cppi5_tr_resp_t`.
- 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.