diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-04-05 03:01:13 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:23 -0400 |
commit | 881cd41882fa5762e3f831dd997368fef5257274 (patch) | |
tree | da224747f54554f9a2ed8f350dcce27b292874e7 /drivers/media/video/gspca/zc3xx.c | |
parent | 2444163122c42f0f25db9b49a5e55c28eaf0b0f2 (diff) |
V4L/DVB (11449): gspca - zc3xx: Bad probe of many webcams since adcm2700 addition.
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/zc3xx.c')
-rw-r--r-- | drivers/media/video/gspca/zc3xx.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c index 4fe01d8b6c87..c4684b9a412c 100644 --- a/drivers/media/video/gspca/zc3xx.c +++ b/drivers/media/video/gspca/zc3xx.c | |||
@@ -6868,7 +6868,6 @@ static const struct sensor_by_chipset_revision chipset_revision_sensor[] = { | |||
6868 | {0x8001, 0x13}, | 6868 | {0x8001, 0x13}, |
6869 | {0x8000, 0x14}, /* CS2102K */ | 6869 | {0x8000, 0x14}, /* CS2102K */ |
6870 | {0x8400, 0x15}, /* TAS5130K */ | 6870 | {0x8400, 0x15}, /* TAS5130K */ |
6871 | {0x4001, 0x16}, /* ADCM2700 */ | ||
6872 | }; | 6871 | }; |
6873 | 6872 | ||
6874 | static int vga_3wr_probe(struct gspca_dev *gspca_dev) | 6873 | static int vga_3wr_probe(struct gspca_dev *gspca_dev) |
@@ -6904,12 +6903,15 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev) | |||
6904 | retword |= reg_r(gspca_dev, 0x000a); | 6903 | retword |= reg_r(gspca_dev, 0x000a); |
6905 | PDEBUG(D_PROBE, "probe 3wr vga 1 0x%04x", retword); | 6904 | PDEBUG(D_PROBE, "probe 3wr vga 1 0x%04x", retword); |
6906 | reg_r(gspca_dev, 0x0010); | 6905 | reg_r(gspca_dev, 0x0010); |
6907 | /* this is tested only once anyway */ | 6906 | /* value 0x4001 is meaningless */ |
6908 | for (i = 0; i < ARRAY_SIZE(chipset_revision_sensor); i++) { | 6907 | if (retword != 0x4001) { |
6909 | if (chipset_revision_sensor[i].revision == retword) { | 6908 | for (i = 0; i < ARRAY_SIZE(chipset_revision_sensor); i++) { |
6910 | sd->chip_revision = retword; | 6909 | if (chipset_revision_sensor[i].revision == retword) { |
6911 | send_unknown(dev, SENSOR_PB0330); | 6910 | sd->chip_revision = retword; |
6912 | return chipset_revision_sensor[i].internal_sensor_id; | 6911 | send_unknown(dev, SENSOR_PB0330); |
6912 | return chipset_revision_sensor[i] | ||
6913 | .internal_sensor_id; | ||
6914 | } | ||
6913 | } | 6915 | } |
6914 | } | 6916 | } |
6915 | 6917 | ||
@@ -6980,12 +6982,12 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev) | |||
6980 | reg_w(dev, 0x01, 0x0001); | 6982 | reg_w(dev, 0x01, 0x0001); |
6981 | reg_w(dev, 0x03, 0x0012); | 6983 | reg_w(dev, 0x03, 0x0012); |
6982 | reg_w(dev, 0x01, 0x0012); | 6984 | reg_w(dev, 0x01, 0x0012); |
6983 | reg_w(dev, 0x05, 0x0001); | 6985 | reg_w(dev, 0x05, 0x0012); |
6984 | reg_w(dev, 0xd3, 0x008b); | 6986 | reg_w(dev, 0xd3, 0x008b); |
6985 | retword = i2c_read(gspca_dev, 0x01); | 6987 | retword = i2c_read(gspca_dev, 0x01); |
6986 | if (retword != 0) { | 6988 | if (retword != 0) { |
6987 | PDEBUG(D_PROBE, "probe 3wr vga type 0a ? ret: %04x", retword); | 6989 | PDEBUG(D_PROBE, "probe 3wr vga type 0a ? ret: %04x", retword); |
6988 | return retword; | 6990 | return 0x16; /* adcm2700 (6100/6200) */ |
6989 | } | 6991 | } |
6990 | return -1; | 6992 | return -1; |
6991 | } | 6993 | } |