On Fri, 2025-10-17 at 18:05 +0530, Ankit Nautiyal wrote: > Add a helper to compute vblank time needed for transmitting specific > DisplayPort SDPs like PPS, GAMUT_METADATA, and VSC_EXT. Latency is > based on line count per packet type. > > This will be used to ensure adequate guardband when features like > DSC/HDR > are enabled. > > v2: Correct the lines required for PPS SDP. (Jouni) > > Bspec: 70151 > Signed-off-by: Ankit Nautiyal <[email protected]>
Reviewed-by: Jouni Högander <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 36 > +++++++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_dp.h | 2 ++ > 2 files changed, 38 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index 7059d55687cf..acbb4d476543 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -6990,3 +6990,39 @@ int intel_dp_compute_config_late(struct > intel_encoder *encoder, > > return 0; > } > + > +static > +int intel_dp_get_lines_for_sdp(u32 type) > +{ > + switch (type) { > + case DP_SDP_VSC_EXT_VESA: > + case DP_SDP_VSC_EXT_CEA: > + return 10; > + case HDMI_PACKET_TYPE_GAMUT_METADATA: > + return 8; > + case DP_SDP_PPS: > + return 7; > + default: > + break; > + } > + > + return 0; > +} > + > +int intel_dp_sdp_min_guardband(const struct intel_crtc_state > *crtc_state, > + bool assume_all_enabled) > +{ > + int sdp_guardband = 0; > + > + if (assume_all_enabled || > + crtc_state->infoframes.enable & > + > intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA)) > + sdp_guardband = max(sdp_guardband, > + > intel_dp_get_lines_for_sdp(HDMI_PACKET_TYPE_GAMUT_METADATA)); > + > + if (assume_all_enabled || > + crtc_state->dsc.compression_enable) > + sdp_guardband = max(sdp_guardband, > intel_dp_get_lines_for_sdp(DP_SDP_PPS)); > + > + return sdp_guardband; > +} > diff --git a/drivers/gpu/drm/i915/display/intel_dp.h > b/drivers/gpu/drm/i915/display/intel_dp.h > index 281ced3a3b39..7ee5aeb28fe2 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.h > +++ b/drivers/gpu/drm/i915/display/intel_dp.h > @@ -221,5 +221,7 @@ bool intel_dp_in_hdr_mode(const struct > drm_connector_state *conn_state); > int intel_dp_compute_config_late(struct intel_encoder *encoder, > struct intel_crtc_state > *crtc_state, > struct drm_connector_state > *conn_state); > +int intel_dp_sdp_min_guardband(const struct intel_crtc_state > *crtc_state, > + bool assume_all_enabled); > > #endif /* __INTEL_DP_H__ */
