aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 1ace9c11a3ed..738a4294d820 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -754,12 +754,6 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
754 ret = -EINVAL; 754 ret = -EINVAL;
755 goto fail; 755 goto fail;
756 } 756 }
757 DRM_DEBUG_KMS("Setting connector DPMS state to on\n");
758 for (i = 0; i < set->num_connectors; i++) {
759 DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,
760 drm_get_connector_name(set->connectors[i]));
761 set->connectors[i]->funcs->dpms(set->connectors[i], DRM_MODE_DPMS_ON);
762 }
763 } 757 }
764 drm_helper_disable_unused_functions(dev); 758 drm_helper_disable_unused_functions(dev);
765 } else if (fb_changed) { 759 } else if (fb_changed) {
@@ -777,6 +771,22 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
777 } 771 }
778 } 772 }
779 773
774 /*
775 * crtc set_config helpers implicit set the crtc and all connected
776 * encoders to DPMS on for a full mode set. But for just an fb update it
777 * doesn't do that. To not confuse userspace, do an explicit DPMS_ON
778 * unconditionally. This will also ensure driver internal dpms state is
779 * consistent again.
780 */
781 if (set->crtc->enabled) {
782 DRM_DEBUG_KMS("Setting connector DPMS state to on\n");
783 for (i = 0; i < set->num_connectors; i++) {
784 DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,
785 drm_get_connector_name(set->connectors[i]));
786 set->connectors[i]->funcs->dpms(set->connectors[i], DRM_MODE_DPMS_ON);
787 }
788 }
789
780 kfree(save_connectors); 790 kfree(save_connectors);
781 kfree(save_encoders); 791 kfree(save_encoders);
782 kfree(save_crtcs); 792 kfree(save_crtcs);