From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Avoid confusion and don't use 'vbl_status' as both the
.get_scanout_position() return value and the return value from
drm_calc_vbltimestamp_from_scanoutpos().

While at it make 'vbl_status' unsigned and print it as hex in the
debug prints since it's a bitmask.

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/drm_irq.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 93fe582..aad4f1d 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -695,10 +695,10 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct 
drm_device *dev,
 {
        struct timeval tv_etime;
        ktime_t stime, etime;
-       int vbl_status;
+       unsigned int vbl_status;
+       int ret = DRM_VBLANKTIME_SCANOUTPOS_METHOD;
        int vpos, hpos, i;
        int delta_ns, duration_ns;
-       bool invbl;

        if (pipe >= dev->num_crtcs) {
                DRM_ERROR("Invalid crtc %u\n", pipe);
@@ -738,7 +738,7 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device 
*dev,

                /* Return as no-op if scanout query unsupported or failed. */
                if (!(vbl_status & DRM_SCANOUTPOS_VALID)) {
-                       DRM_DEBUG("crtc %u : scanoutpos query failed [%d].\n",
+                       DRM_DEBUG("crtc %u : scanoutpos query failed [0x%x].\n",
                                  pipe, vbl_status);
                        return -EIO;
                }
@@ -765,7 +765,8 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device 
*dev,
         * within vblank area, counting down the number of lines until
         * start of scanout.
         */
-       invbl = vbl_status & DRM_SCANOUTPOS_IN_VBLANK;
+       if (vbl_status & DRM_SCANOUTPOS_IN_VBLANK)
+               ret |= DRM_VBLANKTIME_IN_VBLANK;

        /* Convert scanout position into elapsed time at raw_time query
         * since start of scanout at first display scanline. delta_ns
@@ -788,17 +789,13 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct 
drm_device *dev,
                etime = ktime_sub_ns(etime, delta_ns);
        *vblank_time = ktime_to_timeval(etime);

-       DRM_DEBUG("crtc %u : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d 
rep]\n",
-                 pipe, (int)vbl_status, hpos, vpos,
+       DRM_DEBUG("crtc %u : v 0x%x p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d 
rep]\n",
+                 pipe, vbl_status, hpos, vpos,
                  (long)tv_etime.tv_sec, (long)tv_etime.tv_usec,
                  (long)vblank_time->tv_sec, (long)vblank_time->tv_usec,
                  duration_ns/1000, i);

-       vbl_status = DRM_VBLANKTIME_SCANOUTPOS_METHOD;
-       if (invbl)
-               vbl_status |= DRM_VBLANKTIME_IN_VBLANK;
-
-       return vbl_status;
+       return ret;
 }
 EXPORT_SYMBOL(drm_calc_vbltimestamp_from_scanoutpos);

-- 
2.4.6

Reply via email to