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