summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
diff options
context:
space:
mode:
authorRex Zhu2017-06-15 08:02:51 +0200
committerAlex Deucher2017-07-14 17:06:15 +0200
commitb37afd41a1f5a7d9dbc4cc6ede62e590a31e2192 (patch)
tree9ebbce035abec3004ae0d3046b37ce2ca03807df /drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
parentdrm/amd/powerplay: fix avfs state update error on polaris. (diff)
downloadkernel-qcow2-linux-b37afd41a1f5a7d9dbc4cc6ede62e590a31e2192.tar.gz
kernel-qcow2-linux-b37afd41a1f5a7d9dbc4cc6ede62e590a31e2192.tar.xz
kernel-qcow2-linux-b37afd41a1f5a7d9dbc4cc6ede62e590a31e2192.zip
drm/amd/powerplay: refine avfs enable code on fiji.
1. simplify avfs state switch. 2. delete save/restore VFT table functions as not support by fiji. 3. implement thermal_avfs_enable funciton. Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c')
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
index 6a320b27aefd..ca24e155ef2d 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smc.c
@@ -2129,6 +2129,25 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
return 0;
}
+
+int fiji_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
+{
+ int ret;
+ struct pp_smumgr *smumgr = (struct pp_smumgr *)(hwmgr->smumgr);
+ struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(smumgr->backend);
+
+ if (smu_data->avfs.AvfsBtcStatus != AVFS_BTC_ENABLEAVFS)
+ return 0;
+
+ ret = smum_send_msg_to_smc(smumgr, PPSMC_MSG_EnableAvfs);
+
+ if (!ret)
+ /* If this param is not changed, this function could fire unnecessarily */
+ smu_data->avfs.AvfsBtcStatus = AVFS_BTC_COMPLETED_PREVIOUSLY;
+
+ return ret;
+}
+
static int fiji_program_mem_timing_parameters(struct pp_hwmgr *hwmgr)
{
struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);