aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch
new file mode 100644
index 00000000..ed00bfa5
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4041-drm-amdgpu-Clean-up-gmc_v9_0_gart_enable.patch
@@ -0,0 +1,133 @@
+From c6e54732f0548998dea2e134966781de6a275ca8 Mon Sep 17 00:00:00 2001
+From: Oak Zeng <Oak.Zeng@amd.com>
+Date: Mon, 7 Oct 2019 15:21:03 -0500
+Subject: [PATCH 4041/4256] drm/amdgpu: Clean up gmc_v9_0_gart_enable
+
+Many logic in this function are HDP set up,
+not gart set up. Moved those logic to gmc_v9_0_hw_init.
+No functional change.
+
+Change-Id: Ib00cc1ffd1e486e77571796dce53aa7506c0c55f
+Acked-by: Christian konig <christian.koenig@amd.com>
+Signed-off-by: Oak Zeng <Oak.Zeng@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 82 +++++++++++++--------------
+ 1 file changed, 41 insertions(+), 41 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+index b5ecc12cfea2..cfe135544d24 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+@@ -1147,13 +1147,7 @@ static void gmc_v9_0_init_golden_registers(struct amdgpu_device *adev)
+ */
+ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)
+ {
+- int r, i;
+- bool value;
+- u32 tmp;
+-
+- amdgpu_device_program_register_sequence(adev,
+- golden_settings_vega10_hdp,
+- ARRAY_SIZE(golden_settings_vega10_hdp));
++ int r;
+
+ if (adev->gart.bo == NULL) {
+ dev_err(adev->dev, "No VRAM object for PCIE GART.\n");
+@@ -1163,15 +1157,6 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)
+ if (r)
+ return r;
+
+- switch (adev->asic_type) {
+- case CHIP_RAVEN:
+- /* TODO for renoir */
+- mmhub_v1_0_update_power_gating(adev, true);
+- break;
+- default:
+- break;
+- }
+-
+ r = gfxhub_v1_0_gart_enable(adev);
+ if (r)
+ return r;
+@@ -1183,6 +1168,46 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)
+ if (r)
+ return r;
+
++ DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n",
++ (unsigned)(adev->gmc.gart_size >> 20),
++ (unsigned long long)amdgpu_bo_gpu_offset(adev->gart.bo));
++ adev->gart.ready = true;
++ return 0;
++}
++
++static int gmc_v9_0_hw_init(void *handle)
++{
++ struct amdgpu_device *adev = (struct amdgpu_device *)handle;
++ bool value;
++ int r, i;
++ u32 tmp;
++
++ /* The sequence of these two function calls matters.*/
++ gmc_v9_0_init_golden_registers(adev);
++
++ if (adev->mode_info.num_crtc) {
++ if (adev->asic_type != CHIP_ARCTURUS) {
++ /* Lockout access through VGA aperture*/
++ WREG32_FIELD15(DCE, 0, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE, 1);
++
++ /* disable VGA render */
++ WREG32_FIELD15(DCE, 0, VGA_RENDER_CONTROL, VGA_VSTATUS_CNTL, 0);
++ }
++ }
++
++ amdgpu_device_program_register_sequence(adev,
++ golden_settings_vega10_hdp,
++ ARRAY_SIZE(golden_settings_vega10_hdp));
++
++ switch (adev->asic_type) {
++ case CHIP_RAVEN:
++ /* TODO for renoir */
++ mmhub_v1_0_update_power_gating(adev, true);
++ break;
++ default:
++ break;
++ }
++
+ WREG32_FIELD15(HDP, 0, HDP_MISC_CNTL, FLUSH_INVALIDATE_CACHE, 1);
+
+ tmp = RREG32_SOC15(HDP, 0, mmHDP_HOST_PATH_CNTL);
+@@ -1211,31 +1236,6 @@ static int gmc_v9_0_gart_enable(struct amdgpu_device *adev)
+ if (adev->umc.funcs && adev->umc.funcs->init_registers)
+ adev->umc.funcs->init_registers(adev);
+
+- DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n",
+- (unsigned)(adev->gmc.gart_size >> 20),
+- (unsigned long long)amdgpu_bo_gpu_offset(adev->gart.bo));
+- adev->gart.ready = true;
+- return 0;
+-}
+-
+-static int gmc_v9_0_hw_init(void *handle)
+-{
+- int r;
+- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+-
+- /* The sequence of these two function calls matters.*/
+- gmc_v9_0_init_golden_registers(adev);
+-
+- if (adev->mode_info.num_crtc) {
+- if (adev->asic_type != CHIP_ARCTURUS) {
+- /* Lockout access through VGA aperture*/
+- WREG32_FIELD15(DCE, 0, VGA_HDP_CONTROL, VGA_MEMORY_DISABLE, 1);
+-
+- /* disable VGA render */
+- WREG32_FIELD15(DCE, 0, VGA_RENDER_CONTROL, VGA_VSTATUS_CNTL, 0);
+- }
+- }
+-
+ r = gmc_v9_0_gart_enable(adev);
+
+ return r;
+--
+2.17.1
+