diff options
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.patch | 90 |
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 + |