Creative WebCam mini driver
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_RGB24static 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);
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.
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_iddevice_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
};
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_IDandPRODUCT_IDare constants. You can doif ((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 0x041eTrailing whitespace.
drivers/usb/media/stv680.h line 56
Quoted 5 lines
static struct
usb_device_iddevice_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
};