From 4c08f6be639a0705673533d822a7d6df6b8a3715 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Mon, 10 Dec 2012 08:35:09 -0300 Subject: [PATCH] --- yaml --- r: 357180 b: refs/heads/master c: 87739868944919beb4e6b3860c74355a114a54a1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/pci/saa7134/saa7134-video.c | 13 +++++++++++++ trunk/drivers/media/pci/saa7134/saa7134.h | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5611f58e3868..bffdacd797a9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e8d4237325a475b02594d1fd85bb67983f7d57b9 +refs/heads/master: 87739868944919beb4e6b3860c74355a114a54a1 diff --git a/trunk/drivers/media/pci/saa7134/saa7134-video.c b/trunk/drivers/media/pci/saa7134/saa7134-video.c index 3abf52711e13..7c503fb68526 100644 --- a/trunk/drivers/media/pci/saa7134/saa7134-video.c +++ b/trunk/drivers/media/pci/saa7134/saa7134-video.c @@ -2248,6 +2248,17 @@ static int saa7134_streamon(struct file *file, void *priv, if (!res_get(dev, fh, res)) return -EBUSY; + /* The SAA7134 has a 1K FIFO; the datasheet suggests that when + * configured conservatively, there's 22 usec of buffering for video. + * We therefore request a DMA latency of 20 usec, giving us 2 usec of + * margin in case the FIFO is configured differently to the datasheet. + * Unfortunately, I lack register-level documentation to check the + * Linux FIFO setup and confirm the perfect value. + */ + pm_qos_add_request(&fh->qos_request, + PM_QOS_CPU_DMA_LATENCY, + 20); + return videobuf_streamon(saa7134_queue(fh)); } @@ -2259,6 +2270,8 @@ static int saa7134_streamoff(struct file *file, void *priv, struct saa7134_dev *dev = fh->dev; int res = saa7134_resource(fh); + pm_qos_remove_request(&fh->qos_request); + err = videobuf_streamoff(saa7134_queue(fh)); if (err < 0) return err; diff --git a/trunk/drivers/media/pci/saa7134/saa7134.h b/trunk/drivers/media/pci/saa7134/saa7134.h index c24b6512bd8f..0a3feaa8589b 100644 --- a/trunk/drivers/media/pci/saa7134/saa7134.h +++ b/trunk/drivers/media/pci/saa7134/saa7134.h @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -469,6 +470,7 @@ struct saa7134_fh { enum v4l2_buf_type type; unsigned int resources; enum v4l2_priority prio; + struct pm_qos_request qos_request; /* video overlay */ struct v4l2_window win;