aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch
new file mode 100644
index 00000000..8bbfbafa
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0829-drm-amdgpu-Enable-HDP-memory-light-sleep.patch
@@ -0,0 +1,78 @@
+From 3c125cc1222ea0190d3d3b986c508b0ffb9ee687 Mon Sep 17 00:00:00 2001
+From: Kenneth Feng <kenneth.feng@amd.com>
+Date: Mon, 19 Nov 2018 14:49:16 +0800
+Subject: [PATCH 0829/2940] drm/amdgpu: Enable HDP memory light sleep
+
+Due to the register name and setting change of HDP
+memory light sleep on Vega20,change accordingly in
+the driver.
+
+Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
+Reviewed-by: Evan Quan <evan.quan@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/soc15.c | 39 ++++++++++++++++++++++++------
+ 1 file changed, 32 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
+index c4edd9ac0599..a8ec261ab250 100644
+--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
++++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
+@@ -65,6 +65,13 @@
+ #define mmMP0_MISC_LIGHT_SLEEP_CTRL 0x01ba
+ #define mmMP0_MISC_LIGHT_SLEEP_CTRL_BASE_IDX 0
+
++/* for Vega20 register name change */
++#define mmHDP_MEM_POWER_CTRL 0x00d4
++#define HDP_MEM_POWER_CTRL__IPH_MEM_POWER_CTRL_EN_MASK 0x00000001L
++#define HDP_MEM_POWER_CTRL__IPH_MEM_POWER_LS_EN_MASK 0x00000002L
++#define HDP_MEM_POWER_CTRL__RC_MEM_POWER_CTRL_EN_MASK 0x00010000L
++#define HDP_MEM_POWER_CTRL__RC_MEM_POWER_LS_EN_MASK 0x00020000L
++#define mmHDP_MEM_POWER_CTRL_BASE_IDX 0
+ /*
+ * Indirect registers accessor
+ */
+@@ -869,15 +876,33 @@ static void soc15_update_hdp_light_sleep(struct amdgpu_device *adev, bool enable
+ {
+ uint32_t def, data;
+
+- def = data = RREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_LS));
++ if (adev->asic_type == CHIP_VEGA20) {
++ def = data = RREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_CTRL));
+
+- if (enable && (adev->cg_flags & AMD_CG_SUPPORT_HDP_LS))
+- data |= HDP_MEM_POWER_LS__LS_ENABLE_MASK;
+- else
+- data &= ~HDP_MEM_POWER_LS__LS_ENABLE_MASK;
++ if (enable && (adev->cg_flags & AMD_CG_SUPPORT_HDP_LS))
++ data |= HDP_MEM_POWER_CTRL__IPH_MEM_POWER_CTRL_EN_MASK |
++ HDP_MEM_POWER_CTRL__IPH_MEM_POWER_LS_EN_MASK |
++ HDP_MEM_POWER_CTRL__RC_MEM_POWER_CTRL_EN_MASK |
++ HDP_MEM_POWER_CTRL__RC_MEM_POWER_LS_EN_MASK;
++ else
++ data &= ~(HDP_MEM_POWER_CTRL__IPH_MEM_POWER_CTRL_EN_MASK |
++ HDP_MEM_POWER_CTRL__IPH_MEM_POWER_LS_EN_MASK |
++ HDP_MEM_POWER_CTRL__RC_MEM_POWER_CTRL_EN_MASK |
++ HDP_MEM_POWER_CTRL__RC_MEM_POWER_LS_EN_MASK);
+
+- if (def != data)
+- WREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_LS), data);
++ if (def != data)
++ WREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_CTRL), data);
++ } else {
++ def = data = RREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_LS));
++
++ if (enable && (adev->cg_flags & AMD_CG_SUPPORT_HDP_LS))
++ data |= HDP_MEM_POWER_LS__LS_ENABLE_MASK;
++ else
++ data &= ~HDP_MEM_POWER_LS__LS_ENABLE_MASK;
++
++ if (def != data)
++ WREG32(SOC15_REG_OFFSET(HDP, 0, mmHDP_MEM_POWER_LS), data);
++ }
+ }
+
+ static void soc15_update_drm_clock_gating(struct amdgpu_device *adev, bool enable)
+--
+2.17.1
+