aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch90
1 files changed, 90 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch
new file mode 100644
index 00000000..3cc03ff1
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4530-drm-amd-powerplay-add-Arcturus-baco-reset-support.patch
@@ -0,0 +1,90 @@
+From 3c0de548a406f11a7e39af0639c51771ee5cc29a Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Mon, 4 Nov 2019 17:31:29 +0800
+Subject: [PATCH 4530/4736] drm/amd/powerplay: add Arcturus baco reset support
+
+Enable baco reset support on Arcturus.
+
+Change-Id: I7b69016ee0d238e0fcb323aa10215e29924a6ca6
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/soc15.c | 1 +
+ drivers/gpu/drm/amd/powerplay/arcturus_ppt.c | 7 +++++++
+ drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 14 ++++++++++----
+ 3 files changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
+index a458dded99c6..41724a368d76 100644
+--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
+@@ -558,6 +558,7 @@ soc15_asic_reset_method(struct amdgpu_device *adev)
+ return AMD_RESET_METHOD_MODE2;
+ case CHIP_VEGA10:
+ case CHIP_VEGA12:
++ case CHIP_ARCTURUS:
+ soc15_asic_get_baco_capability(adev, &baco_reset);
+ break;
+ case CHIP_VEGA20:
+diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
+index 6d1401b30aaf..06c331d1e3e7 100644
+--- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
++++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
+@@ -495,6 +495,7 @@ static int arcturus_store_powerplay_table(struct smu_context *smu)
+ {
+ struct smu_11_0_powerplay_table *powerplay_table = NULL;
+ struct smu_table_context *table_context = &smu->smu_table;
++ struct smu_baco_context *smu_baco = &smu->smu_baco;
+ int ret = 0;
+
+ if (!table_context->power_play_table)
+@@ -507,6 +508,12 @@ static int arcturus_store_powerplay_table(struct smu_context *smu)
+
+ table_context->thermal_controller_type = powerplay_table->thermal_controller_type;
+
++ mutex_lock(&smu_baco->mutex);
++ if (powerplay_table->platform_caps & SMU_11_0_PP_PLATFORM_CAP_BACO ||
++ powerplay_table->platform_caps & SMU_11_0_PP_PLATFORM_CAP_MACO)
++ smu_baco->platform_support = true;
++ mutex_unlock(&smu_baco->mutex);
++
+ return ret;
+ }
+
+diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+index 71e2bbe25cf6..238d584805b3 100644
+--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+@@ -1641,7 +1641,9 @@ bool smu_v11_0_baco_is_support(struct smu_context *smu)
+ if (!baco_support)
+ return false;
+
+- if (!smu_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT))
++ /* Arcturus does not support this bit mask */
++ if (smu_feature_is_supported(smu, SMU_FEATURE_BACO_BIT) &&
++ !smu_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT))
+ return false;
+
+ val = RREG32_SOC15(NBIO, 0, mmRCC_BIF_STRAP0);
+@@ -1713,11 +1715,15 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, enum smu_baco_state state)
+
+ int smu_v11_0_baco_reset(struct smu_context *smu)
+ {
++ struct amdgpu_device *adev = smu->adev;
+ int ret = 0;
+
+- ret = smu_v11_0_baco_set_armd3_sequence(smu, BACO_SEQ_BACO);
+- if (ret)
+- return ret;
++ /* Arcturus does not need this audio workaround */
++ if (adev->asic_type != CHIP_ARCTURUS) {
++ ret = smu_v11_0_baco_set_armd3_sequence(smu, BACO_SEQ_BACO);
++ if (ret)
++ return ret;
++ }
+
+ ret = smu_v11_0_baco_set_state(smu, SMU_BACO_STATE_ENTER);
+ if (ret)
+--
+2.17.1
+