STRUCT RKISP1_EXT_PARAMS_CFG(9)
π NAME π
ok so this is the struct rkisp1_ext_params_cfg page from the Kernel API Manual β like, that's the whole vibe of this doc set, and bestie, we're diving into RkISP1 extensible parameters configuration. yes it's as extra as it sounds and yes it slays π
β¨ SYNOPSIS β¨
struct rkisp1_ext_params_cfg {
__u32 version;
__u32 data_size;
__u8 data[RKISP1_EXT_PARAMS_MAX_SIZE];
};
π Members π
versionβ the RkISP1 extensible parameters buffer version π·οΈ β check :c:type:rkisp1_ext_param_buffer_versionfor the deets.data_sizeβ the RkISP1 configuration data's effective size, and no, it does not include this header, so don't @ me π«Άdataβ the actual RkISP1 extensible configuration data blocks, the main character payload π
π¦ DESCRIPTION π¦
So this struct? It's the driver-specific implementation of :c:type:v4l2_isp_params_buffer. literally the glow-up version fr fr π
Right now, only one version exists: RKISP1_EXT_PARAM_BUFFER_V1. that's it, that's the whole menu π. And when a new format version gets added later, there's a plan for a mechanism so userspace can query which format versions are supported β it'll take the form of a read-only V4L2 control. So if that control isn't there? then userspace should assume the driver supports only RKISP1_EXT_PARAM_BUFFER_V1. no cap, that's the fallback π
There's also a read-only V4L2 control called RKISP1_CID_SUPPORTED_PARAMS_BLOCKS that you can use to query which blocks the device supports π. It holds a bitmask where each bit represents the availability of the corresponding entry from the :c:type:rkisp1_ext_params_block_type enum. Get this β the current and default values of the control represent the blocks supported by the device instance, while the maximum value represents the blocks supported by the kernel driver, independently of the device instance. two different scopes, both iconic πβ¨
The expected memory layout of the parameters buffer goes a lil something like this:
+-------------------- struct rkisp1_ext_params_cfg -------------------+
| version = RKISP1_EXT_PARAM_BUFFER_V1; |
| data_size = sizeof(struct rkisp1_ext_params_bls_config) |
| + sizeof(struct rkisp1_ext_params_dpcc_config); |
| +------------------------- data ---------------------------------+ |
| | +------------- struct rkisp1_ext_params_bls_config -----------+ | |
| | | +-------- struct rkisp1_ext_params_block_header ---------+ | | |
| | | | type = RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS; | | | |
| | | | flags = RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE; | | | |
| | | | size = sizeof(struct rkisp1_ext_params_bls_config); | | | |
| | | +---------------------------------------------------------+ | | |
| | | +---------- struct rkisp1_cif_isp_bls_config -------------+ | | |
| | | | enable_auto = 0; | | | |
| | | | fixed_val.r = 256; | | | |
| | | | fixed_val.gr = 256; | | | |
| | | | fixed_val.gb = 256; | | | |
| | | | fixed_val.b = 256; | | | |
| | | +---------------------------------------------------------+ | | |
| | +------------ struct rkisp1_ext_params_dpcc_config -----------+ | |
| | | +-------- struct rkisp1_ext_params_block_header ---------+ | | |
| | | | type = RKISP1_EXT_PARAMS_BLOCK_TYPE_DPCC; | | | |
| | | | flags = RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE; | | | |
| | | | size = sizeof(struct rkisp1_ext_params_dpcc_config); | | | |
| | | +---------------------------------------------------------+ | | |
| | | +---------- struct rkisp1_cif_isp_dpcc_config ------------+ | | |
| | | | mode = RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE; | | | |
| | | | output_mode = | | | |
| | | | RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER; | | | |
| | | | set_use = ... ; | | | |
| | | | ... = ... ; | | | |
| | | +---------------------------------------------------------+ | | |
| | +-------------------------------------------------------------+ | |
| +-----------------------------------------------------------------+ |
+---------------------------------------------------------------------+
lowkey obsessed with how tidy that nesting is. it's giving russian dolls but make it kernel uapi πͺ
π SEE ALSO π
Kernel file ./include/uapi/linux/rkisp1-config.h β and then the whole extended fam, buckle up bestie, this is a long guest list π:
- enum
rkisp1_cif_isp_version(9) - enum
rkisp1_cif_isp_exp_ctrl_autostop(9) - enum
rkisp1_cif_isp_exp_meas_mode(9) - struct
rkisp1_cif_isp_window(9) - struct
rkisp1_cif_isp_bls_fixed_val(9) - struct
rkisp1_cif_isp_bls_config(9) - struct
rkisp1_cif_isp_dpcc_methods_config(9) - struct
rkisp1_cif_isp_dpcc_config(9) - struct
rkisp1_cif_isp_gamma_corr_curve(9) - struct
rkisp1_cif_isp_gamma_curve_x_axis_pnts(9) - struct
rkisp1_cif_isp_sdg_config(9) - struct
rkisp1_cif_isp_lsc_config(9) - struct
rkisp1_cif_isp_ie_config(9) - struct
rkisp1_cif_isp_cproc_config(9) - struct
rkisp1_cif_isp_awb_meas_config(9) - struct
rkisp1_cif_isp_awb_gain_config(9) - struct
rkisp1_cif_isp_flt_config(9) - struct
rkisp1_cif_isp_bdm_config(9) - struct
rkisp1_cif_isp_ctk_config(9) - struct
rkisp1_cif_isp_goc_config(9) - struct
rkisp1_cif_isp_hst_config(9) - struct
rkisp1_cif_isp_aec_config(9) - struct
rkisp1_cif_isp_afc_config(9) - enum
rkisp1_cif_isp_dpf_gain_usage(9) - enum
rkisp1_cif_isp_dpf_rb_filtersize(9) - enum
rkisp1_cif_isp_dpf_nll_scale_mode(9) - struct
rkisp1_cif_isp_dpf_nll(9) - struct
rkisp1_cif_isp_dpf_rb_flt(9) - struct
rkisp1_cif_isp_dpf_g_flt(9) - struct
rkisp1_cif_isp_dpf_gain(9) - struct
rkisp1_cif_isp_dpf_config(9) - struct
rkisp1_cif_isp_dpf_strength_config(9) - struct
rkisp1_cif_isp_isp_other_cfg(9) - struct
rkisp1_cif_isp_isp_meas_cfg(9) - struct
rkisp1_params_cfg(9) - struct
rkisp1_cif_isp_compand_bls_config(9) - struct
rkisp1_cif_isp_compand_curve_config(9) - struct
rkisp1_cif_isp_wdr_tone_curve(9) - struct
rkisp1_cif_isp_wdr_iref_config(9) - struct
rkisp1_cif_isp_wdr_config(9) - enum
rkisp1_cif_isp_cac_v_clip_mode(9) - struct
rkisp1_cif_isp_cac_config(9) - struct
rkisp1_cif_isp_awb_meas(9) - struct
rkisp1_cif_isp_awb_stat(9) - struct
rkisp1_cif_isp_bls_meas_val(9) - struct
rkisp1_cif_isp_ae_stat(9) - struct
rkisp1_cif_isp_af_meas_val(9) - struct
rkisp1_cif_isp_af_stat(9) - struct
rkisp1_cif_isp_hist_stat(9) - struct
rkisp1_cif_isp_stat(9) - struct
rkisp1_stat_buffer(9) - enum
rkisp1_ext_params_block_type(9) rkisp1_ext_params_block_header(9)- struct
rkisp1_ext_params_bls_config(9) - struct
rkisp1_ext_params_dpcc_config(9) - struct
rkisp1_ext_params_sdg_config(9) - struct
rkisp1_ext_params_lsc_config(9) - struct
rkisp1_ext_params_awb_gain_config(9) - struct
rkisp1_ext_params_flt_config(9) - struct
rkisp1_ext_params_bdm_config(9) - struct
rkisp1_ext_params_ctk_config(9) - struct
rkisp1_ext_params_goc_config(9) - struct
rkisp1_ext_params_dpf_config(9) - struct
rkisp1_ext_params_dpf_strength_config(9) - struct
rkisp1_ext_params_cproc_config(9) - struct
rkisp1_ext_params_ie_config(9) - struct
rkisp1_ext_params_awb_meas_config(9) - struct
rkisp1_ext_params_hst_config(9) - struct
rkisp1_ext_params_aec_config(9) - struct
rkisp1_ext_params_afc_config(9) - struct
rkisp1_ext_params_compand_bls_config(9) - struct
rkisp1_ext_params_compand_curve_config(9) - struct
rkisp1_ext_params_wdr_config(9) - struct
rkisp1_ext_params_cac_config(9) - enum
rkisp1_ext_param_buffer_version(9)
ok that's the whole page, you made it to the end, so proud of you π«Άβ¨ this baby lives in ./include/uapi/linux and the docs are dated October 2026 β go forth and configure those ISP params, bestie, you've got this ππΈπ
π¦ 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