STRUCT DPU_HW_MDP_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME

struct dpu_hw_mdp_ops β€” the interface to the MDP TOP Hw driver functions, bestie. This is the Kernel API Manual page for it, and yes we're getting into it πŸ’–

The one big assumption going in: these functions will be called after clocks are enabled. Like, clocks first, then everything else. No cap. ✨


πŸ¦‹ SYNOPSIS

struct dpu_hw_mdp_ops {
    void (*setup_split_pipe)(struct dpu_hw_mdp *mdp, struct split_pipe_cfg *p);
    void (*setup_traffic_shaper)(struct dpu_hw_mdp *mdp, struct traffic_shaper_cfg *cfg);
    bool (*setup_clk_force_ctrl)(struct dpu_hw_mdp *mdp, enum dpu_clk_ctrl_type clk_ctrl, bool enable);
    void (*get_danger_status)(struct dpu_hw_mdp *mdp, struct dpu_danger_safe_status *status);
    void (*setup_vsync_source)(struct dpu_hw_mdp *mdp, struct dpu_vsync_source_cfg *cfg);
    void (*get_safe_status)(struct dpu_hw_mdp *mdp, struct dpu_danger_safe_status *status);
    void (*dp_phy_intf_sel)(struct dpu_hw_mdp *mdp, enum dpu_dp_phy_sel phys[2]);
    void (*intf_audio_select)(struct dpu_hw_mdp *mdp);
 };

πŸŽ€ Members πŸŽ€

Okay so here's the cast of characters, one function pointer at a time πŸ‘‘

  • setup_split_pipe β€” Programs the pipe control registers. ⚠️ Heads up: these registers are not double buffered, so this function should be called before timing control enable. Params: mdp is the mdp top context driver, cfg is the upper and lower part of pipe configuration.
  • setup_traffic_shaper β€” programs traffic shaper control. Params: mdp is the mdp top context driver, cfg is the traffic shaper configuration. It's giving traffic management realness 🚦
  • setup_clk_force_ctrl β€” set clock force control. Params: mdp is the mdp top context driver, clk_ctrl is the clock to be controlled, enable is force on enable. Return: if the clock is forced-on by this function. πŸ’…
  • get_danger_status β€” get danger status. Params: mdp is the mdp top context driver, status is a Pointer to danger safe status. 😭 danger!
  • setup_vsync_source β€” setup vsync source configuration details. Params: mdp is the mdp top context driver, cfg is the vsync source selection configuration. πŸ¦‹
  • get_safe_status β€” get safe status. Params: mdp is the mdp top context driver, status is a Pointer to danger safe status. yes it takes the same pointer type as get_danger_status, we love consistency πŸ’–
  • dp_phy_intf_sel β€” configure intf to phy mapping. Params: mdp is the mdp top context driver, phys is the list of phys the DP interfaces should be connected to. And listen β€” 0 disables the INTF. Noted. πŸ“
  • intf_audio_select β€” select the external interface for audio. Param: mdp is the mdp top context driver. that's it, that's the whole function 🎧

🌸 SEE ALSO 🌸

Kernel file ./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h plus these iconic little structs, go read them too: struct traffic_shaper_cfg(9), struct split_pipe_cfg(9), struct dpu_danger_safe_status(9), struct dpu_vsync_source_cfg(9) 🫢


Okay that's the whole page bestie, periodt ✨ This was the Kernel API Manual, and it lives over in ./drivers/gpu/drm/msm/disp/dpu1 β€” dated October 2026, so yes, from the future, main character energy fr fr πŸ‘‘πŸ’œ

πŸ“¦ where this page comes from