[PATCH 3/7] drm/amd/pp: Refine powerplay instance

Rex Zhu Rex.Zhu at amd.com
Tue Feb 27 11:27:24 UTC 2018


Include adev in powerplay instance directly.
so we can remove cgs interface.

Change-Id: Ia2f0a82dc176b616e727d1879f592391442859ee
Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
---
 drivers/gpu/drm/amd/powerplay/amd_powerplay.c   | 6 ++----
 drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c     | 7 ++++---
 drivers/gpu/drm/amd/powerplay/inc/hwmgr.h       | 1 +
 drivers/gpu/drm/amd/powerplay/inc/pp_instance.h | 8 +++-----
 4 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
index e59af13..1e943a1 100644
--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
@@ -30,6 +30,7 @@
 #include "pp_instance.h"
 #include "power_state.h"
 #include "amdgpu.h"
+#include "hwmgr.h"
 
 #define PP_DPM_DISABLED 0xCCCC
 
@@ -64,13 +65,10 @@ static int amd_powerplay_create(struct amdgpu_device *adev)
 	if (instance == NULL)
 		return -ENOMEM;
 
-	instance->chip_family = adev->family;
-	instance->chip_id = adev->asic_type;
+	instance->parent = adev;
 	instance->pm_en = (amdgpu_dpm != 0 && !amdgpu_sriov_vf(adev)) ? true : false;
-	instance->feature_mask = amdgpu_pp_feature_mask;
 	instance->device = adev->powerplay.cgs_device;
 	mutex_init(&instance->pp_lock);
-
 	adev->powerplay.pp_handle = instance;
 
 	return 0;
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
index 0c05024..94ae890 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
@@ -162,10 +162,11 @@ int hwmgr_early_init(struct pp_instance *handle)
 		return -ENOMEM;
 
 	handle->hwmgr = hwmgr;
+	hwmgr->adev = handle->parent;
 	hwmgr->device = handle->device;
-	hwmgr->chip_family = handle->chip_family;
-	hwmgr->chip_id = handle->chip_id;
-	hwmgr->feature_mask = handle->feature_mask;
+	hwmgr->chip_family = ((struct amdgpu_device *)handle->parent)->family;
+	hwmgr->chip_id = ((struct amdgpu_device *)handle->parent)->asic_type;
+	hwmgr->feature_mask = amdgpu_pp_feature_mask;
 	hwmgr->usec_timeout = AMD_MAX_USEC_TIMEOUT;
 	hwmgr->power_source = PP_PowerSource_AC;
 	hwmgr->pp_table_version = PP_TABLE_V1;
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
index 5583a84..12e4ac8 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
@@ -700,6 +700,7 @@ enum PP_TABLE_VERSION {
  * The main hardware manager structure.
  */
 struct pp_hwmgr {
+	void *adev;
 	uint32_t chip_family;
 	uint32_t chip_id;
 	uint32_t smu_version;
diff --git a/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h b/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
index 7d1eec5..6c2fa33 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/pp_instance.h
@@ -23,14 +23,12 @@
 #ifndef _PP_INSTANCE_H_
 #define _PP_INSTANCE_H_
 
-#include "hwmgr.h"
+struct pp_hwmgr;
 
 struct pp_instance {
-	uint32_t chip_family;
-	uint32_t chip_id;
+	void *parent; /* e.g. amdgpu_device */
+	void *device; /* e.g. cgs_device */
 	bool pm_en;
-	uint32_t feature_mask;
-	void *device;
 	struct pp_hwmgr *hwmgr;
 	struct mutex pp_lock;
 };
-- 
1.9.1



More information about the amd-gfx mailing list