STRUCT RKISP1_EXT_PARAMS_CFG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ 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_version for 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