STRUCT DPU_HW_PINGPONG_OPS(9)
π struct dpu_hw_pingpong_ops(9) π
okay so this is a page from the Kernel API Manual bestie, and it's literally the whole interface to the pingpong Hw driver functions π«Ά (yes, pingpong, we love a whimsical subsystem). One thing you need to internalize before anything else: the assumption baked into all of this is that these functions will be called after clocks are enabled. That's the vibe check. No clocks, no calls. Periodt.
β¨ NAME β¨
struct dpu_hw_pingpong_ops β the interface to the pingpong Hw driver functions, with the assumption being that these functions will be called after clocks are enabled. πΈ
π¦ SYNOPSIS π¦
struct dpu_hw_pingpong_ops {
int (*enable_tearcheck)(struct dpu_hw_pingpong *pp, struct dpu_hw_tear_check *cfg);
int (*disable_tearcheck)(struct dpu_hw_pingpong *pp);
int (*connect_external_te)(struct dpu_hw_pingpong *pp, bool enable_external_te);
u32 (*get_line_count)(struct dpu_hw_pingpong *pp);
void (*disable_autorefresh)(struct dpu_hw_pingpong *pp, uint32_t encoder_id, u16 vdisplay);
void (*setup_dither)(struct dpu_hw_pingpong *pp, struct dpu_hw_dither_cfg *cfg);
int (*enable_dsc)(struct dpu_hw_pingpong *pp);
void (*disable_dsc)(struct dpu_hw_pingpong *pp);
int (*setup_dsc)(struct dpu_hw_pingpong *pp);
};
likeβ¦ look at her. nine function pointers. main character energy fr fr. π
π Members π
enable_tearcheckβ turns onvysncgeneration (yes that's genuinely how it's spelled in the header, i'm not fixing it π), sets up the init value of the read pointer, and programs the tear check cofiguration (again β their spelling, not mine π«Ά). it's giving "do three things at once and slay".disable_tearcheckβ disables the tear check block. bye bestie πconnect_external_teβ does a read, modify, write to either set or clear listening to external TE. Return:1if TE was originally connected,0if not, or-ERROR. so like, she answers back. iconic. β¨get_line_countβ obtains the current vertical line counter. just tells you the number. lowkey useful, highkey humble. π’disable_autorefreshβ disables autorefresh if enabled. note the little "if" there, she's conditional and she knows it πsetup_ditherβ sets up the dither matix for the pingpong block. (matix. matrix's chaotic cousin. love that for us π)enable_dscβ enable DSC π₯disable_dscβ disable DSC πsetup_dscβ setup DSC β
π SEE ALSO π
- Kernel file
./drivers/gpu/drm/msm/disp/dpu1/dpu_hw_pingpong.h dpu_hw_dither_cfg(9)to_dpu_hw_pingpong(9)
like, go read those too, iykyk π
and that's the whole page bestie, no cap. π§ this little gem lives at ./drivers/gpu/drm/msm/disp/dpu1, dated October 2026, and it's filed under struct dpu_hw_pingpong_ops(9) β go forth and enable those clocks first, mwah πππ
π¦ 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