RE: [PATCH 2/5] drm/i915/snps_phy: Use HDMI PLL algorithm for DG2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Ankit
> Nautiyal
> Sent: Tuesday, August 13, 2024 8:50 AM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; intel-xe@xxxxxxxxxxxxxxxxxxxxx
> Cc: jani.nikula@xxxxxxxxxxxxxxx
> Subject: [PATCH 2/5] drm/i915/snps_phy: Use HDMI PLL algorithm for DG2
> 
> Try SNPS_PHY HDMI alogorithm, if there are no pre-computed tables.
> Also get rid of the helper to get rate for HDMI snps phy, as we no longer
> depend only on pre-computed tables.
> 
> v2:
> -Prefer pre-computed tables over computed values from algorithm. (Jani)
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@xxxxxxxxx>

> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c     |  2 -
>  drivers/gpu/drm/i915/display/intel_snps_phy.c | 37 +++++--------------
> drivers/gpu/drm/i915/display/intel_snps_phy.h |  1 -
>  3 files changed, 9 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c
> b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 19498ee455fa..bed54a3588d9 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1887,8 +1887,6 @@ hdmi_port_clock_valid(struct intel_hdmi *hdmi,
>  	 */
>  	if (DISPLAY_VER(dev_priv) >= 14)
>  		return intel_cx0_phy_check_hdmi_link_rate(hdmi, clock);
> -	else if (IS_DG2(dev_priv))
> -		return intel_snps_phy_check_hdmi_link_rate(clock);
> 
>  	return MODE_OK;
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> index e6df1f92def5..e01a17be04bd 100644
> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> @@ -10,6 +10,7 @@
>  #include "intel_ddi_buf_trans.h"
>  #include "intel_de.h"
>  #include "intel_display_types.h"
> +#include "intel_snps_hdmi_pll.h"
>  #include "intel_snps_phy.h"
>  #include "intel_snps_phy_regs.h"
> 
> @@ -1787,24 +1788,9 @@ intel_mpllb_tables_get(struct intel_crtc_state
> *crtc_state,  int intel_mpllb_calc_state(struct intel_crtc_state *crtc_state,
>  			   struct intel_encoder *encoder)
>  {
> -	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>  	const struct intel_mpllb_state * const *tables;
>  	int i;
> 
> -	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
> -		if (intel_snps_phy_check_hdmi_link_rate(crtc_state-
> >port_clock)
> -		    != MODE_OK) {
> -			/*
> -			 * FIXME: Can only support fixed HDMI frequencies
> -			 * until we have a proper algorithm under a valid
> -			 * license.
> -			 */
> -			drm_dbg_kms(&i915->drm, "Can't support HDMI link
> rate %d\n",
> -				    crtc_state->port_clock);
> -			return -EINVAL;
> -		}
> -	}
> -
>  	tables = intel_mpllb_tables_get(crtc_state, encoder);
>  	if (!tables)
>  		return -EINVAL;
> @@ -1816,6 +1802,14 @@ int intel_mpllb_calc_state(struct intel_crtc_state
> *crtc_state,
>  		}
>  	}
> 
> +	/* For HDMI PLLs try SNPS PHY algorithm, if there are no precomputed
> tables */
> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
> +		intel_snps_hdmi_pll_compute_mpllb(&crtc_state-
> >dpll_hw_state.mpllb,
> +						  crtc_state->port_clock);
> +
> +		return 0;
> +	}
> +
>  	return -EINVAL;
>  }
> 
> @@ -1981,19 +1975,6 @@ void intel_mpllb_readout_hw_state(struct
> intel_encoder *encoder,
>  	pll_state->mpllb_div &= ~SNPS_PHY_MPLLB_FORCE_EN;  }
> 
> -int intel_snps_phy_check_hdmi_link_rate(int clock) -{
> -	const struct intel_mpllb_state * const *tables = dg2_hdmi_tables;
> -	int i;
> -
> -	for (i = 0; tables[i]; i++) {
> -		if (clock == tables[i]->clock)
> -			return MODE_OK;
> -	}
> -
> -	return MODE_CLOCK_RANGE;
> -}
> -
>  void intel_mpllb_state_verify(struct intel_atomic_state *state,
>  			      struct intel_crtc *crtc)
>  {
> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.h
> b/drivers/gpu/drm/i915/display/intel_snps_phy.h
> index bc08b92a7cd9..1dd564ed9fa8 100644
> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.h
> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.h
> @@ -30,7 +30,6 @@ void intel_mpllb_readout_hw_state(struct
> intel_encoder *encoder,  int intel_mpllb_calc_port_clock(struct intel_encoder
> *encoder,
>  				const struct intel_mpllb_state *pll_state);
> 
> -int intel_snps_phy_check_hdmi_link_rate(int clock);  void
> intel_snps_phy_set_signal_levels(struct intel_encoder *encoder,
>  				      const struct intel_crtc_state *crtc_state);
> void intel_mpllb_state_verify(struct intel_atomic_state *state,
> --
> 2.45.2





[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux