drm/amdgpu: move common pm sysfs code to amdgpu_device.c
authorRex Zhu <Rex.Zhu@amd.com>
Fri, 22 Sep 2017 09:47:27 +0000 (17:47 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 28 Sep 2017 20:03:31 +0000 (16:03 -0400)
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c
drivers/gpu/drm/amd/amdgpu/ci_dpm.c
drivers/gpu/drm/amd/amdgpu/kv_dpm.c
drivers/gpu/drm/amd/amdgpu/si_dpm.c

index fc0c1cde69ae59d13e7d95831d208ff0d9519fe0..284d5c82d92649055313f17f00d7be856c2a5899 100644 (file)
@@ -56,6 +56,7 @@
 #include "amdgpu_vf_error.h"
 
 #include "amdgpu_amdkfd.h"
+#include "amdgpu_pm.h"
 
 MODULE_FIRMWARE("amdgpu/vega10_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/raven_gpu_info.bin");
@@ -2216,6 +2217,10 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 
        amdgpu_fbdev_init(adev);
 
+       r = amdgpu_pm_sysfs_init(adev);
+       if (r)
+               DRM_ERROR("registering pm debugfs failed (%d).\n", r);
+
        r = amdgpu_gem_debugfs_init(adev);
        if (r)
                DRM_ERROR("registering gem debugfs failed (%d).\n", r);
@@ -2312,6 +2317,7 @@ void amdgpu_device_fini(struct amdgpu_device *adev)
        iounmap(adev->rmmio);
        adev->rmmio = NULL;
        amdgpu_doorbell_fini(adev);
+       amdgpu_pm_sysfs_fini(adev);
        amdgpu_debugfs_regs_cleanup(adev);
 }
 
index f6ce52956e6d307a3d379d94ee50d5089e7b7f3e..274886cedb6660c8f99f8360abd813c0cf33260e 100644 (file)
@@ -1317,6 +1317,9 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev)
        if (adev->pm.sysfs_initialized)
                return 0;
 
+       if (adev->pm.dpm_enabled == 0)
+               return 0;
+
        if (adev->powerplay.pp_funcs->get_temperature == NULL)
                return 0;
 
@@ -1417,6 +1420,9 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev)
 
 void amdgpu_pm_sysfs_fini(struct amdgpu_device *adev)
 {
+       if (adev->pm.dpm_enabled == 0)
+               return;
+
        if (adev->pm.int_hwmon_dev)
                hwmon_device_unregister(adev->pm.int_hwmon_dev);
        device_remove_file(adev->dev, &dev_attr_power_dpm_state);
index 2d2f0960b0258c6c439dc6e978c763e843b04058..1ad632388c955d67c93a07f74b85814e6be90f39 100644 (file)
@@ -137,10 +137,8 @@ static int amdgpu_pp_late_init(void *handle)
                ret = adev->powerplay.ip_funcs->late_init(
                                        adev->powerplay.pp_handle);
 
-       if (adev->pp_enabled && adev->pm.dpm_enabled) {
-               amdgpu_pm_sysfs_init(adev);
+       if (adev->pp_enabled && adev->pm.dpm_enabled)
                amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_COMPLETE_INIT, NULL, NULL);
-       }
 
        return ret;
 }
@@ -199,9 +197,6 @@ static int amdgpu_pp_hw_fini(void *handle)
        int ret = 0;
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
 
-       if (adev->pp_enabled && adev->pm.dpm_enabled)
-               amdgpu_pm_sysfs_fini(adev);
-
        if (adev->powerplay.ip_funcs->hw_fini)
                ret = adev->powerplay.ip_funcs->hw_fini(
                                        adev->powerplay.pp_handle);
index 68ce1bdaf2fcff2c3259566b490745993899cce3..68b505c768ad1af3293c75dd8b762ccc13fb7e84 100644 (file)
@@ -6365,7 +6365,6 @@ static int ci_dpm_sw_fini(void *handle)
        flush_work(&adev->pm.dpm.thermal.work);
 
        mutex_lock(&adev->pm.mutex);
-       amdgpu_pm_sysfs_fini(adev);
        ci_dpm_fini(adev);
        mutex_unlock(&adev->pm.mutex);
 
index b57399a462c2e49eb24487ce362fe2ac5e21e3ef..f33d1ffdb20b2dd438ff014de4ce5e509ba0488d 100644 (file)
@@ -2969,16 +2969,10 @@ static int kv_dpm_late_init(void *handle)
 {
        /* powerdown unused blocks for now */
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       int ret;
 
        if (!amdgpu_dpm)
                return 0;
 
-       /* init the sysfs and debugfs files late */
-       ret = amdgpu_pm_sysfs_init(adev);
-       if (ret)
-               return ret;
-
        kv_dpm_powergate_acp(adev, true);
        kv_dpm_powergate_samu(adev, true);
 
@@ -3040,7 +3034,6 @@ static int kv_dpm_sw_fini(void *handle)
        flush_work(&adev->pm.dpm.thermal.work);
 
        mutex_lock(&adev->pm.mutex);
-       amdgpu_pm_sysfs_fini(adev);
        kv_dpm_fini(adev);
        mutex_unlock(&adev->pm.mutex);
 
index 9b8db604627188f32eed1132ce1974b070b890c6..51fd0c9a20a5b7a1b08d7e0d65211a17bb86c8fd 100644 (file)
@@ -7604,11 +7604,6 @@ static int si_dpm_late_init(void *handle)
        if (!amdgpu_dpm)
                return 0;
 
-       /* init the sysfs and debugfs files late */
-       ret = amdgpu_pm_sysfs_init(adev);
-       if (ret)
-               return ret;
-
        ret = si_set_temperature_range(adev);
        if (ret)
                return ret;
@@ -7764,7 +7759,6 @@ static int si_dpm_sw_fini(void *handle)
        flush_work(&adev->pm.dpm.thermal.work);
 
        mutex_lock(&adev->pm.mutex);
-       amdgpu_pm_sysfs_fini(adev);
        si_dpm_fini(adev);
        mutex_unlock(&adev->pm.mutex);