drivers/media/i2c/ccs/ccs-data.h

Source file repositories/reference/linux-study-clean/drivers/media/i2c/ccs/ccs-data.h

File Facts

System
Linux kernel
Corpus path
drivers/media/i2c/ccs/ccs-data.h
Extension
.h
Size
6717 bytes
Lines
231
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ccs_data_block_version {
	u16 version_major;
	u16 version_minor;
	u16 date_year;
	u8 date_month;
	u8 date_day;
};

/**
 * struct ccs_reg - CCS register value
 * @addr: The 16-bit address of the register
 * @len: Length of the data
 * @value: Data
 */
struct ccs_reg {
	u16 addr;
	u16 len;
	u8 *value;
};

/**
 * struct ccs_if_rule - CCS static data if rule
 * @addr: Register address
 * @value: Register value
 * @mask: Value applied to both actual register value and @value
 */
struct ccs_if_rule {
	u16 addr;
	u8 value;
	u8 mask;
};

/**
 * struct ccs_frame_format_desc - CCS frame format descriptor
 * @pixelcode: The pixelcode; CCS_DATA_BLOCK_FFD_PIXELCODE_*
 * @value: Value related to the pixelcode
 */
struct ccs_frame_format_desc {
	u8 pixelcode;
	u16 value;
};

/**
 * struct ccs_frame_format_descs - A series of CCS frame format descriptors
 * @num_column_descs: Number of column descriptors
 * @num_row_descs: Number of row descriptors
 * @column_descs: Column descriptors
 * @row_descs: Row descriptors
 */
struct ccs_frame_format_descs {
	u8 num_column_descs;
	u8 num_row_descs;
	struct ccs_frame_format_desc *column_descs;
	struct ccs_frame_format_desc *row_descs;
};

/**
 * struct ccs_pdaf_readout - CCS PDAF data readout descriptor
 * @pdaf_readout_info_order: PDAF readout order
 * @ffd: Frame format of PDAF data
 */
struct ccs_pdaf_readout {
	u8 pdaf_readout_info_order;
	struct ccs_frame_format_descs *ffd;
};

/**
 * struct ccs_rule - A CCS static data rule
 * @num_if_rules: Number of if rules
 * @if_rules: If rules
 * @num_read_only_regs: Number of read-only registers
 * @read_only_regs: Read-only registers
 * @num_manufacturer_regs: Number of manufacturer-specific registers
 * @manufacturer_regs: Manufacturer-specific registers
 * @frame_format: Frame format
 * @pdaf_readout: PDAF readout
 */
struct ccs_rule {
	size_t num_if_rules;
	struct ccs_if_rule *if_rules;
	size_t num_read_only_regs;
	struct ccs_reg *read_only_regs;
	size_t num_manufacturer_regs;
	struct ccs_reg *manufacturer_regs;
	struct ccs_frame_format_descs *frame_format;
	struct ccs_pdaf_readout *pdaf_readout;
};

/**
 * struct ccs_pdaf_pix_loc_block_desc - PDAF pixel location block descriptor

Annotation

Implementation Notes