V4L/DVB: gspca - sonixj: Add vertical flip control for sensor hv7131r
authorJean-François Moine <moinejf@free.fr>
Thu, 18 Feb 2010 07:12:06 +0000 (04:12 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:11:03 +0000 (15:11 -0300)
Signed-off-by: Jean-François Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/sonixj.c

index 4ece1109d399724998b93d2f04391738ef458ce0..fea807574425e7f7bc6d09065ef8e7259fea99a7 100644 (file)
@@ -282,7 +282,7 @@ static const struct ctrl sd_ctrls[] = {
 static __u32 ctrl_dis[] = {
        (1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX) |
                        (1 << AUTOGAIN_IDX),    /* SENSOR_ADCM1700 0 */
-       (1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
+       (1 << INFRARED_IDX) | (1 << FREQ_IDX),
                                                /* SENSOR_HV7131R 1 */
        (1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
                                                /* SENSOR_MI0360 2 */
@@ -1780,23 +1780,34 @@ static void setautogain(struct gspca_dev *gspca_dev)
                sd->ag_cnt = -1;
 }
 
-/* ov7630/ov7648 only */
+/* hv7131r/ov7630/ov7648 only */
 static void setvflip(struct sd *sd)
 {
        u8 comn;
 
        if (sd->gspca_dev.ctrl_dis & (1 << VFLIP_IDX))
                return;
-       if (sd->sensor == SENSOR_OV7630) {
+       switch (sd->sensor) {
+       case SENSOR_HV7131R:
+               comn = 0x18;                    /* clkdiv = 1, ablcen = 1 */
+               if (sd->vflip)
+                       comn |= 0x01;
+               i2c_w1(&sd->gspca_dev, 0x01, comn);     /* sctra */
+               break;
+       case SENSOR_OV7630:
                comn = 0x02;
                if (!sd->vflip)
                        comn |= 0x80;
-       } else {
+               i2c_w1(&sd->gspca_dev, 0x75, comn);
+               break;
+       default:
+/*     case SENSOR_OV7648: */
                comn = 0x06;
                if (sd->vflip)
                        comn |= 0x80;
+               i2c_w1(&sd->gspca_dev, 0x75, comn);
+               break;
        }
-       i2c_w1(&sd->gspca_dev, 0x75, comn);
 }
 
 static void setsharpness(struct sd *sd)