Commit 6a7a20ed authored by shaoyunl's avatar shaoyunl Committed by Alex Deucher

drm/powerplay: print current clock level when dpm is disabled on vg20

When DPM for the specific clock is disabled, driver should still print out
current clock info for rocm-smi support on vega20
Signed-off-by: default avatarshaoyunl <shaoyun.liu@amd.com>
Reviewed-by: default avatarEric Huang <JinhuiEric.Huang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent fbac3c48
...@@ -2641,9 +2641,8 @@ static int vega20_get_sclks(struct pp_hwmgr *hwmgr, ...@@ -2641,9 +2641,8 @@ static int vega20_get_sclks(struct pp_hwmgr *hwmgr,
struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.gfx_table); struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.gfx_table);
int i, count; int i, count;
PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_GFXCLK].enabled, if (!data->smu_features[GNLD_DPM_GFXCLK].enabled)
"[GetSclks]: gfxclk dpm not enabled!\n", return -1;
return -EPERM);
count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count; count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
clocks->num_levels = count; clocks->num_levels = count;
...@@ -2670,9 +2669,8 @@ static int vega20_get_memclocks(struct pp_hwmgr *hwmgr, ...@@ -2670,9 +2669,8 @@ static int vega20_get_memclocks(struct pp_hwmgr *hwmgr,
struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.mem_table); struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.mem_table);
int i, count; int i, count;
PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_UCLK].enabled, if (!data->smu_features[GNLD_DPM_UCLK].enabled)
"[GetMclks]: uclk dpm not enabled!\n", return -1;
return -EPERM);
count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count; count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
clocks->num_levels = data->mclk_latency_table.count = count; clocks->num_levels = data->mclk_latency_table.count = count;
...@@ -2696,9 +2694,8 @@ static int vega20_get_dcefclocks(struct pp_hwmgr *hwmgr, ...@@ -2696,9 +2694,8 @@ static int vega20_get_dcefclocks(struct pp_hwmgr *hwmgr,
struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.dcef_table); struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.dcef_table);
int i, count; int i, count;
PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_DCEFCLK].enabled, if (!data->smu_features[GNLD_DPM_DCEFCLK].enabled)
"[GetDcfclocks]: dcefclk dpm not enabled!\n", return -1;
return -EPERM);
count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count; count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
clocks->num_levels = count; clocks->num_levels = count;
...@@ -2719,9 +2716,8 @@ static int vega20_get_socclocks(struct pp_hwmgr *hwmgr, ...@@ -2719,9 +2716,8 @@ static int vega20_get_socclocks(struct pp_hwmgr *hwmgr,
struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.soc_table); struct vega20_single_dpm_table *dpm_table = &(data->dpm_table.soc_table);
int i, count; int i, count;
PP_ASSERT_WITH_CODE(data->smu_features[GNLD_DPM_SOCCLK].enabled, if (!data->smu_features[GNLD_DPM_SOCCLK].enabled)
"[GetSocclks]: socclk dpm not enabled!\n", return -1;
return -EPERM);
count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count; count = (dpm_table->count > MAX_NUM_CLOCKS) ? MAX_NUM_CLOCKS : dpm_table->count;
clocks->num_levels = count; clocks->num_levels = count;
...@@ -3137,10 +3133,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr, ...@@ -3137,10 +3133,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
"Attempt to get current gfx clk Failed!", "Attempt to get current gfx clk Failed!",
return ret); return ret);
ret = vega20_get_sclks(hwmgr, &clocks); if (vega20_get_sclks(hwmgr, &clocks)) {
PP_ASSERT_WITH_CODE(!ret, size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
"Attempt to get gfx clk levels Failed!", now / 100);
return ret); break;
}
for (i = 0; i < clocks.num_levels; i++) for (i = 0; i < clocks.num_levels; i++)
size += sprintf(buf + size, "%d: %uMhz %s\n", size += sprintf(buf + size, "%d: %uMhz %s\n",
...@@ -3154,10 +3151,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr, ...@@ -3154,10 +3151,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
"Attempt to get current mclk freq Failed!", "Attempt to get current mclk freq Failed!",
return ret); return ret);
ret = vega20_get_memclocks(hwmgr, &clocks); if (vega20_get_memclocks(hwmgr, &clocks)) {
PP_ASSERT_WITH_CODE(!ret, size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
"Attempt to get memory clk levels Failed!", now / 100);
return ret); break;
}
for (i = 0; i < clocks.num_levels; i++) for (i = 0; i < clocks.num_levels; i++)
size += sprintf(buf + size, "%d: %uMhz %s\n", size += sprintf(buf + size, "%d: %uMhz %s\n",
...@@ -3171,10 +3169,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr, ...@@ -3171,10 +3169,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
"Attempt to get current socclk freq Failed!", "Attempt to get current socclk freq Failed!",
return ret); return ret);
ret = vega20_get_socclocks(hwmgr, &clocks); if (vega20_get_socclocks(hwmgr, &clocks)) {
PP_ASSERT_WITH_CODE(!ret, size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
"Attempt to get soc clk levels Failed!", now / 100);
return ret); break;
}
for (i = 0; i < clocks.num_levels; i++) for (i = 0; i < clocks.num_levels; i++)
size += sprintf(buf + size, "%d: %uMhz %s\n", size += sprintf(buf + size, "%d: %uMhz %s\n",
...@@ -3200,10 +3199,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr, ...@@ -3200,10 +3199,11 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
"Attempt to get current dcefclk freq Failed!", "Attempt to get current dcefclk freq Failed!",
return ret); return ret);
ret = vega20_get_dcefclocks(hwmgr, &clocks); if (vega20_get_dcefclocks(hwmgr, &clocks)) {
PP_ASSERT_WITH_CODE(!ret, size += sprintf(buf + size, "0: %uMhz * (DPM disabled)\n",
"Attempt to get dcefclk levels Failed!", now / 100);
return ret); break;
}
for (i = 0; i < clocks.num_levels; i++) for (i = 0; i < clocks.num_levels; i++)
size += sprintf(buf + size, "%d: %uMhz %s\n", size += sprintf(buf + size, "%d: %uMhz %s\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment