diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e8f76be555df..1ef715303cc6 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -15355,6 +15355,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc) | |||
15355 | WARN_ON(drm_atomic_set_mode_for_crtc(crtc->base.state, NULL) < 0); | 15355 | WARN_ON(drm_atomic_set_mode_for_crtc(crtc->base.state, NULL) < 0); |
15356 | crtc->base.state->active = crtc->active; | 15356 | crtc->base.state->active = crtc->active; |
15357 | crtc->base.enabled = crtc->active; | 15357 | crtc->base.enabled = crtc->active; |
15358 | crtc->base.state->connector_mask = 0; | ||
15358 | 15359 | ||
15359 | /* Because we only establish the connector -> encoder -> | 15360 | /* Because we only establish the connector -> encoder -> |
15360 | * crtc links if something is active, this means the | 15361 | * crtc links if something is active, this means the |
@@ -15557,7 +15558,21 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) | |||
15557 | for_each_intel_connector(dev, connector) { | 15558 | for_each_intel_connector(dev, connector) { |
15558 | if (connector->get_hw_state(connector)) { | 15559 | if (connector->get_hw_state(connector)) { |
15559 | connector->base.dpms = DRM_MODE_DPMS_ON; | 15560 | connector->base.dpms = DRM_MODE_DPMS_ON; |
15560 | connector->base.encoder = &connector->encoder->base; | 15561 | |
15562 | encoder = connector->encoder; | ||
15563 | connector->base.encoder = &encoder->base; | ||
15564 | |||
15565 | if (encoder->base.crtc && | ||
15566 | encoder->base.crtc->state->active) { | ||
15567 | /* | ||
15568 | * This has to be done during hardware readout | ||
15569 | * because anything calling .crtc_disable may | ||
15570 | * rely on the connector_mask being accurate. | ||
15571 | */ | ||
15572 | encoder->base.crtc->state->connector_mask |= | ||
15573 | 1 << drm_connector_index(&connector->base); | ||
15574 | } | ||
15575 | |||
15561 | } else { | 15576 | } else { |
15562 | connector->base.dpms = DRM_MODE_DPMS_OFF; | 15577 | connector->base.dpms = DRM_MODE_DPMS_OFF; |
15563 | connector->base.encoder = NULL; | 15578 | connector->base.encoder = NULL; |