From 9a2ebfbb6e70cd50f79b9841a8dc048a34ea6a85 Mon Sep 17 00:00:00 2001 From: Eric Huang 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 Acked-by: Christian König Signed-off-by: Eric Huang --- 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