aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-10-26 12:06:23 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-02-19 14:17:39 -0500
commit5d43be0ccbc2f94aa872dfbe37c969510b8c77d6 (patch)
tree936d8b7d430f9b72f7d0d812e33f90016fc1b513 /drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
parentc8553f4bd29d681706dd97519e2daddf90505978 (diff)
drm/amdgpu: allow framebuffer in GART memory as well
On CZ and newer APUs we can pin the fb into GART as well as VRAM. v2: Don't enable gpu_vm_support for Raven yet since it leads to a black screen. Need to debug this further before enabling. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Samuel Li <samuel.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_display.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_display.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 38d47559f098..8ede2645a06c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -29,6 +29,7 @@
29#include "amdgpu_i2c.h" 29#include "amdgpu_i2c.h"
30#include "atom.h" 30#include "atom.h"
31#include "amdgpu_connectors.h" 31#include "amdgpu_connectors.h"
32#include "amdgpu_display.h"
32#include <asm/div64.h> 33#include <asm/div64.h>
33 34
34#include <linux/pm_runtime.h> 35#include <linux/pm_runtime.h>
@@ -189,7 +190,7 @@ int amdgpu_crtc_page_flip_target(struct drm_crtc *crtc,
189 goto cleanup; 190 goto cleanup;
190 } 191 }
191 192
192 r = amdgpu_bo_pin(new_abo, AMDGPU_GEM_DOMAIN_VRAM, &base); 193 r = amdgpu_bo_pin(new_abo, amdgpu_display_framebuffer_domains(adev), &base);
193 if (unlikely(r != 0)) { 194 if (unlikely(r != 0)) {
194 DRM_ERROR("failed to pin new abo buffer before flip\n"); 195 DRM_ERROR("failed to pin new abo buffer before flip\n");
195 goto unreserve; 196 goto unreserve;
@@ -502,6 +503,17 @@ static const struct drm_framebuffer_funcs amdgpu_fb_funcs = {
502 .create_handle = amdgpu_user_framebuffer_create_handle, 503 .create_handle = amdgpu_user_framebuffer_create_handle,
503}; 504};
504 505
506uint32_t amdgpu_display_framebuffer_domains(struct amdgpu_device *adev)
507{
508 uint32_t domain = AMDGPU_GEM_DOMAIN_VRAM;
509
510 if (adev->asic_type >= CHIP_CARRIZO && adev->asic_type < CHIP_RAVEN &&
511 adev->flags & AMD_IS_APU)
512 domain |= AMDGPU_GEM_DOMAIN_GTT;
513
514 return domain;
515}
516
505int 517int
506amdgpu_framebuffer_init(struct drm_device *dev, 518amdgpu_framebuffer_init(struct drm_device *dev,
507 struct amdgpu_framebuffer *rfb, 519 struct amdgpu_framebuffer *rfb,