V4L/DVB (9883): gspca - ov534: Show sensor ID.
authorAntonio Ospite <ospite@studenti.unina.it>
Sun, 14 Dec 2008 08:48:07 +0000 (05:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:39:04 +0000 (09:39 -0200)
The original version of sccb_read_reg() is from Jim Paris.

NOTE: as it is now reading sensor ID won't work for sensors on different
i2c slave address.

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/ov534.c

index edcd92557c87a6587cf99db68d4f76d70a43e660..ad97b0be5f39b6bf4967e212373ad6618f2001fc 100644 (file)
@@ -149,6 +149,20 @@ static void sccb_reg_write(struct usb_device *udev, u16 reg, u8 val)
                PDEBUG(D_ERR, "sccb_reg_write failed");
 }
 
+static u8 sccb_reg_read(struct usb_device *udev, u16 reg)
+{
+       ov534_reg_write(udev, OV534_REG_SUBADDR, reg);
+       ov534_reg_write(udev, OV534_REG_OPERATION, OV534_OP_WRITE_2);
+       if (!sccb_check_status(udev))
+               PDEBUG(D_ERR, "sccb_reg_read failed 1");
+
+       ov534_reg_write(udev, OV534_REG_OPERATION, OV534_OP_READ_2);
+       if (!sccb_check_status(udev))
+               PDEBUG(D_ERR, "sccb_reg_read failed 2");
+
+       return ov534_reg_read(udev, OV534_REG_READ);
+}
+
 static const __u8 ov534_reg_initdata[][2] = {
        { 0xe7, 0x3a },
 
@@ -339,6 +353,9 @@ static void ov534_setup(struct usb_device *udev)
                ov534_reg_write(udev, ov534_reg_initdata[i][0],
                                ov534_reg_initdata[i][1]);
 
+       PDEBUG(D_PROBE, "sensor is ov%02x%02x",
+               sccb_reg_read(udev, 0x0a), sccb_reg_read(udev, 0x0b));
+
        ov534_set_led(udev, 1);
 
        /* Initialize sensor */