The patch number 10787 was added via Jean-Francois Moine <moin...@free.fr>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        Linux Media Mailing List <linux-me...@vger.kernel.org>

------

From: Jean-Francois Moine  <moin...@free.fr>
gspca - mars: Bad webcam register values tied to saturation.


Priority: normal

Signed-off-by: Jean-Francois Moine <moin...@free.fr>


---

 linux/drivers/media/video/gspca/mars.c |   23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff -r 60389ff5e931 -r f24deaa13550 linux/drivers/media/video/gspca/mars.c
--- a/linux/drivers/media/video/gspca/mars.c    Fri Feb 27 00:08:39 2009 -0300
+++ b/linux/drivers/media/video/gspca/mars.c    Sat Feb 28 12:09:24 2009 +0100
@@ -69,10 +69,10 @@ static struct ctrl sd_ctrls[] = {
                .id      = V4L2_CID_SATURATION,
                .type    = V4L2_CTRL_TYPE_INTEGER,
                .name    = "Color",
-               .minimum = 0,
-               .maximum = 220,
+               .minimum = 1,
+               .maximum = 255,
                .step    = 1,
-#define COLOR_DEF 190
+#define COLOR_DEF 200
                .default_value = COLOR_DEF,
            },
            .set = sd_setcolors,
@@ -191,7 +191,7 @@ static int sd_start(struct gspca_dev *gs
        struct sd *sd = (struct sd *) gspca_dev;
        int err_code;
        u8 *data;
-       int i, val;
+       int i;
 
        data = gspca_dev->usb_buf;
 
@@ -253,9 +253,11 @@ static int sd_start(struct gspca_dev *gs
        data[1] = 0;            /* reg 94, Y Gain (auto) */
 #if 1
 /*jfm: from win trace*/
-       val = sd->colors * 0x40 + 0x400;
-       data[2] = val;          /* reg 0x5f/0x60 (LE) = saturation */
-       data[3] = val >> 8;
+                               /* reg 0x5f/0x60 (LE) = saturation */
+                               /* h (60): xxxx x100
+                                * l (5f): xxxx x000 */
+       data[2] = sd->colors << 3;
+       data[3] = ((sd->colors >> 2) & 0xf8) | 0x04;
        data[4] = sd->brightness; /* reg 0x61 = brightness */
        data[5] = 0x00;
 #else
@@ -403,10 +405,11 @@ static int sd_setcolors(struct gspca_dev
 
        sd->colors = val;
        if (gspca_dev->streaming) {
-               val = val * 0x40 + 0x400;
+
+               /* see sd_start */
                gspca_dev->usb_buf[0] = 0x5f;
-               gspca_dev->usb_buf[1] = val;
-               gspca_dev->usb_buf[2] = val >> 8;
+               gspca_dev->usb_buf[1] = sd->colors << 3;
+               gspca_dev->usb_buf[2] = ((sd->colors >> 2) & 0xf8) | 0x04;
                reg_w(gspca_dev, 3);
        }
        return 0;


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/f24deaa135509913863d174d1780dfd78789690a

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to