diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/2365-drm-amd-powerplay-add-function-set_watermarks_table-.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/2365-drm-amd-powerplay-add-function-set_watermarks_table-.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/2365-drm-amd-powerplay-add-function-set_watermarks_table-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/2365-drm-amd-powerplay-add-function-set_watermarks_table-.patch new file mode 100644 index 00000000..7b298e52 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/2365-drm-amd-powerplay-add-function-set_watermarks_table-.patch @@ -0,0 +1,97 @@ +From 7212ad002c6993c96a9b468472f7a9a1ba2db93a Mon Sep 17 00:00:00 2001 +From: Kevin Wang <kevin1.wang@amd.com> +Date: Thu, 25 Apr 2019 18:02:14 +0800 +Subject: [PATCH 2365/2940] drm/amd/powerplay: add function + set_watermarks_table function for navi10 + +add callback function set_watermarks_table for navi10 asic + +Signed-off-by: Kevin Wang <kevin1.wang@amd.com> +Reviewed-by: Huang Rui <ray.huang@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 61 ++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +index dca16eb4ac4d..eafd6c653162 100644 +--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +@@ -1110,6 +1110,66 @@ static int navi10_notify_smc_dispaly_config(struct smu_context *smu) + return 0; + } + ++static int navi10_set_watermarks_table(struct smu_context *smu, ++ void *watermarks, struct ++ dm_pp_wm_sets_with_clock_ranges_soc15 ++ *clock_ranges) ++{ ++ int i; ++ Watermarks_t *table = watermarks; ++ ++ if (!table || !clock_ranges) ++ return -EINVAL; ++ ++ if (clock_ranges->num_wm_dmif_sets > 4 || ++ clock_ranges->num_wm_mcif_sets > 4) ++ return -EINVAL; ++ ++ for (i = 0; i < clock_ranges->num_wm_dmif_sets; i++) { ++ table->WatermarkRow[1][i].MinClock = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_dmif_clocks_ranges[i].wm_min_dcfclk_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[1][i].MaxClock = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_dmif_clocks_ranges[i].wm_max_dcfclk_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[1][i].MinUclk = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_dmif_clocks_ranges[i].wm_min_mem_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[1][i].MaxUclk = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_dmif_clocks_ranges[i].wm_max_mem_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[1][i].WmSetting = (uint8_t) ++ clock_ranges->wm_dmif_clocks_ranges[i].wm_set_id; ++ } ++ ++ for (i = 0; i < clock_ranges->num_wm_mcif_sets; i++) { ++ table->WatermarkRow[0][i].MinClock = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_mcif_clocks_ranges[i].wm_min_socclk_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[0][i].MaxClock = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_mcif_clocks_ranges[i].wm_max_socclk_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[0][i].MinUclk = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_mcif_clocks_ranges[i].wm_min_mem_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[0][i].MaxUclk = ++ cpu_to_le16((uint16_t) ++ (clock_ranges->wm_mcif_clocks_ranges[i].wm_max_mem_clk_in_khz / ++ 1000)); ++ table->WatermarkRow[0][i].WmSetting = (uint8_t) ++ clock_ranges->wm_mcif_clocks_ranges[i].wm_set_id; ++ } ++ ++ return 0; ++} ++ + static const struct pptable_funcs navi10_ppt_funcs = { + .tables_init = navi10_tables_init, + .alloc_dpm_context = navi10_allocate_dpm_context, +@@ -1143,6 +1203,7 @@ static const struct pptable_funcs navi10_ppt_funcs = { + .get_power_profile_mode = navi10_get_power_profile_mode, + .set_power_profile_mode = navi10_set_power_profile_mode, + .get_profiling_clk_mask = navi10_get_profiling_clk_mask, ++ .set_watermarks_table = navi10_set_watermarks_table, + }; + + void navi10_set_ppt_funcs(struct smu_context *smu) +-- +2.17.1 + |