diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0940-drm-amd-powerplay-add-GFX-per-cu-powergating-support.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0940-drm-amd-powerplay-add-GFX-per-cu-powergating-support.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0940-drm-amd-powerplay-add-GFX-per-cu-powergating-support.patch b/common/recipes-kernel/linux/files/0940-drm-amd-powerplay-add-GFX-per-cu-powergating-support.patch new file mode 100644 index 00000000..b441bb5f --- /dev/null +++ b/common/recipes-kernel/linux/files/0940-drm-amd-powerplay-add-GFX-per-cu-powergating-support.patch @@ -0,0 +1,58 @@ +From 9a2ebfbb6e70cd50f79b9841a8dc048a34ea6a85 Mon Sep 17 00:00:00 2001 +From: Eric Huang <JinHuiEric.Huang@amd.com> +Date: Thu, 11 Feb 2016 15:54:45 -0500 +Subject: [PATCH 0940/1110] drm/amd/powerplay: add GFX per cu powergating + support through SMU/powerplay +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Acked-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 15 ++++++++++++++- + drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 + + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +index 9c742e0..94b7809 100644 +--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c ++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c +@@ -267,7 +267,20 @@ static int pp_set_clockgating_state(void *handle, + static int pp_set_powergating_state(void *handle, + enum amd_powergating_state state) + { +- return 0; ++ struct pp_hwmgr *hwmgr; ++ ++ if (handle == NULL) ++ return -EINVAL; ++ ++ hwmgr = ((struct pp_instance *)handle)->hwmgr; ++ ++ if (hwmgr == NULL || hwmgr->hwmgr_func == NULL || ++ hwmgr->hwmgr_func->enable_per_cu_power_gating == NULL) ++ return -EINVAL; ++ ++ /* Enable/disable GFX per cu powergating through SMU */ ++ return hwmgr->hwmgr_func->enable_per_cu_power_gating(hwmgr, ++ state == AMD_PG_STATE_GATE ? true : false); + } + + static int pp_suspend(void *handle) +diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +index e1ca36c..12285a9 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +@@ -337,6 +337,7 @@ struct pp_hwmgr_func { + int (*set_pp_table)(struct pp_hwmgr *hwmgr, const char *buf, size_t size); + int (*force_clock_level)(struct pp_hwmgr *hwmgr, enum pp_clock_type type, int level); + int (*print_clock_levels)(struct pp_hwmgr *hwmgr, enum pp_clock_type type, char *buf); ++ int (*enable_per_cu_power_gating)(struct pp_hwmgr *hwmgr, bool enable); + }; + + struct pp_table_func { +-- +2.7.4 + |