Commit 9d64fdb1 authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab

V4L/DVB (8513): gspca: Set the specific per webcam information in driver_info.

This patch removes a big part of the code run at probe time.
Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 07767ebd
...@@ -1007,9 +1007,8 @@ static struct sd_desc sd_desc = { ...@@ -1007,9 +1007,8 @@ static struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static __devinitdata struct usb_device_id device_table[] = { static __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x0572, 0x0041), DVNM("Creative Notebook cx11646")}, {USB_DEVICE(0x0572, 0x0041)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -599,25 +599,10 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -599,25 +599,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 vendor;
__u16 product;
vendor = id->idVendor;
product = id->idProduct;
/* switch (vendor) { */
/* case 0x102c: * Etoms */
switch (product) {
case 0x6151:
sd->sensor = SENSOR_PAS106; /* Etoms61x151 */
break;
case 0x6251:
sd->sensor = SENSOR_TAS5130CXX; /* Etoms61x251 */
break;
/* } */
/* break; */
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 1; cam->epaddr = 1;
sd->sensor = id->driver_info;
if (sd->sensor == SENSOR_PAS106) { if (sd->sensor == SENSOR_PAS106) {
cam->cam_mode = sif_mode; cam->cam_mode = sif_mode;
cam->nmodes = sizeof sif_mode / sizeof sif_mode[0]; cam->nmodes = sizeof sif_mode / sizeof sif_mode[0];
...@@ -907,12 +892,11 @@ static struct sd_desc sd_desc = { ...@@ -907,12 +892,11 @@ static struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static __devinitdata struct usb_device_id device_table[] = { static __devinitdata struct usb_device_id device_table[] = {
#ifndef CONFIG_USB_ET61X251 #ifndef CONFIG_USB_ET61X251
{USB_DEVICE(0x102c, 0x6151), DVNM("Qcam Sangha CIF")}, {USB_DEVICE(0x102c, 0x6151), .driver_info = SENSOR_PAS106},
#endif #endif
{USB_DEVICE(0x102c, 0x6251), DVNM("Qcam xxxxxx VGA")}, {USB_DEVICE(0x102c, 0x6251), .driver_info = SENSOR_TAS5130CXX},
{} {}
}; };
......
...@@ -420,9 +420,8 @@ static const struct sd_desc sd_desc = { ...@@ -420,9 +420,8 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x093a, 0x050f), DVNM("Mars-Semi Pc-Camera")}, {USB_DEVICE(0x093a, 0x050f)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -2125,21 +2125,20 @@ static const struct sd_desc sd_desc = { ...@@ -2125,21 +2125,20 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x4052), DVNM("Creative Live! VISTA IM")}, {USB_DEVICE(0x041e, 0x4052)},
{USB_DEVICE(0x041e, 0x405f), DVNM("Creative Live! VISTA VF0330")}, {USB_DEVICE(0x041e, 0x405f)},
{USB_DEVICE(0x041e, 0x4060), DVNM("Creative Live! VISTA VF0350")}, {USB_DEVICE(0x041e, 0x4060)},
{USB_DEVICE(0x041e, 0x4061), DVNM("Creative Live! VISTA VF0400")}, {USB_DEVICE(0x041e, 0x4061)},
{USB_DEVICE(0x041e, 0x4064), DVNM("Creative Live! VISTA VF0420")}, {USB_DEVICE(0x041e, 0x4064)},
{USB_DEVICE(0x041e, 0x4068), DVNM("Creative Live! VISTA VF0470")}, {USB_DEVICE(0x041e, 0x4068)},
{USB_DEVICE(0x045e, 0x028c), DVNM("Microsoft xbox cam")}, {USB_DEVICE(0x045e, 0x028c)},
{USB_DEVICE(0x054c, 0x0154), DVNM("Sonny toy4")}, {USB_DEVICE(0x054c, 0x0154)},
{USB_DEVICE(0x054c, 0x0155), DVNM("Sonny toy5")}, {USB_DEVICE(0x054c, 0x0155)},
{USB_DEVICE(0x05a9, 0x0519), DVNM("OmniVision")}, {USB_DEVICE(0x05a9, 0x0519)},
{USB_DEVICE(0x05a9, 0x0530), DVNM("OmniVision")}, {USB_DEVICE(0x05a9, 0x0530)},
{USB_DEVICE(0x05a9, 0x4519), DVNM("OmniVision")}, {USB_DEVICE(0x05a9, 0x4519)},
{USB_DEVICE(0x05a9, 0x8519), DVNM("OmniVision")}, {USB_DEVICE(0x05a9, 0x8519)},
{} {}
}; };
#undef DVNAME #undef DVNAME
......
...@@ -570,17 +570,16 @@ static const struct sd_desc sd_desc = { ...@@ -570,17 +570,16 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x4028), DVNM("Creative Webcam Vista Plus")}, {USB_DEVICE(0x041e, 0x4028)},
{USB_DEVICE(0x093a, 0x2460), DVNM("Q-Tec Webcam 100")}, {USB_DEVICE(0x093a, 0x2460)},
{USB_DEVICE(0x093a, 0x2463), DVNM("Philips spc200nc pac207")}, {USB_DEVICE(0x093a, 0x2463)},
{USB_DEVICE(0x093a, 0x2464), DVNM("Labtec Webcam 1200")}, {USB_DEVICE(0x093a, 0x2464)},
{USB_DEVICE(0x093a, 0x2468), DVNM("PAC207")}, {USB_DEVICE(0x093a, 0x2468)},
{USB_DEVICE(0x093a, 0x2470), DVNM("Genius GF112")}, {USB_DEVICE(0x093a, 0x2470)},
{USB_DEVICE(0x093a, 0x2471), DVNM("Genius VideoCam GE111")}, {USB_DEVICE(0x093a, 0x2471)},
{USB_DEVICE(0x093a, 0x2472), DVNM("Genius VideoCam GE110")}, {USB_DEVICE(0x093a, 0x2472)},
{USB_DEVICE(0x2001, 0xf115), DVNM("D-Link DSB-C120")}, {USB_DEVICE(0x2001, 0xf115)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -709,16 +709,14 @@ static struct sd_desc sd_desc = { ...@@ -709,16 +709,14 @@ static struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static __devinitdata struct usb_device_id device_table[] = { static __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x093a, 0x2600), DVNM("Typhoon")}, {USB_DEVICE(0x093a, 0x2600)},
{USB_DEVICE(0x093a, 0x2601), DVNM("Philips SPC610NC")}, {USB_DEVICE(0x093a, 0x2601)},
{USB_DEVICE(0x093a, 0x2603), DVNM("PAC7312")}, {USB_DEVICE(0x093a, 0x2603)},
{USB_DEVICE(0x093a, 0x2608), DVNM("Trust WB-3300p")}, {USB_DEVICE(0x093a, 0x2608)},
{USB_DEVICE(0x093a, 0x260e), DVNM("Gigaware VGA PC Camera")}, {USB_DEVICE(0x093a, 0x260e)},
/* and also ', Trust WB-3350p, SIGMA cam 2350' */ {USB_DEVICE(0x093a, 0x260f)},
{USB_DEVICE(0x093a, 0x260f), DVNM("SnakeCam")}, {USB_DEVICE(0x093a, 0x2621)},
{USB_DEVICE(0x093a, 0x2621), DVNM("PAC731x")},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -795,191 +795,16 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -795,191 +795,16 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 product;
product = id->idProduct;
sd->sensor = -1;
switch (id->idVendor) {
case 0x0458: /* Genius */
/* switch (product) {
case 0x7025: */
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_MI0360;
sd->i2c_base = 0x5d;
/* break;
} */
break;
case 0x045e:
/* switch (product) {
case 0x00f5:
case 0x00f7: */
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_OV7660;
sd->i2c_base = 0x21;
/* break;
} */
break;
case 0x0471: /* Philips */
/* switch (product) {
case 0x0327:
case 0x0328:
case 0x0330: */
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_MI0360;
sd->i2c_base = 0x5d;
/* break;
} */
break;
case 0x0c45: /* Sonix */
switch (product) {
case 0x6040:
sd->bridge = BRIDGE_SN9C102P;
/* sd->sensor = SENSOR_MI0360; * from BW600.inf */
/*fixme: MI0360 base=5d ? */
sd->sensor = SENSOR_HV7131R; /* gspcav1 value */
sd->i2c_base = 0x11;
break;
/* case 0x607a: * from BW600.inf
sd->bridge = BRIDGE_SN9C102P;
sd->sensor = SENSOR_OV7648;
sd->i2c_base = 0x??;
break; */
case 0x607c:
sd->bridge = BRIDGE_SN9C102P;
sd->sensor = SENSOR_HV7131R;
sd->i2c_base = 0x11;
break;
/* case 0x607e: * from BW600.inf
sd->bridge = BRIDGE_SN9C102P;
sd->sensor = SENSOR_OV7630;
sd->i2c_base = 0x??;
break; */
case 0x60c0:
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_MI0360;
sd->i2c_base = 0x5d;
break;
/* case 0x60c8: * from BW600.inf
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_OM6801;
sd->i2c_base = 0x??;
break; */
/* case 0x60cc: * from BW600.inf
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_HV7131GP;
sd->i2c_base = 0x??;
break; */
case 0x60ec:
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_MO4000;
sd->i2c_base = 0x21;
break;
/* case 0x60ef: * from BW600.inf
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_ICM105C;
sd->i2c_base = 0x??;
break; */
/* case 0x60fa: * from BW600.inf
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_OV7648;
sd->i2c_base = 0x??;
break; */
case 0x60fb:
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_OV7660;
sd->i2c_base = 0x21;
break;
case 0x60fc:
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_HV7131R;
sd->i2c_base = 0x11;
break;
/* case 0x60fe: * from BW600.inf
sd->bridge = BRIDGE_SN9C105;
sd->sensor = SENSOR_OV7630;
sd->i2c_base = 0x??;
break; */
/* case 0x6108: * from BW600.inf
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_OM6801;
sd->i2c_base = 0x??;
break; */
/* case 0x6122: * from BW600.inf
sd->bridge = BRIDGE_SN9C110;
sd->sensor = SENSOR_ICM105C;
sd->i2c_base = 0x??;
break; */
case 0x612a:
/* sd->bridge = BRIDGE_SN9C110; * in BW600.inf */
sd->bridge = BRIDGE_SN9C325;
sd->sensor = SENSOR_OV7648;
sd->i2c_base = 0x21;
/*fixme: sensor_init has base = 00 et 6e!*/
break;
/* case 0x6123: * from BW600.inf
sd->bridge = BRIDGE_SN9C110;
sd->sensor = SENSOR_SanyoCCD;
sd->i2c_base = 0x??;
break; */
case 0x612c:
sd->bridge = BRIDGE_SN9C110;
sd->sensor = SENSOR_MO4000;
sd->i2c_base = 0x21;
break;
/* case 0x612e: * from BW600.inf
sd->bridge = BRIDGE_SN9C110;
sd->sensor = SENSOR_OV7630;
sd->i2c_base = 0x??;
break; */
/* case 0x612f: * from BW600.inf
sd->bridge = BRIDGE_SN9C110;
sd->sensor = SENSOR_ICM105C;
sd->i2c_base = 0x??;
break; */
case 0x6130:
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_MI0360;
sd->i2c_base = 0x5d;
break;
case 0x6138:
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_MO4000;
sd->i2c_base = 0x21;
break;
/* case 0x613a: * from BW600.inf
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_OV7648;
sd->i2c_base = 0x??;
break; */
case 0x613b:
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_OV7660;
sd->i2c_base = 0x21;
break;
case 0x613c:
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_HV7131R;
sd->i2c_base = 0x11;
break;
/* case 0x613e: * from BW600.inf
sd->bridge = BRIDGE_SN9C120;
sd->sensor = SENSOR_OV7630;
sd->i2c_base = 0x??;
break; */
}
break;
}
if (sd->sensor < 0) {
PDEBUG(D_ERR, "Invalid vendor/product %04x:%04x",
id->idVendor, product);
return -EINVAL;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 0x01; cam->epaddr = 0x01;
cam->cam_mode = vga_mode; cam->cam_mode = vga_mode;
cam->nmodes = ARRAY_SIZE(vga_mode); cam->nmodes = ARRAY_SIZE(vga_mode);
sd->bridge = id->driver_info >> 16;
sd->sensor = id->driver_info >> 8;
sd->i2c_base = id->driver_info;
sd->qindex = 4; /* set the quantization table */ sd->qindex = 4; /* set the quantization table */
sd->brightness = BRIGHTNESS_DEF; sd->brightness = BRIGHTNESS_DEF;
sd->contrast = CONTRAST_DEF; sd->contrast = CONTRAST_DEF;
...@@ -1596,29 +1421,51 @@ static const struct sd_desc sd_desc = { ...@@ -1596,29 +1421,51 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name #define BSI(bridge, sensor, i2c_addr) \
.driver_info = (BRIDGE_ ## bridge << 16) \
| (SENSOR_ ## sensor << 8) \
| (i2c_addr)
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
#ifndef CONFIG_USB_SN9C102 #ifndef CONFIG_USB_SN9C102
{USB_DEVICE(0x0458, 0x7025), DVNM("Genius Eye 311Q")}, {USB_DEVICE(0x0458, 0x7025), BSI(SN9C120, MI0360, 0x5d)},
{USB_DEVICE(0x045e, 0x00f5), DVNM("MicroSoft VX3000")}, {USB_DEVICE(0x045e, 0x00f5), BSI(SN9C105, OV7660, 0x21)},
{USB_DEVICE(0x045e, 0x00f7), DVNM("MicroSoft VX1000")}, {USB_DEVICE(0x045e, 0x00f7), BSI(SN9C105, OV7660, 0x21)},
{USB_DEVICE(0x0471, 0x0327), DVNM("Philips SPC 600 NC")}, {USB_DEVICE(0x0471, 0x0327), BSI(SN9C105, MI0360, 0x5d)},
{USB_DEVICE(0x0471, 0x0328), DVNM("Philips SPC 700 NC")}, {USB_DEVICE(0x0471, 0x0328), BSI(SN9C105, MI0360, 0x5d)},
#endif #endif
{USB_DEVICE(0x0471, 0x0330), DVNM("Philips SPC 710NC")}, {USB_DEVICE(0x0471, 0x0330), BSI(SN9C105, MI0360, 0x5d)},
{USB_DEVICE(0x0c45, 0x6040), DVNM("Speed NVC 350K")}, {USB_DEVICE(0x0c45, 0x6040), BSI(SN9C102P, HV7131R, 0x11)},
{USB_DEVICE(0x0c45, 0x607c), DVNM("Sonix sn9c102p Hv7131R")}, /* bw600.inf:
{USB_DEVICE(0x0c45, 0x60c0), DVNM("Sangha Sn535")}, {USB_DEVICE(0x0c45, 0x6040), BSI(SN9C102P, MI0360, 0x5d)}, */
{USB_DEVICE(0x0c45, 0x60ec), DVNM("SN9C105+MO4000")}, /* {USB_DEVICE(0x0c45, 0x603a), BSI(SN9C102P, OV7648, 0x??)}, */
{USB_DEVICE(0x0c45, 0x60fb), DVNM("Surfer NoName")}, /* {USB_DEVICE(0x0c45, 0x607a), BSI(SN9C102P, OV7648, 0x??)}, */
{USB_DEVICE(0x0c45, 0x60fc), DVNM("LG-LIC300")}, {USB_DEVICE(0x0c45, 0x607c), BSI(SN9C102P, HV7131R, 0x11)},
{USB_DEVICE(0x0c45, 0x612a), DVNM("Avant Camera")}, /* {USB_DEVICE(0x0c45, 0x607e), BSI(SN9C102P, OV7630, 0x??)}, */
{USB_DEVICE(0x0c45, 0x612c), DVNM("Typhoon Rasy Cam 1.3MPix")}, {USB_DEVICE(0x0c45, 0x60c0), BSI(SN9C105, MI0360, 0x5d)},
/* {USB_DEVICE(0x0c45, 0x60c8), BSI(SN9C105, OM6801, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x60cc), BSI(SN9C105, HV7131GP, 0x??)}, */
{USB_DEVICE(0x0c45, 0x60ec), BSI(SN9C105, MO4000, 0x21)},
/* {USB_DEVICE(0x0c45, 0x60ef), BSI(SN9C105, ICM105C, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x60fa), BSI(SN9C105, OV7648, 0x??)}, */
{USB_DEVICE(0x0c45, 0x60fb), BSI(SN9C105, OV7660, 0x21)},
{USB_DEVICE(0x0c45, 0x60fc), BSI(SN9C105, HV7131R, 0x11)},
/* {USB_DEVICE(0x0c45, 0x60fe), BSI(SN9C105, OV7630, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x6108), BSI(SN9C120, OM6801, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x6122), BSI(SN9C110, ICM105C, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x6123), BSI(SN9C110, SanyoCCD, 0x??)}, */
{USB_DEVICE(0x0c45, 0x612a), BSI(SN9C325, OV7648, 0x21)},
/* bw600.inf:
{USB_DEVICE(0x0c45, 0x612a), BSI(SN9C110, OV7648, 0x21)}, */
{USB_DEVICE(0x0c45, 0x612c), BSI(SN9C110, MO4000, 0x21)},
/* {USB_DEVICE(0x0c45, 0x612e), BSI(SN9C110, OV7630, 0x??)}, */
/* {USB_DEVICE(0x0c45, 0x612f), BSI(SN9C110, ICM105C, 0x??)}, */
#ifndef CONFIG_USB_SN9C102 #ifndef CONFIG_USB_SN9C102
{USB_DEVICE(0x0c45, 0x6130), DVNM("Sonix Pccam")}, {USB_DEVICE(0x0c45, 0x6130), BSI(SN9C120, MI0360, 0x5d)},
{USB_DEVICE(0x0c45, 0x6138), DVNM("Sn9c120 Mo4000")}, {USB_DEVICE(0x0c45, 0x6138), BSI(SN9C120, MO4000, 0x21)},
{USB_DEVICE(0x0c45, 0x613b), DVNM("Surfer SN-206")}, /* {USB_DEVICE(0x0c45, 0x613a), BSI(SN9C120, OV7648, 0x??)}, */
{USB_DEVICE(0x0c45, 0x613c), DVNM("Sonix Pccam168")}, {USB_DEVICE(0x0c45, 0x613b), BSI(SN9C120, OV7660, 0x21)},
{USB_DEVICE(0x0c45, 0x613c), BSI(SN9C120, HV7131R, 0x11)},
/* {USB_DEVICE(0x0c45, 0x613e), BSI(SN9C120, OV7630, 0x??)}, */
#endif #endif
{} {}
}; };
......
...@@ -627,108 +627,10 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -627,108 +627,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 vendor;
__u16 product;
vendor = id->idVendor;
product = id->idProduct;
switch (vendor) {
case 0x040a: /* Kodak cameras */
/* switch (product) { */
/* case 0x0300: */
sd->subtype = KodakEZ200;
/* break; */
/* } */
break;
case 0x041e: /* Creative cameras */
/* switch (product) { */
/* case 0x400a: */
sd->subtype = CreativePCCam300;
/* break; */
/* } */
break;
case 0x046d: /* Logitech Labtec */
switch (product) {
case 0x0890:
sd->subtype = LogitechTraveler;
break;
case 0x0900:
sd->subtype = LogitechClickSmart310;
break;
case 0x0901:
sd->subtype = LogitechClickSmart510;
break;
}
break;
case 0x04a5: /* Benq */
/* switch (product) { */
/* case 0x300c: */
sd->subtype = BenqDC1016;
/* break; */
/* } */
break;
case 0x04fc: /* SunPlus */
/* switch (product) { */
/* case 0x7333: */
sd->subtype = PalmPixDC85;
/* break; */
/* } */
break;
case 0x055f: /* Mustek cameras */
switch (product) {
case 0xc200:
sd->subtype = MustekGsmart300;
break;
case 0xc220:
sd->subtype = Gsmartmini;
break;
}
break;
case 0x06bd: /* Agfa Cl20 */
/* switch (product) { */
/* case 0x0404: */
sd->subtype = AgfaCl20;
/* break; */
/* } */
break;
case 0x06be: /* Optimedia */
/* switch (product) { */
/* case 0x0800: */
sd->subtype = Optimedia;
/* break; */
/* } */
break;
case 0x084d: /* D-Link / Minton */
/* switch (product) { */
/* case 0x0003: * DSC-350 / S-Cam F5 */
sd->subtype = DLinkDSC350;
/* break; */
/* } */
break;
case 0x08ca: /* Aiptek */
/* switch (product) { */
/* case 0x0103: */
sd->subtype = AiptekPocketDV;
/* break; */
/* } */
break;
case 0x2899: /* ToptroIndustrial */
/* switch (product) { */
/* case 0x012c: */
sd->subtype = ToptroIndus;
/* break; */
/* } */
break;
case 0x8086: /* Intel */
/* switch (product) { */
/* case 0x0630: * Pocket PC Camera */
sd->subtype = IntelPocketPCCamera;
/* break; */
/* } */
break;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 0x01; cam->epaddr = 0x01;
sd->subtype = id->driver_info;
if (sd->subtype != LogitechClickSmart310) { if (sd->subtype != LogitechClickSmart310) {
cam->cam_mode = vga_mode; cam->cam_mode = vga_mode;
cam->nmodes = sizeof vga_mode / sizeof vga_mode[0]; cam->nmodes = sizeof vga_mode / sizeof vga_mode[0];
...@@ -1158,23 +1060,22 @@ static struct sd_desc sd_desc = { ...@@ -1158,23 +1060,22 @@ static struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x040a, 0x0300), DVNM("Kodak EZ200")}, {USB_DEVICE(0x040a, 0x0300), KodakEZ200},
{USB_DEVICE(0x041e, 0x400a), DVNM("Creative PC-CAM 300")}, {USB_DEVICE(0x041e, 0x400a), CreativePCCam300},
{USB_DEVICE(0x046d, 0x0890), DVNM("Logitech QuickCam traveler")}, {USB_DEVICE(0x046d, 0x0890), LogitechTraveler},
{USB_DEVICE(0x046d, 0x0900), DVNM("Logitech Inc. ClickSmart 310")}, {USB_DEVICE(0x046d, 0x0900), LogitechClickSmart310},
{USB_DEVICE(0x046d, 0x0901), DVNM("Logitech Inc. ClickSmart 510")}, {USB_DEVICE(0x046d, 0x0901), LogitechClickSmart510},
{USB_DEVICE(0x04a5, 0x300c), DVNM("Benq DC1016")}, {USB_DEVICE(0x04a5, 0x300c), BenqDC1016},
{USB_DEVICE(0x04fc, 0x7333), DVNM("PalmPixDC85")}, {USB_DEVICE(0x04fc, 0x7333), PalmPixDC85},
{USB_DEVICE(0x055f, 0xc200), DVNM("Mustek Gsmart 300")}, {USB_DEVICE(0x055f, 0xc200), MustekGsmart300},
{USB_DEVICE(0x055f, 0xc220), DVNM("Gsmart Mini")}, {USB_DEVICE(0x055f, 0xc220), Gsmartmini},
{USB_DEVICE(0x06bd, 0x0404), DVNM("Agfa CL20")}, {USB_DEVICE(0x06bd, 0x0404), AgfaCl20},
{USB_DEVICE(0x06be, 0x0800), DVNM("Optimedia")}, {USB_DEVICE(0x06be, 0x0800), Optimedia},
{USB_DEVICE(0x084d, 0x0003), DVNM("D-Link DSC-350")}, {USB_DEVICE(0x084d, 0x0003), DLinkDSC350},
{USB_DEVICE(0x08ca, 0x0103), DVNM("Aiptek PocketDV")}, {USB_DEVICE(0x08ca, 0x0103), AiptekPocketDV},
{USB_DEVICE(0x2899, 0x012c), DVNM("Toptro Industrial")}, {USB_DEVICE(0x2899, 0x012c), ToptroIndus},
{USB_DEVICE(0x8086, 0x0630), DVNM("Intel Pocket PC Camera")}, {USB_DEVICE(0x8086, 0x0630), IntelPocketPCCamera},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -1920,62 +1920,12 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1920,62 +1920,12 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 vendor;
__u16 product;
vendor = id->idVendor;
product = id->idProduct;
switch (vendor) {
case 0x0000: /* Unknow Camera */
/* switch (product) { */
/* case 0x0000: */
sd->subtype = MystFromOriUnknownCamera;
/* break; */
/* } */
break;
case 0x040a: /* Kodak cameras */
/* switch (product) { */
/* case 0x0002: */
sd->subtype = KodakDVC325;
/* break; */
/* } */
break;
case 0x0497: /* Smile International */
/* switch (product) { */
/* case 0xc001: */
sd->subtype = SmileIntlCamera;
/* break; */
/* } */
break;
case 0x0506: /* 3COM cameras */
/* switch (product) { */
/* case 0x00df: */
sd->subtype = ThreeComHomeConnectLite;
/* break; */
/* } */
break;
case 0x0733: /* Rebadged ViewQuest (Intel) and ViewQuest cameras */
switch (product) {
case 0x0401:
sd->subtype = IntelCreateAndShare;
break;
case 0x0402:
sd->subtype = ViewQuestM318B;
break;
}
break;
case 0x1776: /* Arowana */
/* switch (product) { */
/* case 0x501c: */
sd->subtype = Arowana300KCMOSCamera;
/* break; */
/* } */
break;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 0x01; cam->epaddr = 0x01;
cam->cam_mode = vga_mode; cam->cam_mode = vga_mode;
cam->nmodes = sizeof vga_mode / sizeof vga_mode[0]; cam->nmodes = sizeof vga_mode / sizeof vga_mode[0];
sd->subtype = id->driver_info;
sd->brightness = sd_ctrls[MY_BRIGHTNESS].qctrl.default_value; sd->brightness = sd_ctrls[MY_BRIGHTNESS].qctrl.default_value;
sd->contrast = sd_ctrls[MY_CONTRAST].qctrl.default_value; sd->contrast = sd_ctrls[MY_CONTRAST].qctrl.default_value;
sd->colors = sd_ctrls[MY_COLOR].qctrl.default_value; sd->colors = sd_ctrls[MY_COLOR].qctrl.default_value;
...@@ -2179,15 +2129,14 @@ static const struct sd_desc sd_desc = { ...@@ -2179,15 +2129,14 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x040a, 0x0002), DVNM("Kodak DVC-325")}, {USB_DEVICE(0x040a, 0x0002), KodakDVC325},
{USB_DEVICE(0x0497, 0xc001), DVNM("Smile International")}, {USB_DEVICE(0x0497, 0xc001), SmileIntlCamera},
{USB_DEVICE(0x0506, 0x00df), DVNM("3Com HomeConnect Lite")}, {USB_DEVICE(0x0506, 0x00df), ThreeComHomeConnectLite},
{USB_DEVICE(0x0733, 0x0401), DVNM("Intel Create and Share")}, {USB_DEVICE(0x0733, 0x0401), IntelCreateAndShare},
{USB_DEVICE(0x0733, 0x0402), DVNM("ViewQuest M318B")}, {USB_DEVICE(0x0733, 0x0402), ViewQuestM318B},
{USB_DEVICE(0x1776, 0x501c), DVNM("Arowana 300K CMOS Camera")}, {USB_DEVICE(0x1776, 0x501c), Arowana300KCMOSCamera},
{USB_DEVICE(0x0000, 0x0000), DVNM("MystFromOri Unknow Camera")}, {USB_DEVICE(0x0000, 0x0000), MystFromOriUnknownCamera},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -638,32 +638,11 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -638,32 +638,11 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 vendor;
__u16 product;
vendor = id->idVendor;
product = id->idProduct;
switch (vendor) {
case 0x041e: /* Creative cameras */
/* switch (product) { */
/* case 0x401d: * here505b */
sd->subtype = Nxultra;
/* break; */
/* } */
break;
case 0x0733: /* Rebadged ViewQuest (Intel) and ViewQuest cameras */
/* switch (product) { */
/* case 0x0430: */
/* fixme: may be UsbGrabberPV321 BRIDGE_SPCA506 SENSOR_SAA7113 */
sd->subtype = IntelPCCameraPro;
/* break; */
/* } */
break;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 0x01; cam->epaddr = 0x01;
cam->cam_mode = vga_mode; cam->cam_mode = vga_mode;
sd->subtype = id->driver_info;
if (sd->subtype != IntelPCCameraPro) if (sd->subtype != IntelPCCameraPro)
cam->nmodes = sizeof vga_mode / sizeof vga_mode[0]; cam->nmodes = sizeof vga_mode / sizeof vga_mode[0];
else /* no 640x480 for IntelPCCameraPro */ else /* no 640x480 for IntelPCCameraPro */
...@@ -906,10 +885,10 @@ static const struct sd_desc sd_desc = { ...@@ -906,10 +885,10 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x401d), DVNM("Creative Webcam NX ULTRA")}, {USB_DEVICE(0x041e, 0x401d), Nxultra},
{USB_DEVICE(0x0733, 0x0430), DVNM("Intel PC Camera Pro")}, {USB_DEVICE(0x0733, 0x0430), IntelPCCameraPro},
/*fixme: may be UsbGrabberPV321 BRIDGE_SPCA506 SENSOR_SAA7113 */
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -800,12 +800,12 @@ static struct sd_desc sd_desc = { ...@@ -800,12 +800,12 @@ static struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static __devinitdata struct usb_device_id device_table[] = { static __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x06e1, 0xa190), DVNM("ADS Instant VCD")}, {USB_DEVICE(0x06e1, 0xa190)},
/* {USB_DEVICE(0x0733, 0x0430), DVNM("UsbGrabber PV321c")}, */ /*fixme: may be IntelPCCameraPro BRIDGE_SPCA505
{USB_DEVICE(0x0734, 0x043b), DVNM("3DeMon USB Capture aka")}, {USB_DEVICE(0x0733, 0x0430)}, */
{USB_DEVICE(0x99fa, 0x8988), DVNM("Grandtec V.cap")}, {USB_DEVICE(0x0734, 0x043b)},
{USB_DEVICE(0x99fa, 0x8988)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -1473,58 +1473,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1473,58 +1473,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
{ {
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam; struct cam *cam;
__u16 product;
int data1, data2; int data1, data2;
product = id->idProduct;
switch (id->idVendor) {
case 0x0130: /* Clone webcam */
/* switch (product) { */
/* case 0x0130: */
sd->subtype = HamaUSBSightcam; /* same as Hama 0010 */
/* break; */
/* } */
break;
case 0x041e: /* Creative cameras */
/* switch (product) { */
/* case 0x4018: */
sd->subtype = CreativeVista;
/* break; */
/* } */
break;
case 0x0461: /* MicroInnovation */
/* switch (product) { */
/* case 0x0815: */
sd->subtype = MicroInnovationIC200;
/* break; */
/* } */
break;
case 0x0733: /* Rebadged ViewQuest (Intel) and ViewQuest cameras */
/* switch (product) { */
/* case 0x110: */
sd->subtype = ViewQuestVQ110;
/* break; */
/* } */
break;
case 0x0af9: /* Hama cameras */
switch (product) {
case 0x0010:
sd->subtype = HamaUSBSightcam;
break;
case 0x0011:
sd->subtype = HamaUSBSightcam2;
break;
}
break;
case 0x8086: /* Intel */
/* switch (product) { */
/* case 0x0110: */
sd->subtype = IntelEasyPCCamera;
/* break; */
/* } */
break;
}
/* Read from global register the USB product and vendor IDs, just to /* Read from global register the USB product and vendor IDs, just to
* prove that we can communicate with the device. This works, which * prove that we can communicate with the device. This works, which
* confirms at we are communicating properly and that the device * confirms at we are communicating properly and that the device
...@@ -1544,6 +1494,8 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1544,6 +1494,8 @@ static int sd_config(struct gspca_dev *gspca_dev,
cam->epaddr = 0x01; cam->epaddr = 0x01;
cam->cam_mode = sif_mode; cam->cam_mode = sif_mode;
cam->nmodes = ARRAY_SIZE(sif_mode); cam->nmodes = ARRAY_SIZE(sif_mode);
sd->subtype = id->driver_info;
sd->brightness = BRIGHTNESS_DEF; sd->brightness = BRIGHTNESS_DEF;
switch (sd->subtype) { switch (sd->subtype) {
...@@ -1741,15 +1693,14 @@ static const struct sd_desc sd_desc = { ...@@ -1741,15 +1693,14 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x0130, 0x0130), DVNM("Clone Digital Webcam 11043")}, {USB_DEVICE(0x0130, 0x0130), HamaUSBSightcam},
{USB_DEVICE(0x041e, 0x4018), DVNM("Creative Webcam Vista (PD1100)")}, {USB_DEVICE(0x041e, 0x4018), CreativeVista},
{USB_DEVICE(0x0461, 0x0815), DVNM("Micro Innovation IC200")}, {USB_DEVICE(0x0461, 0x0815), MicroInnovationIC200},
{USB_DEVICE(0x0733, 0x0110), DVNM("ViewQuest VQ110")}, {USB_DEVICE(0x0733, 0x0110), ViewQuestVQ110},
{USB_DEVICE(0x0af9, 0x0010), DVNM("Hama USB Sightcam 100")}, {USB_DEVICE(0x0af9, 0x0010), HamaUSBSightcam},
{USB_DEVICE(0x0af9, 0x0011), DVNM("Hama USB Sightcam 100")}, {USB_DEVICE(0x0af9, 0x0011), HamaUSBSightcam2},
{USB_DEVICE(0x8086, 0x0110), DVNM("Intel Easy PC Camera")}, {USB_DEVICE(0x8086, 0x0110), IntelEasyPCCamera},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -579,35 +579,15 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -579,35 +579,15 @@ static int sd_config(struct gspca_dev *gspca_dev,
PDEBUG(D_PROBE, "Bad vendor / product from device"); PDEBUG(D_PROBE, "Bad vendor / product from device");
return -EINVAL; return -EINVAL;
} }
switch (product) {
case 0x0928:
case 0x0929:
case 0x092a:
case 0x092b:
case 0x092c:
case 0x092d:
case 0x092e:
case 0x092f:
case 0x403b:
sd->chip_revision = Rev012A;
break;
default:
/* case 0x0561:
case 0x0815: * ?? in spca508.c
case 0x401a:
case 0x7004:
case 0x7e50:
case 0xa001:
case 0xcdee: */
sd->chip_revision = Rev072A;
break;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->dev_name = (char *) id->driver_info; cam->dev_name = (char *) id->driver_info;
cam->epaddr = 0x01; cam->epaddr = 0x01;
gspca_dev->nbalt = 7 + 1; /* choose alternate 7 first */ gspca_dev->nbalt = 7 + 1; /* choose alternate 7 first */
cam->cam_mode = sif_mode; cam->cam_mode = sif_mode;
cam->nmodes = sizeof sif_mode / sizeof sif_mode[0]; cam->nmodes = sizeof sif_mode / sizeof sif_mode[0];
sd->chip_revision = id->driver_info;
sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value;
sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value;
sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value;
...@@ -994,23 +974,22 @@ static const struct sd_desc sd_desc = { ...@@ -994,23 +974,22 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x401a), DVNM("Creative Webcam Vista (PD1100)")}, {USB_DEVICE(0x041e, 0x401a), Rev072A},
{USB_DEVICE(0x041e, 0x403b), DVNM("Creative Webcam Vista (VF0010)")}, {USB_DEVICE(0x041e, 0x403b), Rev012A},
{USB_DEVICE(0x0458, 0x7004), DVNM("Genius VideoCAM Express V2")}, {USB_DEVICE(0x0458, 0x7004), Rev072A},
{USB_DEVICE(0x046d, 0x0928), DVNM("Logitech QC Express Etch2")}, {USB_DEVICE(0x046d, 0x0928), Rev012A},
{USB_DEVICE(0x046d, 0x0929), DVNM("Labtec Webcam Elch2")}, {USB_DEVICE(0x046d, 0x0929), Rev012A},
{USB_DEVICE(0x046d, 0x092a), DVNM("Logitech QC for Notebook")}, {USB_DEVICE(0x046d, 0x092a), Rev012A},
{USB_DEVICE(0x046d, 0x092b), DVNM("Labtec Webcam Plus")}, {USB_DEVICE(0x046d, 0x092b), Rev012A},
{USB_DEVICE(0x046d, 0x092c), DVNM("Logitech QC chat Elch2")}, {USB_DEVICE(0x046d, 0x092c), Rev012A},
{USB_DEVICE(0x046d, 0x092d), DVNM("Logitech QC Elch2")}, {USB_DEVICE(0x046d, 0x092d), Rev012A},
{USB_DEVICE(0x046d, 0x092e), DVNM("Logitech QC Elch2")}, {USB_DEVICE(0x046d, 0x092e), Rev012A},
{USB_DEVICE(0x046d, 0x092f), DVNM("Logitech QC Elch2")}, {USB_DEVICE(0x046d, 0x092f), Rev012A},
{USB_DEVICE(0x04fc, 0x0561), DVNM("Flexcam 100")}, {USB_DEVICE(0x04fc, 0x0561), Rev072A},
{USB_DEVICE(0x060b, 0xa001), DVNM("Maxell Compact Pc PM3")}, {USB_DEVICE(0x060b, 0xa001), Rev072A},
{USB_DEVICE(0x10fd, 0x7e50), DVNM("FlyCam Usb 100")}, {USB_DEVICE(0x10fd, 0x7e50), Rev072A},
{USB_DEVICE(0xabcd, 0xcdee), DVNM("Petcam")}, {USB_DEVICE(0xabcd, 0xcdee), Rev072A},
{} {}
}; };
......
...@@ -545,9 +545,8 @@ static const struct sd_desc sd_desc = { ...@@ -545,9 +545,8 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x05e1, 0x0893), DVNM("Syntek DV4000")}, {USB_DEVICE(0x05e1, 0x0893)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -801,228 +801,29 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -801,228 +801,29 @@ static int sd_config(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev; struct sd *sd = (struct sd *) gspca_dev;
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
struct cam *cam; struct cam *cam;
__u16 vendor;
__u16 product; cam = &gspca_dev->cam;
__u8 fw; cam->epaddr = 0x01;
vendor = id->idVendor; sd->bridge = id->driver_info >> 8;
product = id->idProduct; sd->subtype = id->driver_info;
switch (vendor) {
case 0x041e: /* Creative cameras */ if (sd->subtype == AiptekMiniPenCam13) {
/* switch (product) { */
/* case 0x400b: */
/* case 0x4012: */
/* case 0x4013: */
/* sd->bridge = BRIDGE_SPCA504C; */
/* break; */
/* } */
break;
case 0x0458: /* Genius KYE cameras */
/* switch (product) { */
/* case 0x7006: */
sd->bridge = BRIDGE_SPCA504B;
/* break; */
/* } */
break;
case 0x0461: /* MicroInnovation */
/* switch (product) { */
/* case 0x0821: */
sd->bridge = BRIDGE_SPCA533;
/* break; */
/* } */
break;
case 0x046d: /* Logitech Labtec */
switch (product) {
case 0x0905:
sd->subtype = LogitechClickSmart820;
sd->bridge = BRIDGE_SPCA533;
break;
case 0x0960:
sd->subtype = LogitechClickSmart420;
sd->bridge = BRIDGE_SPCA504C;
break;
}
break;
case 0x0471: /* Philips */
/* switch (product) { */
/* case 0x0322: */
sd->bridge = BRIDGE_SPCA504B;
/* break; */
/* } */
break;
case 0x04a5: /* Benq */
switch (product) {
case 0x3003:
sd->bridge = BRIDGE_SPCA504B;
break;
case 0x3008:
case 0x300a:
sd->bridge = BRIDGE_SPCA533;
break;
}
break;
case 0x04f1: /* JVC */
/* switch (product) { */
/* case 0x1001: */
sd->bridge = BRIDGE_SPCA504B;
/* break; */
/* } */
break;
case 0x04fc: /* SunPlus */
switch (product) {
case 0x500c:
sd->bridge = BRIDGE_SPCA504B;
break;
case 0x504a:
/* try to get the firmware as some cam answer 2.0.1.2.2 /* try to get the firmware as some cam answer 2.0.1.2.2
* and should be a spca504b then overwrite that setting */ * and should be a spca504b then overwrite that setting */
reg_r(dev, 0x20, 0, gspca_dev->usb_buf, 1); reg_r(dev, 0x20, 0, gspca_dev->usb_buf, 1);
fw = gspca_dev->usb_buf[0]; switch (gspca_dev->usb_buf[0]) {
if (fw == 1) { case 1:
sd->subtype = AiptekMiniPenCam13; break; /* (right bridge/subtype) */
sd->bridge = BRIDGE_SPCA504; case 2:
} else if (fw == 2) {
sd->bridge = BRIDGE_SPCA504B;
} else
return -ENODEV;
break;
case 0x504b:
sd->bridge = BRIDGE_SPCA504B;
break;
case 0x5330:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x5360:
sd->bridge = BRIDGE_SPCA536;
break;
case 0xffff:
sd->bridge = BRIDGE_SPCA504B;
break;
}
break;
case 0x052b: /* ?? Megapix */
/* switch (product) { */
/* case 0x1513: */
sd->subtype = MegapixV4;
sd->bridge = BRIDGE_SPCA533;
/* break; */
/* } */
break;
case 0x0546: /* Polaroid */
switch (product) {
case 0x3155:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x3191:
case 0x3273:
sd->bridge = BRIDGE_SPCA504B; sd->bridge = BRIDGE_SPCA504B;
sd->subtype = 0;
break; break;
default:
return -ENODEV;
} }
break;
case 0x055f: /* Mustek cameras */
switch (product) {
case 0xc211:
sd->bridge = BRIDGE_SPCA536;
break;
case 0xc230:
case 0xc232:
sd->bridge = BRIDGE_SPCA533;
break;
case 0xc360:
sd->bridge = BRIDGE_SPCA536;
break;
case 0xc420:
sd->bridge = BRIDGE_SPCA504;
break;
case 0xc430:
case 0xc440:
sd->bridge = BRIDGE_SPCA533;
break;
case 0xc520:
sd->bridge = BRIDGE_SPCA504;
break;
case 0xc530:
case 0xc540:
case 0xc630:
case 0xc650:
sd->bridge = BRIDGE_SPCA533;
break;
}
break;
case 0x05da: /* Digital Dream cameras */
/* switch (product) { */
/* case 0x1018: */
sd->bridge = BRIDGE_SPCA504B;
/* break; */
/* } */
break;
case 0x06d6: /* Trust */
/* switch (product) { */
/* case 0x0031: */
sd->bridge = BRIDGE_SPCA533; /* SPCA533A */
/* break; */
/* } */
break;
case 0x0733: /* Rebadged ViewQuest (Intel) and ViewQuest cameras */
switch (product) {
case 0x1311:
case 0x1314:
case 0x2211:
case 0x2221:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x3261:
case 0x3281:
sd->bridge = BRIDGE_SPCA536;
break;
}
break;
case 0x08ca: /* Aiptek */
switch (product) {
case 0x0104:
case 0x0106:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x2008:
sd->bridge = BRIDGE_SPCA504B;
break;
case 0x2010:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x2016:
case 0x2018:
sd->bridge = BRIDGE_SPCA504B;
break;
case 0x2020:
case 0x2022:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x2024:
sd->bridge = BRIDGE_SPCA536;
break;
case 0x2028:
sd->bridge = BRIDGE_SPCA533;
break;
case 0x2040:
case 0x2042:
case 0x2050:
case 0x2060:
sd->bridge = BRIDGE_SPCA536;
break;
}
break;
case 0x0d64: /* SunPlus */
/* switch (product) { */
/* case 0x0303: */
sd->bridge = BRIDGE_SPCA536;
/* break; */
/* } */
break;
} }
cam = &gspca_dev->cam;
cam->epaddr = 0x01;
switch (sd->bridge) { switch (sd->bridge) {
default: default:
/* case BRIDGE_SPCA504B: */ /* case BRIDGE_SPCA504B: */
...@@ -1577,65 +1378,67 @@ static const struct sd_desc sd_desc = { ...@@ -1577,65 +1378,67 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name #define BS(bridge, subtype) \
.driver_info = (BRIDGE_ ## bridge << 8) \
| (subtype)
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x400b), DVNM("Creative PC-CAM 600")}, {USB_DEVICE(0x041e, 0x400b), BS(SPCA504C, 0)},
{USB_DEVICE(0x041e, 0x4012), DVNM("PC-Cam350")}, {USB_DEVICE(0x041e, 0x4012), BS(SPCA504C, 0)},
{USB_DEVICE(0x041e, 0x4013), DVNM("Creative Pccam750")}, {USB_DEVICE(0x041e, 0x4013), BS(SPCA504C, 0)},
{USB_DEVICE(0x0458, 0x7006), DVNM("Genius Dsc 1.3 Smart")}, {USB_DEVICE(0x0458, 0x7006), BS(SPCA504B, 0)},
{USB_DEVICE(0x0461, 0x0821), DVNM("Fujifilm MV-1")}, {USB_DEVICE(0x0461, 0x0821), BS(SPCA533, 0)},
{USB_DEVICE(0x046d, 0x0905), DVNM("Logitech ClickSmart 820")}, {USB_DEVICE(0x046d, 0x0905), BS(SPCA533, LogitechClickSmart820)},
{USB_DEVICE(0x046d, 0x0960), DVNM("Logitech ClickSmart 420")}, {USB_DEVICE(0x046d, 0x0960), BS(SPCA504C, LogitechClickSmart420)},
{USB_DEVICE(0x0471, 0x0322), DVNM("Philips DMVC1300K")}, {USB_DEVICE(0x0471, 0x0322), BS(SPCA504B, 0)},
{USB_DEVICE(0x04a5, 0x3003), DVNM("Benq DC 1300")}, {USB_DEVICE(0x04a5, 0x3003), BS(SPCA504B, 0)},
{USB_DEVICE(0x04a5, 0x3008), DVNM("Benq DC 1500")}, {USB_DEVICE(0x04a5, 0x3008), BS(SPCA533, 0)},
{USB_DEVICE(0x04a5, 0x300a), DVNM("Benq DC3410")}, {USB_DEVICE(0x04a5, 0x300a), BS(SPCA533, 0)},
{USB_DEVICE(0x04f1, 0x1001), DVNM("JVC GC A50")}, {USB_DEVICE(0x04f1, 0x1001), BS(SPCA504B, 0)},
{USB_DEVICE(0x04fc, 0x500c), DVNM("Sunplus CA500C")}, {USB_DEVICE(0x04fc, 0x500c), BS(SPCA504B, 0)},
{USB_DEVICE(0x04fc, 0x504a), DVNM("Aiptek Mini PenCam 1.3")}, {USB_DEVICE(0x04fc, 0x504a), BS(SPCA504, AiptekMiniPenCam13)},
{USB_DEVICE(0x04fc, 0x504b), DVNM("Maxell MaxPocket LE 1.3")}, {USB_DEVICE(0x04fc, 0x504b), BS(SPCA504B, 0)},
{USB_DEVICE(0x04fc, 0x5330), DVNM("Digitrex 2110")}, {USB_DEVICE(0x04fc, 0x5330), BS(SPCA533, 0)},
{USB_DEVICE(0x04fc, 0x5360), DVNM("Sunplus Generic")}, {USB_DEVICE(0x04fc, 0x5360), BS(SPCA536, 0)},
{USB_DEVICE(0x04fc, 0xffff), DVNM("Pure DigitalDakota")}, {USB_DEVICE(0x04fc, 0xffff), BS(SPCA504B, 0)},
{USB_DEVICE(0x052b, 0x1513), DVNM("Megapix V4")}, {USB_DEVICE(0x052b, 0x1513), BS(SPCA533, MegapixV4)},
{USB_DEVICE(0x0546, 0x3155), DVNM("Polaroid PDC3070")}, {USB_DEVICE(0x0546, 0x3155), BS(SPCA533, 0)},
{USB_DEVICE(0x0546, 0x3191), DVNM("Polaroid Ion 80")}, {USB_DEVICE(0x0546, 0x3191), BS(SPCA504B, 0)},
{USB_DEVICE(0x0546, 0x3273), DVNM("Polaroid PDC2030")}, {USB_DEVICE(0x0546, 0x3273), BS(SPCA504B, 0)},
{USB_DEVICE(0x055f, 0xc211), DVNM("Kowa Bs888e Microcamera")}, {USB_DEVICE(0x055f, 0xc211), BS(SPCA536, 0)},
{USB_DEVICE(0x055f, 0xc230), DVNM("Mustek Digicam 330K")}, {USB_DEVICE(0x055f, 0xc230), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc232), DVNM("Mustek MDC3500")}, {USB_DEVICE(0x055f, 0xc232), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc360), DVNM("Mustek DV4000 Mpeg4 ")}, {USB_DEVICE(0x055f, 0xc360), BS(SPCA536, 0)},
{USB_DEVICE(0x055f, 0xc420), DVNM("Mustek gSmart Mini 2")}, {USB_DEVICE(0x055f, 0xc420), BS(SPCA504, 0)},
{USB_DEVICE(0x055f, 0xc430), DVNM("Mustek Gsmart LCD 2")}, {USB_DEVICE(0x055f, 0xc430), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc440), DVNM("Mustek DV 3000")}, {USB_DEVICE(0x055f, 0xc440), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc520), DVNM("Mustek gSmart Mini 3")}, {USB_DEVICE(0x055f, 0xc520), BS(SPCA504, 0)},
{USB_DEVICE(0x055f, 0xc530), DVNM("Mustek Gsmart LCD 3")}, {USB_DEVICE(0x055f, 0xc530), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc540), DVNM("Gsmart D30")}, {USB_DEVICE(0x055f, 0xc540), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc630), DVNM("Mustek MDC4000")}, {USB_DEVICE(0x055f, 0xc630), BS(SPCA533, 0)},
{USB_DEVICE(0x055f, 0xc650), DVNM("Mustek MDC5500Z")}, {USB_DEVICE(0x055f, 0xc650), BS(SPCA533, 0)},
{USB_DEVICE(0x05da, 0x1018), DVNM("Digital Dream Enigma 1.3")}, {USB_DEVICE(0x05da, 0x1018), BS(SPCA504B, 0)},
{USB_DEVICE(0x06d6, 0x0031), DVNM("Trust 610 LCD PowerC@m Zoom")}, {USB_DEVICE(0x06d6, 0x0031), BS(SPCA533, 0)},
{USB_DEVICE(0x0733, 0x1311), DVNM("Digital Dream Epsilon 1.3")}, {USB_DEVICE(0x0733, 0x1311), BS(SPCA533, 0)},
{USB_DEVICE(0x0733, 0x1314), DVNM("Mercury 2.1MEG Deluxe Classic Cam")}, {USB_DEVICE(0x0733, 0x1314), BS(SPCA533, 0)},
{USB_DEVICE(0x0733, 0x2211), DVNM("Jenoptik jdc 21 LCD")}, {USB_DEVICE(0x0733, 0x2211), BS(SPCA533, 0)},
{USB_DEVICE(0x0733, 0x2221), DVNM("Mercury Digital Pro 3.1p")}, {USB_DEVICE(0x0733, 0x2221), BS(SPCA533, 0)},
{USB_DEVICE(0x0733, 0x3261), DVNM("Concord 3045 spca536a")}, {USB_DEVICE(0x0733, 0x3261), BS(SPCA536, 0)},
{USB_DEVICE(0x0733, 0x3281), DVNM("Cyberpix S550V")}, {USB_DEVICE(0x0733, 0x3281), BS(SPCA536, 0)},
{USB_DEVICE(0x08ca, 0x0104), DVNM("Aiptek PocketDVII 1.3")}, {USB_DEVICE(0x08ca, 0x0104), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x0106), DVNM("Aiptek Pocket DV3100+")}, {USB_DEVICE(0x08ca, 0x0106), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x2008), DVNM("Aiptek Mini PenCam 2 M")}, {USB_DEVICE(0x08ca, 0x2008), BS(SPCA504B, 0)},
{USB_DEVICE(0x08ca, 0x2010), DVNM("Aiptek PocketCam 3M")}, {USB_DEVICE(0x08ca, 0x2010), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x2016), DVNM("Aiptek PocketCam 2 Mega")}, {USB_DEVICE(0x08ca, 0x2016), BS(SPCA504B, 0)},
{USB_DEVICE(0x08ca, 0x2018), DVNM("Aiptek Pencam SD 2M")}, {USB_DEVICE(0x08ca, 0x2018), BS(SPCA504B, 0)},
{USB_DEVICE(0x08ca, 0x2020), DVNM("Aiptek Slim 3000F")}, {USB_DEVICE(0x08ca, 0x2020), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x2022), DVNM("Aiptek Slim 3200")}, {USB_DEVICE(0x08ca, 0x2022), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x2024), DVNM("Aiptek DV3500 Mpeg4 ")}, {USB_DEVICE(0x08ca, 0x2024), BS(SPCA536, 0)},
{USB_DEVICE(0x08ca, 0x2028), DVNM("Aiptek PocketCam4M")}, {USB_DEVICE(0x08ca, 0x2028), BS(SPCA533, 0)},
{USB_DEVICE(0x08ca, 0x2040), DVNM("Aiptek PocketDV4100M")}, {USB_DEVICE(0x08ca, 0x2040), BS(SPCA536, 0)},
{USB_DEVICE(0x08ca, 0x2042), DVNM("Aiptek PocketDV5100")}, {USB_DEVICE(0x08ca, 0x2042), BS(SPCA536, 0)},
{USB_DEVICE(0x08ca, 0x2050), DVNM("Medion MD 41437")}, {USB_DEVICE(0x08ca, 0x2050), BS(SPCA536, 0)},
{USB_DEVICE(0x08ca, 0x2060), DVNM("Aiptek PocketDV5300")}, {USB_DEVICE(0x08ca, 0x2060), BS(SPCA536, 0)},
{USB_DEVICE(0x0d64, 0x0303), DVNM("Sunplus FashionCam DXG")}, {USB_DEVICE(0x0d64, 0x0303), BS(SPCA536, 0)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -995,9 +995,8 @@ static const struct sd_desc sd_desc = { ...@@ -995,9 +995,8 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x17a1, 0x0128), DVNM("XPX Webcam")}, {USB_DEVICE(0x17a1, 0x0128)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -620,13 +620,12 @@ static const struct sd_desc sd_desc = { ...@@ -620,13 +620,12 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x046d, 0x0920), DVNM("QC Express")}, {USB_DEVICE(0x046d, 0x0920)},
{USB_DEVICE(0x046d, 0x0921), DVNM("Labtec Webcam")}, {USB_DEVICE(0x046d, 0x0921)},
{USB_DEVICE(0x0545, 0x808b), DVNM("Veo Stingray")}, {USB_DEVICE(0x0545, 0x808b)},
{USB_DEVICE(0x0545, 0x8333), DVNM("Veo Stingray")}, {USB_DEVICE(0x0545, 0x8333)},
{USB_DEVICE(0x0923, 0x010f), DVNM("ICM532 cams")}, {USB_DEVICE(0x0923, 0x010f)},
{} {}
}; };
......
...@@ -1416,29 +1416,10 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -1416,29 +1416,10 @@ static int sd_config(struct gspca_dev *gspca_dev,
struct usb_device *dev = gspca_dev->dev; struct usb_device *dev = gspca_dev->dev;
struct cam *cam; struct cam *cam;
int sensor; int sensor;
__u16 product;
product = id->idProduct;
sd->bridge = BRIDGE_VC0321;
switch (id->idVendor) {
case 0x0ac8: /* Vimicro z-star */
switch (product) {
case 0x0323:
sd->bridge = BRIDGE_VC0323;
break;
}
break;
case 0x17ef: /* Lenovo */
/* switch (product) { */
/* case 0x4802: * Lenovo MI1310_SOC */
sd->bridge = BRIDGE_VC0323;
/* break; */
/* } */
break;
}
cam = &gspca_dev->cam; cam = &gspca_dev->cam;
cam->epaddr = 0x02; cam->epaddr = 0x02;
sd->bridge = id->driver_info;
if (sd->bridge == BRIDGE_VC0321) { if (sd->bridge == BRIDGE_VC0321) {
cam->cam_mode = vc0321_mode; cam->cam_mode = vc0321_mode;
cam->nmodes = ARRAY_SIZE(vc0321_mode); cam->nmodes = ARRAY_SIZE(vc0321_mode);
...@@ -1767,16 +1748,15 @@ static const struct sd_desc sd_desc = { ...@@ -1767,16 +1748,15 @@ static const struct sd_desc sd_desc = {
}; };
/* -- module initialisation -- */ /* -- module initialisation -- */
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x046d, 0x0892), DVNM("Logitech Orbicam")}, {USB_DEVICE(0x046d, 0x0892), BRIDGE_VC0321},
{USB_DEVICE(0x046d, 0x0896), DVNM("Logitech Orbicam")}, {USB_DEVICE(0x046d, 0x0896), BRIDGE_VC0321},
{USB_DEVICE(0x0ac8, 0x0321), DVNM("Vimicro generic vc0321")}, {USB_DEVICE(0x0ac8, 0x0321), BRIDGE_VC0321},
{USB_DEVICE(0x0ac8, 0x0323), DVNM("Vimicro Vc0323")}, {USB_DEVICE(0x0ac8, 0x0323), BRIDGE_VC0323},
{USB_DEVICE(0x0ac8, 0x0328), DVNM("A4Tech PK-130MG")}, {USB_DEVICE(0x0ac8, 0x0328), BRIDGE_VC0321},
{USB_DEVICE(0x0ac8, 0xc001), DVNM("Sony embedded vimicro")}, {USB_DEVICE(0x0ac8, 0xc001), BRIDGE_VC0321},
{USB_DEVICE(0x0ac8, 0xc002), DVNM("Sony embedded vimicro")}, {USB_DEVICE(0x0ac8, 0xc002), BRIDGE_VC0321},
{USB_DEVICE(0x17ef, 0x4802), DVNM("Lenovo Vc0323+MI1310_SOC")}, {USB_DEVICE(0x17ef, 0x4802), BRIDGE_VC0323},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, device_table); MODULE_DEVICE_TABLE(usb, device_table);
......
...@@ -7012,31 +7012,7 @@ static int sd_config(struct gspca_dev *gspca_dev, ...@@ -7012,31 +7012,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
/* define some sensors from the vendor/product */ /* define some sensors from the vendor/product */
sd->sharpness = 2; sd->sharpness = 2;
sd->sensor = -1; sd->sensor = id->driver_info;
switch (id->idVendor) {
case 0x041e: /* Creative */
switch (id->idProduct) {
case 0x4051: /* zc301 chips */
case 0x4053:
sd->sensor = SENSOR_TAS5130C_VF0250;
break;
}
break;
case 0x046d: /* Logitech Labtec */
switch (id->idProduct) {
case 0x08dd:
sd->sensor = SENSOR_MC501CB;
break;
}
break;
case 0x0ac8: /* Vimicro z-star */
switch (id->idProduct) {
case 0x305b:
sd->sensor = SENSOR_TAS5130C_VF0250;
break;
}
break;
}
sensor = zcxx_probeSensor(gspca_dev); sensor = zcxx_probeSensor(gspca_dev);
if (sensor >= 0) if (sensor >= 0)
PDEBUG(D_PROBE, "probe sensor -> %02x", sensor); PDEBUG(D_PROBE, "probe sensor -> %02x", sensor);
...@@ -7522,70 +7498,69 @@ static const struct sd_desc sd_desc = { ...@@ -7522,70 +7498,69 @@ static const struct sd_desc sd_desc = {
.querymenu = sd_querymenu, .querymenu = sd_querymenu,
}; };
#define DVNM(name) .driver_info = (kernel_ulong_t) name
static const __devinitdata struct usb_device_id device_table[] = { static const __devinitdata struct usb_device_id device_table[] = {
{USB_DEVICE(0x041e, 0x041e), DVNM("Creative WebCam Live!")}, {USB_DEVICE(0x041e, 0x041e)},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x041e, 0x4017), DVNM("Creative Webcam Mobile PD1090")}, {USB_DEVICE(0x041e, 0x4017)},
{USB_DEVICE(0x041e, 0x401c), DVNM("Creative NX")}, {USB_DEVICE(0x041e, 0x401c)},
{USB_DEVICE(0x041e, 0x401e), DVNM("Creative Nx Pro")}, {USB_DEVICE(0x041e, 0x401e)},
{USB_DEVICE(0x041e, 0x401f), DVNM("Creative Webcam Notebook PD1171")}, {USB_DEVICE(0x041e, 0x401f)},
#endif #endif
{USB_DEVICE(0x041e, 0x4029), DVNM("Creative WebCam Vista Pro")}, {USB_DEVICE(0x041e, 0x4029)},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x041e, 0x4034), DVNM("Creative Instant P0620")}, {USB_DEVICE(0x041e, 0x4034)},
{USB_DEVICE(0x041e, 0x4035), DVNM("Creative Instant P0620D")}, {USB_DEVICE(0x041e, 0x4035)},
{USB_DEVICE(0x041e, 0x4036), DVNM("Creative Live !")}, {USB_DEVICE(0x041e, 0x4036)},
{USB_DEVICE(0x041e, 0x403a), DVNM("Creative Nx Pro 2")}, {USB_DEVICE(0x041e, 0x403a)},
#endif #endif
{USB_DEVICE(0x041e, 0x4051), DVNM("Creative Notebook Pro (VF0250)")}, {USB_DEVICE(0x041e, 0x4051), SENSOR_TAS5130C_VF0250},
{USB_DEVICE(0x041e, 0x4053), DVNM("Creative Live!Cam Video IM")}, {USB_DEVICE(0x041e, 0x4053), SENSOR_TAS5130C_VF0250},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x0458, 0x7007), DVNM("Genius VideoCam V2")}, {USB_DEVICE(0x0458, 0x7007)},
{USB_DEVICE(0x0458, 0x700c), DVNM("Genius VideoCam V3")}, {USB_DEVICE(0x0458, 0x700c)},
{USB_DEVICE(0x0458, 0x700f), DVNM("Genius VideoCam Web V2")}, {USB_DEVICE(0x0458, 0x700f)},
#endif #endif
{USB_DEVICE(0x0461, 0x0a00), DVNM("MicroInnovation WebCam320")}, {USB_DEVICE(0x0461, 0x0a00)},
{USB_DEVICE(0x046d, 0x08a0), DVNM("Logitech QC IM")}, {USB_DEVICE(0x046d, 0x08a0)},
{USB_DEVICE(0x046d, 0x08a1), DVNM("Logitech QC IM 0x08A1 +sound")}, {USB_DEVICE(0x046d, 0x08a1)},
{USB_DEVICE(0x046d, 0x08a2), DVNM("Labtec Webcam Pro")}, {USB_DEVICE(0x046d, 0x08a2)},
{USB_DEVICE(0x046d, 0x08a3), DVNM("Logitech QC Chat")}, {USB_DEVICE(0x046d, 0x08a3)},
{USB_DEVICE(0x046d, 0x08a6), DVNM("Logitech QCim")}, {USB_DEVICE(0x046d, 0x08a6)},
{USB_DEVICE(0x046d, 0x08a7), DVNM("Logitech QuickCam Image")}, {USB_DEVICE(0x046d, 0x08a7)},
{USB_DEVICE(0x046d, 0x08a9), DVNM("Logitech Notebook Deluxe")}, {USB_DEVICE(0x046d, 0x08a9)},
{USB_DEVICE(0x046d, 0x08aa), DVNM("Labtec Webcam Notebook")}, {USB_DEVICE(0x046d, 0x08aa)},
{USB_DEVICE(0x046d, 0x08ac), DVNM("Logitech QuickCam Cool")}, {USB_DEVICE(0x046d, 0x08ac)},
{USB_DEVICE(0x046d, 0x08ad), DVNM("Logitech QCCommunicate STX")}, {USB_DEVICE(0x046d, 0x08ad)},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x046d, 0x08ae), DVNM("Logitech QuickCam for Notebooks")}, {USB_DEVICE(0x046d, 0x08ae)},
#endif #endif
{USB_DEVICE(0x046d, 0x08af), DVNM("Logitech QuickCam Cool")}, {USB_DEVICE(0x046d, 0x08af)},
{USB_DEVICE(0x046d, 0x08b9), DVNM("Logitech QC IM ???")}, {USB_DEVICE(0x046d, 0x08b9)},
{USB_DEVICE(0x046d, 0x08d7), DVNM("Logitech QCam STX")}, {USB_DEVICE(0x046d, 0x08d7)},
{USB_DEVICE(0x046d, 0x08d9), DVNM("Logitech QuickCam IM/Connect")}, {USB_DEVICE(0x046d, 0x08d9)},
{USB_DEVICE(0x046d, 0x08d8), DVNM("Logitech Notebook Deluxe")}, {USB_DEVICE(0x046d, 0x08d8)},
{USB_DEVICE(0x046d, 0x08da), DVNM("Logitech QuickCam Messenger")}, {USB_DEVICE(0x046d, 0x08da)},
{USB_DEVICE(0x046d, 0x08dd), DVNM("Logitech QuickCam for Notebooks")}, {USB_DEVICE(0x046d, 0x08dd), SENSOR_MC501CB},
{USB_DEVICE(0x0471, 0x0325), DVNM("Philips SPC 200 NC")}, {USB_DEVICE(0x0471, 0x0325)},
{USB_DEVICE(0x0471, 0x0326), DVNM("Philips SPC 300 NC")}, {USB_DEVICE(0x0471, 0x0326)},
{USB_DEVICE(0x0471, 0x032d), DVNM("Philips spc210nc")}, {USB_DEVICE(0x0471, 0x032d)},
{USB_DEVICE(0x0471, 0x032e), DVNM("Philips spc315nc")}, {USB_DEVICE(0x0471, 0x032e)},
{USB_DEVICE(0x055f, 0xc005), DVNM("Mustek Wcam300A")}, {USB_DEVICE(0x055f, 0xc005)},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x055f, 0xd003), DVNM("Mustek WCam300A")}, {USB_DEVICE(0x055f, 0xd003)},
{USB_DEVICE(0x055f, 0xd004), DVNM("Mustek WCam300 AN")}, {USB_DEVICE(0x055f, 0xd004)},
#endif #endif
{USB_DEVICE(0x0698, 0x2003), DVNM("CTX M730V built in")}, {USB_DEVICE(0x0698, 0x2003)},
{USB_DEVICE(0x0ac8, 0x0302), DVNM("Z-star Vimicro zc0302")}, {USB_DEVICE(0x0ac8, 0x0302)},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x0ac8, 0x301b), DVNM("Z-Star zc301b")}, {USB_DEVICE(0x0ac8, 0x301b)},
{USB_DEVICE(0x0ac8, 0x303b), DVNM("Vimicro 0x303b")}, {USB_DEVICE(0x0ac8, 0x303b)},
#endif #endif
{USB_DEVICE(0x0ac8, 0x305b), DVNM("Z-star Vimicro zc0305b")}, {USB_DEVICE(0x0ac8, 0x305b), SENSOR_TAS5130C_VF0250},
#ifndef CONFIG_USB_ZC0301 #ifndef CONFIG_USB_ZC0301
{USB_DEVICE(0x0ac8, 0x307b), DVNM("Z-Star 307b")}, {USB_DEVICE(0x0ac8, 0x307b)},
{USB_DEVICE(0x10fd, 0x0128), DVNM("Typhoon Webshot II 300k 0x0128")}, {USB_DEVICE(0x10fd, 0x0128)},
{USB_DEVICE(0x10fd, 0x8050), DVNM("Typhoon Webshot II USB 300k")}, {USB_DEVICE(0x10fd, 0x8050)},
#endif #endif
{} /* end of entry */ {} /* end of entry */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment