aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch')
-rw-r--r--common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch200
1 files changed, 0 insertions, 200 deletions
diff --git a/common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch b/common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch
deleted file mode 100644
index 6a22dbb6..00000000
--- a/common/recipes-kernel/linux/linux-amd/0061-drm-radeon-dpm-updates-for-KV-KB.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-From d4d9450db299b02c28304f8a2dcb86f7542143e2 Mon Sep 17 00:00:00 2001
-From: Arindam Nath <arindam.nath@amd.com>
-Date: Sun, 8 Feb 2015 03:26:01 +0530
-Subject: [PATCH 2/9] drm/radeon: dpm updates for KV/KB
-
-Signed-off-by: Leo Liu <leo.liu@amd.com>
-Signed-off-by: Arindam Nath <arindam.nath@amd.com>
----
- drivers/gpu/drm/radeon/kv_dpm.c | 117 +++++++++++++++++++++++++++++++++-------
- 1 file changed, 97 insertions(+), 20 deletions(-)
-
-diff --git a/drivers/gpu/drm/radeon/kv_dpm.c b/drivers/gpu/drm/radeon/kv_dpm.c
-index 2f5979d..a09958a 100644
---- a/drivers/gpu/drm/radeon/kv_dpm.c
-+++ b/drivers/gpu/drm/radeon/kv_dpm.c
-@@ -546,6 +546,52 @@ static int kv_set_divider_value(struct radeon_device *rdev,
- return 0;
- }
-
-+static u32 kv_convert_vid2_to_vid7(struct radeon_device *rdev,
-+ struct sumo_vid_mapping_table *vid_mapping_table,
-+ u32 vid_2bit)
-+{
-+ struct radeon_clock_voltage_dependency_table *vddc_sclk_table =
-+ &rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk;
-+ u32 i;
-+
-+ if (vddc_sclk_table && vddc_sclk_table->count) {
-+ if (vid_2bit < vddc_sclk_table->count)
-+ return vddc_sclk_table->entries[vid_2bit].v;
-+ else
-+ return vddc_sclk_table->entries[vddc_sclk_table->count - 1].v;
-+ } else {
-+ for (i = 0; i < vid_mapping_table->num_entries; i++) {
-+ if (vid_mapping_table->entries[i].vid_2bit == vid_2bit)
-+ return vid_mapping_table->entries[i].vid_7bit;
-+ }
-+ return vid_mapping_table->entries[vid_mapping_table->num_entries - 1].vid_7bit;
-+ }
-+}
-+
-+static u32 kv_convert_vid7_to_vid2(struct radeon_device *rdev,
-+ struct sumo_vid_mapping_table *vid_mapping_table,
-+ u32 vid_7bit)
-+{
-+ struct radeon_clock_voltage_dependency_table *vddc_sclk_table =
-+ &rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk;
-+ u32 i;
-+
-+ if (vddc_sclk_table && vddc_sclk_table->count) {
-+ for (i = 0; i < vddc_sclk_table->count; i++) {
-+ if (vddc_sclk_table->entries[i].v == vid_7bit)
-+ return i;
-+ }
-+ return vddc_sclk_table->count - 1;
-+ } else {
-+ for (i = 0; i < vid_mapping_table->num_entries; i++) {
-+ if (vid_mapping_table->entries[i].vid_7bit == vid_7bit)
-+ return vid_mapping_table->entries[i].vid_2bit;
-+ }
-+
-+ return vid_mapping_table->entries[vid_mapping_table->num_entries - 1].vid_2bit;
-+ }
-+}
-+
- static u16 kv_convert_8bit_index_to_voltage(struct radeon_device *rdev,
- u16 voltage)
- {
-@@ -556,9 +602,9 @@ static u16 kv_convert_2bit_index_to_voltage(struct radeon_device *rdev,
- u32 vid_2bit)
- {
- struct kv_power_info *pi = kv_get_pi(rdev);
-- u32 vid_8bit = sumo_convert_vid2_to_vid7(rdev,
-- &pi->sys_info.vid_mapping_table,
-- vid_2bit);
-+ u32 vid_8bit = kv_convert_vid2_to_vid7(rdev,
-+ &pi->sys_info.vid_mapping_table,
-+ vid_2bit);
-
- return kv_convert_8bit_index_to_voltage(rdev, (u16)vid_8bit);
- }
-@@ -1370,13 +1416,20 @@ static int kv_update_uvd_dpm(struct radeon_device *rdev, bool gate)
- struct radeon_uvd_clock_voltage_dependency_table *table =
- &rdev->pm.dpm.dyn_state.uvd_clock_voltage_dependency_table;
- int ret;
-+ u32 mask;
-
- if (!gate) {
-- if (!pi->caps_uvd_dpm || table->count || pi->caps_stable_p_state)
-+ if (table->count)
- pi->uvd_boot_level = table->count - 1;
- else
- pi->uvd_boot_level = 0;
-
-+ if (!pi->caps_uvd_dpm || pi->caps_stable_p_state) {
-+ mask = 1 << pi->uvd_boot_level;
-+ } else {
-+ mask = 0x1f;
-+ }
-+
- ret = kv_copy_bytes_to_smc(rdev,
- pi->dpm_table_start +
- offsetof(SMU7_Fusion_DpmTable, UvdBootLevel),
-@@ -1385,11 +1438,9 @@ static int kv_update_uvd_dpm(struct radeon_device *rdev, bool gate)
- if (ret)
- return ret;
-
-- if (!pi->caps_uvd_dpm ||
-- pi->caps_stable_p_state)
-- kv_send_msg_to_smc_with_parameter(rdev,
-- PPSMC_MSG_UVDDPM_SetEnabledMask,
-- (1 << pi->uvd_boot_level));
-+ kv_send_msg_to_smc_with_parameter(rdev,
-+ PPSMC_MSG_UVDDPM_SetEnabledMask,
-+ mask);
- }
-
- return kv_enable_uvd_dpm(rdev, !gate);
-@@ -1825,6 +1876,8 @@ int kv_dpm_set_power_state(struct radeon_device *rdev)
- return ret;
- }
- kv_update_sclk_t(rdev);
-+ if (rdev->family == CHIP_MULLINS)
-+ kv_enable_nb_dpm(rdev);
- }
- } else {
- if (pi->enable_dpm) {
-@@ -1919,14 +1972,41 @@ static void kv_construct_max_power_limits_table(struct radeon_device *rdev,
- static void kv_patch_voltage_values(struct radeon_device *rdev)
- {
- int i;
-- struct radeon_uvd_clock_voltage_dependency_table *table =
-+ struct radeon_uvd_clock_voltage_dependency_table *uvd_table =
- &rdev->pm.dpm.dyn_state.uvd_clock_voltage_dependency_table;
-+ struct radeon_vce_clock_voltage_dependency_table *vce_table =
-+ &rdev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table;
-+ struct radeon_clock_voltage_dependency_table *samu_table =
-+ &rdev->pm.dpm.dyn_state.samu_clock_voltage_dependency_table;
-+ struct radeon_clock_voltage_dependency_table *acp_table =
-+ &rdev->pm.dpm.dyn_state.acp_clock_voltage_dependency_table;
-+
-+ if (uvd_table->count) {
-+ for (i = 0; i < uvd_table->count; i++)
-+ uvd_table->entries[i].v =
-+ kv_convert_8bit_index_to_voltage(rdev,
-+ uvd_table->entries[i].v);
-+ }
-+
-+ if (vce_table->count) {
-+ for (i = 0; i < vce_table->count; i++)
-+ vce_table->entries[i].v =
-+ kv_convert_8bit_index_to_voltage(rdev,
-+ vce_table->entries[i].v);
-+ }
-
-- if (table->count) {
-- for (i = 0; i < table->count; i++)
-- table->entries[i].v =
-+ if (samu_table->count) {
-+ for (i = 0; i < samu_table->count; i++)
-+ samu_table->entries[i].v =
- kv_convert_8bit_index_to_voltage(rdev,
-- table->entries[i].v);
-+ samu_table->entries[i].v);
-+ }
-+
-+ if (acp_table->count) {
-+ for (i = 0; i < acp_table->count; i++)
-+ acp_table->entries[i].v =
-+ kv_convert_8bit_index_to_voltage(rdev,
-+ acp_table->entries[i].v);
- }
-
- }
-@@ -2271,9 +2351,9 @@ static void kv_init_graphics_levels(struct radeon_device *rdev)
- break;
-
- kv_set_divider_value(rdev, i, table->entries[i].clk);
-- vid_2bit = sumo_convert_vid7_to_vid2(rdev,
-- &pi->sys_info.vid_mapping_table,
-- table->entries[i].v);
-+ vid_2bit = kv_convert_vid7_to_vid2(rdev,
-+ &pi->sys_info.vid_mapping_table,
-+ table->entries[i].v);
- kv_set_vid(rdev, i, vid_2bit);
- kv_set_at(rdev, i, pi->at[i]);
- kv_dpm_power_level_enabled_for_throttle(rdev, i, true);
-@@ -2649,9 +2729,6 @@ int kv_dpm_init(struct radeon_device *rdev)
-
- pi->sram_end = SMC_RAM_END;
-
-- if (rdev->family == CHIP_KABINI || rdev->family == CHIP_MULLINS)
-- pi->high_voltage_t = 4001;
--
- pi->enable_nb_dpm = true;
-
- pi->caps_power_containment = true;
---
-1.9.1
-