drm: Simplify return value of drm_get_last_vbltimestamp
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 10 Sep 2014 15:36:10 +0000 (17:36 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 11 Sep 2014 11:38:48 +0000 (13:38 +0200)
Imo u32 hints at a register value, but in reality all callers only
care whether the sampled timestamp is precise or not. So give them
just a bool.

Also move the declaration out of drmP.h, it's only used in drm_irq.c.

v2: Also drop the EXPORT_SYMBOL, spotted by Mario.

Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
drivers/gpu/drm/drm_irq.c
include/drm/drmP.h

index ad699b7292784d673ec6873e2aa50ab741d9532e..15f748c7fa7ebfd2bcaf4688b2a6a7a7f008f8e9 100644 (file)
  */
 #define DRM_REDUNDANT_VBLIRQ_THRESH_NS 1000000
 
+static bool
+drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
+                         struct timeval *tvblank, unsigned flags);
+
 /**
  * drm_update_vblank_count - update the master vblank counter
  * @dev: DRM device
@@ -74,7 +78,8 @@
 static void drm_update_vblank_count(struct drm_device *dev, int crtc)
 {
        struct drm_vblank_crtc *vblank = &dev->vblank[crtc];
-       u32 cur_vblank, diff, tslot, rc;
+       u32 cur_vblank, diff, tslot;
+       bool rc;
        struct timeval t_vblank;
 
        /*
@@ -132,7 +137,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
        unsigned long irqflags;
        u32 vblcount;
        s64 diff_ns;
-       int vblrc;
+       bool vblrc;
        struct timeval tvblank;
        int count = DRM_TIMESTAMP_MAXRETRIES;
 
@@ -156,7 +161,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
         * vblank interrupt is disabled.
         */
        if (!vblank->enabled &&
-           drm_get_last_vbltimestamp(dev, crtc, &tvblank, 0) > 0) {
+           drm_get_last_vbltimestamp(dev, crtc, &tvblank, 0)) {
                drm_update_vblank_count(dev, crtc);
                spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags);
                return;
@@ -204,7 +209,7 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc)
         * available. In that case we can't account for this and just
         * hope for the best.
         */
-       if ((vblrc > 0) && (abs64(diff_ns) > 1000000)) {
+       if (vblrc && (abs64(diff_ns) > 1000000)) {
                /* Store new timestamp in ringbuffer. */
                vblanktimestamp(dev, crtc, vblcount + 1) = tvblank;
 
@@ -781,10 +786,11 @@ static struct timeval get_drm_timestamp(void)
  * call, i.e., it isn't very precisely locked to the true vblank.
  *
  * Returns:
- * Non-zero if timestamp is considered to be very precise, zero otherwise.
+ * True if timestamp is considered to be very precise, false otherwise.
  */
-u32 drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
-                             struct timeval *tvblank, unsigned flags)
+static bool
+drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
+                         struct timeval *tvblank, unsigned flags)
 {
        int ret;
 
@@ -796,7 +802,7 @@ u32 drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
                ret = dev->driver->get_vblank_timestamp(dev, crtc, &max_error,
                                                        tvblank, flags);
                if (ret > 0)
-                       return (u32) ret;
+                       return true;
        }
 
        /* GPU high precision timestamp query unsupported or failed.
@@ -804,9 +810,8 @@ u32 drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
         */
        *tvblank = get_drm_timestamp();
 
-       return 0;
+       return false;
 }
-EXPORT_SYMBOL(drm_get_last_vbltimestamp);
 
 /**
  * drm_vblank_count - retrieve "cooked" vblank counter value
index 17a5c10474bdc607826bec2b3a9c1f7641775683..a97307525c2dc029b39e10f80be04912b2deb897 100644 (file)
@@ -1320,8 +1320,6 @@ extern void drm_crtc_vblank_off(struct drm_crtc *crtc);
 extern void drm_crtc_vblank_on(struct drm_crtc *crtc);
 extern void drm_vblank_cleanup(struct drm_device *dev);
 
-extern u32 drm_get_last_vbltimestamp(struct drm_device *dev, int crtc,
-                                    struct timeval *tvblank, unsigned flags);
 extern int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
                                                 int crtc, int *max_error,
                                                 struct timeval *vblank_time,