aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_crtc_helper.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index acc9c36614df..0ebaa6d79afa 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -405,22 +405,25 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
405 struct drm_framebuffer *old_fb) 405 struct drm_framebuffer *old_fb)
406{ 406{
407 struct drm_device *dev = crtc->dev; 407 struct drm_device *dev = crtc->dev;
408 struct drm_display_mode *adjusted_mode, saved_mode, saved_hwmode; 408 struct drm_display_mode *adjusted_mode, saved_mode;
409 struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; 409 struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
410 struct drm_encoder_helper_funcs *encoder_funcs; 410 struct drm_encoder_helper_funcs *encoder_funcs;
411 int saved_x, saved_y; 411 int saved_x, saved_y;
412 bool saved_enabled;
412 struct drm_encoder *encoder; 413 struct drm_encoder *encoder;
413 bool ret = true; 414 bool ret = true;
414 415
416 saved_enabled = crtc->enabled;
415 crtc->enabled = drm_helper_crtc_in_use(crtc); 417 crtc->enabled = drm_helper_crtc_in_use(crtc);
416 if (!crtc->enabled) 418 if (!crtc->enabled)
417 return true; 419 return true;
418 420
419 adjusted_mode = drm_mode_duplicate(dev, mode); 421 adjusted_mode = drm_mode_duplicate(dev, mode);
420 if (!adjusted_mode) 422 if (!adjusted_mode) {
423 crtc->enabled = saved_enabled;
421 return false; 424 return false;
425 }
422 426
423 saved_hwmode = crtc->hwmode;
424 saved_mode = crtc->mode; 427 saved_mode = crtc->mode;
425 saved_x = crtc->x; 428 saved_x = crtc->x;
426 saved_y = crtc->y; 429 saved_y = crtc->y;
@@ -539,7 +542,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
539done: 542done:
540 drm_mode_destroy(dev, adjusted_mode); 543 drm_mode_destroy(dev, adjusted_mode);
541 if (!ret) { 544 if (!ret) {
542 crtc->hwmode = saved_hwmode; 545 crtc->enabled = saved_enabled;
543 crtc->mode = saved_mode; 546 crtc->mode = saved_mode;
544 crtc->x = saved_x; 547 crtc->x = saved_x;
545 crtc->y = saved_y; 548 crtc->y = saved_y;