Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 18ee37a

Browse files
danvetairlied
authored andcommitted
drm/radeon: Resume fbcon last
So a few people complained that commit 177cf92 Author: Daniel Vetter <[email protected]> Date: Tue Apr 1 22:14:59 2014 +0200 drm/crtc-helpers: fix dpms on logic which was merged into 3.15-rc1, broke resume on radeons. Strangely git bisect lead everyone to commit 25f397a Author: Daniel Vetter <[email protected]> Date: Fri Jul 19 18:57:11 2013 +0200 drm/crtc-helper: explicit DPMS on after modeset which was merged long ago and actually part of 3.14. Digging deeper I've noticed (again) that the call to drm_helper_resume_force_mode in the radeon resume handlers was a no-op previously because everything gets shut down on suspend. radeon does this with explicit calls to drm_helper_connector_dpms with DPMS_OFF. But with 177c we now force the dpms state to ON, so suddenly resume_force_mode actually forced the crtcs back on. This is the intention of the change after all, the problem is that radeon resumes the fbdev console layer _before_ restoring the display, through calling fb_set_suspend. And fbcon does an immediate ->set_par, which in turn causes the same forced mode restore to happen. Two concurrent modeset operations didn't lead to happiness. Fix this by delaying the fbcon resume until the end of the readeon resum functions. v2: Fix up a bit of the spelling fail. References: https://lkml.org/lkml/2014/5/29/1043 References: https://lkml.org/lkml/2014/5/2/388 Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=74751 Tested-by: Ken Moffat <[email protected]> Cc: Alex Deucher <[email protected]> Cc: Ken Moffat <[email protected]> Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
1 parent 1446e04 commit 18ee37a

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

drivers/gpu/drm/radeon/radeon_device.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,11 +1533,6 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
15331533

15341534
radeon_restore_bios_scratch_regs(rdev);
15351535

1536-
if (fbcon) {
1537-
radeon_fbdev_set_suspend(rdev, 0);
1538-
console_unlock();
1539-
}
1540-
15411536
/* init dig PHYs, disp eng pll */
15421537
if (rdev->is_atom_bios) {
15431538
radeon_atom_encoder_init(rdev);
@@ -1562,6 +1557,12 @@ int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
15621557
}
15631558

15641559
drm_kms_helper_poll_enable(dev);
1560+
1561+
if (fbcon) {
1562+
radeon_fbdev_set_suspend(rdev, 0);
1563+
console_unlock();
1564+
}
1565+
15651566
return 0;
15661567
}
15671568

0 commit comments

Comments
 (0)