]> Pileus Git - ~andy/linux/blobdiff - drivers/media/video/gspca/sonixb.c
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[~andy/linux] / drivers / media / video / gspca / sonixb.c
index ddb392dc4f2dbd7b52efd0fffb52311b7e4f42f3..6a1148d7fe926772a245482ba16dca48947467f8 100644 (file)
@@ -1079,20 +1079,23 @@ static int sd_config(struct gspca_dev *gspca_dev,
        }
        cam->npkt = 36;                 /* 36 packets per ISOC message */
 
-       if (sensor_data[sd->sensor].flags & F_COARSE_EXPO) {
-               sd->ctrls[EXPOSURE].min = COARSE_EXPOSURE_MIN;
-               sd->ctrls[EXPOSURE].max = COARSE_EXPOSURE_MAX;
-               sd->ctrls[EXPOSURE].def = COARSE_EXPOSURE_DEF;
-       }
-
        return 0;
 }
 
 /* this function is called at probe and resume time */
 static int sd_init(struct gspca_dev *gspca_dev)
 {
+       struct sd *sd = (struct sd *) gspca_dev;
        const __u8 stop = 0x09; /* Disable stream turn of LED */
 
+       if (sensor_data[sd->sensor].flags & F_COARSE_EXPO) {
+               sd->ctrls[EXPOSURE].min = COARSE_EXPOSURE_MIN;
+               sd->ctrls[EXPOSURE].max = COARSE_EXPOSURE_MAX;
+               sd->ctrls[EXPOSURE].def = COARSE_EXPOSURE_DEF;
+               if (sd->ctrls[EXPOSURE].val > COARSE_EXPOSURE_MAX)
+                       sd->ctrls[EXPOSURE].val = COARSE_EXPOSURE_DEF;
+       }
+
        reg_w(gspca_dev, 0x01, &stop, 1);
 
        return 0;