From: Márton Németh <nm...@freemail.hu>

Separate the dq_callback function. Remove the run-time decision for
PAC7302 and PAC7311 sensors.

Signed-off-by: Márton Németh <nm...@freemail.hu>
Cc: Thomas Kaiser <tho...@kaiser-linux.li>
Cc: Theodore Kilgore <kilg...@auburn.edu>
Cc: Kyle Guinn <ely...@gmail.com>
---
diff -uprN i/drivers/media/video/gspca/pac7311.c 
j/drivers/media/video/gspca/pac7311.c
--- i/drivers/media/video/gspca/pac7311.c       2009-10-30 17:59:39.000000000 
+0100
+++ j/drivers/media/video/gspca/pac7311.c       2009-10-30 18:00:55.000000000 
+0100
@@ -820,7 +820,7 @@ static void pac7311_sd_stop0(struct gspc
 /* Include pac common sof detection functions */
 #include "pac_common.h"

-static void do_autogain(struct gspca_dev *gspca_dev)
+static void pac7302_do_autogain(struct gspca_dev *gspca_dev)
 {
        struct sd *sd = (struct sd *) gspca_dev;
        int avg_lum = atomic_read(&sd->avg_lum);
@@ -829,22 +829,36 @@ static void do_autogain(struct gspca_dev
        if (avg_lum == -1)
                return;

-       if (sd->sensor == SENSOR_PAC7302) {
-               desired_lum = 270 + sd->brightness * 4;
-               /* Hack hack, with the 7202 the first exposure step is
-                  pretty large, so if we're about to make the first
-                  exposure increase make the deadzone large to avoid
-                  oscilating */
-               if (desired_lum > avg_lum && sd->gain == GAIN_DEF &&
-                               sd->exposure > EXPOSURE_DEF &&
-                               sd->exposure < 42)
-                       deadzone = 90;
-               else
-                       deadzone = 30;
-       } else {
-               desired_lum = 200;
-               deadzone = 20;
-       }
+       desired_lum = 270 + sd->brightness * 4;
+       /* Hack hack, with the 7202 the first exposure step is
+          pretty large, so if we're about to make the first
+          exposure increase make the deadzone large to avoid
+          oscilating */
+       if (desired_lum > avg_lum && sd->gain == GAIN_DEF &&
+                       sd->exposure > EXPOSURE_DEF &&
+                       sd->exposure < 42)
+               deadzone = 90;
+       else
+               deadzone = 30;
+
+       if (sd->autogain_ignore_frames > 0)
+               sd->autogain_ignore_frames--;
+       else if (gspca_auto_gain_n_exposure(gspca_dev, avg_lum, desired_lum,
+                       deadzone, GAIN_KNEE, EXPOSURE_KNEE))
+               sd->autogain_ignore_frames = PAC_AUTOGAIN_IGNORE_FRAMES;
+}
+
+static void pac7311_do_autogain(struct gspca_dev *gspca_dev)
+{
+       struct sd *sd = (struct sd *) gspca_dev;
+       int avg_lum = atomic_read(&sd->avg_lum);
+       int desired_lum, deadzone;
+
+       if (avg_lum == -1)
+               return;
+
+       desired_lum = 200;
+       deadzone = 20;

        if (sd->autogain_ignore_frames > 0)
                sd->autogain_ignore_frames--;
@@ -1180,7 +1194,7 @@ static struct sd_desc pac7302_sd_desc =
        .stopN = pac7302_sd_stopN,
        .stop0 = pac7302_sd_stop0,
        .pkt_scan = pac7302_sd_pkt_scan,
-       .dq_callback = do_autogain,
+       .dq_callback = pac7302_do_autogain,
 };

 /* sub-driver description for pac7311 */
@@ -1194,7 +1208,7 @@ static struct sd_desc pac7311_sd_desc =
        .stopN = pac7311_sd_stopN,
        .stop0 = pac7311_sd_stop0,
        .pkt_scan = pac7311_sd_pkt_scan,
-       .dq_callback = do_autogain,
+       .dq_callback = pac7311_do_autogain,
 };

 /* -- module initialisation -- */
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to