aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c24
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c5
-rw-r--r--drivers/gpu/drm/radeon/r100.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon.h5
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h9
-rw-r--r--drivers/gpu/drm/radeon/radeon_display.c6
-rw-r--r--drivers/gpu/drm/radeon/rs600.c4
-rw-r--r--drivers/gpu/drm/radeon/rv770.c4
8 files changed, 35 insertions, 24 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index b80b08f71cb4..bdc7b9ee1930 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -1375,6 +1375,11 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
1375 break; 1375 break;
1376 } 1376 }
1377 1377
1378 /* Make sure surface address is updated at vertical blank rather than
1379 * horizontal blank
1380 */
1381 WREG32(EVERGREEN_GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset, 0);
1382
1378 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset, 1383 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset,
1379 upper_32_bits(fb_location)); 1384 upper_32_bits(fb_location));
1380 WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset, 1385 WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset,
@@ -1427,12 +1432,6 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
1427 WREG32(EVERGREEN_VIEWPORT_SIZE + radeon_crtc->crtc_offset, 1432 WREG32(EVERGREEN_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
1428 (viewport_w << 16) | viewport_h); 1433 (viewport_w << 16) | viewport_h);
1429 1434
1430 /* pageflip setup */
1431 /* make sure flip is at vb rather than hb */
1432 tmp = RREG32(EVERGREEN_GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset);
1433 tmp &= ~EVERGREEN_GRPH_SURFACE_UPDATE_H_RETRACE_EN;
1434 WREG32(EVERGREEN_GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset, tmp);
1435
1436 /* set pageflip to happen only at start of vblank interval (front porch) */ 1435 /* set pageflip to happen only at start of vblank interval (front porch) */
1437 WREG32(EVERGREEN_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3); 1436 WREG32(EVERGREEN_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3);
1438 1437
@@ -1466,7 +1465,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
1466 uint64_t fb_location; 1465 uint64_t fb_location;
1467 uint32_t fb_format, fb_pitch_pixels, tiling_flags; 1466 uint32_t fb_format, fb_pitch_pixels, tiling_flags;
1468 u32 fb_swap = R600_D1GRPH_SWAP_ENDIAN_NONE; 1467 u32 fb_swap = R600_D1GRPH_SWAP_ENDIAN_NONE;
1469 u32 tmp, viewport_w, viewport_h; 1468 u32 viewport_w, viewport_h;
1470 int r; 1469 int r;
1471 bool bypass_lut = false; 1470 bool bypass_lut = false;
1472 1471
@@ -1581,6 +1580,11 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
1581 else 1580 else
1582 WREG32(AVIVO_D2VGA_CONTROL, 0); 1581 WREG32(AVIVO_D2VGA_CONTROL, 0);
1583 1582
1583 /* Make sure surface address is update at vertical blank rather than
1584 * horizontal blank
1585 */
1586 WREG32(AVIVO_D1GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset, 0);
1587
1584 if (rdev->family >= CHIP_RV770) { 1588 if (rdev->family >= CHIP_RV770) {
1585 if (radeon_crtc->crtc_id) { 1589 if (radeon_crtc->crtc_id) {
1586 WREG32(R700_D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(fb_location)); 1590 WREG32(R700_D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(fb_location));
@@ -1627,12 +1631,6 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
1627 WREG32(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset, 1631 WREG32(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
1628 (viewport_w << 16) | viewport_h); 1632 (viewport_w << 16) | viewport_h);
1629 1633
1630 /* pageflip setup */
1631 /* make sure flip is at vb rather than hb */
1632 tmp = RREG32(AVIVO_D1GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset);
1633 tmp &= ~AVIVO_D1GRPH_SURFACE_UPDATE_H_RETRACE_EN;
1634 WREG32(AVIVO_D1GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset, tmp);
1635
1636 /* set pageflip to happen only at start of vblank interval (front porch) */ 1634 /* set pageflip to happen only at start of vblank interval (front porch) */
1637 WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3); 1635 WREG32(AVIVO_D1MODE_MASTER_UPDATE_MODE + radeon_crtc->crtc_offset, 3);
1638 1636
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 501633be8ea2..9217d202e94d 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1407,11 +1407,14 @@ void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc)
1407 * Triggers the actual pageflip by updating the primary 1407 * Triggers the actual pageflip by updating the primary
1408 * surface base address (evergreen+). 1408 * surface base address (evergreen+).
1409 */ 1409 */
1410void evergreen_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) 1410void evergreen_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base,
1411 bool async)
1411{ 1412{
1412 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; 1413 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
1413 1414
1414 /* update the scanout addresses */ 1415 /* update the scanout addresses */
1416 WREG32(EVERGREEN_GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset,
1417 async ? EVERGREEN_GRPH_SURFACE_UPDATE_H_RETRACE_EN : 0);
1415 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset, 1418 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset,
1416 upper_32_bits(crtc_base)); 1419 upper_32_bits(crtc_base));
1417 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, 1420 WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index af985b951d00..f25994b3afa6 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -153,7 +153,7 @@ void r100_wait_for_vblank(struct radeon_device *rdev, int crtc)
153 * bit to go high, when it does, we release the lock, and allow the 153 * bit to go high, when it does, we release the lock, and allow the
154 * double buffered update to take place. 154 * double buffered update to take place.
155 */ 155 */
156void r100_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) 156void r100_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base, bool async)
157{ 157{
158 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; 158 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
159 u32 tmp = ((u32)crtc_base) | RADEON_CRTC_OFFSET__OFFSET_LOCK; 159 u32 tmp = ((u32)crtc_base) | RADEON_CRTC_OFFSET__OFFSET_LOCK;
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 4192f60df98a..170e69111d1b 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -746,6 +746,7 @@ struct radeon_flip_work {
746 struct drm_pending_vblank_event *event; 746 struct drm_pending_vblank_event *event;
747 struct radeon_bo *old_rbo; 747 struct radeon_bo *old_rbo;
748 struct fence *fence; 748 struct fence *fence;
749 bool async;
749}; 750};
750 751
751struct r500_irq_stat_regs { 752struct r500_irq_stat_regs {
@@ -2000,7 +2001,7 @@ struct radeon_asic {
2000 } dpm; 2001 } dpm;
2001 /* pageflipping */ 2002 /* pageflipping */
2002 struct { 2003 struct {
2003 void (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base); 2004 void (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base, bool async);
2004 bool (*page_flip_pending)(struct radeon_device *rdev, int crtc); 2005 bool (*page_flip_pending)(struct radeon_device *rdev, int crtc);
2005 } pflip; 2006 } pflip;
2006}; 2007};
@@ -2777,7 +2778,7 @@ static inline void radeon_ring_write(struct radeon_ring *ring, uint32_t v)
2777#define radeon_pm_finish(rdev) (rdev)->asic->pm.finish((rdev)) 2778#define radeon_pm_finish(rdev) (rdev)->asic->pm.finish((rdev))
2778#define radeon_pm_init_profile(rdev) (rdev)->asic->pm.init_profile((rdev)) 2779#define radeon_pm_init_profile(rdev) (rdev)->asic->pm.init_profile((rdev))
2779#define radeon_pm_get_dynpm_state(rdev) (rdev)->asic->pm.get_dynpm_state((rdev)) 2780#define radeon_pm_get_dynpm_state(rdev) (rdev)->asic->pm.get_dynpm_state((rdev))
2780#define radeon_page_flip(rdev, crtc, base) (rdev)->asic->pflip.page_flip((rdev), (crtc), (base)) 2781#define radeon_page_flip(rdev, crtc, base, async) (rdev)->asic->pflip.page_flip((rdev), (crtc), (base), (async))
2781#define radeon_page_flip_pending(rdev, crtc) (rdev)->asic->pflip.page_flip_pending((rdev), (crtc)) 2782#define radeon_page_flip_pending(rdev, crtc) (rdev)->asic->pflip.page_flip_pending((rdev), (crtc))
2782#define radeon_wait_for_vblank(rdev, crtc) (rdev)->asic->display.wait_for_vblank((rdev), (crtc)) 2783#define radeon_wait_for_vblank(rdev, crtc) (rdev)->asic->display.wait_for_vblank((rdev), (crtc))
2783#define radeon_mc_wait_for_idle(rdev) (rdev)->asic->mc_wait_for_idle((rdev)) 2784#define radeon_mc_wait_for_idle(rdev) (rdev)->asic->mc_wait_for_idle((rdev))
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index 7675dfaaa005..e3f036c20d64 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -138,7 +138,7 @@ extern void r100_pm_finish(struct radeon_device *rdev);
138extern void r100_pm_init_profile(struct radeon_device *rdev); 138extern void r100_pm_init_profile(struct radeon_device *rdev);
139extern void r100_pm_get_dynpm_state(struct radeon_device *rdev); 139extern void r100_pm_get_dynpm_state(struct radeon_device *rdev);
140extern void r100_page_flip(struct radeon_device *rdev, int crtc, 140extern void r100_page_flip(struct radeon_device *rdev, int crtc,
141 u64 crtc_base); 141 u64 crtc_base, bool async);
142extern bool r100_page_flip_pending(struct radeon_device *rdev, int crtc); 142extern bool r100_page_flip_pending(struct radeon_device *rdev, int crtc);
143extern void r100_wait_for_vblank(struct radeon_device *rdev, int crtc); 143extern void r100_wait_for_vblank(struct radeon_device *rdev, int crtc);
144extern int r100_mc_wait_for_idle(struct radeon_device *rdev); 144extern int r100_mc_wait_for_idle(struct radeon_device *rdev);
@@ -250,7 +250,7 @@ extern void rs600_pm_misc(struct radeon_device *rdev);
250extern void rs600_pm_prepare(struct radeon_device *rdev); 250extern void rs600_pm_prepare(struct radeon_device *rdev);
251extern void rs600_pm_finish(struct radeon_device *rdev); 251extern void rs600_pm_finish(struct radeon_device *rdev);
252extern void rs600_page_flip(struct radeon_device *rdev, int crtc, 252extern void rs600_page_flip(struct radeon_device *rdev, int crtc,
253 u64 crtc_base); 253 u64 crtc_base, bool async);
254extern bool rs600_page_flip_pending(struct radeon_device *rdev, int crtc); 254extern bool rs600_page_flip_pending(struct radeon_device *rdev, int crtc);
255void rs600_set_safe_registers(struct radeon_device *rdev); 255void rs600_set_safe_registers(struct radeon_device *rdev);
256extern void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc); 256extern void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc);
@@ -464,7 +464,8 @@ void rv770_fini(struct radeon_device *rdev);
464int rv770_suspend(struct radeon_device *rdev); 464int rv770_suspend(struct radeon_device *rdev);
465int rv770_resume(struct radeon_device *rdev); 465int rv770_resume(struct radeon_device *rdev);
466void rv770_pm_misc(struct radeon_device *rdev); 466void rv770_pm_misc(struct radeon_device *rdev);
467void rv770_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base); 467void rv770_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base,
468 bool async);
468bool rv770_page_flip_pending(struct radeon_device *rdev, int crtc); 469bool rv770_page_flip_pending(struct radeon_device *rdev, int crtc);
469void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 470void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc);
470void r700_cp_stop(struct radeon_device *rdev); 471void r700_cp_stop(struct radeon_device *rdev);
@@ -534,7 +535,7 @@ extern void btc_pm_init_profile(struct radeon_device *rdev);
534int sumo_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 535int sumo_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk);
535int evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 536int evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk);
536extern void evergreen_page_flip(struct radeon_device *rdev, int crtc, 537extern void evergreen_page_flip(struct radeon_device *rdev, int crtc,
537 u64 crtc_base); 538 u64 crtc_base, bool async);
538extern bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc); 539extern bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc);
539extern void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc); 540extern void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc);
540void evergreen_disable_interrupt_state(struct radeon_device *rdev); 541void evergreen_disable_interrupt_state(struct radeon_device *rdev);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index fcc7483d3f7b..7f176ecfc583 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -490,7 +490,7 @@ static void radeon_flip_work_func(struct work_struct *__work)
490 vblank->linedur_ns / 1000, stat, vpos, hpos); 490 vblank->linedur_ns / 1000, stat, vpos, hpos);
491 491
492 /* do the flip (mmio) */ 492 /* do the flip (mmio) */
493 radeon_page_flip(rdev, radeon_crtc->crtc_id, work->base); 493 radeon_page_flip(rdev, radeon_crtc->crtc_id, work->base, work->async);
494 494
495 radeon_crtc->flip_status = RADEON_FLIP_SUBMITTED; 495 radeon_crtc->flip_status = RADEON_FLIP_SUBMITTED;
496 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); 496 spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
@@ -525,6 +525,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
525 work->rdev = rdev; 525 work->rdev = rdev;
526 work->crtc_id = radeon_crtc->crtc_id; 526 work->crtc_id = radeon_crtc->crtc_id;
527 work->event = event; 527 work->event = event;
528 work->async = (page_flip_flags & DRM_MODE_PAGE_FLIP_ASYNC) != 0;
528 529
529 /* schedule unpin of the old buffer */ 530 /* schedule unpin of the old buffer */
530 old_radeon_fb = to_radeon_framebuffer(crtc->primary->fb); 531 old_radeon_fb = to_radeon_framebuffer(crtc->primary->fb);
@@ -1630,6 +1631,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
1630 1631
1631 rdev->ddev->mode_config.funcs = &radeon_mode_funcs; 1632 rdev->ddev->mode_config.funcs = &radeon_mode_funcs;
1632 1633
1634 if (radeon_use_pflipirq == 2 && rdev->family >= CHIP_R600)
1635 rdev->ddev->mode_config.async_page_flip = true;
1636
1633 if (ASIC_IS_DCE5(rdev)) { 1637 if (ASIC_IS_DCE5(rdev)) {
1634 rdev->ddev->mode_config.max_width = 16384; 1638 rdev->ddev->mode_config.max_width = 16384;
1635 rdev->ddev->mode_config.max_height = 16384; 1639 rdev->ddev->mode_config.max_height = 16384;
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index 0051c4288725..f16af119c688 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -110,7 +110,7 @@ void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc)
110 } 110 }
111} 111}
112 112
113void rs600_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) 113void rs600_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base, bool async)
114{ 114{
115 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; 115 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
116 u32 tmp = RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset); 116 u32 tmp = RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset);
@@ -121,6 +121,8 @@ void rs600_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base)
121 WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp); 121 WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp);
122 122
123 /* update the scanout addresses */ 123 /* update the scanout addresses */
124 WREG32(AVIVO_D1GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset,
125 async ? AVIVO_D1GRPH_SURFACE_UPDATE_H_RETRACE_EN : 0);
124 WREG32(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, 126 WREG32(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,
125 (u32)crtc_base); 127 (u32)crtc_base);
126 WREG32(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, 128 WREG32(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset,
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index fa0b03c48227..1c120a4c3c97 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -801,7 +801,7 @@ u32 rv770_get_xclk(struct radeon_device *rdev)
801 return reference_clock; 801 return reference_clock;
802} 802}
803 803
804void rv770_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base) 804void rv770_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base, bool async)
805{ 805{
806 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; 806 struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
807 u32 tmp = RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset); 807 u32 tmp = RREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset);
@@ -812,6 +812,8 @@ void rv770_page_flip(struct radeon_device *rdev, int crtc_id, u64 crtc_base)
812 WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp); 812 WREG32(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, tmp);
813 813
814 /* update the scanout addresses */ 814 /* update the scanout addresses */
815 WREG32(AVIVO_D1GRPH_FLIP_CONTROL + radeon_crtc->crtc_offset,
816 async ? AVIVO_D1GRPH_SURFACE_UPDATE_H_RETRACE_EN : 0);
815 if (radeon_crtc->crtc_id) { 817 if (radeon_crtc->crtc_id) {
816 WREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base)); 818 WREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));
817 WREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base)); 819 WREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH, upper_32_bits(crtc_base));