diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0641-drm-amdgpu-dce8-optimize-pageflip.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0641-drm-amdgpu-dce8-optimize-pageflip.patch | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/common/recipes-kernel/linux/files/0641-drm-amdgpu-dce8-optimize-pageflip.patch b/common/recipes-kernel/linux/files/0641-drm-amdgpu-dce8-optimize-pageflip.patch deleted file mode 100644 index 9b1dcac8..00000000 --- a/common/recipes-kernel/linux/files/0641-drm-amdgpu-dce8-optimize-pageflip.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 82326860b3ee58db33536a3e29675e28603f661c Mon Sep 17 00:00:00 2001 -From: Alex Deucher <alexander.deucher@amd.com> -Date: Thu, 22 Oct 2015 14:08:35 -0400 -Subject: [PATCH 0641/1565] drm/amdgpu/dce8: optimize pageflip -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Taking the grph update lock is only necessary when -updating the the secondary address (for single pipe stereo). - -Reviewed-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 38 +++++++---------------------------- - 1 file changed, 7 insertions(+), 31 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c -index 00c34f8..b17abbe 100644 ---- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c -@@ -211,46 +211,22 @@ static u32 dce_v8_0_vblank_get_counter(struct amdgpu_device *adev, int crtc) - * @crtc_id: crtc to cleanup pageflip on - * @crtc_base: new address of the crtc (GPU MC address) - * -- * Does the actual pageflip (evergreen+). -- * During vblank we take the crtc lock and wait for the update_pending -- * bit to go high, when it does, we release the lock, and allow the -- * double buffered update to take place. -- * Returns the current update pending status. -+ * Triggers the actual pageflip by updating the primary -+ * surface base address. - */ - static void dce_v8_0_page_flip(struct amdgpu_device *adev, - int crtc_id, u64 crtc_base) - { - struct amdgpu_crtc *amdgpu_crtc = adev->mode_info.crtcs[crtc_id]; -- u32 tmp = RREG32(mmGRPH_UPDATE + amdgpu_crtc->crtc_offset); -- int i; -- -- /* Lock the graphics update lock */ -- tmp |= GRPH_UPDATE__GRPH_UPDATE_LOCK_MASK; -- WREG32(mmGRPH_UPDATE + amdgpu_crtc->crtc_offset, tmp); -- -- /* update the scanout addresses */ -- WREG32(mmGRPH_SECONDARY_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset, -- upper_32_bits(crtc_base)); -- WREG32(mmGRPH_SECONDARY_SURFACE_ADDRESS + amdgpu_crtc->crtc_offset, -- (u32)crtc_base); - -+ /* update the primary scanout addresses */ - WREG32(mmGRPH_PRIMARY_SURFACE_ADDRESS_HIGH + amdgpu_crtc->crtc_offset, - upper_32_bits(crtc_base)); -+ /* writing to the low address triggers the update */ - WREG32(mmGRPH_PRIMARY_SURFACE_ADDRESS + amdgpu_crtc->crtc_offset, -- (u32)crtc_base); -- -- /* Wait for update_pending to go high. */ -- for (i = 0; i < adev->usec_timeout; i++) { -- if (RREG32(mmGRPH_UPDATE + amdgpu_crtc->crtc_offset) & -- GRPH_UPDATE__GRPH_SURFACE_UPDATE_PENDING_MASK) -- break; -- udelay(1); -- } -- DRM_DEBUG("Update pending now high. Unlocking vupdate_lock.\n"); -- -- /* Unlock the lock, so double-buffering can take place inside vblank */ -- tmp &= ~GRPH_UPDATE__GRPH_UPDATE_LOCK_MASK; -- WREG32(mmGRPH_UPDATE + amdgpu_crtc->crtc_offset, tmp); -+ lower_32_bits(crtc_base)); -+ /* post the write */ -+ RREG32(mmGRPH_PRIMARY_SURFACE_ADDRESS + amdgpu_crtc->crtc_offset); - } - - static int dce_v8_0_crtc_get_scanoutpos(struct amdgpu_device *adev, int crtc, --- -1.9.1 - |