V4L/DVB (13870): gspca - zc3xx: Bad detection of sensor HV7131R(c).
authorJean-Francois Moine <moinejf@free.fr>
Sun, 20 Dec 2009 08:07:10 +0000 (05:07 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:27 +0000 (15:10 -0300)
The webcam 0ac8:303b may have the sensors HV7131B or HV7131R(c).
This changeset checks the HV7131 type.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/zc3xx.c

index 07dc5b6b41680f0b4d116b2d94484a29891b0109..e0dd0ea0588ec6ed05b26ea61245e8caae3a0f9e 100644 (file)
@@ -6672,8 +6672,21 @@ static int sd_config(struct gspca_dev *gspca_dev,
                        }
                        break;
                case 0:
-                       PDEBUG(D_PROBE, "Find Sensor HV7131B");
-                       sd->sensor = SENSOR_HV7131B;
+                       /* check the sensor type */
+                       sensor = i2c_read(gspca_dev, 0x00);
+                       PDEBUG(D_PROBE, "Sensor hv7131 type %d", sensor);
+                       switch (sensor) {
+                       case 0:                 /* hv7131b */
+                       case 1:                 /* hv7131e */
+                               PDEBUG(D_PROBE, "Find Sensor HV7131B");
+                               sd->sensor = SENSOR_HV7131B;
+                               break;
+                       default:
+/*                     case 2:                  * hv7131r */
+                               PDEBUG(D_PROBE, "Find Sensor HV7131R(c)");
+                               sd->sensor = SENSOR_HV7131C;
+                               break;
+                       }
                        break;
                case 0x02:
                        PDEBUG(D_PROBE, "Sensor TAS5130C");