drm/amd/pp: Refine powerplay instance
authorRex Zhu <Rex.Zhu@amd.com>
Tue, 27 Feb 2018 06:09:40 +0000 (14:09 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Mar 2018 20:38:20 +0000 (15:38 -0500)
Include adev in powerplay instance.
so can visit adev directly instand of through cgs interface.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/amd_powerplay.c
drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
drivers/gpu/drm/amd/powerplay/inc/pp_instance.h

index 4e87cfc..20ac0fc 100644 (file)
@@ -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;
index 33eabc1..7e1bd11 100644 (file)
@@ -146,10 +146,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;
index 77d7f49..bb50cc2 100644 (file)
@@ -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;
index 7d1eec5..6c2fa33 100644 (file)
 #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;
 };