Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (7022): Fix timestamp presentation on vivi driver

Due to date overflow, vivi were not working fine anymore.

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

+8 -7
+8 -7
drivers/media/video/vivi.c
··· 173 173 struct vivi_dmaqueue vidq; 174 174 175 175 /* Several counters */ 176 - int h, m, s, us, jiffies; 176 + int h, m, s, ms; 177 + unsigned long jiffies; 177 178 char timestr[13]; 178 179 179 180 int mv_count; /* Controls bars movement */ ··· 349 348 350 349 /* Updates stream time */ 351 350 352 - dev->us += jiffies_to_usecs(jiffies-dev->jiffies); 351 + dev->ms += jiffies_to_msecs(jiffies-dev->jiffies); 353 352 dev->jiffies = jiffies; 354 - if (dev->us >= 1000000) { 355 - dev->us -= 1000000; 353 + if (dev->ms >= 1000) { 354 + dev->ms -= 1000; 356 355 dev->s++; 357 356 if (dev->s >= 60) { 358 357 dev->s -= 60; ··· 366 365 } 367 366 } 368 367 sprintf(dev->timestr, "%02d:%02d:%02d:%03d", 369 - dev->h, dev->m, dev->s, (dev->us + 500) / 1000); 368 + dev->h, dev->m, dev->s, dev->ms); 370 369 371 370 dprintk(dev, 2, "vivifill at %s: Buffer 0x%08lx size= %d\n", 372 371 dev->timestr, (unsigned long)tmpbuf, pos); ··· 1074 1073 dev->h = 0; 1075 1074 dev->m = 0; 1076 1075 dev->s = 0; 1077 - dev->us = 0; 1076 + dev->ms = 0; 1078 1077 dev->mv_count = 0; 1079 1078 dev->jiffies = jiffies; 1080 1079 sprintf(dev->timestr, "%02d:%02d:%02d:%03d", 1081 - dev->h, dev->m, dev->s, (dev->us + 500) / 1000); 1080 + dev->h, dev->m, dev->s, dev->ms); 1082 1081 1083 1082 videobuf_queue_vmalloc_init(&fh->vb_vidq, &vivi_video_qops, 1084 1083 NULL, &dev->slock, fh->type, V4L2_FIELD_INTERLACED,