STRUCT DPU_HW_SSPP_OPS(9)
π struct dpu_hw_sspp_ops(9) β like, the whole vibe
okay so bestie, welcome to struct dpu_hw_sspp_ops(9), straight outta the Kernel API Manual β¨ this is the group chat of function pointers that lets you talk to the SSPP hardware driver, and honestly? she's iconic for it.
πΈ NAME πΈ
struct dpu_hw_sspp_ops β the interface to the SSPP Hw driver functions π«Ά
Two rules before you touch anything, no cap:
- Caller must call the
initfunction to get the pipe context for each pipe. - Assumption (and you know what happens when you assume, bestie) is that these functions will be called after clocks are enabled β‘
β¨ SYNOPSIS β¨
struct dpu_hw_sspp_ops {
void (*setup_format)(struct dpu_sw_pipe *pipe, const struct msm_format *fmt, u32 flags);
void (*setup_rects)(struct dpu_sw_pipe *pipe, struct dpu_sw_pipe_cfg *cfg);
void (*setup_pe)(struct dpu_hw_sspp *ctx, struct dpu_hw_pixel_ext *pe_ext);
void (*setup_sourceaddress)(struct dpu_sw_pipe *ctx, struct dpu_hw_fmt_layout *layout);
void (*setup_csc)(struct dpu_hw_sspp *ctx, const struct dpu_csc_cfg *data);
void (*setup_solidfill)(struct dpu_sw_pipe *pipe, u32 color);
void (*setup_multirect)(struct dpu_sw_pipe *pipe);
void (*setup_sharpening)(struct dpu_hw_sspp *ctx, struct dpu_hw_sharp_cfg *cfg);
void (*setup_qos_lut)(struct dpu_hw_sspp *ctx, struct dpu_hw_qos_cfg *cfg);
void (*setup_qos_ctrl)(struct dpu_hw_sspp *ctx, bool danger_safe_en);
bool (*setup_clk_force_ctrl)(struct dpu_hw_sspp *ctx, bool enable);
void (*setup_histogram)(struct dpu_hw_sspp *ctx, void *cfg);
void (*setup_scaler)(struct dpu_hw_sspp *ctx, struct dpu_hw_scaler3_cfg *scaler3_cfg, const struct msm_format *format);
void (*setup_cdp)(struct dpu_sw_pipe *pipe, const struct msm_format *fmt, bool enable);
};
like, look at her. fourteen pointers. each one a little main character π
π Members π
π setup_format
sets up the pixel format and the cropping rectangle and the flip β a triple threat, honestly
pipe: Pointer to software pipe contextcfg: Pointer to pipe config structureflags: Extra flags for format config
π setup_rects
sets up the pipe ROI rectangles π
pipe: Pointer to software pipe contextcfg: Pointer to pipe config structure
π setup_pe
sets up the pipe pixel extension β¨
ctx: Pointer to pipe contextpe_ext: Pointer to pixel ext settings
π setup_sourceaddress
sets up the pipe source addresses β this is the one that actually tells the hardware where the buffer lives, so she's kind of a big deal π§
pipe: Pointer to software pipe contextlayout: format layout information for programming buffer to hardware
π setup_csc
sets up color space coversion π¨ (yes, that's spelled exactly like that in the original, we stan a typo)
ctx: Pointer to pipe contextdata: Pointer to config structure
π setup_solidfill
enables/disables colorfill π
pipe: Pointer to software pipe contextconst_color: Fill color valueflags: Pipe flags
π setup_multirect
sets up multirect configuration π― (two pipes, one vibe)
pipe: Pointer to software pipe context
π setup_sharpening
sets up sharpening πͺβ¨ crisp edges only
ctx: Pointer to pipe contextcfg: Pointer to config structure
π setup_qos_lut
sets up QoS LUTs π
ctx: Pointer to pipe contextcfg: LUT configuration
π setup_qos_ctrl
sets up QoS control ποΈ
ctx: Pointer to pipe contextdanger_safe_en: flags controlling enabling of danger/safe QoS/LUT
ngl the name danger_safe_en is sending me π but it's literally the flag name, don't touch it.
π setup_clk_force_ctrl
sets up clock force control β° β and heads up bestie, this one actually returns a bool, she's built different
ctx: Pointer to pipe contextenable: enable clock force iftrue
π setup_histogram
sets up histograms π
ctx: Pointer to pipe contextcfg: Pointer to histogram configuration
π setup_scaler
sets up scaler π¦ (scaler3 era, we love an upgrade)
scaler3_cfg: Pointer to scaler configurationformat: pixel format parameters
π setup_cdp
sets up client driven prefetch π iykyk
pipe: Pointer to software pipe contextfmt: format used by the sw pipeenable: whether the CDP should be enabled for this pipe
π₯ SEE ALSO π₯
- Kernel file
./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_sspp.h enum dpu_sspp_multirect_index(9)struct dpu_sw_pipe_cfg(9)struct dpu_hw_pipe_ts_cfg(9)struct dpu_sw_pipe(9)struct dpu_hw_sspp(9)
alright bestie, that's the whole page, you ate that π
this lil drop came from ./drivers/gpu/drm/msm/disp/dpu1, dated October 2026, serving struct dpu_hw_sspp_ops(9) realness. go forth and configure your pipes, and remember: init first, clocks on second, slay always ππ«Ά
π¦ 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