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:
Jean-Francois Moine 2008-07-25 08:53:03 -03:00 committed by Mauro Carvalho Chehab
parent 07767ebda3
commit 9d64fdb15b
19 changed files with 284 additions and 945 deletions

View File

@ -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);

View File

@ -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},
{}
};

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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
{}
};

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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},
{}
};

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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)},
{}
};

View File

@ -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);

View File

@ -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 */
};