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

Separate the start 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 f/drivers/media/video/gspca/pac7311.c 
g/drivers/media/video/gspca/pac7311.c
--- f/drivers/media/video/gspca/pac7311.c       2009-10-30 18:04:30.000000000 
+0100
+++ g/drivers/media/video/gspca/pac7311.c       2009-10-30 18:03:15.000000000 
+0100
@@ -714,20 +714,40 @@ static int pac7311_sd_init(struct gspca_
        return 0;
 }

-static int sd_start(struct gspca_dev *gspca_dev)
+static int pac7302_sd_start(struct gspca_dev *gspca_dev)
 {
        struct sd *sd = (struct sd *) gspca_dev;

        sd->sof_read = 0;

-       if (sd->sensor == SENSOR_PAC7302) {
-               reg_w_var(gspca_dev, start_7302);
-               pac7302_setbrightcont(gspca_dev);
-               pac7302_setcolors(gspca_dev);
-       } else {
-               reg_w_var(gspca_dev, start_7311);
-               pac7311_setcontrast(gspca_dev);
-       }
+       reg_w_var(gspca_dev, start_7302);
+       pac7302_setbrightcont(gspca_dev);
+       pac7302_setcolors(gspca_dev);
+       setgain(gspca_dev);
+       setexposure(gspca_dev);
+       sethvflip(gspca_dev);
+
+       /* only resolution 640x480 is supported for pac7302 */
+
+       sd->sof_read = 0;
+       sd->autogain_ignore_frames = 0;
+       atomic_set(&sd->avg_lum, -1);
+
+       /* start stream */
+       reg_w(gspca_dev, 0xff, 0x01);
+       reg_w(gspca_dev, 0x78, 0x01);
+
+       return 0;
+}
+
+static int pac7311_sd_start(struct gspca_dev *gspca_dev)
+{
+       struct sd *sd = (struct sd *) gspca_dev;
+
+       sd->sof_read = 0;
+
+       reg_w_var(gspca_dev, start_7311);
+       pac7311_setcontrast(gspca_dev);
        setgain(gspca_dev);
        setexposure(gspca_dev);
        sethvflip(gspca_dev);
@@ -745,8 +765,6 @@ static int sd_start(struct gspca_dev *gs
                reg_w(gspca_dev, 0x87, 0x11);
                break;
        case 0:                                 /* 640x480 */
-               if (sd->sensor == SENSOR_PAC7302)
-                       break;
                reg_w(gspca_dev, 0xff, 0x01);
                reg_w(gspca_dev, 0x17, 0x00);
                reg_w(gspca_dev, 0x87, 0x12);
@@ -759,10 +777,8 @@ static int sd_start(struct gspca_dev *gs

        /* start stream */
        reg_w(gspca_dev, 0xff, 0x01);
-       if (sd->sensor == SENSOR_PAC7302)
-               reg_w(gspca_dev, 0x78, 0x01);
-       else
-               reg_w(gspca_dev, 0x78, 0x05);
+       reg_w(gspca_dev, 0x78, 0x05);
+
        return 0;
 }

@@ -1160,7 +1176,7 @@ static struct sd_desc pac7302_sd_desc =
        .nctrls = ARRAY_SIZE(sd_ctrls),
        .config = pac7302_sd_config,
        .init = pac7302_sd_init,
-       .start = sd_start,
+       .start = pac7302_sd_start,
        .stopN = sd_stopN,
        .stop0 = sd_stop0,
        .pkt_scan = pac7302_sd_pkt_scan,
@@ -1174,7 +1190,7 @@ static struct sd_desc pac7311_sd_desc =
        .nctrls = ARRAY_SIZE(sd_ctrls),
        .config = pac7311_sd_config,
        .init = pac7311_sd_init,
-       .start = sd_start,
+       .start = pac7311_sd_start,
        .stopN = sd_stopN,
        .stop0 = sd_stop0,
        .pkt_scan = pac7311_sd_pkt_scan,
--
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