aboutsummaryrefslogtreecommitdiffstats
path: root/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch')
-rw-r--r--meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch142
1 files changed, 0 insertions, 142 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch
deleted file mode 100644
index 6384e1e0..00000000
--- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4819-drm-amd-powerplay-retrieve-all-clock-ranges-on-start.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 80658a01a6d126dfe5ca5b0ef05ee819282aa097 Mon Sep 17 00:00:00 2001
-From: Evan Quan <evan.quan@amd.com>
-Date: Mon, 11 Jun 2018 15:41:44 +0800
-Subject: [PATCH 4819/5725] drm/amd/powerplay: retrieve all clock ranges on
- startup
-
-So that we do not need to use PPSMC_MSG_GetMin/MaxDpmFreq to
-get the clock ranges on runtime. Since that causes some problems.
-
-Signed-off-by: Evan Quan <evan.quan@amd.com>
-Acked-by: Alex Deucher <alexander.deucher@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c | 69 +++++++++++++++++-----
- drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.h | 8 +++
- 2 files changed, 61 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
-index 8b5c581..5c0935a 100644
---- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
-+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c
-@@ -857,6 +857,48 @@ static int vega12_power_control_set_level(struct pp_hwmgr *hwmgr)
- return result;
- }
-
-+static int vega12_get_all_clock_ranges_helper(struct pp_hwmgr *hwmgr,
-+ PPCLK_e clkid, struct vega12_clock_range *clock)
-+{
-+ /* AC Max */
-+ PP_ASSERT_WITH_CODE(
-+ smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetMaxDpmFreq, (clkid << 16)) == 0,
-+ "[GetClockRanges] Failed to get max ac clock from SMC!",
-+ return -EINVAL);
-+ vega12_read_arg_from_smc(hwmgr, &(clock->ACMax));
-+
-+ /* AC Min */
-+ PP_ASSERT_WITH_CODE(
-+ smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetMinDpmFreq, (clkid << 16)) == 0,
-+ "[GetClockRanges] Failed to get min ac clock from SMC!",
-+ return -EINVAL);
-+ vega12_read_arg_from_smc(hwmgr, &(clock->ACMin));
-+
-+ /* DC Max */
-+ PP_ASSERT_WITH_CODE(
-+ smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetDcModeMaxDpmFreq, (clkid << 16)) == 0,
-+ "[GetClockRanges] Failed to get max dc clock from SMC!",
-+ return -EINVAL);
-+ vega12_read_arg_from_smc(hwmgr, &(clock->DCMax));
-+
-+ return 0;
-+}
-+
-+static int vega12_get_all_clock_ranges(struct pp_hwmgr *hwmgr)
-+{
-+ struct vega12_hwmgr *data =
-+ (struct vega12_hwmgr *)(hwmgr->backend);
-+ uint32_t i;
-+
-+ for (i = 0; i < PPCLK_COUNT; i++)
-+ PP_ASSERT_WITH_CODE(!vega12_get_all_clock_ranges_helper(hwmgr,
-+ i, &(data->clk_range[i])),
-+ "Failed to get clk range from SMC!",
-+ return -EINVAL);
-+
-+ return 0;
-+}
-+
- static int vega12_enable_dpm_tasks(struct pp_hwmgr *hwmgr)
- {
- int tmp_result, result = 0;
-@@ -884,6 +926,11 @@ static int vega12_enable_dpm_tasks(struct pp_hwmgr *hwmgr)
- "Failed to power control set level!",
- result = tmp_result);
-
-+ result = vega12_get_all_clock_ranges(hwmgr);
-+ PP_ASSERT_WITH_CODE(!result,
-+ "Failed to get all clock ranges!",
-+ return result);
-+
- result = vega12_odn_initialize_default_settings(hwmgr);
- PP_ASSERT_WITH_CODE(!result,
- "Failed to power control set level!",
-@@ -1473,24 +1520,14 @@ static int vega12_get_clock_ranges(struct pp_hwmgr *hwmgr,
- PPCLK_e clock_select,
- bool max)
- {
-- int result;
-- *clock = 0;
-+ struct vega12_hwmgr *data = (struct vega12_hwmgr *)(hwmgr->backend);
-
-- if (max) {
-- PP_ASSERT_WITH_CODE(
-- smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetMaxDpmFreq, (clock_select << 16)) == 0,
-- "[GetClockRanges] Failed to get max clock from SMC!",
-- return -1);
-- result = vega12_read_arg_from_smc(hwmgr, clock);
-- } else {
-- PP_ASSERT_WITH_CODE(
-- smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetMinDpmFreq, (clock_select << 16)) == 0,
-- "[GetClockRanges] Failed to get min clock from SMC!",
-- return -1);
-- result = vega12_read_arg_from_smc(hwmgr, clock);
-- }
-+ if (max)
-+ *clock = data->clk_range[clock_select].ACMax;
-+ else
-+ *clock = data->clk_range[clock_select].ACMin;
-
-- return result;
-+ return 0;
- }
-
- static int vega12_get_sclks(struct pp_hwmgr *hwmgr,
-diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.h
-index 49b38df..e18c083 100644
---- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.h
-+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.h
-@@ -304,6 +304,12 @@ struct vega12_odn_fan_table {
- bool force_fan_pwm;
- };
-
-+struct vega12_clock_range {
-+ uint32_t ACMax;
-+ uint32_t ACMin;
-+ uint32_t DCMax;
-+};
-+
- struct vega12_hwmgr {
- struct vega12_dpm_table dpm_table;
- struct vega12_dpm_table golden_dpm_table;
-@@ -385,6 +391,8 @@ struct vega12_hwmgr {
- uint32_t smu_version;
- struct smu_features smu_features[GNLD_FEATURES_MAX];
- struct vega12_smc_state_table smc_state_table;
-+
-+ struct vega12_clock_range clk_range[PPCLK_COUNT];
- };
-
- #define VEGA12_DPM2_NEAR_TDP_DEC 10
---
-2.7.4
-