The ATPX power control method does this for you.

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
---
 drivers/gpu/drm/radeon/radeon_drv.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_drv.c 
b/drivers/gpu/drm/radeon/radeon_drv.c
index f453450..56d15e6 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -419,9 +419,7 @@ static int radeon_pmops_runtime_suspend(struct device *dev)
        pci_ignore_hotplug(pdev);
        if (radeon_is_atpx_hybrid())
                pci_set_power_state(pdev, PCI_D3cold);
-       else if (radeon_has_atpx_dgpu_power_cntl())
-               pci_set_power_state(pdev, PCI_D3cold);
-       else
+       else if (!radeon_has_atpx_dgpu_power_cntl())
                pci_set_power_state(pdev, PCI_D3hot);
        drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;

@@ -439,7 +437,9 @@ static int radeon_pmops_runtime_resume(struct device *dev)

        drm_dev->switch_power_state = DRM_SWITCH_POWER_CHANGING;

-       pci_set_power_state(pdev, PCI_D0);
+       if (radeon_is_atpx_hybrid() ||
+           !radeon_has_atpx_dgpu_power_cntl())
+               pci_set_power_state(pdev, PCI_D0);
        pci_restore_state(pdev);
        ret = pci_enable_device(pdev);
        if (ret)
-- 
2.5.5

Reply via email to