summaryrefslogtreecommitdiff
path: root/linux/drivers/media/video/saa7164/saa7164-cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/video/saa7164/saa7164-cmd.c')
-rw-r--r--linux/drivers/media/video/saa7164/saa7164-cmd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/linux/drivers/media/video/saa7164/saa7164-cmd.c b/linux/drivers/media/video/saa7164/saa7164-cmd.c
index 171ef116f..cd3af4d43 100644
--- a/linux/drivers/media/video/saa7164/saa7164-cmd.c
+++ b/linux/drivers/media/video/saa7164/saa7164-cmd.c
@@ -234,6 +234,12 @@ int saa7164_cmd_wait(struct saa7164_dev *dev, u8 seqno)
__func__, seqno, dev->cmds[seqno].signalled);
/* Wait for signalled to be flagged or timeout */
+ /* In a highly stressed system this can easily extend
+ * into multiple seconds before the deferred worker
+ * is scheduled, and we're woken up via signal.
+ * We typically are signalled in < 50ms but it can
+ * take MUCH longer.
+ */
wait_event_timeout(*q, dev->cmds[seqno].signalled, (HZ * waitsecs));
r = time_before(jiffies, stamp + (HZ * waitsecs));
if (r)