V4L/DVB (13323): gspca - zc3xx: Adjust the exchanges of sensors mi0360soc and pb0330.
[safe/jmp/linux-2.6] / drivers / media / video / gspca / vc032x.c
index a39bcab..589042f 100644 (file)
@@ -2937,21 +2937,23 @@ static int sd_start(struct gspca_dev *gspca_dev)
                put_tab_to_reg(gspca_dev, MatrixT, 9, 0xb82c);
 
                /* set the led on 0x0892 0x0896 */
-               if (sd->sensor == SENSOR_PO1200) {
-                       setsharpness(gspca_dev);
-                       sethvflip(gspca_dev);
+               switch (sd->sensor) {
+               case SENSOR_PO1200:
+               case SENSOR_HV7131R:
                        reg_w(gspca_dev->dev, 0x89, 0x0400, 0x1415);
-               } else if (sd->sensor == SENSOR_MI1310_SOC) {
+                       break;
+               case SENSOR_MI1310_SOC:
                        reg_w(gspca_dev->dev, 0x89, 0x058c, 0x0000);
-                       msleep(100);
-                       sethvflip(gspca_dev);
-                       setlightfreq(gspca_dev);
-               } else {
-                       reg_w(gspca_dev->dev, 0x89, 0xffff, 0xfdff);
-                       msleep(100);
-                       sethvflip(gspca_dev);
-                       setlightfreq(gspca_dev);
+                       break;
+               default:
+                       if (!(sd->flags & FL_SAMSUNG))
+                               reg_w(gspca_dev->dev, 0x89, 0xffff, 0xfdff);
+                       break;
                }
+               msleep(100);
+               setsharpness(gspca_dev);
+               sethvflip(gspca_dev);
+               setlightfreq(gspca_dev);
        }
        return 0;
 }
@@ -2963,7 +2965,7 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
 
        if (sd->sensor == SENSOR_MI1310_SOC)
                reg_w(dev, 0x89, 0x058c, 0x00ff);
-       else
+       else if (!(sd->flags & FL_SAMSUNG))
                reg_w(dev, 0x89, 0xffff, 0xffff);
        reg_w(dev, 0xa0, 0x01, 0xb301);
        reg_w(dev, 0xa0, 0x09, 0xb003);
@@ -2980,7 +2982,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 /*fixme: is this useful?*/
        if (sd->sensor == SENSOR_MI1310_SOC)
                reg_w(dev, 0x89, 0x058c, 0x00ff);
-       else
+       else if (!(sd->flags & FL_SAMSUNG))
                reg_w(dev, 0x89, 0xffff, 0xffff);
 }