rpms/kernel/F-13 linux-2.6-v4l-dvb-gspca-fixes.patch, NONE, 1.1 kernel.spec, 1.1951, 1.1952 linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch, 1.2, 1.3

Hans de Goede jwrdegoede at fedoraproject.org
Fri Mar 19 12:01:25 UTC 2010


Author: jwrdegoede

Update of /cvs/pkgs/rpms/kernel/F-13
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv454

Modified Files:
	kernel.spec linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch 
Added Files:
	linux-2.6-v4l-dvb-gspca-fixes.patch 
Log Message:
* Fri Mar 19 2010 Hans de Goede <hdegoede at redhat.com>
- Cherry pick various webcam driver fixes
  (#571188, #572302, #572373)


linux-2.6-v4l-dvb-gspca-fixes.patch:
 Documentation/video4linux/gspca.txt   |    1 
 b/Documentation/video4linux/gspca.txt |    4 
 b/drivers/media/video/gspca/Kconfig   |    6 
 b/drivers/media/video/gspca/ov534.c   |  100 ------
 b/drivers/media/video/gspca/sn9c20x.c |    6 
 b/drivers/media/video/gspca/sonixj.c  |   21 +
 b/drivers/media/video/gspca/spca508.c |    1 
 b/drivers/media/video/gspca/spca561.c |    1 
 drivers/media/video/gspca/ov534.c     |  521 +++++++++++++++++++---------------
 drivers/media/video/gspca/sn9c20x.c   |  322 ++++++++++-----------
 drivers/media/video/gspca/sonixj.c    |  440 ++++++++++++++++++++++++----
 drivers/media/video/gspca/spca561.c   |   58 ++-
 12 files changed, 894 insertions(+), 587 deletions(-)

--- NEW FILE linux-2.6-v4l-dvb-gspca-fixes.patch ---
From: German Galkin <galkinga at gmail.com>
Date: Sun, 7 Mar 2010 09:19:02 +0000 (-0300)
Subject: V4L/DVB: gspca - sn9c20x: Fix exposure control for HV7131R sensor
X-Git-Url: http://git.linuxtv.org/v4l-dvb.git?a=commitdiff_plain;h=0c05cee69fbef74a08f4f9804f0a3ca7ba39a3e2

V4L/DVB: gspca - sn9c20x: Fix exposure control for HV7131R sensor

Make the range of exposure values (0-0x1770) distribute evenly through
HV7131R's exposure control bytes.

Signed-off-by: German Galkin <galkinga at gmail.com>
Signed-off-by: Jean-François Moine <moinejf at free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
---

diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 4a1bc08..dce5ef8 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -1654,9 +1654,9 @@ static int set_exposure(struct gspca_dev *gspca_dev)
 	case SENSOR_HV7131R:
 		exp[0] |= (4 << 4);
 		exp[2] = 0x25;
-		exp[3] = ((sd->exposure * 0xffffff) / 0xffff) >> 16;
-		exp[4] = ((sd->exposure * 0xffffff) / 0xffff) >> 8;
-		exp[5] = ((sd->exposure * 0xffffff) / 0xffff) & 0xff;
+		exp[3] = (sd->exposure >> 5) & 0xff;
+		exp[4] = (sd->exposure << 3) & 0xff;
+		exp[5] = 0;
 		break;
 	default:
 		return 0;
>From 1f6d33db111022345a85d8f441a22a5a46fc8ca2 Mon Sep 17 00:00:00 2001
From: Brian Johnson <brijohn at gmail.com>
Date: Tue, 9 Mar 2010 19:53:05 -0500
Subject: [PATCH] gspca - sn9c20x: use gspca's input device handling

Drop custom code for handling the input button in
favor of using gspca's input hanlding mechinism.
---
 drivers/media/video/gspca/Kconfig   |    6 --
 drivers/media/video/gspca/sn9c20x.c |  145 ++++++++---------------------------
 2 files changed, 33 insertions(+), 118 deletions(-)

diff --git a/drivers/media/video/gspca/Kconfig b/drivers/media/video/gspca/Kconfig
index e0060c1..5d920e5 100644
--- a/drivers/media/video/gspca/Kconfig
+++ b/drivers/media/video/gspca/Kconfig
@@ -172,12 +172,6 @@ config USB_GSPCA_SN9C20X
 	 To compile this driver as a module, choose M here: the
 	 module will be called gspca_sn9c20x.
 
-config USB_GSPCA_SN9C20X_EVDEV
-	bool "Enable evdev support"
-	depends on USB_GSPCA_SN9C20X && INPUT
-	---help---
-	  Say Y here in order to enable evdev support for sn9c20x webcam button.
-
 config USB_GSPCA_SONIXB
 	tristate "SONIX Bayer USB Camera Driver"
 	depends on VIDEO_V4L2 && USB_GSPCA
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index dce5ef8..d2a4902 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -18,10 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
-#include <linux/kthread.h>
-#include <linux/freezer.h>
-#include <linux/usb/input.h>
+#ifdef CONFIG_INPUT
 #include <linux/input.h>
 #endif
 
@@ -54,6 +51,9 @@ MODULE_LICENSE("GPL");
 #define SENSOR_HV7131R	10
 #define SENSOR_MT9VPRB	20
 
+/* camera flags */
+#define HAS_BUTTON	0x1
+
 /* specific webcam descriptor */
 struct sd {
 	struct gspca_dev gspca_dev;
@@ -87,11 +87,7 @@ struct sd {
 	u8 *jpeg_hdr;
 	u8 quality;
 
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
-	struct input_dev *input_dev;
-	u8 input_gpio;
-	struct task_struct *input_task;
-#endif
+	u8 flags;
 };
 
 struct i2c_reg_u8 {
@@ -1420,87 +1416,6 @@ static int hv7131r_init_sensor(struct gspca_dev *gspca_dev)
 	return 0;
 }
 
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
-static int input_kthread(void *data)
-{
-	struct gspca_dev *gspca_dev = (struct gspca_dev *)data;
-	struct sd *sd = (struct sd *) gspca_dev;
-
-	DECLARE_WAIT_QUEUE_HEAD(wait);
-	set_freezable();
-	for (;;) {
-		if (kthread_should_stop())
-			break;
-
-		if (reg_r(gspca_dev, 0x1005, 1) < 0)
-			continue;
-
-		input_report_key(sd->input_dev,
-				 KEY_CAMERA,
-				 gspca_dev->usb_buf[0] & sd->input_gpio);
-		input_sync(sd->input_dev);
-
-		wait_event_freezable_timeout(wait,
-					     kthread_should_stop(),
-					     msecs_to_jiffies(100));
-	}
-	return 0;
-}
-
-
-static int sn9c20x_input_init(struct gspca_dev *gspca_dev)
-{
-	struct sd *sd = (struct sd *) gspca_dev;
-	if (sd->input_gpio == 0)
-		return 0;
-
-	sd->input_dev = input_allocate_device();
-	if (!sd->input_dev)
-		return -ENOMEM;
-
-	sd->input_dev->name = "SN9C20X Webcam";
-
-	sd->input_dev->phys = kasprintf(GFP_KERNEL, "usb-%s-%s",
-					 gspca_dev->dev->bus->bus_name,
-					 gspca_dev->dev->devpath);
-
-	if (!sd->input_dev->phys)
-		return -ENOMEM;
-
-	usb_to_input_id(gspca_dev->dev, &sd->input_dev->id);
-	sd->input_dev->dev.parent = &gspca_dev->dev->dev;
-
-	set_bit(EV_KEY, sd->input_dev->evbit);
-	set_bit(KEY_CAMERA, sd->input_dev->keybit);
-
-	if (input_register_device(sd->input_dev))
-		return -EINVAL;
-
-	sd->input_task = kthread_run(input_kthread, gspca_dev, "sn9c20x/%s-%s",
-				     gspca_dev->dev->bus->bus_name,
-				     gspca_dev->dev->devpath);
-
-	if (IS_ERR(sd->input_task))
-		return -EINVAL;
-
-	return 0;
-}
-
-static void sn9c20x_input_cleanup(struct gspca_dev *gspca_dev)
-{
-	struct sd *sd = (struct sd *) gspca_dev;
-	if (sd->input_task != NULL && !IS_ERR(sd->input_task))
-		kthread_stop(sd->input_task);
-
-	if (sd->input_dev != NULL) {
-		input_unregister_device(sd->input_dev);
-		kfree(sd->input_dev->phys);
-		input_free_device(sd->input_dev);
-		sd->input_dev = NULL;
-	}
-}
-#endif
-
 static int set_cmatrix(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
@@ -2004,6 +1919,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
 
 	sd->sensor = (id->driver_info >> 8) & 0xff;
 	sd->i2c_addr = id->driver_info & 0xff;
+	sd->flags = (id->driver_info >> 16) & 0xff;
 
 	switch (sd->sensor) {
 	case SENSOR_MT9M111:
@@ -2038,11 +1954,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
 
 	sd->quality = 95;
[...2774 lines suppressed...]
+	else
+		PDEBUG(D_PROBE, "Unknown sensor ID %02x%02x",
+			gspca_dev->usb_buf[3],
+			gspca_dev->usb_buf[4]);
+}
+
 static void bridge_init(struct gspca_dev *gspca_dev,
 			  const u8 *sn9c1xx)
 {
@@ -1374,8 +1592,10 @@ static void bridge_init(struct gspca_dev *gspca_dev,
 	reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2);
 	reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5);
 	switch (sd->sensor) {
+	case SENSOR_GC0307:
 	case SENSOR_OV7660:
 	case SENSOR_PO1030:
+	case SENSOR_PO2030N:
 	case SENSOR_SP80708:
 		reg9a = reg9a_spec;
 		break;
@@ -1396,6 +1616,14 @@ static void bridge_init(struct gspca_dev *gspca_dev,
 		reg_w1(gspca_dev, 0x01, 0x42);
 		reg_w1(gspca_dev, 0x01, 0x42);
 		break;
+	case SENSOR_GC0307:
+		msleep(50);
+		reg_w1(gspca_dev, 0x01, 0x61);
+		reg_w1(gspca_dev, 0x17, 0x22);
+		reg_w1(gspca_dev, 0x01, 0x60);
+		reg_w1(gspca_dev, 0x01, 0x40);
+		msleep(50);
+		break;
 	case SENSOR_MT9V111:
 		reg_w1(gspca_dev, 0x01, 0x61);
 		reg_w1(gspca_dev, 0x17, 0x61);
@@ -1438,6 +1666,12 @@ static void bridge_init(struct gspca_dev *gspca_dev,
 		reg_w1(gspca_dev, 0x01, 0x60);
 		reg_w1(gspca_dev, 0x01, 0x40);
 		break;
+	case SENSOR_PO2030N:
+		reg_w1(gspca_dev, 0x01, 0x63);
+		reg_w1(gspca_dev, 0x17, 0x20);
+		reg_w1(gspca_dev, 0x01, 0x62);
+		reg_w1(gspca_dev, 0x01, 0x42);
+		break;
 	case SENSOR_OV7660:
 		/* fall thru */
 	case SENSOR_SP80708:
@@ -1545,6 +1779,9 @@ static int sd_init(struct gspca_dev *gspca_dev)
 		case SENSOR_OV7648:
 			ov7648_probe(gspca_dev);
 			break;
+		case SENSOR_PO2030N:
+			po2030n_probe(gspca_dev);
+			break;
 		}
 		regGpio[1] = 0x70;
 		reg_w(gspca_dev, 0x01, regGpio, 2);
@@ -1763,9 +2000,12 @@ static void setgamma(struct gspca_dev *gspca_dev)
 	case SENSOR_MT9V111:
 		gamma_base = gamma_spec_1;
 		break;
-	case SENSOR_SP80708:
+	case SENSOR_GC0307:
 		gamma_base = gamma_spec_2;
 		break;
+	case SENSOR_SP80708:
+		gamma_base = gamma_spec_3;
+		break;
 	default:
 		gamma_base = gamma_def;
 		break;
@@ -1956,9 +2196,15 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	static const u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
 	static const u8 CA_adcm1700[] =
 				{ 0x14, 0xec, 0x0a, 0xf6 };
+	static const u8 CA_po2030n[] =
+				{ 0x1e, 0xe2, 0x14, 0xec };
 	static const u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd };	/* MI0360 */
+	static const u8 CE_gc0307[] =
+				{ 0x32, 0xce, 0x2d, 0xd3 };
 	static const u8 CE_ov76xx[] =
 				{ 0x32, 0xdd, 0x32, 0xdd };
+	static const u8 CE_po2030n[] =
+				{ 0x14, 0xe7, 0x1e, 0xdd };
 
 	/* create the JPEG header */
 	sd->jpeg_hdr = kmalloc(JPEG_HDR_SZ, GFP_KERNEL);
@@ -2015,6 +2261,9 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	}
 	reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]);
 	switch (sd->sensor) {
+	case SENSOR_GC0307:
+		reg17 = 0xa2;
+		break;
 	case SENSOR_MT9V111:
 		reg17 = 0xe0;
 		break;
@@ -2029,6 +2278,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		reg17 = 0xa0;
 		break;
 	case SENSOR_PO1030:
+	case SENSOR_PO2030N:
 		reg17 = 0xa0;
 		break;
 	default:
@@ -2053,12 +2303,16 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	case SENSOR_SP80708:
 		reg_w1(gspca_dev, 0x9a, 0x05);
 		break;
+	case SENSOR_GC0307:
 	case SENSOR_MT9V111:
 		reg_w1(gspca_dev, 0x9a, 0x07);
 		break;
 	case SENSOR_OV7648:
 		reg_w1(gspca_dev, 0x9a, 0x0a);
 		break;
+	case SENSOR_PO2030N:
+		reg_w1(gspca_dev, 0x9a, 0x06);
+		break;
 	default:
 		reg_w1(gspca_dev, 0x9a, 0x08);
 		break;
@@ -2083,6 +2337,11 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		reg1 = 0x46;
 		reg17 = 0xe2;
 		break;
+	case SENSOR_GC0307:
+		init = gc0307_sensor_param1;
+		reg17 = 0xa2;
+		reg1 = 0x44;
+		break;
 	case SENSOR_MO4000:
 		if (mode) {
 /*			reg1 = 0x46;	 * 320 clk 48Mhz 60fp/s */
@@ -2132,6 +2391,11 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		reg17 = 0xa2;
 		reg1 = 0x44;
 		break;
+	case SENSOR_PO2030N:
+		init = po2030n_sensor_param1;
+		reg1 = 0x46;
+		reg17 = 0xa2;
+		break;
 	default:
 /*	case SENSOR_SP80708: */
 		init = sp80708_sensor_param1;
@@ -2151,10 +2415,18 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	}
 
 	reg_w(gspca_dev, 0xc0, C0, 6);
-	if (sd->sensor == SENSOR_ADCM1700)
+	switch (sd->sensor) {
+	case SENSOR_ADCM1700:
+	case SENSOR_GC0307:
 		reg_w(gspca_dev, 0xca, CA_adcm1700, 4);
-	else
+		break;
+	case SENSOR_PO2030N:
+		reg_w(gspca_dev, 0xca, CA_po2030n, 4);
+		break;
+	default:
 		reg_w(gspca_dev, 0xca, CA, 4);
+		break;
+	}
 	switch (sd->sensor) {
 	case SENSOR_ADCM1700:
 	case SENSOR_OV7630:
@@ -2162,6 +2434,12 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	case SENSOR_OV7660:
 		reg_w(gspca_dev, 0xce, CE_ov76xx, 4);
 		break;
+	case SENSOR_GC0307:
+		reg_w(gspca_dev, 0xce, CE_gc0307, 4);
+		break;
+	case SENSOR_PO2030N:
+		reg_w(gspca_dev, 0xce, CE_po2030n, 4);
+		break;
 	default:
 		reg_w(gspca_dev, 0xce, CE, 4);
 					/* ?? {0x1e, 0xdd, 0x2d, 0xe7} */
@@ -2199,6 +2477,9 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 
 	data = 0x0b;
 	switch (sd->sensor) {
+	case SENSOR_GC0307:
+		data = 0x29;
+		break;
 	case SENSOR_HV7131R:
 		i2c_w8(gspca_dev, stophv7131);
 		data = 0x2b;
@@ -2675,7 +2956,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
 #endif
 	{USB_DEVICE(0x0c45, 0x613c), BS(SN9C120, HV7131R)},
 	{USB_DEVICE(0x0c45, 0x613e), BS(SN9C120, OV7630)},
-/*	{USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)},	 *sn9c120b*/
+	{USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)},	/*sn9c120b*/
 	{USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)},	/*sn9c120b*/
 	{USB_DEVICE(0x0c45, 0x6148), BS(SN9C120, OM6802)},	/*sn9c120b*/
 	{USB_DEVICE(0x0c45, 0x614a), BS(SN9C120, ADCM1700)},	/*sn9c120b*/


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-13/kernel.spec,v
retrieving revision 1.1951
retrieving revision 1.1952
diff -u -p -r1.1951 -r1.1952
--- kernel.spec	18 Mar 2010 15:11:09 -0000	1.1951
+++ kernel.spec	19 Mar 2010 12:01:23 -0000	1.1952
@@ -710,7 +710,10 @@ Patch2899: linux-2.6-v4l-dvb-fixes.patch
 Patch2900: linux-2.6-v4l-dvb-update.patch
 Patch2901: linux-2.6-v4l-dvb-experimental.patch
 
+# Rebase gspca to what will be in 2.6.34
 Patch2904: linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
+# Some cherry picked fixes from v4l-dvb-next
+Patch2905: linux-2.6-v4l-dvb-gspca-fixes.patch
 
 # fs fixes
 
@@ -1329,6 +1332,7 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-upd
 ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch
 
 ApplyPatch linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
+ApplyPatch linux-2.6-v4l-dvb-gspca-fixes.patch
 
 # Patches headed upstream
 ApplyPatch linux-2.6-rfkill-all.patch
@@ -1990,6 +1994,10 @@ fi
 # and build.
 
 %changelog
+* Fri Mar 19 2010 Hans de Goede <hdegoede at redhat.com>
+- Cherry pick various webcam driver fixes
+  (#571188, #572302, #572373)
+
 * Thu Mar 18 2010 Neil Horman <nhorman at redhat.com>
 - Disable TIPC protocol in config
 

linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch:
 drivers/media/video/gspca/Kconfig                  |   46 
 drivers/media/video/gspca/Makefile                 |    8 
 drivers/media/video/gspca/benq.c                   |  322 +++
 drivers/media/video/gspca/coarse_expo_autogain.h   |  116 +
 drivers/media/video/gspca/conex.c                  |    4 
 drivers/media/video/gspca/cpia1.c                  | 2022 +++++++++++++++++++++
 drivers/media/video/gspca/etoms.c                  |   10 
 drivers/media/video/gspca/gl860/gl860.c            |   10 
 drivers/media/video/gspca/gspca.c                  |  252 ++
 drivers/media/video/gspca/gspca.h                  |   30 
 drivers/media/video/gspca/m5602/m5602_mt9m111.c    |   16 
 drivers/media/video/gspca/m5602/m5602_ov7660.c     |  102 +
 drivers/media/video/gspca/m5602/m5602_ov7660.h     |    2 
 drivers/media/video/gspca/m5602/m5602_ov9650.c     |    2 
 drivers/media/video/gspca/m5602/m5602_po1030.c     |   14 
 drivers/media/video/gspca/m5602/m5602_s5k4aa.c     |    2 
 drivers/media/video/gspca/m5602/m5602_s5k83a.c     |    2 
 drivers/media/video/gspca/mars.c                   |   40 
 drivers/media/video/gspca/mr97310a.c               |  226 ++
 drivers/media/video/gspca/ov519.c                  |  170 +
 drivers/media/video/gspca/ov534.c                  | 1253 +------------
 drivers/media/video/gspca/ov534_9.c                | 1477 +++++++++++++++
 drivers/media/video/gspca/pac207.c                 |   25 
 drivers/media/video/gspca/pac7302.c                |  432 ++--
 drivers/media/video/gspca/pac7311.c                |  272 +-
 drivers/media/video/gspca/pac_common.h             |    9 
 drivers/media/video/gspca/sn9c2028.c               |  757 +++++++
 drivers/media/video/gspca/sn9c2028.h               |   51 
 drivers/media/video/gspca/sn9c20x.c                |   33 
 drivers/media/video/gspca/sonixb.c                 |  481 +++-
 drivers/media/video/gspca/sonixj.c                 |  327 ++-
 drivers/media/video/gspca/spca500.c                |   21 
 drivers/media/video/gspca/spca501.c                |   27 
 drivers/media/video/gspca/spca505.c                |    2 
 drivers/media/video/gspca/spca506.c                |    4 
 drivers/media/video/gspca/spca508.c                |   48 
 drivers/media/video/gspca/spca561.c                |   35 
 drivers/media/video/gspca/sq905c.c                 |   45 
 drivers/media/video/gspca/stk014.c                 |    2 
 drivers/media/video/gspca/stv0680.c                |   36 
 drivers/media/video/gspca/stv06xx/stv06xx.c        |   32 
 drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c |   22 
 drivers/media/video/gspca/sunplus.c                |   71 
 drivers/media/video/gspca/t613.c                   |  102 +
 drivers/media/video/gspca/tv8532.c                 |    8 
 drivers/media/video/gspca/vc032x.c                 | 1163 +++++++++++-
 drivers/media/video/gspca/zc3xx.c                  |  712 ++++---
 include/linux/videodev2.h                          |    3 
 48 files changed, 8596 insertions(+), 2250 deletions(-)

Index: linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-13/linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch	21 Feb 2010 15:35:18 -0000	1.2
+++ linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch	19 Mar 2010 12:01:24 -0000	1.3
@@ -10895,7 +10895,7 @@ index 0bd36a0..c5a2423 100644
  	{
  	    {
  		.id	 = V4L2_CID_POWER_LINE_FREQUENCY,
-@@ -261,28 +281,41 @@ static struct ctrl sd_ctrls[] = {
+@@ -261,28 +281,37 @@ static struct ctrl sd_ctrls[] = {
  
  /* table of the disabled controls */
  static __u32 ctrl_dis[] = {
@@ -10910,12 +10910,8 @@ index 0bd36a0..c5a2423 100644
  	(1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
 -						/* SENSOR_MO4000 2 */
 +						/* SENSOR_MO4000 3 */
-+#if 1
  	(1 << VFLIP_IDX) | (1 << FREQ_IDX),
 -						/* SENSOR_MT9V111 3 */
-+#else
-+	(1 << AUTOGAIN_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
-+#endif
 +						/* SENSOR_MT9V111 4 */
  	(1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
 -						/* SENSOR_OM6802 4 */
@@ -11028,92 +11024,6 @@ index 0bd36a0..c5a2423 100644
  static const u8 hv7131r_sensor_init[][8] = {
  	{0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
  	{0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},
-@@ -594,7 +680,11 @@ static const u8 mt9v111_sensor_init[][8] = {
- static const u8 mt9v111_sensor_param1[][8] = {
- 	{0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
- 	{0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
-+#if 1
- 	{0xb1, 0x5c, 0x09, 0x01, 0x2c, 0x00, 0x00, 0x10},
-+#else
-+	{0xb1, 0x5c, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10}, /* shutter width */
-+#endif
- 	{0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10}, /* green1 gain */
- 	{0xd1, 0x5c, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10}, /* red gain */
- 	/*******/
-@@ -606,8 +696,13 @@ static const u8 mt9v111_sensor_param1[][8] = {
- };
- static const u8 om6802_init0[2][8] = {
- /*fixme: variable*/
-+#if 0
-+	{0xa0, 0x34, 0x90, 0x05, 0x00, 0x00, 0x00, 0x10},
-+	{0xa0, 0x34, 0x49, 0x85, 0x00, 0x00, 0x00, 0x10},
-+#else
- 	{0xa0, 0x34, 0x29, 0x0e, 0x00, 0x00, 0x00, 0x10},
- 	{0xa0, 0x34, 0x23, 0xb0, 0x00, 0x00, 0x00, 0x10},
-+#endif
- };
- static const u8 om6802_sensor_init[][8] = {
- 	{0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10},
-@@ -764,7 +859,11 @@ static const u8 ov7660_sensor_init[][8] = {
- 						/* COM 1 BAVE GEAVE AECHH */
- 	{0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
- 	{0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
-+#if 0
-+	{0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xf8, 0x10},
-+#else
- 	{0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10},
-+#endif
- 						/* AECH CLKRC COM7 COM8 */
- 	{0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
- 	{0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
-@@ -886,9 +985,11 @@ static const u8 po1030_sensor_init[][8] = {
- 	{}
- };
- static const u8 po1030_sensor_param1[][8] = {
-+#if 1
- /* from ms-win traces - these values change with auto gain/expo/wb.. */
- 	{0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
- 	{0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
-+#if 1
- /* mean values */
- 	{0xc1, 0x6e, 0x1a, 0x02, 0xd4, 0xa4, 0x00, 0x10}, /* integlines */
- 	{0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10}, /* global gain */
-@@ -898,6 +999,35 @@ static const u8 po1030_sensor_param1[][8] = {
- 	{0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10}, /* frameheight */
- 	{0xa1, 0x6e, 0x07, 0xd5, 0x00, 0x00, 0x00, 0x10},
- /*	{0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10}, */
-+#else
-+/* 1st values */
-+	{0xc1, 0x6e, 0x1a, 0x02, 0x3a, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x15, 0x01, 0x00, 0x00, 0x00, 0x10},
-+	{0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10},
-+
-+	{0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x07, 0x44, 0x00, 0x00, 0x00, 0x10},
-+	{0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10},
-+#endif
-+#else
-+	{0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x15, 0x01, 0x00, 0x00, 0x00, 0x10},
-+	{0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x07, 0xb5, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x18, 0x6B, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+	{0xa1, 0x6e, 0x07, 0xb8, 0x00, 0x00, 0x00, 0x10},
-+
-+	{0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
-+	{0xa1, 0x6e, 0x06, 0x03, 0x00, 0x00, 0x00, 0x10}, /* Bright... */
-+	{0xa1, 0x6e, 0x07, 0x66, 0x00, 0x00, 0x00, 0x10}, /* B.. */
-+	{0xc1, 0x6e, 0x1a, 0x03, 0x65, 0x90, 0x00, 0x10}, /* Bright/Witen....*/
-+/*	{0xc1, 0x6e, 0x16, 0x45, 0x40, 0x60, 0x00, 0x10},  * Bright/Witene */
-+#endif
- 	{}
- };
- 
 @@ -986,17 +1116,18 @@ static const u8 sp80708_sensor_param1[][8] = {
  	{}
  };
@@ -11197,22 +11107,6 @@ index 0bd36a0..c5a2423 100644
  	case SENSOR_MT9V111:
  		reg_w1(gspca_dev, 0x01, 0x61);
  		reg_w1(gspca_dev, 0x17, 0x61);
-@@ -1327,7 +1475,15 @@ static void bridge_init(struct gspca_dev *gspca_dev,
- 		reg_w1(gspca_dev, 0x01, 0x40);
- 		break;
- 	case SENSOR_OV7660:
-+#if 1
- 		/* fall thru */
-+#else
-+		reg_w1(gspca_dev, 0x01, 0x61);
-+		reg_w1(gspca_dev, 0x17, 0x20);
-+		reg_w1(gspca_dev, 0x01, 0x60);
-+		reg_w1(gspca_dev, 0x01, 0x40);
-+		break;
-+#endif
- 	case SENSOR_SP80708:
- 		reg_w1(gspca_dev, 0x01, 0x63);
- 		reg_w1(gspca_dev, 0x17, 0x20);
 @@ -1357,14 +1513,19 @@ static int sd_config(struct gspca_dev *gspca_dev,
  	struct sd *sd = (struct sd *) gspca_dev;
  	struct cam *cam;
@@ -11264,30 +11158,6 @@ index 0bd36a0..c5a2423 100644
  
  	/* set the i2c address */
  	sn9c1xx = sn_tb[sd->sensor];
-@@ -1506,6 +1677,12 @@ static u32 setexposure(struct gspca_dev *gspca_dev,
- 	case SENSOR_MT9V111: {
- 		u8 expo_c1[] =
- 			{ 0xb1, 0x5c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x10 };
-+#if 0
-+		static const u8 c2[] =
-+			{ 0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10 };
-+		static const u8 c3[] =
-+			{ 0xd1, 0x5c, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10 };
-+#endif
- 
- 		if (expo > 0x0280)
- 			expo = 0x0280;
-@@ -1514,6 +1691,10 @@ static u32 setexposure(struct gspca_dev *gspca_dev,
- 		expo_c1[3] = expo >> 8;
- 		expo_c1[4] = expo;
- 		i2c_w8(gspca_dev, expo_c1);
-+#if 0
-+		i2c_w8(gspca_dev, expo_c2);
-+		i2c_w8(gspca_dev, expo_c3);
-+#endif
- 		break;
- 	    }
- 	case SENSOR_OM6802: {
 @@ -1543,6 +1724,10 @@ static void setbrightness(struct gspca_dev *gspca_dev)
  
  	k2 = ((int) sd->brightness - 0x8000) >> 10;
@@ -11335,18 +11205,6 @@ index 0bd36a0..c5a2423 100644
  }
  
  static void setfreq(struct gspca_dev *gspca_dev)
-@@ -1708,7 +1907,11 @@ static void setfreq(struct gspca_dev *gspca_dev)
- 	if (sd->sensor == SENSOR_OV7660) {
- 		u8 com8;
- 
-+#if 0
-+		com8 = 0xd8;		/* no auto gain/wb/expo */
-+#else
- 		com8 = 0xdf;		/* auto gain/wb/expo */
-+#endif
- 		switch (sd->freq) {
- 		case 0: /* Banding filter disabled */
- 			i2c_w1(gspca_dev, 0x13, com8 | 0x20);
 @@ -1804,6 +2007,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
  	int mode;
  	static const u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f };
@@ -11399,18 +11257,7 @@ index 0bd36a0..c5a2423 100644
  	case SENSOR_OV7630:
  		reg17 = 0xe2;
  		break;
-@@ -1863,51 +2082,50 @@ static int sd_start(struct gspca_dev *gspca_dev)
- 		reg17 = 0xa0;
- 		break;
- 	case SENSOR_PO1030:
-+#if 1
- 		reg17 = 0xa0;
-+#else
-+		reg17 = 0xae;
-+#endif
- 		break;
- 	default:
- 		reg17 = 0x60;
+@@ -1863,44 +2082,39 @@ static int sd_start(struct gspca_dev *gspca_dev)
  		break;
  	}
  	reg_w1(gspca_dev, 0x17, reg17);
@@ -11495,39 +11342,6 @@ index 0bd36a0..c5a2423 100644
  	case SENSOR_OV7630:
  	case SENSOR_OV7648:
  	case SENSOR_OV7660:
-@@ -1999,6 +2226,13 @@ static int sd_start(struct gspca_dev *gspca_dev)
- 		break;
- 	}
- 
-+#if 0
-+	/* more sensor initialization - param2 */
-+	if (init != NULL) {
-+		i2c_w_seq(gspca_dev, init);
-+		init = NULL;
-+	}
-+#endif
- 
- 	/* here change size mode 0 -> VGA; 1 -> CIF */
- 	sd->reg18 = sn9c1xx[0x18] | (mode << 4) | 0x40;
-@@ -2007,8 +2241,18 @@ static int sd_start(struct gspca_dev *gspca_dev)
- 
- 	reg_w1(gspca_dev, 0x17, reg17);
- 	reg_w1(gspca_dev, 0x01, reg1);
-+#if 0
-+	/* more sensor initialization - param3 */
-+	if (init != NULL)
-+		i2c_w_seq(gspca_dev, init);
-+#endif
- 
- 	switch (sd->sensor) {
-+#if 0
-+	case SENSOR_MT9V111:
-+		setinfrared(sd);
-+		break;
-+#endif
- 	case SENSOR_OV7630:
- 		setvflip(sd);
- 		break;
 @@ -2056,7 +2300,8 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
  	reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]);
  	reg_w1(gspca_dev, 0x01, sn9c1xx[1]);
@@ -11599,19 +11413,6 @@ index 0bd36a0..c5a2423 100644
  };
  
  /* -- module initialisation -- */
-@@ -2425,7 +2710,12 @@ static const __devinitdata struct usb_device_id device_table[] = {
- 	{USB_DEVICE(0x06f8, 0x3004), BS(SN9C105, OV7660)},
- 	{USB_DEVICE(0x06f8, 0x3008), BS(SN9C105, OV7660)},
- /*	{USB_DEVICE(0x0c45, 0x603a), BS(SN9C102P, OV7648)}, */
-+#if 1
- 	{USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, HV7131R)},
-+#else
-+/* snpstd3.inf */
-+	{USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, MI0360)},
-+#endif
- /*	{USB_DEVICE(0x0c45, 0x607a), BS(SN9C102P, OV7648)}, */
- /*	{USB_DEVICE(0x0c45, 0x607b), BS(SN9C102P, OV7660)}, */
- 	{USB_DEVICE(0x0c45, 0x607c), BS(SN9C102P, HV7131R)},
 @@ -2472,6 +2762,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
  /*	{USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)},	 *sn9c120b*/
  	{USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)},	/*sn9c120b*/



More information about the scm-commits mailing list