aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_display.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 76b01c16a0e8..76b034be2c7c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8540,15 +8540,20 @@ static void intel_set_config_restore_state(struct drm_device *dev,
8540} 8540}
8541 8541
8542static bool 8542static bool
8543is_crtc_connector_off(struct drm_crtc *crtc, struct drm_connector *connectors, 8543is_crtc_connector_off(struct drm_mode_set *set)
8544 int num_connectors)
8545{ 8544{
8546 int i; 8545 int i;
8547 8546
8548 for (i = 0; i < num_connectors; i++) 8547 if (set->num_connectors == 0)
8549 if (connectors[i].encoder && 8548 return false;
8550 connectors[i].encoder->crtc == crtc && 8549
8551 connectors[i].dpms != DRM_MODE_DPMS_ON) 8550 if (WARN_ON(set->connectors == NULL))
8551 return false;
8552
8553 for (i = 0; i < set->num_connectors; i++)
8554 if (set->connectors[i]->encoder &&
8555 set->connectors[i]->encoder->crtc == set->crtc &&
8556 set->connectors[i]->dpms != DRM_MODE_DPMS_ON)
8552 return true; 8557 return true;
8553 8558
8554 return false; 8559 return false;
@@ -8561,10 +8566,8 @@ intel_set_config_compute_mode_changes(struct drm_mode_set *set,
8561 8566
8562 /* We should be able to check here if the fb has the same properties 8567 /* We should be able to check here if the fb has the same properties
8563 * and then just flip_or_move it */ 8568 * and then just flip_or_move it */
8564 if (set->connectors != NULL && 8569 if (is_crtc_connector_off(set)) {
8565 is_crtc_connector_off(set->crtc, *set->connectors, 8570 config->mode_changed = true;
8566 set->num_connectors)) {
8567 config->mode_changed = true;
8568 } else if (set->crtc->fb != set->fb) { 8571 } else if (set->crtc->fb != set->fb) {
8569 /* If we have no fb then treat it as a full mode set */ 8572 /* If we have no fb then treat it as a full mode set */
8570 if (set->crtc->fb == NULL) { 8573 if (set->crtc->fb == NULL) {