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