[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