Skip to contentSkip to conversation

Creative WebCam mini driver

PATCH In review Kiril Jovchev 3 participants 4 messages Jun 2, 2005 – Jun 3, 2005 USB

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Creative WebCam mini driver

Hi,

I have send patch quite a while ago for 2.6.8 version of kernel and I did not got any reply from the list.
So now I'm sending the patch again for 2.6.11.11 kernel what is latest stable.

I am attaching the patch files and puting their code in the e-mail body at the end of the e-mail.

I hope that I will get some reply this time.

Kiril Jovchev

--- linux-2.6.11.11/drivers/usb/media/stv680.c 2005-05-27
08:06:46.000000000 +0300
+++ linux/drivers/usb/media/stv680.c 2005-06-02 17:59:52.000000000 +0300
@@ -9,6 +9,9 @@
* Endpoints (formerly known as AOX) se401 USB Camera Driver
* Copyright (c) 2000 Jeroen B. Vreeken ([email protected])
*
+ * Creative WebCam Go Mini Driver, modified by Kiril Jovchev
+ * ([email protected])
+ *
* Still somewhat based on the Linux ov511 driver.
*
* This program is free software; you can redistribute it and/or modify it
@@ -56,6 +59,11 @@

  *			   to set to a non-supported size. This allowed
  *			   gnomemeeting to work.
  *			   Fixed proc entry removal bug.

+ *
+ * ver 0.26 Sep, 2004 (kjv)
+ * Added support for Creative WebCam Go mini.
+ * Camera is based on same chip.
+ *
*/

#include <linux/config.h>
@@ -1375,9 +1383,14 @@
(le16_to_cpu(dev->descriptor.idProduct) == USB_PENCAM_PRODUCT_ID)) {
camera_name = "STV0680";
PDEBUG (0, "STV(i): STV0680 camera found.");
- } else {
- PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 values.");
- PDEBUG (0, "STV(e): Check that the STV0680 camera is connected to
the computer.");
+ } else if ((le16_to_cpu(dev->descriptor.idVendor) ==
USB_CREATIVEGOMINI_VENDOR_ID) &&
+ (le16_to_cpu(dev->descriptor.idProduct) ==
USB_CREATIVEGOMINI_PRODUCT_ID)) {
+ camera_name = "Creative WebCam Go Mini";
+ PDEBUG (0, "STV(i): Creative WebCam Go Mini found.");
+ }
+ else {
+ PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 or
Creative WebCam Go Mini values.");
+ PDEBUG (0, "STV(e): Check that the STV0680 or Creative WebCam Go
Mini camera is connected to the computer.");
retval = -ENODEV;
goto error;
}

--- linux-2.6.11.11/drivers/usb/media/stv680.h 2005-05-27
08:06:46.000000000 +0300
+++ linux/drivers/usb/media/stv680.h 2005-06-02 18:00:03.000000000 +0300
@@ -41,13 +41,19 @@

#define USB_PENCAM_VENDOR_ID 0x0553
#define USB_PENCAM_PRODUCT_ID 0x0202
+
+#define USB_CREATIVEGOMINI_VENDOR_ID 0x041e
+#define USB_CREATIVEGOMINI_PRODUCT_ID 0x4007
+
#define PENCAM_TIMEOUT 1000
/* fmt 4 */
#define STV_VIDEO_PALETTE VIDEO_PALETTE_RGB24

static struct usb_device_id device_table[] = {
{USB_DEVICE (USB_PENCAM_VENDOR_ID, USB_PENCAM_PRODUCT_ID)},
+ {USB_DEVICE (USB_CREATIVEGOMINI_VENDOR_ID, USB_CREATIVEGOMINI_PRODUCT_ID)},
{}
+
};
MODULE_DEVICE_TABLE (usb, device_table);

drivers/usb/media/stv680.c +16 -3
@@ -9,6 +9,9 @@
  * Endpoints (formerly known as AOX) se401 USB Camera Driver
  * Copyright (c) 2000 Jeroen B. Vreeken ([email protected])
  *
+ * Creative WebCam Go Mini Driver, modified by Kiril Jovchev 
+ * ([email protected])
+ *
  * Still somewhat based on the Linux ov511 driver.
  * 
  * This program is free software; you can redistribute it and/or modify it
@@ -56,6 +59,11 @@
  *			   to set to a non-supported size. This allowed
  *			   gnomemeeting to work.
  *			   Fixed proc entry removal bug.
+ *
+ * ver 0.26 Sep, 2004 (kjv) 
+ * 			   Added support for Creative WebCam Go mini. 
+ * 			   Camera is based on same chip. 
+ * 
  */
 
 #include <linux/config.h>
@@ -1375,9 +1383,14 @@
 	    (le16_to_cpu(dev->descriptor.idProduct) == USB_PENCAM_PRODUCT_ID)) {
 		camera_name = "STV0680";
 		PDEBUG (0, "STV(i): STV0680 camera found.");
-	} else {
-		PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 values.");
-		PDEBUG (0, "STV(e): Check that the STV0680 camera is connected to the computer.");
+	} else if ((le16_to_cpu(dev->descriptor.idVendor) == USB_CREATIVEGOMINI_VENDOR_ID) &&
+            (le16_to_cpu(dev->descriptor.idProduct) == USB_CREATIVEGOMINI_PRODUCT_ID)) {
+                camera_name = "Creative WebCam Go Mini";
+                PDEBUG (0, "STV(i): Creative WebCam Go Mini found.");
+	} 
+	else {
+		PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 or Creative WebCam Go Mini values.");
+		PDEBUG (0, "STV(e): Check that the STV0680 or Creative WebCam Go Mini camera is connected to the computer.");
 		retval = -ENODEV;
 		goto error;
 	}
drivers/usb/media/stv680.h +6 -0
@@ -41,13 +41,19 @@
 
 #define USB_PENCAM_VENDOR_ID	0x0553
 #define USB_PENCAM_PRODUCT_ID	0x0202
+
+#define USB_CREATIVEGOMINI_VENDOR_ID 0x041e 
+#define USB_CREATIVEGOMINI_PRODUCT_ID 0x4007
+
 #define PENCAM_TIMEOUT          1000
 /* fmt 4 */
 #define STV_VIDEO_PALETTE       VIDEO_PALETTE_RGB24
 
 static struct usb_device_id device_table[] = {
 	{USB_DEVICE (USB_PENCAM_VENDOR_ID, USB_PENCAM_PRODUCT_ID)},
+	{USB_DEVICE (USB_CREATIVEGOMINI_VENDOR_ID, USB_CREATIVEGOMINI_PRODUCT_ID)},
 	{}
+	
 };
 MODULE_DEVICE_TABLE (usb, device_table);
 
#1 lore raw
Quoted 8 lines

I have send patch quite a while ago for 2.6.8 version of kernel and I did not got any reply from the list.
So now I'm sending the patch again for 2.6.11.11 kernel what is latest stable.

I am attaching the patch files and puting their code in the e-mail body at the end of the e-mail.

I hope that I will get some reply this time.

Hi Kiril, I think you should send this to the usb mailing list [email protected].

Ciao,

Duncan.

#2 lore raw
In reply to Kiril Jovchev
Quoted 1 line · Kiril Jovchev

So now I'm sending the patch again for 2.6.11.11 kernel what is latest stable.

You're lucky it applies cleanly against 2.6.12-rc5-whatever. ;-)

There is no need to split the patch into two ones. Next time CC [email protected]. Add "-p" to your diff switches.

drivers/usb/media/stv680.c

Quoted 4 lines
drivers/usb/media/stv680.c +1 -0
 
+ * Creative WebCam Go Mini Driver, modified by Kiril Jovchev 

Trailing whitespace.

Quoted 5 lines

+ *
+ * ver 0.26 Sep, 2004 (kjv)
+ * Added support for Creative WebCam Go mini.
+ * Camera is based on same chip.
+ *

Trailing whitespace.

drivers/usb/media/stv680.c line 1387

Quoted 9 lines
drivers/usb/media/stv680.c +2 -3
@@ -1375,9 +1383,14 @@
 	    (le16_to_cpu(dev->descriptor.idProduct) == USB_PENCAM_PRODUCT_ID)) {
 		camera_name = "STV0680";
 		PDEBUG (0, "STV(i): STV0680 camera found.");
-	} else {
-		PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 values.");
-		PDEBUG (0, "STV(e): Check that the STV0680 camera is connected to the computer.");
+	} else if ((le16_to_cpu(dev->descriptor.idVendor) == USB_CREATIVEGOMINI_VENDOR_ID) &&
+            (le16_to_cpu(dev->descriptor.idProduct) == USB_CREATIVEGOMINI_PRODUCT_ID)) {

VENDOR_ID and PRODUCT_ID are constants. You can do

	if ((dev->descriptor.idVendor == cpu_to_le16(VENDOR_ID)) &&
	    (dev->descriptor.idProduct == cpu_to_le16(PRODUCT_ID))) {

drivers/usb/media/stv680.c line 1391

Quoted 4 lines
drivers/usb/media/stv680.c +4 -0
+                camera_name = "Creative WebCam Go Mini";
+                PDEBUG (0, "STV(i): Creative WebCam Go Mini found.");
+	} 
+	else {

"} else {", please.

drivers/usb/media/stv680.h line 45

Quoted 7 lines
drivers/usb/media/stv680.c +2 -0
+		PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 or Creative WebCam Go Mini values.");
+		PDEBUG (0, "STV(e): Check that the STV0680 or Creative WebCam Go Mini camera is connected to the computer.");
 
drivers/usb/media/stv680.h +1 -0
 
+#define USB_CREATIVEGOMINI_VENDOR_ID 0x041e 

Trailing whitespace.

drivers/usb/media/stv680.h line 56

Quoted 5 lines

static struct usb_device_id device_table[] = {

drivers/usb/media/stv680.h +2 -0
 	{USB_DEVICE (USB_PENCAM_VENDOR_ID, USB_PENCAM_PRODUCT_ID)},
+	{USB_DEVICE (USB_CREATIVEGOMINI_VENDOR_ID, USB_CREATIVEGOMINI_PRODUCT_ID)},
 	{}
+	

Why add this line?

Quoted 1 line

};

#3 lore raw

Thanks for the comments Alexey.

The whitespaces came from the diff. I the only switch what I have used it -u.

About the VENDOR_ID and PRODUCT_ID, I have looked at the code of stv680.c that was in 2.6.11.11 and there the variables were casted.

drivers/usb/media/stv680.c line 1383

Quoted 2 lines
drivers/usb/media/stv680.c +0 -0
@@ -1375,9 +1383,14 @@
          (le16_to_cpu(dev->descriptor.idProduct) == USB_PENCAM_PRODUCT_ID)) {

Probably this code needs to be fixed as well.

And about the extra lines and bad formating of else clause I'll do better next time.

Do I need to submit fixed patch or you have applied this one?

//Cyrilo

Quoted 66 lines · Alexey Dobriyan
Quoted 1 line · Kiril Jovchev

So now I'm sending the patch again for 2.6.11.11 kernel what is latest stable.

You're lucky it applies cleanly against 2.6.12-rc5-whatever. ;-)

There is no need to split the patch into two ones. Next time CC [email protected]. Add "-p" to your diff switches.

drivers/usb/media/stv680.c

Quoted 4 lines
drivers/usb/media/stv680.c +1 -0
 
+ * Creative WebCam Go Mini Driver, modified by Kiril Jovchev

Trailing whitespace.

Quoted 5 lines

+ *
+ * ver 0.26 Sep, 2004 (kjv)
+ * Added support for Creative WebCam Go mini.
+ * Camera is based on same chip.
+ *

Trailing whitespace.

drivers/usb/media/stv680.c line 1387

Quoted 9 lines
drivers/usb/media/stv680.c +2 -3
@@ -1375,9 +1383,14 @@
          (le16_to_cpu(dev->descriptor.idProduct) == USB_PENCAM_PRODUCT_ID)) {
              camera_name = "STV0680";
              PDEBUG (0, "STV(i): STV0680 camera found.");
-     } else {
-             PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 values.");
-             PDEBUG (0, "STV(e): Check that the STV0680 camera is connected to the computer.");
+     } else if ((le16_to_cpu(dev->descriptor.idVendor) == USB_CREATIVEGOMINI_VENDOR_ID) &&
+            (le16_to_cpu(dev->descriptor.idProduct) == USB_CREATIVEGOMINI_PRODUCT_ID)) {

VENDOR_ID and PRODUCT_ID are constants. You can do

        if ((dev->descriptor.idVendor == cpu_to_le16(VENDOR_ID)) &&
            (dev->descriptor.idProduct == cpu_to_le16(PRODUCT_ID))) {

drivers/usb/media/stv680.c line 1391

Quoted 4 lines
drivers/usb/media/stv680.c +4 -0
+                camera_name = "Creative WebCam Go Mini";
+                PDEBUG (0, "STV(i): Creative WebCam Go Mini found.");
+     }
+     else {

"} else {", please.

drivers/usb/media/stv680.h line 45

Quoted 7 lines
drivers/usb/media/stv680.c +2 -0
+             PDEBUG (0, "STV(e): Vendor/Product ID do not match STV0680 or Creative WebCam Go Mini values.");
+             PDEBUG (0, "STV(e): Check that the STV0680 or Creative WebCam Go Mini camera is connected to the computer.");
 
drivers/usb/media/stv680.h +1 -0
 
+#define USB_CREATIVEGOMINI_VENDOR_ID 0x041e

Trailing whitespace.

drivers/usb/media/stv680.h line 56

Quoted 5 lines

static struct usb_device_id device_table[] = {
{USB_DEVICE (USB_PENCAM_VENDOR_ID, USB_PENCAM_PRODUCT_ID)},

drivers/usb/media/stv680.h +2 -0
+     {USB_DEVICE (USB_CREATIVEGOMINI_VENDOR_ID, USB_CREATIVEGOMINI_PRODUCT_ID)},
      {}
+

Why add this line?

Quoted 1 line

};