include/linux/i3c/ccc.h
Source file repositories/reference/linux-study-clean/include/linux/i3c/ccc.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/i3c/ccc.h- Extension
.h- Size
- 10040 bytes
- Lines
- 386
- 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/i3c/device.h
Detected Declarations
struct i3c_ccc_eventsstruct i3c_ccc_mwlstruct i3c_ccc_mrlstruct i3c_ccc_dev_descstruct i3c_ccc_defslvsstruct i3c_ccc_enttmstruct i3c_ccc_setdastruct i3c_ccc_getpidstruct i3c_ccc_getbcrstruct i3c_ccc_getdcrstruct i3c_ccc_getstatusstruct i3c_ccc_getaccmststruct i3c_ccc_bridged_slave_descstruct i3c_ccc_setbrgtgtstruct i3c_ccc_getmxdsstruct i3c_ccc_gethdrcapstruct i3c_ccc_setxtimestruct i3c_ccc_getxtimestruct i3c_ccc_cmd_payloadstruct i3c_ccc_cmd_deststruct i3c_ccc_cmdenum i3c_ccc_test_modeenum i3c_sdr_max_data_rateenum i3c_tscoenum i3c_ccc_setxtime_subcmd
Annotated Snippet
struct i3c_ccc_events {
u8 events;
};
/**
* struct i3c_ccc_mwl - payload passed to SETMWL/GETMWL CCC
*
* @len: maximum write length in bytes
*
* The maximum write length is only applicable to SDR private messages or
* extended Write CCCs (like SETXTIME).
*/
struct i3c_ccc_mwl {
__be16 len;
};
/**
* struct i3c_ccc_mrl - payload passed to SETMRL/GETMRL CCC
*
* @len: maximum read length in bytes
* @ibi_len: maximum IBI payload length
*
* The maximum read length is only applicable to SDR private messages or
* extended Read CCCs (like GETXTIME).
* The IBI length is only valid if the I3C slave is IBI capable
* (%I3C_BCR_IBI_REQ_CAP is set).
*/
struct i3c_ccc_mrl {
__be16 read_len;
u8 ibi_len;
} __packed;
/**
* struct i3c_ccc_dev_desc - I3C/I2C device descriptor used for DEFSLVS
*
* @dyn_addr: dynamic address assigned to the I3C slave or 0 if the entry is
* describing an I2C slave.
* @dcr: DCR value (not applicable to entries describing I2C devices)
* @lvr: LVR value (not applicable to entries describing I3C devices)
* @bcr: BCR value or 0 if this entry is describing an I2C slave
* @static_addr: static address or 0 if the device does not have a static
* address
*
* The DEFSLVS command should be passed an array of i3c_ccc_dev_desc
* descriptors (one entry per I3C/I2C dev controlled by the master).
*/
struct i3c_ccc_dev_desc {
u8 dyn_addr;
union {
u8 dcr;
u8 lvr;
};
u8 bcr;
u8 static_addr;
};
/**
* struct i3c_ccc_defslvs - payload passed to DEFSLVS CCC
*
* @count: number of dev descriptors
* @master: descriptor describing the current master
* @slaves: array of descriptors describing slaves controlled by the
* current master
*
* Information passed to the broadcast DEFSLVS to propagate device
* information to all masters currently acting as slaves on the bus.
* This is only meaningful if you have more than one master.
*/
struct i3c_ccc_defslvs {
u8 count;
struct i3c_ccc_dev_desc master;
struct i3c_ccc_dev_desc slaves[];
} __packed;
/**
* enum i3c_ccc_test_mode - enum listing all available test modes
*
* @I3C_CCC_EXIT_TEST_MODE: exit test mode
* @I3C_CCC_VENDOR_TEST_MODE: enter vendor test mode
*/
enum i3c_ccc_test_mode {
I3C_CCC_EXIT_TEST_MODE,
I3C_CCC_VENDOR_TEST_MODE,
};
/**
* struct i3c_ccc_enttm - payload passed to ENTTM CCC
*
* @mode: one of the &enum i3c_ccc_test_mode modes
*
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/i3c/device.h`.
- Detected declarations: `struct i3c_ccc_events`, `struct i3c_ccc_mwl`, `struct i3c_ccc_mrl`, `struct i3c_ccc_dev_desc`, `struct i3c_ccc_defslvs`, `struct i3c_ccc_enttm`, `struct i3c_ccc_setda`, `struct i3c_ccc_getpid`, `struct i3c_ccc_getbcr`, `struct i3c_ccc_getdcr`.
- 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.