drivers/media/i2c/cvs/icvs.h
Source file repositories/reference/linux-study-clean/drivers/media/i2c/cvs/icvs.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/i2c/cvs/icvs.h- Extension
.h- Size
- 16111 bytes
- Lines
- 496
- Domain
- Driver Families
- Bucket
- drivers/media
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bits.hlinux/completion.hlinux/mutex.hlinux/workqueue.hlinux/types.hlinux/wait.hmedia/media-entity.hmedia/v4l2-ctrls.hmedia/v4l2-subdev.h
Detected Declarations
struct gpio_descstruct i2c_clientstruct icvs_device_quirkstruct icvs_dt_configstruct icvs_vc_configstruct icvs_link_cfgstruct icvs_fw_versionstruct icvs_vid_pidstruct icvs_mipi_data_packetstruct icvs_mipi_read_packetstruct icvs_dev_capabilitiesstruct icvs_cmdstruct icvs_respstruct icvsenum icvs_csi_cmd_idenum icvs_csi_link_ownerenum icvs_csi_privacy_statusenum icvs_csi_padsenum icvs_resourcesenum icvs_commandenum icvs_state
Annotated Snippet
struct icvs_device_quirk {
u16 vid;
u16 pid;
unsigned long quirks;
};
/**
* struct icvs_dt_config - Data type configuration for a virtual channel
* @pixel_width: Pixel width in pixels
* @pixel_height: Pixel height in pixels
* @data_type: MIPI CSI-2 data type (RAW10, RAW12, etc.)
* @reserved: Reserved for future use
*/
struct icvs_dt_config {
u16 pixel_width;
u16 pixel_height;
u8 data_type;
u8 reserved[3];
};
/**
* struct icvs_vc_config - Virtual channel configuration
* @vc: Virtual channel index (0-31)
* @dt_count: Number of data types configured
* @dt_configs: Array of data type configurations (up to 4)
* @reserved: Reserved for future use
*/
struct icvs_vc_config {
u8 vc;
u8 dt_count;
struct icvs_dt_config dt_configs[4];
u8 reserved[6];
};
/**
* struct icvs_link_cfg - Host to CVS CSI link configuration
* @fps: Frames per second
* @nr_of_lanes: Number of CSI-2 data lanes used
* @phy_mode: 0 = DPHY, 1 = CPHY
* @vc_count: Number of virtual channels enabled
* @vc_configs: Per-VC configuration
* @link_freq: Link frequency in Hz
* @reserved: Reserved for future use
*/
struct icvs_link_cfg {
u8 fps;
u8 nr_of_lanes;
u8 phy_mode;
u8 vc_count;
struct icvs_vc_config vc_configs[4];
u32 link_freq;
u8 reserved[8];
};
/**
* struct icvs_fw_version - Firmware version tuple
* @major: Major version
* @minor: Minor version
* @hotfix: Hotfix/patch level
* @build: Build number
*/
struct icvs_fw_version {
u32 major;
u32 minor;
u32 hotfix;
u32 build;
};
/**
* struct icvs_vid_pid - Device vendor/product IDs
* @v_id: Vendor ID
* @p_id: Product ID
*/
struct icvs_vid_pid {
u16 v_id;
u16 p_id;
};
/**
* struct icvs_mipi_data_packet - Encapsulated MIPI link configuration packet
* @cmd_id: Command identifier
* @size: Payload size (bytes)
* @crc: Checksum over payload
* @conf: CSI link configuration
* @reserved: Reserved for future use
*/
struct icvs_mipi_data_packet {
__be16 cmd_id;
u32 size;
u32 crc;
Annotation
- Immediate include surface: `linux/bits.h`, `linux/completion.h`, `linux/mutex.h`, `linux/workqueue.h`, `linux/types.h`, `linux/wait.h`, `media/media-entity.h`, `media/v4l2-ctrls.h`.
- Detected declarations: `struct gpio_desc`, `struct i2c_client`, `struct icvs_device_quirk`, `struct icvs_dt_config`, `struct icvs_vc_config`, `struct icvs_link_cfg`, `struct icvs_fw_version`, `struct icvs_vid_pid`, `struct icvs_mipi_data_packet`, `struct icvs_mipi_read_packet`.
- Atlas domain: Driver Families / drivers/media.
- 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.