aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch
new file mode 100644
index 00000000..f17526ef
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3669-drm-amd-pp-Refine-powerplay-instance.patch
@@ -0,0 +1,101 @@
+From b26fd426488084666f4ecdb874c80a4887649835 Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Tue, 27 Feb 2018 14:09:40 +0800
+Subject: [PATCH 3669/4131] drm/amd/pp: Refine powerplay instance
+
+Include adev in powerplay instance.
+so can visit adev directly instand of through cgs interface.
+
+Change-Id: Ied35c8beb75b657c026087e0c711fb54f30a2aec
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@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 8a5eca9..babcede 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 33eabc1..7e1bd11 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+@@ -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;
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+index 77d7f49..bb50cc2 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;
+ };
+--
+2.7.4
+