[media] v4l2-dv-timings: print refresh rate with better precision
authorPrashant Laddha <prladdha@cisco.com>
Fri, 12 Jun 2015 11:48:10 +0000 (08:48 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 6 Jul 2015 11:25:53 +0000 (08:25 -0300)
In many cases, refresh rate is not exact integer. In such cases,
fraction was lost and it used to print, say, 59 in case of 59.94.
Now, capturing the fraction up to 2 decimal places.

Signed-off-by: Prashant Laddha <prladdha@cisco.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/v4l2-core/v4l2-dv-timings.c

index 2c7b9fdfa0af5f23f9236e71deba8d03e3b58ef1..6a83d61916840347387f8fa454bbe18e1c3d6f57 100644 (file)
@@ -256,6 +256,7 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix,
 {
        const struct v4l2_bt_timings *bt = &t->bt;
        u32 htot, vtot;
+       u32 fps;
 
        if (t->type != V4L2_DV_BT_656_1120)
                return;
@@ -265,13 +266,15 @@ void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix,
        if (bt->interlaced)
                vtot /= 2;
 
+       fps = (htot * vtot) > 0 ? div_u64((100 * (u64)bt->pixelclock),
+                                 (htot * vtot)) : 0;
+
        if (prefix == NULL)
                prefix = "";
 
-       pr_info("%s: %s%ux%u%s%u (%ux%u)\n", dev_prefix, prefix,
+       pr_info("%s: %s%ux%u%s%u.%u (%ux%u)\n", dev_prefix, prefix,
                bt->width, bt->height, bt->interlaced ? "i" : "p",
-               (htot * vtot) > 0 ? ((u32)bt->pixelclock / (htot * vtot)) : 0,
-               htot, vtot);
+               fps / 100, fps % 100, htot, vtot);
 
        if (!detailed)
                return;