aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch118
1 files changed, 118 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch
new file mode 100644
index 00000000..11008598
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0557-drm-amd-powerplay-correct-the-clocks-for-DAL-to-be-K.patch
@@ -0,0 +1,118 @@
+From 2ec87d80ff624d17ef34d19654bf0e0e5c3639d8 Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Tue, 23 Oct 2018 14:31:38 +0800
+Subject: [PATCH 0557/2940] drm/amd/powerplay: correct the clocks for DAL to be
+ Khz unit
+
+Currently the clocks reported are in 10Khz unit. Correct them
+as Khz unit as DAL wanted.
+
+Change-Id: I91e9f4b460efbdc0ba223901b6c40e576523686d
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Feifei Xu<Feifei.Xu@amd.com>
+Reviewed-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ .../drm/amd/powerplay/hwmgr/vega20_hwmgr.c | 21 +++++++++----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+index b4dbbb7c334c..810c60969496 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+@@ -2012,7 +2012,6 @@ int vega20_display_clock_voltage_request(struct pp_hwmgr *hwmgr,
+ if (data->smu_features[GNLD_DPM_DCEFCLK].enabled) {
+ switch (clk_type) {
+ case amd_pp_dcef_clock:
+- clk_freq = clock_req->clock_freq_in_khz / 100;
+ clk_select = PPCLK_DCEFCLK;
+ break;
+ case amd_pp_disp_clock:
+@@ -2063,7 +2062,7 @@ static int vega20_notify_smc_display_config_after_ps_adjustment(
+
+ if (data->smu_features[GNLD_DPM_DCEFCLK].supported) {
+ clock_req.clock_type = amd_pp_dcef_clock;
+- clock_req.clock_freq_in_khz = min_clocks.dcefClock;
++ clock_req.clock_freq_in_khz = min_clocks.dcefClock * 10;
+ if (!vega20_display_clock_voltage_request(hwmgr, &clock_req)) {
+ if (data->smu_features[GNLD_DS_DCEFCLK].supported)
+ PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc_with_parameter(
+@@ -2353,7 +2352,7 @@ static int vega20_get_sclks(struct pp_hwmgr *hwmgr,
+
+ for (i = 0; i < count; i++) {
+ clocks->data[i].clocks_in_khz =
+- dpm_table->dpm_levels[i].value * 100;
++ dpm_table->dpm_levels[i].value * 1000;
+ clocks->data[i].latency_in_us = 0;
+ }
+
+@@ -2383,7 +2382,7 @@ static int vega20_get_memclocks(struct pp_hwmgr *hwmgr,
+ for (i = 0; i < count; i++) {
+ clocks->data[i].clocks_in_khz =
+ data->mclk_latency_table.entries[i].frequency =
+- dpm_table->dpm_levels[i].value * 100;
++ dpm_table->dpm_levels[i].value * 1000;
+ clocks->data[i].latency_in_us =
+ data->mclk_latency_table.entries[i].latency =
+ vega20_get_mem_latency(hwmgr, dpm_table->dpm_levels[i].value);
+@@ -2408,7 +2407,7 @@ static int vega20_get_dcefclocks(struct pp_hwmgr *hwmgr,
+
+ for (i = 0; i < count; i++) {
+ clocks->data[i].clocks_in_khz =
+- dpm_table->dpm_levels[i].value * 100;
++ dpm_table->dpm_levels[i].value * 1000;
+ clocks->data[i].latency_in_us = 0;
+ }
+
+@@ -2431,7 +2430,7 @@ static int vega20_get_socclocks(struct pp_hwmgr *hwmgr,
+
+ for (i = 0; i < count; i++) {
+ clocks->data[i].clocks_in_khz =
+- dpm_table->dpm_levels[i].value * 100;
++ dpm_table->dpm_levels[i].value * 1000;
+ clocks->data[i].latency_in_us = 0;
+ }
+
+@@ -2582,11 +2581,11 @@ static int vega20_odn_edit_dpm_table(struct pp_hwmgr *hwmgr,
+ return -EINVAL;
+ }
+
+- if (input_clk < clocks.data[0].clocks_in_khz / 100 ||
++ if (input_clk < clocks.data[0].clocks_in_khz / 1000 ||
+ input_clk > od8_settings[OD8_SETTING_UCLK_FMAX].max_value) {
+ pr_info("clock freq %d is not within allowed range [%d - %d]\n",
+ input_clk,
+- clocks.data[0].clocks_in_khz / 100,
++ clocks.data[0].clocks_in_khz / 1000,
+ od8_settings[OD8_SETTING_UCLK_FMAX].max_value);
+ return -EINVAL;
+ }
+@@ -2738,7 +2737,7 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+- i, clocks.data[i].clocks_in_khz / 100,
++ i, clocks.data[i].clocks_in_khz / 1000,
+ (clocks.data[i].clocks_in_khz == now) ? "*" : "");
+ break;
+
+@@ -2755,7 +2754,7 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+
+ for (i = 0; i < clocks.num_levels; i++)
+ size += sprintf(buf + size, "%d: %uMhz %s\n",
+- i, clocks.data[i].clocks_in_khz / 100,
++ i, clocks.data[i].clocks_in_khz / 1000,
+ (clocks.data[i].clocks_in_khz == now) ? "*" : "");
+ break;
+
+@@ -2820,7 +2819,7 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
+ return ret);
+
+ size += sprintf(buf + size, "MCLK: %7uMhz %10uMhz\n",
+- clocks.data[0].clocks_in_khz / 100,
++ clocks.data[0].clocks_in_khz / 1000,
+ od8_settings[OD8_SETTING_UCLK_FMAX].max_value);
+ }
+
+--
+2.17.1
+