[media] uvcvideo: Disable hardware timestamps by default
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 27 Jul 2015 14:06:48 +0000 (11:06 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 25 Sep 2015 20:23:26 +0000 (17:23 -0300)
The hardware timestamping implementation has been reported as not
working correctly on at least the Logitech C920. Until this can be
fixed, disable it by default.

Reported-by: Peter Rabbitson <rabbit@rabbit.us>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/usb/uvc/uvc_driver.c
drivers/media/usb/uvc/uvc_video.c
drivers/media/usb/uvc/uvcvideo.h

index 4b5b3e8..d11fd6a 100644 (file)
@@ -32,6 +32,7 @@
 #define DRIVER_DESC            "USB Video Class driver"
 
 unsigned int uvc_clock_param = CLOCK_MONOTONIC;
+unsigned int uvc_hw_timestamps_param;
 unsigned int uvc_no_drop_param;
 static unsigned int uvc_quirks_param = -1;
 unsigned int uvc_trace_param;
@@ -2078,6 +2079,8 @@ static int uvc_clock_param_set(const char *val, struct kernel_param *kp)
 module_param_call(clock, uvc_clock_param_set, uvc_clock_param_get,
                  &uvc_clock_param, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(clock, "Video buffers timestamp clock");
+module_param_named(hwtimestamps, uvc_hw_timestamps_param, uint, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(hwtimestamps, "Use hardware timestamps");
 module_param_named(nodrop, uvc_no_drop_param, uint, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(nodrop, "Don't drop incomplete frames");
 module_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR);
index f839654..1c4a117 100644 (file)
@@ -623,6 +623,9 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
        u32 rem;
        u64 y;
 
+       if (!uvc_hw_timestamps_param)
+               return;
+
        spin_lock_irqsave(&clock->lock, flags);
 
        if (clock->count < clock->size)
index 816dd1a..1374bd9 100644 (file)
@@ -593,6 +593,7 @@ extern unsigned int uvc_clock_param;
 extern unsigned int uvc_no_drop_param;
 extern unsigned int uvc_trace_param;
 extern unsigned int uvc_timeout_param;
+extern unsigned int uvc_hw_timestamps_param;
 
 #define uvc_trace(flag, msg...) \
        do { \