aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch
new file mode 100644
index 00000000..cc7ad7af
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0924-drm-amd-powerplay-Simplify-vega10_patch_voltage_depe.patch
@@ -0,0 +1,116 @@
+From e651a8a6be62a32b79167366e99b24f8822992e6 Mon Sep 17 00:00:00 2001
+From: Tom St Denis <tom.stdenis@amd.com>
+Date: Tue, 5 Sep 2017 12:02:57 -0400
+Subject: [PATCH 0924/4131] drm/amd/powerplay: Simplify
+ vega10_patch_voltage_dependency_tables_with_lookup_table()
+
+Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
+Reviewed-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 75 +++++++---------------
+ 1 file changed, 23 insertions(+), 52 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+index 0f7fbb5..d1d0ec2 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+@@ -591,61 +591,37 @@ static int vega10_patch_clock_voltage_limits_with_vddc_leakage(
+ static int vega10_patch_voltage_dependency_tables_with_lookup_table(
+ struct pp_hwmgr *hwmgr)
+ {
+- uint8_t entry_id;
+- uint8_t voltage_id;
++ uint8_t entry_id, voltage_id;
++ unsigned i;
+ struct phm_ppt_v2_information *table_info =
+ (struct phm_ppt_v2_information *)(hwmgr->pptable);
+- struct phm_ppt_v1_clock_voltage_dependency_table *socclk_table =
+- table_info->vdd_dep_on_socclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *gfxclk_table =
+- table_info->vdd_dep_on_sclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *dcefclk_table =
+- table_info->vdd_dep_on_dcefclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *pixclk_table =
+- table_info->vdd_dep_on_pixclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *dspclk_table =
+- table_info->vdd_dep_on_dispclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *phyclk_table =
+- table_info->vdd_dep_on_phyclk;
+- struct phm_ppt_v1_clock_voltage_dependency_table *mclk_table =
+- table_info->vdd_dep_on_mclk;
+ struct phm_ppt_v1_mm_clock_voltage_dependency_table *mm_table =
+ table_info->mm_dep_table;
++ struct phm_ppt_v1_clock_voltage_dependency_table *mclk_table =
++ table_info->vdd_dep_on_mclk;
+
+- for (entry_id = 0; entry_id < socclk_table->count; entry_id++) {
+- voltage_id = socclk_table->entries[entry_id].vddInd;
+- socclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+- }
+-
+- for (entry_id = 0; entry_id < gfxclk_table->count; entry_id++) {
+- voltage_id = gfxclk_table->entries[entry_id].vddInd;
+- gfxclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+- }
+-
+- for (entry_id = 0; entry_id < dcefclk_table->count; entry_id++) {
+- voltage_id = dcefclk_table->entries[entry_id].vddInd;
+- dcefclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+- }
+-
+- for (entry_id = 0; entry_id < pixclk_table->count; entry_id++) {
+- voltage_id = pixclk_table->entries[entry_id].vddInd;
+- pixclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+- }
++ for (i = 0; i < 6; i++) {
++ struct phm_ppt_v1_clock_voltage_dependency_table *vdt;
++ switch (i) {
++ case 0: vdt = table_info->vdd_dep_on_socclk; break;
++ case 1: vdt = table_info->vdd_dep_on_sclk; break;
++ case 2: vdt = table_info->vdd_dep_on_dcefclk; break;
++ case 3: vdt = table_info->vdd_dep_on_pixclk; break;
++ case 4: vdt = table_info->vdd_dep_on_dispclk; break;
++ case 5: vdt = table_info->vdd_dep_on_phyclk; break;
++ }
+
+- for (entry_id = 0; entry_id < dspclk_table->count; entry_id++) {
+- voltage_id = dspclk_table->entries[entry_id].vddInd;
+- dspclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
++ for (entry_id = 0; entry_id < vdt->count; entry_id++) {
++ voltage_id = vdt->entries[entry_id].vddInd;
++ vdt->entries[entry_id].vddc =
++ table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
++ }
+ }
+
+- for (entry_id = 0; entry_id < phyclk_table->count; entry_id++) {
+- voltage_id = phyclk_table->entries[entry_id].vddInd;
+- phyclk_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
++ for (entry_id = 0; entry_id < mm_table->count; ++entry_id) {
++ voltage_id = mm_table->entries[entry_id].vddcInd;
++ mm_table->entries[entry_id].vddc =
++ table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+ }
+
+ for (entry_id = 0; entry_id < mclk_table->count; ++entry_id) {
+@@ -660,11 +636,6 @@ static int vega10_patch_voltage_dependency_tables_with_lookup_table(
+ table_info->vddmem_lookup_table->entries[voltage_id].us_vdd;
+ }
+
+- for (entry_id = 0; entry_id < mm_table->count; ++entry_id) {
+- voltage_id = mm_table->entries[entry_id].vddcInd;
+- mm_table->entries[entry_id].vddc =
+- table_info->vddc_lookup_table->entries[voltage_id].us_vdd;
+- }
+
+ return 0;
+
+--
+2.7.4
+