summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
diff options
context:
space:
mode:
authorLikun Gao2019-02-15 08:47:26 +0100
committerAlex Deucher2019-03-19 21:04:01 +0100
commitf067499b4862c053a8971461d0d937e173690ddf (patch)
tree299d92674acfe5cc92062fe2e3145b358e3e1ed3 /drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
parentdrm/amd/powerplay: add suspend and resume function for smu (diff)
downloadkernel-qcow2-linux-f067499b4862c053a8971461d0d937e173690ddf.tar.gz
kernel-qcow2-linux-f067499b4862c053a8971461d0d937e173690ddf.tar.xz
kernel-qcow2-linux-f067499b4862c053a8971461d0d937e173690ddf.zip
drm/amd/powerplay: add condition for smc table hw init
Smc table hw init should be skipped for suspend/resume when dpm running. Unified feature enable and disable function into smu_system_features_control. Signed-off-by: Likun Gao <Likun.Gao@amd.com> Reviewed-by: Kenneth Feng <kenneth.feng@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/powerplay/amdgpu_smu.c')
-rw-r--r--drivers/gpu/drm/amd/powerplay/amdgpu_smu.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 0a9b87369f5c..231cce90763d 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -532,8 +532,14 @@ static int smu_fini_fb_allocations(struct smu_context *smu)
static int smu_smc_table_hw_init(struct smu_context *smu,
bool initialize)
{
+ struct amdgpu_device *adev = smu->adev;
int ret;
+ if (smu_is_dpm_running(smu) && adev->in_suspend) {
+ pr_info("dpm has been enabled\n");
+ return 0;
+ }
+
ret = smu_init_display(smu);
if (ret)
return ret;
@@ -606,7 +612,7 @@ static int smu_smc_table_hw_init(struct smu_context *smu,
if (ret)
return ret;
- ret = smu_feature_enable_all(smu);
+ ret = smu_system_features_control(smu, true);
if (ret)
return ret;
@@ -849,7 +855,7 @@ static int smu_suspend(void *handle)
if (!is_support_sw_smu(adev))
return -EINVAL;
- ret = smu_feature_disable_all(smu);
+ ret = smu_system_features_control(smu, false);
if (ret)
return ret;