On driver loading, the ASIC is in D0 state. The bundled
audio function should be in the same state also.

Change-Id: I136e196be7633e95883a7f6c33963f7583e9bad1
Signed-off-by: Evan Quan <evan.q...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index c354ffa62483..9d497b4f8e34 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -137,6 +137,7 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, 
unsigned long flags)
        struct drm_device *dev;
        struct pci_dev *parent;
        int r, acpi_status;
+       struct pci_dev *p = NULL;
 
        dev = adev_to_drm(adev);
 
@@ -212,9 +213,22 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, 
unsigned long flags)
                                                DPM_FLAG_MAY_SKIP_RESUME);
                pm_runtime_use_autosuspend(dev->dev);
                pm_runtime_set_autosuspend_delay(dev->dev, 5000);
+
                pm_runtime_allow(dev->dev);
+
                pm_runtime_mark_last_busy(dev->dev);
                pm_runtime_put_autosuspend(dev->dev);
+
+               p = pci_get_domain_bus_and_slot(pci_domain_nr(adev->pdev->bus),
+                               adev->pdev->bus->number, 1);
+               if (p) {
+                       pm_runtime_get_sync(&p->dev);
+
+                       pm_runtime_mark_last_busy(&p->dev);
+                       pm_runtime_put_autosuspend(&p->dev);
+
+                       pci_dev_put(p);
+               }
        }
 
        if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DRV_LOAD))
-- 
2.29.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to