Commit 3640da2faa952a2e9439a254c1ce76033ca0a6dc

Authored by Alex Deucher
Committed by Dave Airlie
1 parent 18ee37a485

drm/radeon/dpm: resume fixes for some systems

Setting the power state prior to restoring the display
hardware leads to blank screens on some systems.  Drop
the power state set from dpm resume.  The power state
will get set as part of the mode set sequence.  Also
add an explicit power state set after mode set resume
to cover PX and headless systems.

bug:
https://bugzilla.kernel.org/show_bug.cgi?id=76761

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>

Showing 3 changed files with 6 additions and 5 deletions Side-by-side Diff

drivers/gpu/drm/radeon/atombios_crtc.c
... ... @@ -270,8 +270,6 @@
270 270 switch (mode) {
271 271 case DRM_MODE_DPMS_ON:
272 272 radeon_crtc->enabled = true;
273   - /* adjust pm to dpms changes BEFORE enabling crtcs */
274   - radeon_pm_compute_clocks(rdev);
275 273 atombios_enable_crtc(crtc, ATOM_ENABLE);
276 274 if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev))
277 275 atombios_enable_crtc_memreq(crtc, ATOM_ENABLE);
278 276  
... ... @@ -289,10 +287,10 @@
289 287 atombios_enable_crtc_memreq(crtc, ATOM_DISABLE);
290 288 atombios_enable_crtc(crtc, ATOM_DISABLE);
291 289 radeon_crtc->enabled = false;
292   - /* adjust pm to dpms changes AFTER disabling crtcs */
293   - radeon_pm_compute_clocks(rdev);
294 290 break;
295 291 }
  292 + /* adjust pm to dpms */
  293 + radeon_pm_compute_clocks(rdev);
296 294 }
297 295  
298 296 static void
drivers/gpu/drm/radeon/radeon_device.c
... ... @@ -1558,6 +1558,10 @@
1558 1558  
1559 1559 drm_kms_helper_poll_enable(dev);
1560 1560  
  1561 + /* set the power state here in case we are a PX system or headless */
  1562 + if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled)
  1563 + radeon_pm_compute_clocks(rdev);
  1564 +
1561 1565 if (fbcon) {
1562 1566 radeon_fbdev_set_suspend(rdev, 0);
1563 1567 console_unlock();
drivers/gpu/drm/radeon/radeon_pm.c
... ... @@ -1104,7 +1104,6 @@
1104 1104 if (ret)
1105 1105 goto dpm_resume_fail;
1106 1106 rdev->pm.dpm_enabled = true;
1107   - radeon_pm_compute_clocks(rdev);
1108 1107 return;
1109 1108  
1110 1109 dpm_resume_fail: