rpms/kernel/devel linux-2.6-gspca-git.patch, NONE, 1.1 config-generic, 1.197, 1.198 kernel.spec, 1.1160, 1.1161

Hans de Goede jwrdegoede at fedoraproject.org
Thu Dec 11 19:16:00 UTC 2008


Author: jwrdegoede

Update of /cvs/extras/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6247

Modified Files:
	config-generic kernel.spec 
Added Files:
	linux-2.6-gspca-git.patch 
Log Message:
* Thu Dec 11 2008 Hans de Goede <hdegoede at redhat.com>
- Add a patch updating the gspca driver to the latest "git" (mercurial
  actually) adding support for ov534 based cams, fixing support for
  spca501, finepix and vc0321 cams + many more bugfixes


linux-2.6-gspca-git.patch:

--- NEW FILE linux-2.6-gspca-git.patch ---
diff -urN /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/Kconfig linux/drivers/media/video/gspca/Kconfig
--- /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/Kconfig	2008-12-10 19:44:21.000000000 +0100
+++ linux/drivers/media/video/gspca/Kconfig	2008-12-09 21:37:33.000000000 +0100
@@ -12,7 +12,7 @@
 	  "Video For Linux" to use this driver.
 
 	  To compile this driver as modules, choose M here: the
-	  modules will be called gspca_main.
+	  module will be called gspca_main.
 
 
 if USB_GSPCA && VIDEO_V4L2
@@ -64,6 +64,16 @@
 	  To compile this driver as a module, choose M here: the
 	  module will be called gspca_ov519.
 
+config USB_GSPCA_OV534
+	tristate "OV534 USB Camera Driver"
+	depends on VIDEO_V4L2 && USB_GSPCA
+	help
+	  Say Y here if you want support for cameras based on the OV534 chip.
+	  (e.g. Sony Playstation EYE)
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called gspca_ov534.
+
 config USB_GSPCA_PAC207
 	tristate "Pixart PAC207 USB Camera Driver"
 	depends on VIDEO_V4L2 && USB_GSPCA
@@ -83,10 +93,11 @@
 	  module will be called gspca_pac7311.
 
 config USB_GSPCA_SONIXB
-	tristate "SN9C102 USB Camera Driver"
+	tristate "SONIX Bayer USB Camera Driver"
 	depends on VIDEO_V4L2 && USB_GSPCA
 	help
-	  Say Y here if you want support for cameras based on the SONIXB chip.
+	  Say Y here if you want support for cameras based on the Sonix
+	  chips with Bayer format (SN9C101, SN9C102 and SN9C103).
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called gspca_sonixb.
@@ -95,7 +106,8 @@
 	tristate "SONIX JPEG USB Camera Driver"
 	depends on VIDEO_V4L2 && USB_GSPCA
 	help
-	  Say Y here if you want support for cameras based on the SONIXJ chip.
+	  Say Y here if you want support for cameras based on the Sonix
+	  chips with JPEG format (SN9C102P, SN9C105 and >= SN9C110).
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called gspca_sonixj
@@ -171,7 +183,7 @@
 	  SPCA504(abc) SPCA533 SPCA536 chips.
 
 	  To compile this driver as a module, choose M here: the
-	  module will be called gspca_spca5xx.
+	  module will be called gspca_sunplus.
 
 config USB_GSPCA_T613
 	tristate "T613 (JPEG Compliance) USB Camera Driver"
diff -urN /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/Makefile linux/drivers/media/video/gspca/Makefile
--- /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/Makefile	2008-12-10 19:44:21.000000000 +0100
+++ linux/drivers/media/video/gspca/Makefile	2008-12-09 21:37:33.000000000 +0100
@@ -4,6 +4,7 @@
 obj-$(CONFIG_USB_GSPCA_FINEPIX)	+= gspca_finepix.o
 obj-$(CONFIG_USB_GSPCA_MARS)	+= gspca_mars.o
 obj-$(CONFIG_USB_GSPCA_OV519)	+= gspca_ov519.o
+obj-$(CONFIG_USB_GSPCA_OV534)	+= gspca_ov534.o
 obj-$(CONFIG_USB_GSPCA_PAC207)	+= gspca_pac207.o
 obj-$(CONFIG_USB_GSPCA_PAC7311) += gspca_pac7311.o
 obj-$(CONFIG_USB_GSPCA_SONIXB)	+= gspca_sonixb.o
@@ -27,6 +28,7 @@
 gspca_finepix-objs		:= finepix.o
 gspca_mars-objs			:= mars.o
 gspca_ov519-objs		:= ov519.o
+gspca_ov534-objs		:= ov534.o
 gspca_pac207-objs		:= pac207.o
 gspca_pac7311-objs		:= pac7311.o
 gspca_sonixb-objs		:= sonixb.o
diff -urN /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/etoms.c linux/drivers/media/video/gspca/etoms.c
--- /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/etoms.c	2008-12-10 19:44:21.000000000 +0100
+++ linux/drivers/media/video/gspca/etoms.c	2008-12-09 21:37:33.000000000 +0100
@@ -733,6 +733,12 @@
 
 		i2c_w(gspca_dev, PAS106_REG13, &i2cflags, 1, 3);
 		i2c_w(gspca_dev, PAS106_REG0e, &gain, 1, 1);
+#if 0
+		i2c_w(gspca_dev, 0x09, &gain, 1, 1);
+		i2c_w(gspca_dev, 0x0a, &gain, 1, 1);
+		i2c_w(gspca_dev, 0x0b, &gain, 1, 1);
+		i2c_w(gspca_dev, 0x0c, &gain, 1, 1);
+#endif
 	}
 }
 
diff -urN /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/finepix.c linux/drivers/media/video/gspca/finepix.c
--- /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/finepix.c	2008-12-10 19:44:21.000000000 +0100
+++ linux/drivers/media/video/gspca/finepix.c	2008-12-09 21:37:33.000000000 +0100
@@ -314,9 +314,6 @@
 	int ret;
 	int size_ret;
 
-	/* Reset bulk in endpoint */
-	usb_clear_halt(gspca_dev->dev, gspca_dev->cam.epaddr);
-
 	/* Init the device */
 	memset(gspca_dev->usb_buf, 0, 12);
 	gspca_dev->usb_buf[0] = 0xc6;
diff -urN /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/gspca.c linux/drivers/media/video/gspca/gspca.c
--- /home/hans/projects/fedora-extras/kernel/devel/kernel-2.6.27/linux-2.6.27.noarch/drivers/media/video/gspca/gspca.c	2008-12-10 19:44:21.000000000 +0100
+++ linux/drivers/media/video/gspca/gspca.c	2008-12-10 19:53:43.000000000 +0100
@@ -45,7 +48,7 @@
 MODULE_DESCRIPTION("GSPCA USB Camera Driver");
 MODULE_LICENSE("GPL");
 
-#define DRIVER_VERSION_NUMBER	KERNEL_VERSION(2, 3, 0)
+#define DRIVER_VERSION_NUMBER	KERNEL_VERSION(2, 4, 0)
 
 static int video_nr = -1;
 
@@ -150,8 +153,11 @@
 
 		/* check the packet status and length */
 		len = urb->iso_frame_desc[i].actual_length;
-		if (len == 0)
+		if (len == 0) {
+			if (gspca_dev->empty_packet == 0)
+				gspca_dev->empty_packet = 1;
 			continue;
+		}
 		st = urb->iso_frame_desc[i].status;
 		if (st) {
 			PDEBUG(D_ERR,
@@ -170,7 +176,6 @@
 	}
 
 	/* resubmit the URB */
-	urb->status = 0;
 	st = usb_submit_urb(urb, GFP_ATOMIC);
 	if (st < 0)
 		PDEBUG(D_ERR|D_PACK, "usb_submit_urb() ret %d", st);
@@ -200,11 +208,18 @@
 {
 	struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context;
 	struct gspca_frame *frame;
+	int st;
 
 	PDEBUG(D_PACK, "bulk irq");
 	if (!gspca_dev->streaming)
 		return;
-	if (urb->status != 0 && urb->status != -ECONNRESET) {
+	switch (urb->status) {
+	case 0:
+		break;
+	case -ECONNRESET:
+		urb->status = 0;
+		break;
+	default:
 #ifdef CONFIG_PM
 		if (!gspca_dev->frozen)
 #endif
@@ -223,6 +241,13 @@
 					urb->transfer_buffer,
 					urb->actual_length);
 	}
+
+	/* resubmit the URB */
+	if (gspca_dev->cam.bulk_nurbs != 0) {
+		st = usb_submit_urb(urb, GFP_ATOMIC);
+		if (st < 0)
+			PDEBUG(D_ERR|D_PACK, "usb_submit_urb() ret %d", st);
+	}
 }
 
 /*
@@ -285,7 +310,6 @@
 		frame->v4l2_buf.bytesused = frame->data_end - frame->data;
 		frame->v4l2_buf.flags &= ~V4L2_BUF_FLAG_QUEUED;
 		frame->v4l2_buf.flags |= V4L2_BUF_FLAG_DONE;
-		atomic_inc(&gspca_dev->nevent);
 		wake_up_interruptible(&gspca_dev->wq);	/* event = new frame */
 		i = (gspca_dev->fr_i + 1) % gspca_dev->nframes;
 		gspca_dev->fr_i = i;
@@ -379,7 +403,6 @@
 	gspca_dev->fr_i = gspca_dev->fr_o = gspca_dev->fr_q = 0;
 	gspca_dev->last_packet_type = DISCARD_PACKET;
 	gspca_dev->sequence = 0;
-	atomic_set(&gspca_dev->nevent, 0);
 	return 0;
 }
 
@@ -520,11 +543,14 @@
 		nurbs = DEF_NURBS;
 	} else {				/* bulk */
 		npkt = 0;
-		bsize = gspca_dev->cam.	bulk_size;
+		bsize = gspca_dev->cam.bulk_size;
[...5646 lines suppressed...]
-		{NULL, NULL,
-		 NULL, NULL,
-		 NULL, NULL},
-/* SENSOR_ICM105A 7 */
+/* SENSOR_ICM105A 6 */
 		{icm105a_NoFliker, icm105a_NoFlikerScale,
 		 icm105a_50HZ, icm105a_50HZScale,
 		 icm105a_60HZ, icm105a_60HZScale},
-/* SENSOR_MC501CB 8 */
+/* SENSOR_MC501CB 7 */
 		{MC501CB_NoFliker, MC501CB_NoFlikerScale,
 		 MC501CB_50HZ, MC501CB_50HZScale,
 		 MC501CB_60HZ, MC501CB_60HZScale},
-/* SENSOR_OV7620 9 */
+/* SENSOR_OV7620 8 */
 		{OV7620_NoFliker, OV7620_NoFliker,
 		 OV7620_50HZ, OV7620_50HZ,
 		 OV7620_60HZ, OV7620_60HZ},
-/* SENSOR_OV7630C 10 */
+/* SENSOR_OV7630C 9 */
 		{NULL, NULL,
 		 NULL, NULL,
 		 NULL, NULL},
-/* SENSOR_PAS106 11 */
+/* SENSOR_PAS106 10 */
 		{pas106b_NoFliker, pas106b_NoFliker,
 		 pas106b_50HZ, pas106b_50HZ,
 		 pas106b_60HZ, pas106b_60HZ},
+/* SENSOR_PAS202B 11 */
+		{pas202b_NoFlikerScale, pas202b_NoFliker,
+		 pas202b_50HZScale, pas202b_50HZ,
+		 pas202b_60HZScale, pas202b_60HZ},
 /* SENSOR_PB0330 12 */
 		{pb0330_NoFliker, pb0330_NoFlikerScale,
 		 pb0330_50HZ, pb0330_50HZScale,
@@ -7002,15 +7017,15 @@
 		5,	/* SENSOR_CS2102 0 */
 		5,	/* SENSOR_CS2102K 1 */
 		4,	/* SENSOR_GC0305 2 */
-		4,	/* SENSOR_HDCS2020 3 */
-		4,	/* SENSOR_HDCS2020b 4 */
-		4,	/* SENSOR_HV7131B 5 */
-		4,	/* SENSOR_HV7131C 6 */
-		4,	/* SENSOR_ICM105A 7 */
-		4,	/* SENSOR_MC501CB 8 */
-		3,	/* SENSOR_OV7620 9 */
-		4,	/* SENSOR_OV7630C 10 */
-		4,	/* SENSOR_PAS106 11 */
+		4,	/* SENSOR_HDCS2020b 3 */
+		4,	/* SENSOR_HV7131B 4 */
+		4,	/* SENSOR_HV7131C 5 */
+		4,	/* SENSOR_ICM105A 6 */
+		4,	/* SENSOR_MC501CB 7 */
+		3,	/* SENSOR_OV7620 8 */
+		4,	/* SENSOR_OV7630C 9 */
+		4,	/* SENSOR_PAS106 10 */
+		4,	/* SENSOR_PAS202B 11 */
 		4,	/* SENSOR_PB0330 12 */
 		4,	/* SENSOR_PO2030 13 */
 		4,	/* SENSOR_TAS5130CK 14 */
@@ -7066,8 +7081,8 @@
 			sd->sensor = SENSOR_ICM105A;
 			break;
 		case 0x0e:
-			PDEBUG(D_PROBE, "Find Sensor HDCS2020");
-			sd->sensor = SENSOR_HDCS2020;
+			PDEBUG(D_PROBE, "Find Sensor PAS202B");
+			sd->sensor = SENSOR_PAS202B;
 			sd->sharpness = 1;
 			break;
 		case 0x0f:
@@ -7153,7 +7168,6 @@
 	sd->gamma = gamma[(int) sd->sensor];
 	sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value;
 	sd->lightfreq = sd_ctrls[SD_FREQ].qctrl.default_value;
-	sd->sharpness = sd_ctrls[SD_SHARPNESS].qctrl.default_value;
 
 	switch (sd->sensor) {
 	case SENSOR_GC0305:
@@ -7161,7 +7175,6 @@
 	case SENSOR_PO2030:
 		gspca_dev->ctrl_dis = (1 << BRIGHTNESS_IDX);
 		break;
-	case SENSOR_HDCS2020:
 	case SENSOR_HV7131B:
 	case SENSOR_HV7131C:
 	case SENSOR_OV7630C:
@@ -7191,15 +7204,15 @@
 		{cs2102_InitialScale, cs2102_Initial},		/* 0 */
 		{cs2102K_InitialScale, cs2102K_Initial},	/* 1 */
 		{gc0305_Initial, gc0305_InitialScale},		/* 2 */
-		{hdcs2020xx_InitialScale, hdcs2020xx_Initial},	/* 3 */
-		{hdcs2020xb_InitialScale, hdcs2020xb_Initial},	/* 4 */
-		{hv7131bxx_InitialScale, hv7131bxx_Initial},	/* 5 */
-		{hv7131cxx_InitialScale, hv7131cxx_Initial},	/* 6 */
-		{icm105axx_InitialScale, icm105axx_Initial},	/* 7 */
-		{MC501CB_InitialScale, MC501CB_Initial},	/* 9 */
-		{OV7620_mode0, OV7620_mode1},			/* 9 */
-		{ov7630c_InitialScale, ov7630c_Initial},	/* 10 */
-		{pas106b_InitialScale, pas106b_Initial},	/* 11 */
+		{hdcs2020xb_InitialScale, hdcs2020xb_Initial},	/* 3 */
+		{hv7131bxx_InitialScale, hv7131bxx_Initial},	/* 4 */
+		{hv7131cxx_InitialScale, hv7131cxx_Initial},	/* 5 */
+		{icm105axx_InitialScale, icm105axx_Initial},	/* 6 */
+		{MC501CB_InitialScale, MC501CB_Initial},	/* 7 */
+		{OV7620_mode0, OV7620_mode1},			/* 8 */
+		{ov7630c_InitialScale, ov7630c_Initial},	/* 9 */
+		{pas106b_InitialScale, pas106b_Initial},	/* 10 */
+		{pas202b_Initial, pas202b_InitialScale},	/* 11 */
 		{pb0330xx_InitialScale, pb0330xx_Initial},	/* 12 */
 /* or		{pb03303x_InitialScale, pb03303x_Initial}, */
 		{PO2030_mode0, PO2030_mode1},			/* 13 */
@@ -7256,6 +7269,11 @@
 		reg_r(gspca_dev, 0x0008);
 		reg_w(dev, 0x00, 0x0008);
 		break;
+	case SENSOR_PAS202B:
+#if 0/*fixme*/
+		reg_r(gspca_dev, ZC3XX_R002_CLOCKSELECT);
+		/* fall thru */
+#endif
 	case SENSOR_GC0305:
 		reg_r(gspca_dev, 0x0008);
 		/* fall thru */
@@ -7269,7 +7287,6 @@
 	switch (sd->sensor) {
 	case SENSOR_CS2102:		/* gamma set in xxx_Initial */
 	case SENSOR_CS2102K:
-	case SENSOR_HDCS2020:
 	case SENSOR_HDCS2020b:
 	case SENSOR_PB0330:		/* pb with chip_revision - see above */
 	case SENSOR_OV7630C:
@@ -7282,6 +7299,7 @@
 	setmatrix(gspca_dev);			/* one more time? */
 	switch (sd->sensor) {
 	case SENSOR_OV7620:
+	case SENSOR_PAS202B:
 		reg_r(gspca_dev, 0x0180);	/* from win */
 		reg_w(dev, 0x00, 0x0180);
 		break;
@@ -7293,37 +7311,29 @@
 
 	switch (sd->sensor) {
 	case SENSOR_GC0305:
-	case SENSOR_OV7620:
 		reg_w(dev, 0x09, 0x01ad);	/* (from win traces) */
 		reg_w(dev, 0x15, 0x01ae);
-		sd->autogain = 0;
-		break;
+		/* fall thru */
+	case SENSOR_PAS202B:
 	case SENSOR_PO2030:
-		reg_w(dev, 0x40, 0x0117);	/* (from win traces) */
-		reg_r(gspca_dev, 0x0180);
-		break;
-	}
-
-	setautogain(gspca_dev);
-	switch (sd->sensor) {
-	case SENSOR_GC0305:
-/*		setlightfreq(gspca_dev);	?? (end: 80 -> [18d]) */
-		reg_w(dev, 0x09, 0x01ad);	/* (from win traces) */
-		reg_w(dev, 0x15, 0x01ae);
-		reg_w(dev, 0x40, 0x0180);
-		reg_w(dev, 0x40, 0x0117);
+/*		reg_w(dev, 0x40, ZC3XX_R117_GGAIN);  * (from win traces) */
 		reg_r(gspca_dev, 0x0180);
-		sd->autogain = 1;
-		setautogain(gspca_dev);
 		break;
 	case SENSOR_OV7620:
+		reg_w(dev, 0x09, 0x01ad);
+		reg_w(dev, 0x15, 0x01ae);
 		i2c_read(gspca_dev, 0x13);	/*fixme: returns 0xa3 */
 		i2c_write(gspca_dev, 0x13, 0xa3, 0x00);
 					 /*fixme: returned value to send? */
-		reg_w(dev, 0x40, 0x0117);	/* (from win traces) */
+		reg_w(dev, 0x40, 0x0117);
 		reg_r(gspca_dev, 0x0180);
-		setautogain(gspca_dev);
-		msleep(500);
+		break;
+	}
+
+	setautogain(gspca_dev);
+	switch (sd->sensor) {
+	case SENSOR_PAS202B:
+		reg_w(dev, 0x00, 0x0007);	/* (from win traces) */
 		break;
 	case SENSOR_PO2030:
 		msleep(500);
@@ -7333,6 +7343,8 @@
 		reg_w(dev, 0x02, 0x0008);
 		break;
 	}
+	if (sd->sensor == SENSOR_PAS202B)
+		reg_w(dev, 0x02, ZC3XX_R008_CLOCKSETTING);
 	return 0;
 }
 


Index: config-generic
===================================================================
RCS file: /cvs/extras/rpms/kernel/devel/config-generic,v
retrieving revision 1.197
retrieving revision 1.198
diff -u -r1.197 -r1.198
--- config-generic	8 Dec 2008 15:39:52 -0000	1.197
+++ config-generic	11 Dec 2008 19:15:30 -0000	1.198
@@ -2742,6 +2742,7 @@
 CONFIG_USB_GSPCA_FINEPIX=m
 CONFIG_USB_GSPCA_MARS=m
 CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
 CONFIG_USB_GSPCA_PAC207=m
 CONFIG_USB_GSPCA_PAC7311=m
 CONFIG_USB_GSPCA_SONIXB=m


Index: kernel.spec
===================================================================
RCS file: /cvs/extras/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1160
retrieving revision 1.1161
diff -u -r1.1160 -r1.1161
--- kernel.spec	11 Dec 2008 03:36:21 -0000	1.1160
+++ kernel.spec	11 Dec 2008 19:15:30 -0000	1.1161
@@ -633,6 +633,9 @@
 
 Patch690: linux-2.6-at76.patch
 
+# webcam fixes
+Patch900: linux-2.6-gspca-git.patch
+
 Patch1515: linux-2.6.27-lirc.patch
 Patch1520: linux-2.6-hdpvr.patch
 
@@ -1152,6 +1155,9 @@
 # Add misc wireless bits from upstream wireless tree
 ApplyPatch linux-2.6-at76.patch
 
+# Webcam patches
+ApplyPatch linux-2.6-gspca-git.patch
+
 # http://www.lirc.org/
 ApplyPatch linux-2.6.27-lirc.patch
 # http://hg.jannau.net/hdpvr/
@@ -1766,6 +1772,11 @@
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Thu Dec 11 2008 Hans de Goede <hdegoede at redhat.com>
+- Add a patch updating the gspca driver to the latest "git" (mercurial
+  actually) adding support for ov534 based cams, fixing support for
+  spca501, finepix and vc0321 cams + many more bugfixes
+
 * Wed Dec 10 2008 Dave Jones <davej at redhat.com>
 - 2.6.28-rc8
 




More information about the fedora-extras-commits mailing list