All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: Mika Kahola <mika.kahola@intel.com>
Cc: intel-gfx@lists.freedesktop.org,
	Thierry Reding <thierry.reding@gmail.com>
Subject: Re: [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training
Date: Tue, 22 Dec 2015 16:53:41 +0100	[thread overview]
Message-ID: <20151222155341.GA1128@wunner.de> (raw)
In-Reply-To: <1450697955-14830-3-git-send-email-mika.kahola@intel.com>

Hi Mika,

On Mon, Dec 21, 2015 at 01:39:15PM +0200, Mika Kahola wrote:
> Check if no AUX transactions are required on DP link training.
> If this bit is set, we can reuse the known good drive current
> and pre-emphasis level from the last "full" link training.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c               |  2 +-
>  drivers/gpu/drm/i915/intel_dp_link_training.c | 19 +++++++++++++++++++
>  drivers/gpu/drm/i915/intel_drv.h              |  1 +
>  3 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 6b36d82..3137187 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3852,7 +3852,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
>  	intel_dp->DP = DP;
>  }
>  
> -static bool
> +bool
>  intel_dp_get_dpcd(struct intel_dp *intel_dp)
>  {
>  	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
> diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c
> index 59d59be..5fb3f97 100644
> --- a/drivers/gpu/drm/i915/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
> @@ -85,6 +85,25 @@ static bool
>  intel_dp_reset_link_train(struct intel_dp *intel_dp,
>  			uint8_t dp_train_pat)
>  {
> +	bool has_dpcd;
> +	bool no_aux_handshake = false;
> +
> +	has_dpcd = intel_dp_get_dpcd(intel_dp);
> +
> +	/*
> +	 * Source device can try to use drive current and pre-emphasis
> +	 * parameters computed by the last "full" link training if the
> +	 * DP_NO_AUX_HANDSHAKE_LINK_TRAINING bit is set to 1.
> +	 */
> +	if (has_dpcd) {
> +		if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) {
> +			no_aux_handshake = (intel_dp->dpcd[DP_MAX_DOWNSPREAD] &
> +					    DP_NO_AUX_HANDSHAKE_LINK_TRAINING);
> +		}
> +	}
> +
> +	intel_dp->train_set_valid &= no_aux_handshake;
> +

If Thierry Reding's patches get merged (posted to dri-devel@ on Dec 14
with <1450097764-30063-1-git-send-email-thierry.reding@gmail.com>),
you could just use

	if (has_dpcd && drm_dp_fast_training_cap(intel_dp->dpcd))
		intel_dp->train_set_valid &= true;

Also, if the patches get merged, the no_aux_handshake attribute in dev_priv
can be dropped (set in intel_edp_init_connector() but never read).

Best regards,

Lukas

>  	DRM_DEBUG_KMS("link training optimization: %s\n",
>  		      intel_dp->train_set_valid ? "true" : "false");
>  
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index d523ebb..c36a70c 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1239,6 +1239,7 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
>  bool intel_dp_compute_config(struct intel_encoder *encoder,
>  			     struct intel_crtc_state *pipe_config);
>  bool intel_dp_is_edp(struct drm_device *dev, enum port port);
> +bool intel_dp_get_dpcd(struct intel_dp *intel_dp);
>  enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
>  				  bool long_hpd);
>  void intel_edp_backlight_on(struct intel_dp *intel_dp);
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-12-22 15:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-21 11:39 [PATCH v5 0/2] drm/i915: Disable link training optimization if DP config has changed Mika Kahola
2015-12-21 11:39 ` [PATCH v5 1/2] drm/i915: Disable fast link training if DP config changes Mika Kahola
2015-12-21 11:39 ` [PATCH v5 2/2] drm/i915: Check DP no aux transaction bit on link training Mika Kahola
2015-12-22 15:53   ` Lukas Wunner [this message]
2015-12-23 10:07     ` Jani Nikula
2015-12-23 12:30     ` Mika Kahola
2016-01-04 17:27     ` Thierry Reding
2016-01-05 11:45       ` Mika Kahola
2015-12-21 12:14 ` ✗ warning: Fi.CI.BAT Patchwork
2015-12-21 12:14 ` Patchwork
2015-12-21 12:20 ` 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=20151222155341.GA1128@wunner.de \
    --to=lukas@wunner.de \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=mika.kahola@intel.com \
    --cc=thierry.reding@gmail.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.