The patch number 11541 was added via Erik Andr?n <erik.and...@gmail.com>
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: Erik Andr?n  <erik.and...@gmail.com>
gspca - m5602-mt9m111: Add a start function


Priority: normal

Signed-off-by: Erik Andr?n <erik.and...@gmail.com>


---

 linux/drivers/media/video/gspca/m5602/m5602_mt9m111.c |   20 ++++++++++
 linux/drivers/media/video/gspca/m5602/m5602_mt9m111.h |    8 +++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff -r 838481c4968c -r 7ddb52c21f00 
linux/drivers/media/video/gspca/m5602/m5602_mt9m111.c
--- a/linux/drivers/media/video/gspca/m5602/m5602_mt9m111.c     Tue Jan 20 
07:49:00 2009 +0100
+++ b/linux/drivers/media/video/gspca/m5602/m5602_mt9m111.c     Tue Jan 20 
07:54:51 2009 +0100
@@ -265,6 +265,26 @@ int mt9m111_init(struct sd *sd)
        return mt9m111_set_gain(&sd->gspca_dev, sensor_settings[GAIN_IDX]);
 }
 
+int mt9m111_start(struct sd *sd)
+{
+       int i, err = 0;
+       u8 data[2];
+
+       for (i = 0; i < ARRAY_SIZE(start_mt9m111) && !err; i++) {
+               if (start_mt9m111[i][0] == BRIDGE) {
+                       err = m5602_write_bridge(sd,
+                               start_mt9m111[i][1],
+                               start_mt9m111[i][2]);
+               } else {
+                       data[0] = start_mt9m111[i][2];
+                       data[1] = start_mt9m111[i][3];
+                       err = m5602_write_sensor(sd,
+                               start_mt9m111[i][1], data, 2);
+               }
+       }
+       return err;
+}
+
 void mt9m111_disconnect(struct sd *sd)
 {
        sd->sensor = NULL;
diff -r 838481c4968c -r 7ddb52c21f00 
linux/drivers/media/video/gspca/m5602/m5602_mt9m111.h
--- a/linux/drivers/media/video/gspca/m5602/m5602_mt9m111.h     Tue Jan 20 
07:49:00 2009 +0100
+++ b/linux/drivers/media/video/gspca/m5602/m5602_mt9m111.h     Tue Jan 20 
07:54:51 2009 +0100
@@ -109,6 +109,7 @@ extern int dump_sensor;
 
 int mt9m111_probe(struct sd *sd);
 int mt9m111_init(struct sd *sd);
+int mt9m111_start(struct sd *sd);
 void mt9m111_disconnect(struct sd *sd);
 
 const static struct m5602_sensor mt9m111 = {
@@ -120,6 +121,7 @@ const static struct m5602_sensor mt9m111
        .probe = mt9m111_probe,
        .init = mt9m111_init,
        .disconnect = mt9m111_disconnect,
+       .start = mt9m111_start,
 };
 
 static const unsigned char preinit_mt9m111[][4] =
@@ -258,7 +260,10 @@ static const unsigned char init_mt9m111[
        {SENSOR, 0x30, 0x04, 0x00},
        /* Set number of blank rows chosen to 400 */
        {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0x90},
-
+};
+
+static const unsigned char start_mt9m111[][4] =
+{
        {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06, 0x00},
        {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
        {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
@@ -285,4 +290,5 @@ static const unsigned char init_mt9m111[
        {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
 };
 
+
 #endif


---

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

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

Reply via email to