From 4fb8137c43ebc0f5bc0dde6b64faa9dd1b1d7970 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Moine?= <moinejf@free.fr>
Date: Sat, 24 Mar 2012 09:28:39 -0300
Subject: [media] gspca - sn9c20x: Don't do sensor update before the capture is
 started
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Telling the bridge to update the sensor when setting the exposure or the gain
is not needed when the image transfer is not started.

Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/media/video/gspca/sn9c20x.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'drivers')

diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index c5b42e4ac9b4..da2904a891aa 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -1644,9 +1644,12 @@ static void set_exposure(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 	u8 exp[8] = {sd->i2c_intf, sd->i2c_addr,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x1e};
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x10};
 	int expo;
 
+	if (gspca_dev->streaming)
+		exp[7] = 0x1e;
+
 	expo = sd->ctrls[EXPOSURE].val;
 	switch (sd->sensor) {
 	case SENSOR_OV7660:
@@ -1683,9 +1686,12 @@ static void set_gain(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 	u8 gain[8] = {sd->i2c_intf, sd->i2c_addr,
-				0x00, 0x00, 0x00, 0x00, 0x00, 0x1d};
+				0x00, 0x00, 0x00, 0x00, 0x00, 0x10};
 	int g;
 
+	if (gspca_dev->streaming)
+		gain[7] = 0x15;		/* or 1d ? */
+
 	g = sd->ctrls[GAIN].val;
 	switch (sd->sensor) {
 	case SENSOR_OV7660:
-- 
cgit v1.2.2