Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71ba9000 authored by Adam Jackson's avatar Adam Jackson Committed by Keith Packard
Browse files

drm/i915/dp: Retry DPCD fetch on G4X too

parent ac66ae83
Loading
Loading
Loading
Loading
+15 −18
Original line number Diff line number Diff line
@@ -1595,11 +1595,23 @@ intel_dp_check_link_status(struct intel_dp *intel_dp)
	}
}

static enum drm_connector_status
i915_dp_detect_common(struct intel_dp *intel_dp)
{
	enum drm_connector_status status = connector_status_disconnected;

	if (intel_dp_aux_native_read_retry(intel_dp, 0x000, intel_dp->dpcd,
					   sizeof (intel_dp->dpcd)) &&
	    (intel_dp->dpcd[DP_DPCD_REV] != 0))
		status = connector_status_connected;

	return status;
}

static enum drm_connector_status
ironlake_dp_detect(struct intel_dp *intel_dp)
{
	enum drm_connector_status status;
	bool ret;

	/* Can't disconnect eDP, but you can close the lid... */
	if (is_edp(intel_dp)) {
@@ -1609,13 +1621,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
		return status;
	}

	status = connector_status_disconnected;
	ret = intel_dp_aux_native_read_retry(intel_dp,
					     0x000, intel_dp->dpcd,
					     sizeof (intel_dp->dpcd));
	if (ret && intel_dp->dpcd[DP_DPCD_REV] != 0)
		status = connector_status_connected;
	return status;
	return i915_dp_detect_common(intel_dp);
}

static enum drm_connector_status
@@ -1623,7 +1629,6 @@ g4x_dp_detect(struct intel_dp *intel_dp)
{
	struct drm_device *dev = intel_dp->base.base.dev;
	struct drm_i915_private *dev_priv = dev->dev_private;
	enum drm_connector_status status;
	uint32_t temp, bit;

	switch (intel_dp->output_reg) {
@@ -1645,15 +1650,7 @@ g4x_dp_detect(struct intel_dp *intel_dp)
	if ((temp & bit) == 0)
		return connector_status_disconnected;

	status = connector_status_disconnected;
	if (intel_dp_aux_native_read(intel_dp, 0x000, intel_dp->dpcd,
				     sizeof (intel_dp->dpcd)) == sizeof (intel_dp->dpcd))
	{
		if (intel_dp->dpcd[DP_DPCD_REV] != 0)
			status = connector_status_connected;
	}

	return status;
	return i915_dp_detect_common(intel_dp);
}

/**