[Intel-gfx] [PATCH] drm/i915/vlv: DP_SINK_COUNT is not reliable for valleyview platform.

Chris Wilson chris at chris-wilson.co.uk
Fri Jun 13 08:55:17 CEST 2014


On Fri, Jun 13, 2014 at 02:52:04PM +0800, Quanxian Wang wrote:
> DP connector will be disconnected after chvt to another console
> for 10 minutes or more on valleyview platform VTC1010.
> 
> Signed-off-by: Quanxian Wang <quanxian.wang at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 2688f6d..0d127a5 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -2942,6 +2942,7 @@ intel_dp_check_link_status(struct intel_dp *intel_dp)
>  static enum drm_connector_status
>  intel_dp_detect_dpcd(struct intel_dp *intel_dp)
>  {
> +	struct drm_device *dev = intel_dp_to_dev(intel_dp);
>  	uint8_t *dpcd = intel_dp->dpcd;
>  	uint8_t type;
>  
> @@ -2953,7 +2954,8 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp)
>  		return connector_status_connected;
>  
>  	/* If we're HPD-aware, SINK_COUNT changes dynamically */
> -	if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 &&
> +	if (!IS_VALLEYVIEW(dev) &&
> +	    intel_dp->dpcd[DP_DPCD_REV] >= 0x11 &&
>  	    intel_dp->downstream_ports[0] & DP_DS_PORT_HPD) {

  static bool intel_dp_supports_hpd(struct intel_dp *intel_dp)
  {
    if (IS_VALLEYVIEW(intel_dp_to_dev(intel_dp))
       /* SINK_COUNT is unreliable resulting in premature disconnects */
       return false; 

    if (intel_dp->dpcd[DP_DPCD_REV] < 0x11)
      return false;

    return intel_dp->downstream_ports[0] & DP_DS_PORT_HPD;
  }

would have been a much preferable patch. Please always consider the next
person to read the code and try to figure out the random predicates.

Is the issue transient? Is there a way to keep the hpd but do a
automatic verification?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list