STRUCT C3_ISP_PARAMS_CFG(9)
π struct c3_isp_params_cfg(9) β C3 ISP configuration parameters β¨
okay so this is from the Kernel API Manual, section 9, and it's literally the blueprint for how the C3 ISP gets told what to do. bestie, it's giving "the driver-specific glow-up of v4l2_isp_params_buffer" and we're gonna walk through it π«Ά
β¨ SYNOPSIS β¨
struct c3_isp_params_cfg {
__u32 version;
__u32 data_size;
__u8 data[C3_ISP_PARAMS_MAX_SIZE];
};
π Members π
versionβ the version of the C3 ISP parameters buffer. it's the vibe check of the whole struct π«data_sizeβ the effective size of the C3 ISP configuration data, and no cap, this one does not count this header. header stays out of it, periodt.dataβ the actual C3 ISP configuration blocks data. the main character, honestly π
πΈ Description πΈ
so this struct is the driver-specific implementation of :c:type:v4l2_isp_params_buffer``. literally the same concept, just wearing the C3 driver's outfit π
right now β and this is important β only C3_ISP_PARAM_BUFFER_V0 is supported. that's the only version in the group chat rn π
the expected memory layout of the parameters buffer goes like this, and yes we're keeping every single line because it's iconic:
+-------------------- struct c3_isp_params_cfg ---- ------------------+
| version = C3_ISP_PARAM_BUFFER_V0; |
| data_size = sizeof(struct c3_isp_params_awb_gains) + |
| sizeof(struct c3_isp_params_awb_config); |
| +------------------------- data ---------------------------------+ |
| | +------------ struct c3_isp_params_awb_gains) ------------------+ |
| | | +--------- struct c3_isp_params_block_header header -----+ | | |
| | | | type = C3_ISP_PARAMS_BLOCK_AWB_GAINS; | | | |
| | | | flags = C3_ISP_PARAMS_BLOCK_FL_NONE; | | | |
| | | | size = sizeof(struct c3_isp_params_awb_gains); | | | |
| | | +---------------------------------------------------------+ | | |
| | | gr_gain = ...; | | |
| | | r_gain = ...; | | |
| | | b_gain = ...; | | |
| | | gb_gain = ...; | | |
| | +------------------ struct c3_isp_params_awb_config ----------+ | |
| | | +---------- struct c3_isp_param_block_header header ------+ | | |
| | | | type = C3_ISP_PARAMS_BLOCK_AWB_CONFIG; | | | |
| | | | flags = C3_ISP_PARAMS_BLOCK_FL_NONE; | | | |
| | | | size = sizeof(struct c3_isp_params_awb_config) | | | |
| | | +---------------------------------------------------------+ | | |
| | | tap_point = ...; | | |
| | | satur_vald = ...; | | |
| | | horiz_zones_num = ...; | | |
| | | vert_zones_num = ...; | | |
| | +-------------------------------------------------------------+ | |
| +-----------------------------------------------------------------+ |
+---------------------------------------------------------------------+
and that's the whole nesting doll of it β a struct c3_isp_params_cfg holding data, which holds a struct c3_isp_params_awb_gains (with its struct c3_isp_params_block_header header up top, then gr_gain, r_gain, b_gain, gb_gain) plus a struct c3_isp_params_awb_config (also with a struct c3_isp_param_block_header header, then tap_point, satur_vald, horiz_zones_num, vert_zones_num). the way it's so structured. obsessed ππ
π¦ SEE ALSO π¦
go check the kernel file ./include/uapi/linux/media/amlogic/c3-isp-config.h and all these siblings, they're all part of the same little family:
struct c3_isp_awb_zone_stats(9)struct c3_isp_awb_stats(9)struct c3_isp_ae_zone_stats(9)struct c3_isp_ae_stats(9)struct c3_isp_af_zone_stats(9)struct c3_isp_af_stats(9)struct c3_isp_stats_info(9)enum c3_isp_params_buffer_version(9)enum c3_isp_params_block_type(9)c3_isp_params_block_header(9)struct c3_isp_params_awb_gains(9)enum c3_isp_params_awb_tap_points(9)struct c3_isp_params_awb_config(9)enum c3_isp_params_ae_tap_points(9)struct c3_isp_params_ae_config(9)enum c3_isp_params_af_tap_points(9)struct c3_isp_params_af_config(9)struct c3_isp_params_pst_gamma(9)struct c3_isp_params_ccm(9)struct c3_isp_params_csc(9)struct c3_isp_params_blc(9)C3_ISP_PARAMS_MAX_SIZE(9)
π reminder bestie: only C3_ISP_PARAM_BUFFER_V0 is supported rn. don't come at the driver with anything else, it's not ready for that energy.
okay that's the page!! source path is ./include/uapi/linux/media/aml... (yes it's truncated in the original, sending it exactly as-is, no editing the lore π) and the date on this baddie is October 2026. struct c3_isp_params_cfg(9) signing off β slay, stay configured, and read your headers ππβ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms