STRUCT DPU_HW_CTL_OPS(9)
π struct dpu_hw_ctl_ops(9) π
πΈ NAME πΈ
okay bestie, this is the Kernel API Manual page for struct dpu_hw_ctl_ops β literally the interface to the wb Hw driver functions. π
Assumption is these functions will be called after clocks are enabled. no cap, clocks first, bestie. β¨
β¨ SYNOPSIS β¨
struct dpu_hw_ctl_ops {
void (*trigger_start)(struct dpu_hw_ctl *ctx);
bool (*is_started)(struct dpu_hw_ctl *ctx);
void (*trigger_pending)(struct dpu_hw_ctl *ctx);
void (*clear_pending_flush)(struct dpu_hw_ctl *ctx);
u32 (*get_pending_flush)(struct dpu_hw_ctl *ctx);
void (*update_pending_flush)(struct dpu_hw_ctl *ctx, u32 flushbits);
void (*update_pending_flush_wb)(struct dpu_hw_ctl *ctx, enum dpu_wb
blk);
void (*update_pending_flush_cwb)(struct dpu_hw_ctl *ctx, enum
dpu_cwb blk);
void (*update_pending_flush_intf)(struct dpu_hw_ctl *ctx, enum
dpu_intf blk);
void (*update_pending_flush_periph)(struct dpu_hw_ctl *ctx, enum
dpu_intf blk);
void (*update_pending_flush_merge_3d)(struct dpu_hw_ctl *ctx, enum
dpu_merge_3d blk);
void (*update_pending_flush_sspp)(struct dpu_hw_ctl *ctx, enum
dpu_sspp blk);
void (*update_pending_flush_mixer)(struct dpu_hw_ctl *ctx, enum
dpu_lm blk);
void (*update_pending_flush_dspp)(struct dpu_hw_ctl *ctx, enum
dpu_dspp blk, u32 dspp_sub_blk);
void (*update_pending_flush_dsc)(struct dpu_hw_ctl *ctx, enum
dpu_dsc blk);
void (*update_pending_flush_cdm)(struct dpu_hw_ctl *ctx, enum
dpu_cdm cdm_num);
void (*trigger_flush)(struct dpu_hw_ctl *ctx);
u32 (*get_flush_register)(struct dpu_hw_ctl *ctx);
void (*setup_intf_cfg)(struct dpu_hw_ctl *ctx, struct
dpu_hw_intf_cfg *cfg);
void (*reset_intf_cfg)(struct dpu_hw_ctl *ctx, struct
dpu_hw_intf_cfg *cfg);
int (*reset)(struct dpu_hw_ctl *c);
int (*wait_reset_status)(struct dpu_hw_ctl *ctx);
void (*clear_all_blendstages)(struct dpu_hw_ctl *ctx);
void (*setup_blendstage)(struct dpu_hw_ctl *ctx, enum dpu_lm lm,
struct dpu_hw_stage_cfg *cfg);
void (*set_active_fetch_pipes)(struct dpu_hw_ctl *ctx, unsigned long
*fetch_active);
void (*set_active_pipes)(struct dpu_hw_ctl *ctx, unsigned long
*active_pipes);
void (*set_active_lms)(struct dpu_hw_ctl *ctx, unsigned long
*active_lms);
};
π Members π
okay bestie, member tour time β all of them, no skips, no βweβll come back to that later.β π
π« trigger_start
kickoff hw operation for Sw controlled interfaces β DSI cmd mode and WB interface are SW controlled.
ctx: ctl path ctx pointer.
π« is_started
check if the ctl is started.
ctx: ctl path ctx pointer.- Return:
trueif started,falseif stopped.
π« trigger_pending
kickoff prepare is in progress hw operation for sw controlled interfaces: DSI cmd mode and WB interface are SW controlled.
ctx: ctl path ctx pointer.
π« clear_pending_flush
Clear the value of the cached pending_flush_mask. No effect on hardware. Required to be implemented. like, literally required, bestie π
ctx: ctl path ctx pointer.
π« get_pending_flush
Query the value of the cached pending_flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.
π« update_pending_flush
OR in the given flushbits to the cached pending_flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.flushbits: module flushmask.
π« update_pending_flush_wb
OR in the given flushbits to the cached pending_(wb_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: writeback block index.
π« update_pending_flush_cwb
OR in the given flushbits to the cached pending_(cwb_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: concurrent writeback block index.
π« update_pending_flush_intf
OR in the given flushbits to the cached pending_(intf_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: interface block index.
π« update_pending_flush_periph
OR in the given flushbits to the cached pending_(periph_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: interface block index.
π« update_pending_flush_merge_3d
OR in the given flushbits to the cached pending_(merge_3d_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: interface block index.
π« update_pending_flush_sspp
OR in the given flushbits to the cached pending_flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: SSPP block index.
π« update_pending_flush_mixer
OR in the given flushbits to the cached pending_flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: LM block index.
π« update_pending_flush_dspp
OR in the given flushbits to the cached pending_flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: DSPP block index.dspp_sub_blk: DSPP sub-block index.
π« update_pending_flush_dsc
OR in the given flushbits to the cached pending_(dsc_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.blk: interface block index.
π« update_pending_flush_cdm
OR in the given flushbits to the cached pending_(cdm_)flush_mask. No effect on hardware.
ctx: ctl path ctx pointer.cdm_num: idx of cdm to be flushed.
π« trigger_flush
Write the value of the pending_flush_mask to hardware.
ctx: ctl path ctx pointer.
π« get_flush_register
Read the value of the flush register.
ctx: ctl path ctx pointer.- Return: value of the ctl flush register.
π« setup_intf_cfg
Setup ctl_path interface config. The parameter note is written as ctx cfg: interface config structure pointer. yes bestie, thatβs exactly the note π
π« reset_intf_cfg
reset ctl_path interface config.
ctx: ctl path ctx pointer.cfg: interface config structure pointer.
π« reset
reset function for this ctl type.
π« wait_reset_status
checks ctl reset status.
ctx: ctl path ctx pointer.
This function checks the ctl reset status bit. If the reset bit is set, it keeps polling the status till the hw reset is complete. Returns: 0 on success or -error if reset incomplete within interval.
π« clear_all_blendstages
Set all blend stages to disabled.
ctx: ctl path ctx pointer.
π« setup_blendstage
Configure layer mixer to pipe configuration.
ctx: ctl path ctx pointer.lm: layer mixer enumeration.cfg: blend stage configuration.
π« set_active_fetch_pipes
Set active pipes attached to this CTL.
ctx: ctl path ctx pointer.active_pipes: bitmap ofenum dpu_sspp.
π« set_active_pipes
Set active pipes attached to this CTL.
ctx: ctl path ctx pointer.active_pipes: bitmap ofenum dpu_sspp.
π« set_active_lms
Set active layer mixers attached to this CTL.
ctx: ctl path ctx pointer.active_lms: bitmap ofenum dpu_lm.
π SEE ALSO π
Kernel file ./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h:
enum dpu_ctl_mode_sel(9)struct dpu_hw_stage_cfg(9)struct dpu_hw_intf_cfg(9)struct dpu_hw_ctl(9)to_dpu_hw_ctl(9)
mwah π bestie, thatβs the whole page β source vibe from ./drivers/gpu/drm/msm/disp/dpu1, dated October 2026, all about struct dpu_hw_ctl_ops(9). π«Άβ¨
π¦ 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