From 1554dfda02645a879e4e6b7e457241b3c8fa4da5 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 26 Sep 2015 16:41:18 +0100 Subject: [PATCH] media: uvcvideo: Disable hardware timestamps by default (Closes: #794327) --- debian/changelog | 6 ++ ...isable-hardware-timestamps-by-defaul.patch | 66 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 73 insertions(+) create mode 100644 debian/patches/bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch diff --git a/debian/changelog b/debian/changelog index 101c90a22..ee76022fe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +linux (4.2.1-2) UNRELEASED; urgency=medium + + * media: uvcvideo: Disable hardware timestamps by default (Closes: #794327) + + -- Ben Hutchings Sat, 26 Sep 2015 16:40:51 +0100 + linux (4.2.1-1) unstable; urgency=medium * New upstream stable update: diff --git a/debian/patches/bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch b/debian/patches/bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch new file mode 100644 index 000000000..1ac0b528c --- /dev/null +++ b/debian/patches/bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch @@ -0,0 +1,66 @@ +From: Laurent Pinchart +Date: Mon, 27 Jul 2015 11:06:48 -0300 +Subject: [media] uvcvideo: Disable hardware timestamps by default +Origin: http://git.linuxtv.org/cgit.cgi/media_tree.git/commit?id=5d0fd3c806b9e932010931ae67dbb482020e0882 +Bug-Debian: https://bugs.debian.org/794327 + +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 +Signed-off-by: Laurent Pinchart +Signed-off-by: Mauro Carvalho Chehab +--- + drivers/media/usb/uvc/uvc_driver.c | 3 +++ + drivers/media/usb/uvc/uvc_video.c | 3 +++ + drivers/media/usb/uvc/uvcvideo.h | 1 + + 3 files changed, 7 insertions(+) + +diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c +index 4b5b3e8..d11fd6a 100644 +--- a/drivers/media/usb/uvc/uvc_driver.c ++++ b/drivers/media/usb/uvc/uvc_driver.c +@@ -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); +diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c +index f839654..1c4a117 100644 +--- a/drivers/media/usb/uvc/uvc_video.c ++++ b/drivers/media/usb/uvc/uvc_video.c +@@ -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) +diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h +index 816dd1a..1374bd9 100644 +--- a/drivers/media/usb/uvc/uvcvideo.h ++++ b/drivers/media/usb/uvc/uvcvideo.h +@@ -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 { \ diff --git a/debian/patches/series b/debian/patches/series index d65aad0fc..38971d26f 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -96,3 +96,4 @@ bugfix/all/vfs-test-for-and-handle-paths-that-are-unreachable-f.patch bugfix/all/rds-verify-the-underlying-transport-exists-before-cr.patch bugfix/all/e1000e-fix-tight-loop-implementation-of-systime-read.patch bugfix/all/usb-whiteheat-fix-potential-null-deref-at-probe.patch +bugfix/all/media-uvcvideo-disable-hardware-timestamps-by-defaul.patch