Re: [PATCH v2 1/3] drm/i915/ddi: add helper to compute DDI clock frequency
"Nautiyal, Ankit K" <[email protected]>
| Newsgroups | org.freedesktop.lists.intel-gfx,org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <[email protected]> |
On 8/11/2026 11:28 PM, Suraj Kandpal wrote: > Add intel_ddi_link_symbol_clock() to return the DDI clock frequency for > a given port clock: > DP 8b/10b : rate > DP 128b/132b (UHBR) : (10 / 32) * rate > HDMI FRL : (10 / 18) * rate > HDMI TMDS : rate > > The DP case reuses intel_dp_link_symbol_clock(). > This will help in upcoming commits to decide value to be written > in DDI_CLK_VALFREQ. > > Signed-off-by: Suraj Kandpal <[email protected]> Reviewed-by: Ankit Nautiyal <[email protected]> > --- > v1 -> v2 > -Update commit message with correct formula (Jani) > > drivers/gpu/drm/i915/display/intel_ddi.c | 11 +++++++++++ > drivers/gpu/drm/i915/display/intel_ddi.h | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index bf5788c5bbd3..dd9064592ec9 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -1529,6 +1529,17 @@ int intel_ddi_level(struct intel_encoder *encoder, > return level; > } > > +int intel_ddi_link_symbol_clock(struct intel_encoder *encoder, int clock) > +{ > + if (intel_encoder_is_dp(encoder)) > + return intel_dp_link_symbol_clock(clock); > + > + if (intel_hdmi_is_frl(clock)) > + return DIV_ROUND_CLOSEST(clock * 10, 18); > + > + return clock; > +} > + > static void > hsw_set_signal_levels(struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state) > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.h b/drivers/gpu/drm/i915/display/intel_ddi.h > index 580ecb09b8b6..239d5a403f91 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.h > +++ b/drivers/gpu/drm/i915/display/intel_ddi.h > @@ -81,6 +81,7 @@ void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder); > int intel_ddi_level(struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > int lane); > +int intel_ddi_link_symbol_clock(struct intel_encoder *encoder, int clock); > void intel_ddi_update_active_dpll(struct intel_atomic_state *state, > struct intel_encoder *encoder, > struct intel_crtc *crtc);