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

Commit 0c33d8d7 authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/i915: rip out dp port enabling cludges^Wchecks



These have been added because dp links are fiddle things and don't
like it when we try to re-train an enabled output (or disable a
disabled output harder). And because the crtc helper code is
ridiculously bad add tracking the modeset state.

But with the new code in place it is simply a bug to disable a disabled
encoder or to enable an enabled encoder again. Hence convert these to
WARNs (and bail out for safety), but flatten all conditionals in the
code itself.

Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 0767935e
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -1333,15 +1333,15 @@ static void intel_enable_dp(struct intel_encoder *encoder)
	struct drm_i915_private *dev_priv = dev->dev_private;
	uint32_t dp_reg = I915_READ(intel_dp->output_reg);

	if (WARN_ON(dp_reg & DP_PORT_EN))
		return;

	ironlake_edp_panel_vdd_on(intel_dp);
	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
	if (!(dp_reg & DP_PORT_EN)) {
	intel_dp_start_link_train(intel_dp);
	ironlake_edp_panel_on(intel_dp);
	ironlake_edp_panel_vdd_off(intel_dp, true);
	intel_dp_complete_link_train(intel_dp);
	} else
		ironlake_edp_panel_vdd_off(intel_dp, false);
	ironlake_edp_backlight_on(intel_dp);
}

@@ -1900,7 +1900,7 @@ intel_dp_link_down(struct intel_dp *intel_dp)
	struct drm_i915_private *dev_priv = dev->dev_private;
	uint32_t DP = intel_dp->DP;

	if ((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)
	if (WARN_ON((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0))
		return;

	DRM_DEBUG_KMS("\n");