Stoney does not have powergating, so make the powergating
teardown dependent on whether we have a genpd structure.

Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index 06879d1..091b5e1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -398,20 +398,22 @@ static int acp_hw_fini(void *handle)
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
        /* return early if no ACP */
-       if (!adev->acp.acp_genpd)
+       if (!adev->acp.acp_cell)
                return 0;
 
-       for (i = 0; i < ACP_DEVS ; i++) {
-               dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
-               ret = pm_genpd_remove_device(&adev->acp.acp_genpd->gpd, dev);
-               /* If removal fails, dont giveup and try rest */
-               if (ret)
-                       dev_err(dev, "remove dev from genpd failed\n");
+       if (adev->acp.acp_genpd) {
+               for (i = 0; i < ACP_DEVS ; i++) {
+                       dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
+                       ret = pm_genpd_remove_device(&adev->acp.acp_genpd->gpd, 
dev);
+                       /* If removal fails, dont giveup and try rest */
+                       if (ret)
+                               dev_err(dev, "remove dev from genpd failed\n");
+               }
+               kfree(adev->acp.acp_genpd);
        }
 
        mfd_remove_devices(adev->acp.parent);
        kfree(adev->acp.acp_res);
-       kfree(adev->acp.acp_genpd);
        kfree(adev->acp.acp_cell);
 
        return 0;
-- 
2.5.5

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

Reply via email to