The patch number 9837 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:
        v4l-dvb-maintai...@linuxtv.org

------

From: Jean-Francois Moine  <moin...@free.fr>
gspca: Simplify the brightness/contrast for ov76xx sensors in sonixj.


Priority: normal

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


---

 linux/drivers/media/video/gspca/sonixj.c |   87 +++++------------------
 1 file changed, 19 insertions(+), 68 deletions(-)

diff -r dfaa5f719ccc -r 39672300c5f1 linux/drivers/media/video/gspca/sonixj.c
--- a/linux/drivers/media/video/gspca/sonixj.c  Sat Nov 22 12:26:26 2008 +0100
+++ b/linux/drivers/media/video/gspca/sonixj.c  Sun Nov 23 18:47:50 2008 +0100
@@ -1136,25 +1136,6 @@ static unsigned int setexposure(struct g
        return expo;
 }
 
-/* this function is used for sensors o76xx only */
-static void setbrightcont(struct gspca_dev *gspca_dev)
-{
-       struct sd *sd = (struct sd *) gspca_dev;
-       int val;
-       __u8 reg84_full[0x15];
-
-       memcpy(reg84_full, reg84, sizeof reg84_full);
-       val = sd->contrast * 0x30 / CONTRAST_MAX + 0x10;        /* 10..40 */
-       reg84_full[0] = (val + 1) / 2;          /* red */
-       reg84_full[2] = val;                    /* green */
-       reg84_full[4] = (val + 1) / 5;          /* blue */
-       val = (sd->brightness - BRIGHTNESS_DEF) * 0x10
-                       / BRIGHTNESS_MAX;
-       reg84_full[0x12] = val & 0x1f;          /* 5:0 signed value */
-       reg_w(gspca_dev, 0x84, reg84_full, sizeof reg84_full);
-}
-
-/* sensor != ov76xx */
 static void setbrightness(struct gspca_dev *gspca_dev)
 {
        struct sd *sd = (struct sd *) gspca_dev;
@@ -1179,24 +1160,23 @@ static void setbrightness(struct gspca_d
        case SENSOR_OM6802:
                expo = sd->brightness >> 6;
                sd->exposure = setexposure(gspca_dev, expo);
-               k2 = sd->brightness >> 11;
-               break;
-       }
-
-       reg_w1(gspca_dev, 0x96, k2);
-}
-
-/* sensor != ov76xx */
+               k2 >>= 1;
+               break;
+       }
+
+       reg_w1(gspca_dev, 0x96, k2);            /* color matrix Y offset */
+}
+
 static void setcontrast(struct gspca_dev *gspca_dev)
 {
        struct sd *sd = (struct sd *) gspca_dev;
        __u8 k2;
        __u8 contrast[] = { 0x00, 0x00, 0x28, 0x00, 0x07, 0x00 };
 
-       k2 = sd->contrast;
-       contrast[2] = k2;
-       contrast[0] = (k2 + 1) >> 1;
-       contrast[4] = (k2 + 1) / 5;
+       k2 = sd->contrast * 0x30 / (CONTRAST_MAX + 1) + 0x10;   /* 10..40 */
+       contrast[0] = (k2 + 1) / 2;             /* red */
+       contrast[2] = k2;                       /* green */
+       contrast[4] = (k2 + 1) / 5;             /* blue */
        reg_w(gspca_dev, 0x84, contrast, 6);
 }
 
@@ -1413,20 +1393,13 @@ static int sd_start(struct gspca_dev *gs
        switch (sd->sensor) {
        case SENSOR_MI0360:
                setinfrared(sd);
-               /* fall thru */
-       case SENSOR_HV7131R:
-       case SENSOR_MO4000:
-       case SENSOR_OM6802:
-               setbrightness(gspca_dev);
-               setcontrast(gspca_dev);
                break;
        case SENSOR_OV7630:
                setvflip(sd);
-               /* fall thru */
-       default:                        /* OV76xx */
-               setbrightcont(gspca_dev);
-               break;
-       }
+               break;
+       }
+       setbrightness(gspca_dev);
+       setcontrast(gspca_dev);
        setautogain(gspca_dev);
        return 0;
 }
@@ -1564,19 +1537,8 @@ static int sd_setbrightness(struct gspca
        struct sd *sd = (struct sd *) gspca_dev;
 
        sd->brightness = val;
-       if (gspca_dev->streaming) {
-               switch (sd->sensor) {
-               case SENSOR_HV7131R:
-               case SENSOR_MI0360:
-               case SENSOR_MO4000:
-               case SENSOR_OM6802:
-                       setbrightness(gspca_dev);
-                       break;
-               default:                        /* OV76xx */
-                       setbrightcont(gspca_dev);
-                       break;
-               }
-       }
+       if (gspca_dev->streaming)
+               setbrightness(gspca_dev);
        return 0;
 }
 
@@ -1593,19 +1555,8 @@ static int sd_setcontrast(struct gspca_d
        struct sd *sd = (struct sd *) gspca_dev;
 
        sd->contrast = val;
-       if (gspca_dev->streaming) {
-               switch (sd->sensor) {
-               case SENSOR_HV7131R:
-               case SENSOR_MI0360:
-               case SENSOR_MO4000:
-               case SENSOR_OM6802:
-                       setcontrast(gspca_dev);
-                       break;
-               default:                        /* OV76xx */
-                       setbrightcont(gspca_dev);
-                       break;
-               }
-       }
+       if (gspca_dev->streaming)
+               setcontrast(gspca_dev);
        return 0;
 }
 


---

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

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

Reply via email to