From: Vijendar Mukunda <vijendar.muku...@amd.com>

Power Gating is disabled in Stoney platform.

Signed-off-by: Vijendar Mukunda <vijendar.muku...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---

v2: added missing changes required for power gating and
    removed local variable.

drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 51 ++++++++++++++++++---------------
 1 file changed, 28 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index 9c0bd6c..ebca223 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -285,19 +285,20 @@ static int acp_hw_init(void *handle)
                return 0;
        else if (r)
                return r;
+       if (adev->asic_type != CHIP_STONEY) {
+               adev->acp.acp_genpd = kzalloc(sizeof(struct acp_pm_domain), 
GFP_KERNEL);
+               if (adev->acp.acp_genpd == NULL)
+                       return -ENOMEM;
 
-       adev->acp.acp_genpd = kzalloc(sizeof(struct acp_pm_domain), GFP_KERNEL);
-       if (adev->acp.acp_genpd == NULL)
-               return -ENOMEM;
-
-       adev->acp.acp_genpd->gpd.name = "ACP_AUDIO";
-       adev->acp.acp_genpd->gpd.power_off = acp_poweroff;
-       adev->acp.acp_genpd->gpd.power_on = acp_poweron;
+               adev->acp.acp_genpd->gpd.name = "ACP_AUDIO";
+               adev->acp.acp_genpd->gpd.power_off = acp_poweroff;
+               adev->acp.acp_genpd->gpd.power_on = acp_poweron;
 
 
-       adev->acp.acp_genpd->cgs_dev = adev->acp.cgs_device;
+               adev->acp.acp_genpd->cgs_dev = adev->acp.cgs_device;
 
-       pm_genpd_init(&adev->acp.acp_genpd->gpd, NULL, false);
+               pm_genpd_init(&adev->acp.acp_genpd->gpd, NULL, false);
+       }
 
        adev->acp.acp_cell = kzalloc(sizeof(struct mfd_cell) * ACP_DEVS,
                                                        GFP_KERNEL);
@@ -390,12 +391,14 @@ static int acp_hw_init(void *handle)
        if (r)
                return r;
 
-       for (i = 0; i < ACP_DEVS ; i++) {
-               dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
-               r = pm_genpd_add_device(&adev->acp.acp_genpd->gpd, dev);
-               if (r) {
-                       dev_err(dev, "Failed to add dev to genpd\n");
-                       return r;
+       if (adev->asic_type != CHIP_STONEY) {
+               for (i = 0; i < ACP_DEVS ; i++) {
+                       dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
+                       r = pm_genpd_add_device(&adev->acp.acp_genpd->gpd, dev);
+                       if (r) {
+                               dev_err(dev, "Failed to add dev to genpd\n");
+                               return r;
+                       }
                }
        }
 
@@ -415,20 +418,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