drm/amd/powerplay: optimize amdgpu_dpm_set_clockgating_by_smu() implementation
authorEvan Quan <evan.quan@amd.com>
Wed, 12 Aug 2020 05:11:24 +0000 (13:11 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Aug 2020 20:22:41 +0000 (16:22 -0400)
Cover the implementation details from outside(of power part).

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Nirmoy Das <nirmoy.das@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/vi.c

index 240c440..5e9baca 100644 (file)
@@ -1232,3 +1232,18 @@ int amdgpu_dpm_enable_mgpu_fan_boost(struct amdgpu_device *adev)
 
        return ret;
 }
+
+int amdgpu_dpm_set_clockgating_by_smu(struct amdgpu_device *adev,
+                                     uint32_t msg_id)
+{
+       void *pp_handle = adev->powerplay.pp_handle;
+       const struct amd_pm_funcs *pp_funcs =
+                       adev->powerplay.pp_funcs;
+       int ret = 0;
+
+       if (pp_funcs && pp_funcs->set_clockgating_by_smu)
+               ret = pp_funcs->set_clockgating_by_smu(pp_handle,
+                                                      msg_id);
+
+       return ret;
+}
index cc16b5a..672b73a 100644 (file)
@@ -341,10 +341,6 @@ enum amdgpu_pcie_gen {
                ((adev)->powerplay.pp_funcs->reset_power_profile_state(\
                        (adev)->powerplay.pp_handle, request))
 
-#define amdgpu_dpm_set_clockgating_by_smu(adev, msg_id) \
-               ((adev)->powerplay.pp_funcs->set_clockgating_by_smu(\
-                       (adev)->powerplay.pp_handle, msg_id))
-
 #define amdgpu_dpm_get_power_profile_mode(adev, buf) \
                ((adev)->powerplay.pp_funcs->get_power_profile_mode(\
                        (adev)->powerplay.pp_handle, buf))
@@ -546,4 +542,7 @@ int amdgpu_dpm_allow_xgmi_power_down(struct amdgpu_device *adev, bool en);
 
 int amdgpu_dpm_enable_mgpu_fan_boost(struct amdgpu_device *adev);
 
+int amdgpu_dpm_set_clockgating_by_smu(struct amdgpu_device *adev,
+                                     uint32_t msg_id);
+
 #endif
index 14fd04b..003982f 100644 (file)
@@ -5880,8 +5880,7 @@ static int gfx_v8_0_tonga_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_CG,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS)) {
@@ -5902,8 +5901,7 @@ static int gfx_v8_0_tonga_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_MG,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        return 0;
@@ -5932,8 +5930,7 @@ static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_CG,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_3D_CGCG | AMD_CG_SUPPORT_GFX_3D_CGLS)) {
@@ -5952,8 +5949,7 @@ static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_3D,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS)) {
@@ -5974,8 +5970,7 @@ static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_MG,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & AMD_CG_SUPPORT_GFX_RLC_LS) {
@@ -5990,8 +5985,7 @@ static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev,
                                PP_BLOCK_GFX_RLC,
                                pp_support_state,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CP_LS) {
@@ -6005,8 +5999,7 @@ static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev,
                        PP_BLOCK_GFX_CP,
                        pp_support_state,
                        pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        return 0;
index f6f2ed0..b4e4a7a 100644 (file)
@@ -1507,8 +1507,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_MC,
                               pp_support_state,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & (AMD_CG_SUPPORT_SDMA_LS | AMD_CG_SUPPORT_SDMA_MGCG)) {
@@ -1526,8 +1525,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_SDMA,
                               pp_support_state,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & (AMD_CG_SUPPORT_HDP_LS | AMD_CG_SUPPORT_HDP_MGCG)) {
@@ -1545,8 +1543,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_HDP,
                               pp_support_state,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
 
@@ -1560,8 +1557,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_BIF,
                               PP_STATE_SUPPORT_LS,
                                pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
        if (adev->cg_flags & AMD_CG_SUPPORT_BIF_MGCG) {
                if (state == AMD_CG_STATE_UNGATE)
@@ -1573,8 +1569,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_BIF,
                               PP_STATE_SUPPORT_CG,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & AMD_CG_SUPPORT_DRM_LS) {
@@ -1588,8 +1583,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_DRM,
                               PP_STATE_SUPPORT_LS,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
 
        if (adev->cg_flags & AMD_CG_SUPPORT_ROM_MGCG) {
@@ -1603,8 +1597,7 @@ static int vi_common_set_clockgating_state_by_smu(void *handle,
                               PP_BLOCK_SYS_ROM,
                               PP_STATE_SUPPORT_CG,
                               pp_state);
-               if (adev->powerplay.pp_funcs->set_clockgating_by_smu)
-                       amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
+               amdgpu_dpm_set_clockgating_by_smu(adev, msg_id);
        }
        return 0;
 }