aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch
new file mode 100644
index 00000000..df23f56e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch
@@ -0,0 +1,59 @@
+From 91e966568edf9bd745a26c96b77708cf3092a02a Mon Sep 17 00:00:00 2001
+From: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+Date: Wed, 2 Oct 2019 15:31:03 -0400
+Subject: [PATCH 4178/4736] drm/amd/display: fix incorrect page table address
+ for renoir
+
+Incorrect page table address and programming sys aperture for
+stutter gather, so fix it.
+
+Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+Reviewed-by: Roman Li <Roman.Li@amd.com>
+---
+ .../drm/amd/display/dc/dcn21/dcn21_hubbub.c | 23 ++++++++++++++-----
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c
+index bd247e5e753e..fdfbdeb32459 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c
+@@ -111,19 +111,30 @@ int hubbub21_init_dchub(struct hubbub *hubbub,
+ struct dcn_hubbub_phys_addr_config *pa_config)
+ {
+ struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub);
++ struct dcn_vmid_page_table_config phys_config;
+
+ REG_SET(DCN_VM_FB_LOCATION_BASE, 0,
+- FB_BASE, pa_config->system_aperture.fb_base);
++ FB_BASE, pa_config->system_aperture.fb_base >> 24);
+ REG_SET(DCN_VM_FB_LOCATION_TOP, 0,
+- FB_TOP, pa_config->system_aperture.fb_top);
++ FB_TOP, pa_config->system_aperture.fb_top >> 24);
+ REG_SET(DCN_VM_FB_OFFSET, 0,
+- FB_OFFSET, pa_config->system_aperture.fb_offset);
++ FB_OFFSET, pa_config->system_aperture.fb_offset >> 24);
+ REG_SET(DCN_VM_AGP_BOT, 0,
+- AGP_BOT, pa_config->system_aperture.agp_bot);
++ AGP_BOT, pa_config->system_aperture.agp_bot >> 24);
+ REG_SET(DCN_VM_AGP_TOP, 0,
+- AGP_TOP, pa_config->system_aperture.agp_top);
++ AGP_TOP, pa_config->system_aperture.agp_top >> 24);
+ REG_SET(DCN_VM_AGP_BASE, 0,
+- AGP_BASE, pa_config->system_aperture.agp_base);
++ AGP_BASE, pa_config->system_aperture.agp_base >> 24);
++
++ if (pa_config->gart_config.page_table_start_addr != pa_config->gart_config.page_table_end_addr) {
++ phys_config.page_table_start_addr = pa_config->gart_config.page_table_start_addr >> 12;
++ phys_config.page_table_end_addr = pa_config->gart_config.page_table_end_addr >> 12;
++ phys_config.page_table_base_addr = pa_config->gart_config.page_table_base_addr | 1; //Note: hack
++ phys_config.depth = 0;
++ phys_config.block_size = 0;
++ // Init VMID 0 based on PA config
++ dcn20_vmid_setup(&hubbub1->vmid[0], &phys_config);
++ }
+
+ dcn21_dchvm_init(hubbub);
+
+--
+2.17.1
+