drivers/media/i2c/ccs/ccs.h
Source file repositories/reference/linux-study-clean/drivers/media/i2c/ccs/ccs.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/i2c/ccs/ccs.h- Extension
.h- Size
- 6878 bytes
- Lines
- 277
- 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/mutex.hlinux/regmap.hmedia/v4l2-ctrls.hmedia/v4l2-subdev.hccs-data.hccs-limits.hccs-quirk.hccs-regs.hccs-reg-access.h../ccs-pll.hsmiapp-reg-defs.h
Detected Declarations
struct ccs_flash_strobe_parmsstruct ccs_hwconfigstruct ccs_quirkstruct ccs_module_identstruct ccs_module_infostruct ccs_csi_data_formatstruct ccs_binning_subtypestruct ccs_subdevstruct ccs_sensor
Annotated Snippet
struct ccs_flash_strobe_parms {
u8 mode;
u32 strobe_width_high_us;
u16 strobe_delay;
u16 stobe_start_point;
u8 trigger;
};
struct ccs_hwconfig {
/*
* Change the cci address if i2c_addr_alt is set.
* Both default and alternate cci addr need to be present
*/
unsigned short i2c_addr_dfl; /* Default i2c addr */
unsigned short i2c_addr_alt; /* Alternate i2c addr */
u32 ext_clk; /* sensor external clk */
unsigned int lanes; /* Number of CSI-2 lanes */
u32 csi_signalling_mode; /* CCS_CSI_SIGNALLING_MODE_* */
u64 *op_sys_clock;
struct ccs_flash_strobe_parms *strobe_setup;
};
struct ccs_quirk;
#define CCS_MODULE_IDENT_FLAG_REV_LE (1 << 0)
struct ccs_module_ident {
u16 mipi_manufacturer_id;
u16 model_id;
u8 smia_manufacturer_id;
u8 revision_number_major;
u8 flags;
char *name;
const struct ccs_quirk *quirk;
};
struct ccs_module_info {
u32 smia_manufacturer_id;
u32 mipi_manufacturer_id;
u32 model_id;
u32 revision_number;
u32 module_year;
u32 module_month;
u32 module_day;
u32 sensor_smia_manufacturer_id;
u32 sensor_mipi_manufacturer_id;
u32 sensor_model_id;
u32 sensor_revision_number;
u32 sensor_firmware_version;
u32 smia_version;
u32 smiapp_version;
u32 ccs_version;
char *name;
const struct ccs_quirk *quirk;
};
#define CCS_IDENT_FQ(manufacturer, model, rev, fl, _name, _quirk) \
{ .smia_manufacturer_id = manufacturer, \
.model_id = model, \
.revision_number_major = rev, \
.flags = fl, \
.name = _name, \
.quirk = _quirk, }
#define CCS_IDENT_LQ(manufacturer, model, rev, _name, _quirk) \
{ .smia_manufacturer_id = manufacturer, \
.model_id = model, \
.revision_number_major = rev, \
.flags = CCS_MODULE_IDENT_FLAG_REV_LE, \
.name = _name, \
.quirk = _quirk, }
#define CCS_IDENT_L(manufacturer, model, rev, _name) \
{ .smia_manufacturer_id = manufacturer, \
.model_id = model, \
.revision_number_major = rev, \
.flags = CCS_MODULE_IDENT_FLAG_REV_LE, \
.name = _name, }
#define CCS_IDENT_Q(manufacturer, model, rev, _name, _quirk) \
{ .smia_manufacturer_id = manufacturer, \
Annotation
- Immediate include surface: `linux/mutex.h`, `linux/regmap.h`, `media/v4l2-ctrls.h`, `media/v4l2-subdev.h`, `ccs-data.h`, `ccs-limits.h`, `ccs-quirk.h`, `ccs-regs.h`.
- Detected declarations: `struct ccs_flash_strobe_parms`, `struct ccs_hwconfig`, `struct ccs_quirk`, `struct ccs_module_ident`, `struct ccs_module_info`, `struct ccs_csi_data_format`, `struct ccs_binning_subtype`, `struct ccs_subdev`, `struct ccs_sensor`.
- 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.