Skip to content

Commit 5dd20bb

Browse files
Michel Dänzeralexdeucher
authored andcommitted
drm/radeon: Set MASTER_UPDATE_MODE to 0 again
With the previous change, it's safe to let page flips take effect anytime during a vertical blank period. This can avoid delaying a flip by a frame in some cases where we get to radeon_flip_work_func -> adev->mode_info.funcs->page_flip during a vertical blank period. Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent b8fc75c commit 5dd20bb

File tree

3 files changed

+6
-8
lines changed

3 files changed

+6
-8
lines changed

drivers/gpu/drm/radeon/atombios_crtc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,8 +1433,8 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
14331433
WREG32(EVERGREEN_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
14341434
(viewport_w << 16) | viewport_h);
14351435

1436-
/* set pageflip to happen only at start of vblank interval (front porch) */
1437-
WREG32(EVERGREEN_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3);
1436+
/* set pageflip to happen anywhere in vblank interval */
1437+
WREG32(EVERGREEN_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 0);
14381438

14391439
if (!atomic && fb && fb != crtc->primary->fb) {
14401440
radeon_fb = to_radeon_framebuffer(fb);
@@ -1632,8 +1632,8 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
16321632
WREG32(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
16331633
(viewport_w << 16) | viewport_h);
16341634

1635-
/* set pageflip to happen only at start of vblank interval (front porch) */
1636-
WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3);
1635+
/* set pageflip to happen anywhere in vblank interval */
1636+
WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 0);
16371637

16381638
if (!atomic && fb && fb != crtc->primary->fb) {
16391639
radeon_fb = to_radeon_framebuffer(fb);

drivers/gpu/drm/radeon/evergreen.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2878,9 +2878,8 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
28782878
for (i = 0; i < rdev->num_crtc; i++) {
28792879
if (save->crtc_enabled[i]) {
28802880
tmp = RREG32(EVERGREEN_MASTER_UPDATE_MODE + crtc_offsets[i]);
2881-
if ((tmp & 0x7) != 3) {
2881+
if ((tmp & 0x7) != 0) {
28822882
tmp &= ~0x7;
2883-
tmp |= 0x3;
28842883
WREG32(EVERGREEN_MASTER_UPDATE_MODE + crtc_offsets[i], tmp);
28852884
}
28862885
tmp = RREG32(EVERGREEN_GRPH_UPDATE + crtc_offsets[i]);

drivers/gpu/drm/radeon/rv515.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,9 +406,8 @@ void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)
406406
for (i = 0; i < rdev->num_crtc; i++) {
407407
if (save->crtc_enabled[i]) {
408408
tmp = RREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + crtc_offsets[i]);
409-
if ((tmp & 0x7) != 3) {
409+
if ((tmp & 0x7) != 0) {
410410
tmp &= ~0x7;
411-
tmp |= 0x3;
412411
WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + crtc_offsets[i], tmp);
413412
}
414413
tmp = RREG32(AVIVO_D1GRPH_UPDATE + crtc_offsets[i]);

0 commit comments

Comments
 (0)