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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.