summaryrefslogtreecommitdiffstats
path: root/drivers/media/pci/zoran
diff options
context:
space:
mode:
authorAbhilash Jindal <klock.android@gmail.com>2015-08-11 17:09:49 +0200
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-08-16 18:29:31 +0200
commite4d45dd81e67f9fe0e1af44bddd53c3d4eb061ea (patch)
treea68e254fa804ffa5b60ff11949d42a1aa5b824a9 /drivers/media/pci/zoran
parent[media] i2c/adv7511: Fix license, set to GPL v2 (diff)
downloadlinux-e4d45dd81e67f9fe0e1af44bddd53c3d4eb061ea.tar.xz
linux-e4d45dd81e67f9fe0e1af44bddd53c3d4eb061ea.zip
[media] zoran: Use monotonic time
Wall time obtained from do_gettimeofday is susceptible to sudden jumps due to user setting the time or due to NTP. Monotonic time is constantly increasing time better suited for comparing two timestamps. Signed-off-by: Abhilash Jindal <klock.android@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/pci/zoran')
-rw-r--r--drivers/media/pci/zoran/zoran_device.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/media/pci/zoran/zoran_device.c b/drivers/media/pci/zoran/zoran_device.c
index 40119b3c52c1..4d47ddac97dc 100644
--- a/drivers/media/pci/zoran/zoran_device.c
+++ b/drivers/media/pci/zoran/zoran_device.c
@@ -31,6 +31,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <linux/interrupt.h>
#include <linux/proc_fs.h>
@@ -181,20 +182,11 @@ dump_guests (struct zoran *zr)
}
}
-static inline unsigned long
-get_time (void)
-{
- struct timeval tv;
-
- do_gettimeofday(&tv);
- return (1000000 * tv.tv_sec + tv.tv_usec);
-}
-
void
detect_guest_activity (struct zoran *zr)
{
int timeout, i, j, res, guest[8], guest0[8], change[8][3];
- unsigned long t0, t1;
+ ktime_t t0, t1;
dump_guests(zr);
printk(KERN_INFO "%s: Detecting guests activity, please wait...\n",
@@ -205,15 +197,15 @@ detect_guest_activity (struct zoran *zr)
timeout = 0;
j = 0;
- t0 = get_time();
+ t0 = ktime_get();
while (timeout < 10000) {
udelay(10);
timeout++;
for (i = 1; (i < 8) && (j < 8); i++) {
res = post_office_read(zr, i, 0);
if (res != guest[i]) {
- t1 = get_time();
- change[j][0] = (t1 - t0);
+ t1 = ktime_get();
+ change[j][0] = ktime_to_us(ktime_sub(t1, t0));
t0 = t1;
change[j][1] = i;
change[j][2] = res;