diff options
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.patch | 116 |
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 + |