mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-19 12:24:34 +08:00
media: solo6x10: use ktime_get_ts64() for time sync
solo6x10 correctly deals with time stamps and will never suffer from overflows, but it uses the deprecated 'struct timespec' type and 'ktime_get_ts()' interface to read the monotonic clock. This changes it to use ktime_get_ts64() instead, so we can eventually remove ktime_get_ts(). Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Ismael Luceno <ismael@iodev.co.uk> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
f7d12fea16
commit
6c542426b6
@ -47,18 +47,19 @@ MODULE_PARM_DESC(full_eeprom, "Allow access to full 128B EEPROM (dangerous)");
|
||||
|
||||
static void solo_set_time(struct solo_dev *solo_dev)
|
||||
{
|
||||
struct timespec ts;
|
||||
struct timespec64 ts;
|
||||
|
||||
ktime_get_ts(&ts);
|
||||
ktime_get_ts64(&ts);
|
||||
|
||||
solo_reg_write(solo_dev, SOLO_TIMER_SEC, ts.tv_sec);
|
||||
solo_reg_write(solo_dev, SOLO_TIMER_USEC, ts.tv_nsec / NSEC_PER_USEC);
|
||||
/* no overflow because we use monotonic timestamps */
|
||||
solo_reg_write(solo_dev, SOLO_TIMER_SEC, (u32)ts.tv_sec);
|
||||
solo_reg_write(solo_dev, SOLO_TIMER_USEC, (u32)ts.tv_nsec / NSEC_PER_USEC);
|
||||
}
|
||||
|
||||
static void solo_timer_sync(struct solo_dev *solo_dev)
|
||||
{
|
||||
u32 sec, usec;
|
||||
struct timespec ts;
|
||||
struct timespec64 ts;
|
||||
long diff;
|
||||
|
||||
if (solo_dev->type != SOLO_DEV_6110)
|
||||
@ -72,11 +73,11 @@ static void solo_timer_sync(struct solo_dev *solo_dev)
|
||||
sec = solo_reg_read(solo_dev, SOLO_TIMER_SEC);
|
||||
usec = solo_reg_read(solo_dev, SOLO_TIMER_USEC);
|
||||
|
||||
ktime_get_ts(&ts);
|
||||
ktime_get_ts64(&ts);
|
||||
|
||||
diff = (long)ts.tv_sec - (long)sec;
|
||||
diff = (s32)ts.tv_sec - (s32)sec;
|
||||
diff = (diff * 1000000)
|
||||
+ ((long)(ts.tv_nsec / NSEC_PER_USEC) - (long)usec);
|
||||
+ ((s32)(ts.tv_nsec / NSEC_PER_USEC) - (s32)usec);
|
||||
|
||||
if (diff > 1000 || diff < -1000) {
|
||||
solo_set_time(solo_dev);
|
||||
|
Loading…
Reference in New Issue
Block a user