All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shankar, Uma" <uma.shankar@intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH v2 01/12] drm/i915/dp: Extract intel_dp_tmds_clock_valid()
Date: Fri, 1 Apr 2022 06:19:38 +0000	[thread overview]
Message-ID: <f019762e65884dd385c34349c98a4b87@intel.com> (raw)
In-Reply-To: <20220322120015.28074-2-ville.syrjala@linux.intel.com>



> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Ville Syrjala
> Sent: Tuesday, March 22, 2022 5:30 PM
> To: intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH v2 01/12] drm/i915/dp: Extract
> intel_dp_tmds_clock_valid()
> 
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> We're currently duplicating the DFP min/max TMDS clock checks in .mode_valid()
> and .compute_config(). Extract a helper suitable for both use cases.

Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 59 +++++++++++--------------
>  1 file changed, 26 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 9e19165fd175..e874d2f78088 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -856,6 +856,25 @@ static bool intel_dp_hdisplay_bad(struct drm_i915_private
> *dev_priv,
>  	return hdisplay == 4096 && !HAS_DDI(dev_priv);  }
> 
> +static enum drm_mode_status
> +intel_dp_tmds_clock_valid(struct intel_dp *intel_dp,
> +			  int clock, int bpc, bool ycbcr420_output) {
> +	int tmds_clock;
> +
> +	tmds_clock = intel_hdmi_tmds_clock(clock, bpc, ycbcr420_output);
> +
> +	if (intel_dp->dfp.min_tmds_clock &&
> +	    tmds_clock < intel_dp->dfp.min_tmds_clock)
> +		return MODE_CLOCK_LOW;
> +
> +	if (intel_dp->dfp.max_tmds_clock &&
> +	    tmds_clock > intel_dp->dfp.max_tmds_clock)
> +		return MODE_CLOCK_HIGH;
> +
> +	return MODE_OK;
> +}
> +
>  static enum drm_mode_status
>  intel_dp_mode_valid_downstream(struct intel_connector *connector,
>  			       const struct drm_display_mode *mode, @@ -863,7
> +882,6 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,  {
>  	struct intel_dp *intel_dp = intel_attached_dp(connector);
>  	const struct drm_display_info *info = &connector->base.display_info;
> -	int tmds_clock;
> 
>  	/* If PCON supports FRL MODE, check FRL bandwidth constraints */
>  	if (intel_dp->dfp.pcon_max_frl_bw) {
> @@ -889,17 +907,8 @@ intel_dp_mode_valid_downstream(struct intel_connector
> *connector,
>  		return MODE_CLOCK_HIGH;
> 
>  	/* Assume 8bpc for the DP++/HDMI/DVI TMDS clock check */
> -	tmds_clock = intel_hdmi_tmds_clock(target_clock, 8,
> -					   drm_mode_is_420_only(info, mode));
> -
> -	if (intel_dp->dfp.min_tmds_clock &&
> -	    tmds_clock < intel_dp->dfp.min_tmds_clock)
> -		return MODE_CLOCK_LOW;
> -	if (intel_dp->dfp.max_tmds_clock &&
> -	    tmds_clock > intel_dp->dfp.max_tmds_clock)
> -		return MODE_CLOCK_HIGH;
> -
> -	return MODE_OK;
> +	return intel_dp_tmds_clock_valid(intel_dp, target_clock, 8,
> +					 drm_mode_is_420_only(info, mode));
>  }
> 
>  static bool intel_dp_need_bigjoiner(struct intel_dp *intel_dp, @@ -1142,32
> +1151,16 @@ static bool intel_dp_hdmi_ycbcr420(struct intel_dp *intel_dp,
>  		 intel_dp->dfp.ycbcr_444_to_420);
>  }
> 
> -static bool intel_dp_hdmi_tmds_clock_valid(struct intel_dp *intel_dp,
> -					   const struct intel_crtc_state *crtc_state,
> int bpc)
> -{
> -	int clock = crtc_state->hw.adjusted_mode.crtc_clock;
> -	int tmds_clock = intel_hdmi_tmds_clock(clock, bpc,
> -					       intel_dp_hdmi_ycbcr420(intel_dp,
> crtc_state));
> -
> -	if (intel_dp->dfp.min_tmds_clock &&
> -	    tmds_clock < intel_dp->dfp.min_tmds_clock)
> -		return false;
> -
> -	if (intel_dp->dfp.max_tmds_clock &&
> -	    tmds_clock > intel_dp->dfp.max_tmds_clock)
> -		return false;
> -
> -	return true;
> -}
> -
>  static bool intel_dp_hdmi_bpc_possible(struct intel_dp *intel_dp,
>  				       const struct intel_crtc_state *crtc_state,
>  				       int bpc)
>  {
> +	bool ycbcr420_output = intel_dp_hdmi_ycbcr420(intel_dp, crtc_state);
> +	int clock = crtc_state->hw.adjusted_mode.crtc_clock;
> 
> -	return intel_hdmi_bpc_possible(crtc_state, bpc, intel_dp->has_hdmi_sink,
> -				       intel_dp_hdmi_ycbcr420(intel_dp, crtc_state))
> &&
> -		intel_dp_hdmi_tmds_clock_valid(intel_dp, crtc_state, bpc);
> +	return intel_hdmi_bpc_possible(crtc_state, bpc,
> +				       intel_dp->has_hdmi_sink, ycbcr420_output) &&
> +		intel_dp_tmds_clock_valid(intel_dp, clock, bpc, ycbcr420_output)
> ==
> +MODE_OK;
>  }
> 
>  static int intel_dp_max_bpp(struct intel_dp *intel_dp,
> --
> 2.34.1


  reply	other threads:[~2022-04-01  6:19 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-22 12:00 [Intel-gfx] [PATCH v2 00/12] drm/i915: Fix up DP DFP 4:2:0 handling more Ville Syrjala
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 01/12] drm/i915/dp: Extract intel_dp_tmds_clock_valid() Ville Syrjala
2022-04-01  6:19   ` Shankar, Uma [this message]
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 02/12] drm/i915/dp: Respect the sink's max TMDS clock when dealing with DP->HDMI DFPs Ville Syrjala
2022-04-01  6:21   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 03/12] drm/i915/dp: Extract intel_dp_has_audio() Ville Syrjala
2022-04-01  6:22   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 04/12] drm/i915/dp: s/intel_dp_hdmi_ycbcr420/intel_dp_is_ycbcr420/ Ville Syrjala
2022-04-01  6:24   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 05/12] drm/i915/dp: Reorder intel_dp_compute_config() a bit Ville Syrjala
2022-04-01  6:26   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 06/12] drm/i915/dp: Pass around intel_connector rather than drm_connector Ville Syrjala
2022-04-01  6:27   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 07/12] drm/i915/dp: Make intel_dp_output_format() usable for "4:2:0 also" modes Ville Syrjala
2022-04-01  6:28   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 08/12] drm/i915/dp: Rework HDMI DFP TMDS clock handling Ville Syrjala
2022-04-01  6:38   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 09/12] drm/i915/dp: Add support for "4:2:0 also" modes for DP Ville Syrjala
2022-04-01  6:40   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 10/12] drm/i915/dp: Duplicate native HDMI TMDS clock limit handling for DP HDMI DFPs Ville Syrjala
2022-04-01  6:45   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 11/12] drm/i915/dp: Fix DFP rgb->ycbcr conversion matrix Ville Syrjala
2022-04-01  6:56   ` Shankar, Uma
2022-03-22 12:00 ` [Intel-gfx] [PATCH v2 12/12] drm/i915/dp: Disable DFP RGB->YCbCr conversion for now Ville Syrjala
2022-04-01  7:00   ` Shankar, Uma
2022-04-05 18:18     ` Ville Syrjälä
2022-03-22 12:41 ` [Intel-gfx] ✗ Fi.CI.DOCS: warning for drm/i915: Fix up DP DFP 4:2:0 handling more (rev2) Patchwork
2022-03-22 13:08 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-03-22 19:34 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f019762e65884dd385c34349c98a4b87@intel.com \
    --to=uma.shankar@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.