aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch')
-rw-r--r--common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch b/common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch
new file mode 100644
index 00000000..eb7aef93
--- /dev/null
+++ b/common/recipes-kernel/linux/files/1023-drm-amd-powerplay-implement-power-down-asic-task-for.patch
@@ -0,0 +1,91 @@
+From 336bf15dc01d8a7c1fdc05fd932d020bb2dc73ec Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Tue, 29 Dec 2015 11:23:16 +0800
+Subject: [PATCH 1023/1050] drm/amd/powerplay: implement power down asic task
+ for CZ
+
+Change-Id: I46a6f320eaab6ce066edb53d7184b88879cd6cc5
+
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 55 ++++++++++++++++++++++++++
+ 1 file changed, 55 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
+index 0b42eaf..3d08545 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
+@@ -925,6 +925,54 @@ static struct phm_master_table_header cz_setup_asic_master = {
+ cz_setup_asic_list
+ };
+
++static int cz_tf_power_up_display_clock_sys_pll(struct pp_hwmgr *hwmgr,
++ void *input, void *output,
++ void *storage, int result)
++{
++ struct cz_hwmgr *hw_data = (struct cz_hwmgr *)(hwmgr->backend);
++ hw_data->disp_clk_bypass_pending = false;
++ hw_data->disp_clk_bypass = false;
++
++ return 0;
++}
++
++static int cz_tf_clear_nb_dpm_flag(struct pp_hwmgr *hwmgr,
++ void *input, void *output,
++ void *storage, int result)
++{
++ struct cz_hwmgr *hw_data = (struct cz_hwmgr *)(hwmgr->backend);
++ hw_data->is_nb_dpm_enabled = false;
++
++ return 0;
++}
++
++static int cz_tf_reset_cc6_data(struct pp_hwmgr *hwmgr,
++ void *input, void *output,
++ void *storage, int result)
++{
++ struct cz_hwmgr *hw_data = (struct cz_hwmgr *)(hwmgr->backend);
++
++ hw_data->cc6_settings.cc6_setting_changed = false;
++ hw_data->cc6_settings.cpu_pstate_separation_time = 0;
++ hw_data->cc6_settings.cpu_cc6_disable = false;
++ hw_data->cc6_settings.cpu_pstate_disable = false;
++
++ return 0;
++}
++
++static struct phm_master_table_item cz_power_down_asic_list[] = {
++ {NULL, cz_tf_power_up_display_clock_sys_pll},
++ {NULL, cz_tf_clear_nb_dpm_flag},
++ {NULL, cz_tf_reset_cc6_data},
++ {NULL, NULL}
++};
++
++static struct phm_master_table_header cz_power_down_asic_master = {
++ 0,
++ PHM_MasterTableFlag_None,
++ cz_power_down_asic_list
++};
++
+ static int cz_tf_program_voting_clients(struct pp_hwmgr *hwmgr, void *input,
+ void *output, void *storage, int result)
+ {
+@@ -1130,6 +1178,13 @@ static int cz_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
+ return result;
+ }
+
++ result = phm_construct_table(hwmgr, &cz_power_down_asic_master,
++ &(hwmgr->power_down_asic));
++ if (result != 0) {
++ printk(KERN_ERR "[ powerplay ] Fail to construct power down ASIC\n");
++ return result;
++ }
++
+ result = phm_construct_table(hwmgr, &cz_disable_dpm_master,
+ &(hwmgr->disable_dynamic_state_management));
+ if (result != 0) {
+--
+1.9.1
+