STRUCT RPPX1_LIN_PARAMS(9)
π struct rppx1_lin_params(9) π
okay so bestie, welcome to the Kernel API Manual β¨ β this is the page for struct rppx1_lin_params, aka the linearization (sensor de-gamma) config, and honestly? it's giving "small struct, big responsibilities" π
πΈ NAME πΈ
struct rppx1_lin_params β the linearization (sensor de-gamma) configuration π
β¨ SYNOPSIS β¨
struct rppx1_lin_params {
struct v4l2_isp_params_block_header header;
__u32 curve_r[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u32 curve_g[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u32 curve_b[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u8 dx[RPPX1_LIN_SAMPLE_POINTS_NUM];
__u32 reserved;
};
no cap, that's the whole vibe right there π«Ά
π¦ Members π¦
headerβ the block header, and its type is literally eitherRPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1orRPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2π that's how you tell it which pipe you're oncurve_rβ the de-gamma linearization curve for the red channel πcurve_gβ the de-gamma linearization curve for the green channel πΏcurve_bβ the de-gamma linearization curve for the blue channel π¦dxβ the input sampling points πreservedβ padding, it's just there chillin' (don't touch it, bestie) π
π Description π
so the RPP-X1 linearization module is available on the PRE1 and PRE2 pre-fusion pipes π₯ and userspace gets to pick which pipe it's operating on by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2 β main character energy, you choose π
The LIN module applies the per-color channel de-gamma linearization curves curve_r, curve_g and curve_b, all defined on the input sampling points dx. teamwork, fr fr π€
Now here's the part where the bit-depth match matters, so lock in π§ β¨:
- For the PRE1 pipe, the de-gamma curve values are 24-bits π
- For the PRE2 pipe, the de-gamma curve values are 12-bits π
- For the PRE1 pipe, the de-gamma module sampling points
dxvalues are in the range[0, 15](4 bits) πΈ - For the PRE2 pipe, the de-gamma module sampling points values are in the range
[0, 7](3 bits) π¦
β οΈ ok so this is the important one: userspace is expected to provide the curve values and the sampling points with a bit-depth matching the one of the pipe in use. mismatch = not the move, bestie π
π SEE ALSO π
Kernel file ./include/uapi/linux/media/dreamchip/rppx1-config.h β plus the whole friend group π―ββοΈ:
struct rppx1_window(9)enum rppx1_meas_chan(9)enum rppx1_params_block_type(9)enum rppx1_wbmeas_mode(9)struct rppx1_wbmeas_params(9)struct rppx1_awbg_params(9)enum rppx1_exm_mode(9)struct rppx1_exm_params(9)enum rppx1_hist_mode(9)struct rppx1_hist_params(9)struct rppx1_bls_fixed(9)enum rppx1_bls_mode(9)enum rppx1_bls_win_en(9)struct rppx1_bls_params(9)struct rppx1_ccor_params(9)struct rppx1_lsc_params(9)enum rppx1_ga_seg_mode(9)struct rppx1_ga_params(9)RPPX1_PARAMS_MAX_SIZE(9)enum rppx1_stats_block_type(9)struct rppx1_wbmeas_stats(9)struct rppx1_exm_stats(9)struct rppx1_hist_stats(9)RPPX1_STATS_MAX_SIZE(9)
and that's the page!! π
this one lives at ./include/uapi/linux/media/dre... and it's stamped October 2026 β so go off, read the headers, slay your de-gamma curves, and remember: match that bit-depth bestie, iykyk πβ¨ππ«Ά
π¦ 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