diff options
author | Erik Andr?n <erik.andren@gmail.com> | 2009-01-20 01:54:51 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:35 -0400 |
commit | bce0d2d4aefdb258bd4a69e2de2e0d1bed0e5531 (patch) | |
tree | ea3ec46dcbfe14355fb2adb6e768941784b7edf5 /drivers/media/video/gspca/m5602 | |
parent | 553c91d0b1a9a22bc81c07db589424af658e01cb (diff) |
V4L/DVB (11541): gspca - m5602-mt9m111: Add a start function
Signed-off-by: Erik Andr?n <erik.andren@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/m5602')
-rw-r--r-- | drivers/media/video/gspca/m5602/m5602_mt9m111.c | 20 | ||||
-rw-r--r-- | drivers/media/video/gspca/m5602/m5602_mt9m111.h | 6 |
2 files changed, 26 insertions, 0 deletions
diff --git a/drivers/media/video/gspca/m5602/m5602_mt9m111.c b/drivers/media/video/gspca/m5602/m5602_mt9m111.c index 95b6e95aa088..edf502041b80 100644 --- a/drivers/media/video/gspca/m5602/m5602_mt9m111.c +++ b/drivers/media/video/gspca/m5602/m5602_mt9m111.c | |||
@@ -265,6 +265,26 @@ int mt9m111_init(struct sd *sd) | |||
265 | return mt9m111_set_gain(&sd->gspca_dev, sensor_settings[GAIN_IDX]); | 265 | return mt9m111_set_gain(&sd->gspca_dev, sensor_settings[GAIN_IDX]); |
266 | } | 266 | } |
267 | 267 | ||
268 | int mt9m111_start(struct sd *sd) | ||
269 | { | ||
270 | int i, err = 0; | ||
271 | u8 data[2]; | ||
272 | |||
273 | for (i = 0; i < ARRAY_SIZE(start_mt9m111) && !err; i++) { | ||
274 | if (start_mt9m111[i][0] == BRIDGE) { | ||
275 | err = m5602_write_bridge(sd, | ||
276 | start_mt9m111[i][1], | ||
277 | start_mt9m111[i][2]); | ||
278 | } else { | ||
279 | data[0] = start_mt9m111[i][2]; | ||
280 | data[1] = start_mt9m111[i][3]; | ||
281 | err = m5602_write_sensor(sd, | ||
282 | start_mt9m111[i][1], data, 2); | ||
283 | } | ||
284 | } | ||
285 | return err; | ||
286 | } | ||
287 | |||
268 | void mt9m111_disconnect(struct sd *sd) | 288 | void mt9m111_disconnect(struct sd *sd) |
269 | { | 289 | { |
270 | sd->sensor = NULL; | 290 | sd->sensor = NULL; |
diff --git a/drivers/media/video/gspca/m5602/m5602_mt9m111.h b/drivers/media/video/gspca/m5602/m5602_mt9m111.h index 7bb8ebb860ba..6598dd9c438e 100644 --- a/drivers/media/video/gspca/m5602/m5602_mt9m111.h +++ b/drivers/media/video/gspca/m5602/m5602_mt9m111.h | |||
@@ -109,6 +109,7 @@ extern int dump_sensor; | |||
109 | 109 | ||
110 | int mt9m111_probe(struct sd *sd); | 110 | int mt9m111_probe(struct sd *sd); |
111 | int mt9m111_init(struct sd *sd); | 111 | int mt9m111_init(struct sd *sd); |
112 | int mt9m111_start(struct sd *sd); | ||
112 | void mt9m111_disconnect(struct sd *sd); | 113 | void mt9m111_disconnect(struct sd *sd); |
113 | 114 | ||
114 | const static struct m5602_sensor mt9m111 = { | 115 | const static struct m5602_sensor mt9m111 = { |
@@ -120,6 +121,7 @@ const static struct m5602_sensor mt9m111 = { | |||
120 | .probe = mt9m111_probe, | 121 | .probe = mt9m111_probe, |
121 | .init = mt9m111_init, | 122 | .init = mt9m111_init, |
122 | .disconnect = mt9m111_disconnect, | 123 | .disconnect = mt9m111_disconnect, |
124 | .start = mt9m111_start, | ||
123 | }; | 125 | }; |
124 | 126 | ||
125 | static const unsigned char preinit_mt9m111[][4] = | 127 | static const unsigned char preinit_mt9m111[][4] = |
@@ -258,7 +260,10 @@ static const unsigned char init_mt9m111[][4] = | |||
258 | {SENSOR, 0x30, 0x04, 0x00}, | 260 | {SENSOR, 0x30, 0x04, 0x00}, |
259 | /* Set number of blank rows chosen to 400 */ | 261 | /* Set number of blank rows chosen to 400 */ |
260 | {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0x90}, | 262 | {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0x90}, |
263 | }; | ||
261 | 264 | ||
265 | static const unsigned char start_mt9m111[][4] = | ||
266 | { | ||
262 | {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06, 0x00}, | 267 | {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06, 0x00}, |
263 | {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00}, | 268 | {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00}, |
264 | {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00}, | 269 | {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00}, |
@@ -285,4 +290,5 @@ static const unsigned char init_mt9m111[][4] = | |||
285 | {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00}, | 290 | {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00}, |
286 | }; | 291 | }; |
287 | 292 | ||
293 | |||
288 | #endif | 294 | #endif |