V4L/DVB (9842): gspca: Center the brightness in sonixj.
authorJean-Francois Moine <moinejf@free.fr>
Tue, 25 Nov 2008 07:47:09 +0000 (04:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:38:47 +0000 (09:38 -0200)
The brightness jumped from max to min at the middle of the control values.

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

index 34f7f58e527ec8626a055d15baa080f8c6498bb9..83564e09eeea3be19723bff60ce6e355f23b6f04 100644 (file)
@@ -89,7 +89,7 @@ static struct ctrl sd_ctrls[] = {
 #define BRIGHTNESS_MAX 0xffff
                .maximum = BRIGHTNESS_MAX,
                .step    = 1,
-#define BRIGHTNESS_DEF 0x7fff
+#define BRIGHTNESS_DEF 0x8000
                .default_value = BRIGHTNESS_DEF,
            },
            .set = sd_setbrightness,
@@ -1129,7 +1129,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
        unsigned int expo;
        __u8 k2;
 
-       k2 = sd->brightness >> 10;
+       k2 = ((int) sd->brightness - 0x8000) >> 10;
        switch (sd->sensor) {
        case SENSOR_HV7131R:
                expo = sd->brightness << 4;
@@ -1147,7 +1147,7 @@ static void setbrightness(struct gspca_dev *gspca_dev)
        case SENSOR_OM6802:
                expo = sd->brightness >> 6;
                sd->exposure = setexposure(gspca_dev, expo);
-               k2 >>= 1;
+               k2 = sd->brightness >> 11;
                break;
        }