From: Christian K?nig <christian.koe...@amd.com>

The page flip irq seems to be stable, let's use it.

Signed-off-by: Christian K?nig <christian.koenig at amd.com>
---
 drivers/gpu/drm/radeon/cik.c       | 30 +++++-------------------
 drivers/gpu/drm/radeon/evergreen.c | 48 +++++++-------------------------------
 drivers/gpu/drm/radeon/si.c        | 30 +++++-------------------
 3 files changed, 21 insertions(+), 87 deletions(-)

diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 123fa64..4514b24 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -6972,33 +6972,27 @@ int cik_irq_set(struct radeon_device *rdev)
                dma_cntl1 |= TRAP_ENABLE;
        }

-       if (rdev->irq.crtc_vblank_int[0] ||
-           atomic_read(&rdev->irq.pflip[0])) {
+       if (rdev->irq.crtc_vblank_int[0]) {
                DRM_DEBUG("cik_irq_set: vblank 0\n");
                crtc1 |= VBLANK_INTERRUPT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[1] ||
-           atomic_read(&rdev->irq.pflip[1])) {
+       if (rdev->irq.crtc_vblank_int[1]) {
                DRM_DEBUG("cik_irq_set: vblank 1\n");
                crtc2 |= VBLANK_INTERRUPT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[2] ||
-           atomic_read(&rdev->irq.pflip[2])) {
+       if (rdev->irq.crtc_vblank_int[2]) {
                DRM_DEBUG("cik_irq_set: vblank 2\n");
                crtc3 |= VBLANK_INTERRUPT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[3] ||
-           atomic_read(&rdev->irq.pflip[3])) {
+       if (rdev->irq.crtc_vblank_int[3]) {
                DRM_DEBUG("cik_irq_set: vblank 3\n");
                crtc4 |= VBLANK_INTERRUPT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[4] ||
-           atomic_read(&rdev->irq.pflip[4])) {
+       if (rdev->irq.crtc_vblank_int[4]) {
                DRM_DEBUG("cik_irq_set: vblank 4\n");
                crtc5 |= VBLANK_INTERRUPT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[5] ||
-           atomic_read(&rdev->irq.pflip[5])) {
+       if (rdev->irq.crtc_vblank_int[5]) {
                DRM_DEBUG("cik_irq_set: vblank 5\n");
                crtc6 |= VBLANK_INTERRUPT_MASK;
        }
@@ -7377,8 +7371,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[0]))
-                                               radeon_crtc_handle_vblank(rdev, 
0);
                                        rdev->irq.stat_regs.cik.disp_int &= 
~LB_D1_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D1 vblank\n");
                                }
@@ -7403,8 +7395,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[1]))
-                                               radeon_crtc_handle_vblank(rdev, 
1);
                                        rdev->irq.stat_regs.cik.disp_int_cont 
&= ~LB_D2_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D2 vblank\n");
                                }
@@ -7429,8 +7419,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[2]))
-                                               radeon_crtc_handle_vblank(rdev, 
2);
                                        rdev->irq.stat_regs.cik.disp_int_cont2 
&= ~LB_D3_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D3 vblank\n");
                                }
@@ -7455,8 +7443,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[3]))
-                                               radeon_crtc_handle_vblank(rdev, 
3);
                                        rdev->irq.stat_regs.cik.disp_int_cont3 
&= ~LB_D4_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D4 vblank\n");
                                }
@@ -7481,8 +7467,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[4]))
-                                               radeon_crtc_handle_vblank(rdev, 
4);
                                        rdev->irq.stat_regs.cik.disp_int_cont4 
&= ~LB_D5_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D5 vblank\n");
                                }
@@ -7507,8 +7491,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[5]))
-                                               radeon_crtc_handle_vblank(rdev, 
5);
                                        rdev->irq.stat_regs.cik.disp_int_cont5 
&= ~LB_D6_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D6 vblank\n");
                                }
diff --git a/drivers/gpu/drm/radeon/evergreen.c 
b/drivers/gpu/drm/radeon/evergreen.c
index d97ba36..b2bff58 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1317,7 +1317,6 @@ void evergreen_page_flip(struct radeon_device *rdev, int 
crtc_id, u64 crtc_base)
 {
        struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
        u32 tmp = RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset);
-       int i;

        /* Lock the graphics update lock */
        tmp |= EVERGREEN_GRPH_UPDATE_LOCK;
@@ -1334,14 +1333,6 @@ void evergreen_page_flip(struct radeon_device *rdev, int 
crtc_id, u64 crtc_base)
        WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + 
radeon_crtc->crtc_offset,
               (u32)crtc_base);

-       /* Wait for update_pending to go high. */
-       for (i = 0; i < rdev->usec_timeout; i++) {
-               if (RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset) & 
EVERGREEN_GRPH_SURFACE_UPDATE_PENDING)
-                       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 &= ~EVERGREEN_GRPH_UPDATE_LOCK;
        WREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset, tmp);
@@ -1353,15 +1344,12 @@ void evergreen_page_flip(struct radeon_device *rdev, 
int crtc_id, u64 crtc_base)
  * @rdev: radeon_device pointer
  * @crtc_id: crtc to check
  *
- * Returns the current update pending status.
+ * Dummy, vblank irq not used any more.
  */
 bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc_id)
 {
-       struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
-
-       /* Return current update_pending status: */
-       return !!(RREG32(EVERGREEN_GRPH_UPDATE + radeon_crtc->crtc_offset) &
-               EVERGREEN_GRPH_SURFACE_UPDATE_PENDING);
+       BUG();
+       return false;
 }

 /* get temperature in millidegrees */
@@ -4433,33 +4421,27 @@ int evergreen_irq_set(struct radeon_device *rdev)
                thermal_int |= THERM_INT_MASK_HIGH | THERM_INT_MASK_LOW;
        }

-       if (rdev->irq.crtc_vblank_int[0] ||
-           atomic_read(&rdev->irq.pflip[0])) {
+       if (rdev->irq.crtc_vblank_int[0]) {
                DRM_DEBUG("evergreen_irq_set: vblank 0\n");
                crtc1 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[1] ||
-           atomic_read(&rdev->irq.pflip[1])) {
+       if (rdev->irq.crtc_vblank_int[1]) {
                DRM_DEBUG("evergreen_irq_set: vblank 1\n");
                crtc2 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[2] ||
-           atomic_read(&rdev->irq.pflip[2])) {
+       if (rdev->irq.crtc_vblank_int[2]) {
                DRM_DEBUG("evergreen_irq_set: vblank 2\n");
                crtc3 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[3] ||
-           atomic_read(&rdev->irq.pflip[3])) {
+       if (rdev->irq.crtc_vblank_int[3]) {
                DRM_DEBUG("evergreen_irq_set: vblank 3\n");
                crtc4 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[4] ||
-           atomic_read(&rdev->irq.pflip[4])) {
+       if (rdev->irq.crtc_vblank_int[4]) {
                DRM_DEBUG("evergreen_irq_set: vblank 4\n");
                crtc5 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[5] ||
-           atomic_read(&rdev->irq.pflip[5])) {
+       if (rdev->irq.crtc_vblank_int[5]) {
                DRM_DEBUG("evergreen_irq_set: vblank 5\n");
                crtc6 |= VBLANK_INT_MASK;
        }
@@ -4793,8 +4775,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[0]))
-                                               radeon_crtc_handle_vblank(rdev, 
0);
                                        rdev->irq.stat_regs.evergreen.disp_int 
&= ~LB_D1_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D1 vblank\n");
                                }
@@ -4819,8 +4799,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[1]))
-                                               radeon_crtc_handle_vblank(rdev, 
1);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont &= ~LB_D2_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D2 vblank\n");
                                }
@@ -4845,8 +4823,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[2]))
-                                               radeon_crtc_handle_vblank(rdev, 
2);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont2 &= ~LB_D3_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D3 vblank\n");
                                }
@@ -4871,8 +4847,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[3]))
-                                               radeon_crtc_handle_vblank(rdev, 
3);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont3 &= ~LB_D4_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D4 vblank\n");
                                }
@@ -4897,8 +4871,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[4]))
-                                               radeon_crtc_handle_vblank(rdev, 
4);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont4 &= ~LB_D5_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D5 vblank\n");
                                }
@@ -4923,8 +4895,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[5]))
-                                               radeon_crtc_handle_vblank(rdev, 
5);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont5 &= ~LB_D6_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D6 vblank\n");
                                }
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 252d18a..92df9af 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -5835,33 +5835,27 @@ int si_irq_set(struct radeon_device *rdev)
                DRM_DEBUG("si_irq_set: sw int dma1\n");
                dma_cntl1 |= TRAP_ENABLE;
        }
-       if (rdev->irq.crtc_vblank_int[0] ||
-           atomic_read(&rdev->irq.pflip[0])) {
+       if (rdev->irq.crtc_vblank_int[0]) {
                DRM_DEBUG("si_irq_set: vblank 0\n");
                crtc1 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[1] ||
-           atomic_read(&rdev->irq.pflip[1])) {
+       if (rdev->irq.crtc_vblank_int[1]) {
                DRM_DEBUG("si_irq_set: vblank 1\n");
                crtc2 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[2] ||
-           atomic_read(&rdev->irq.pflip[2])) {
+       if (rdev->irq.crtc_vblank_int[2]) {
                DRM_DEBUG("si_irq_set: vblank 2\n");
                crtc3 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[3] ||
-           atomic_read(&rdev->irq.pflip[3])) {
+       if (rdev->irq.crtc_vblank_int[3]) {
                DRM_DEBUG("si_irq_set: vblank 3\n");
                crtc4 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[4] ||
-           atomic_read(&rdev->irq.pflip[4])) {
+       if (rdev->irq.crtc_vblank_int[4]) {
                DRM_DEBUG("si_irq_set: vblank 4\n");
                crtc5 |= VBLANK_INT_MASK;
        }
-       if (rdev->irq.crtc_vblank_int[5] ||
-           atomic_read(&rdev->irq.pflip[5])) {
+       if (rdev->irq.crtc_vblank_int[5]) {
                DRM_DEBUG("si_irq_set: vblank 5\n");
                crtc6 |= VBLANK_INT_MASK;
        }
@@ -6150,8 +6144,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[0]))
-                                               radeon_crtc_handle_vblank(rdev, 
0);
                                        rdev->irq.stat_regs.evergreen.disp_int 
&= ~LB_D1_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D1 vblank\n");
                                }
@@ -6176,8 +6168,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[1]))
-                                               radeon_crtc_handle_vblank(rdev, 
1);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont &= ~LB_D2_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D2 vblank\n");
                                }
@@ -6202,8 +6192,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[2]))
-                                               radeon_crtc_handle_vblank(rdev, 
2);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont2 &= ~LB_D3_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D3 vblank\n");
                                }
@@ -6228,8 +6216,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[3]))
-                                               radeon_crtc_handle_vblank(rdev, 
3);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont3 &= ~LB_D4_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D4 vblank\n");
                                }
@@ -6254,8 +6240,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[4]))
-                                               radeon_crtc_handle_vblank(rdev, 
4);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont4 &= ~LB_D5_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D5 vblank\n");
                                }
@@ -6280,8 +6264,6 @@ restart_ih:
                                                rdev->pm.vblank_sync = true;
                                                
wake_up(&rdev->irq.vblank_queue);
                                        }
-                                       if (atomic_read(&rdev->irq.pflip[5]))
-                                               radeon_crtc_handle_vblank(rdev, 
5);
                                        
rdev->irq.stat_regs.evergreen.disp_int_cont5 &= ~LB_D6_VBLANK_INTERRUPT;
                                        DRM_DEBUG("IH: D6 vblank\n");
                                }
-- 
1.9.1

Reply via email to