Lines Matching +full:0 +full:x6e
64 #define BRIDGE_SN9C102P 0
94 #define F_PDN_INV 0x01 /* inverse pin S_PWR_DN / sn_xxx tables */
95 #define F_ILLUM 0x02 /* presence of illuminator */
98 /* register 0x01 */
99 #define S_PWR_DN 0x01 /* sensor power down */
100 #define S_PDN_INV 0x02 /* inverse pin S_PWR_DN */
101 #define V_TX_EN 0x04 /* video transfer enable */
102 #define LED 0x08 /* output to pin LED */
103 #define SCL_SEL_OD 0x20 /* open-drain mode */
104 #define SYS_SEL_48M 0x40 /* system clock 0: 24MHz, 1: 48MHz */
105 /* register 0x17 */
106 #define MCK_SIZE_MASK 0x1f /* sensor master clock */
107 #define SEN_CLK_EN 0x20 /* enable sensor clock */
108 #define DEF_EN 0x80 /* defect pixel by 0: soft, 1: hard */
115 .priv = 0},
133 .priv = 0},
136 static const u8 sn_adcm1700[0x1c] = {
138 0x00, 0x43, 0x60, 0x00, 0x1a, 0x00, 0x00, 0x00,
140 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x03, 0x00, 0x05, 0x01, 0x05, 0x16, 0x12, 0x42,
144 0x06, 0x00, 0x00, 0x00
147 static const u8 sn_gc0307[0x1c] = {
149 0x00, 0x61, 0x62, 0x00, 0x1a, 0x00, 0x00, 0x00,
151 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153 0x03, 0x00, 0x03, 0x01, 0x08, 0x28, 0x1e, 0x02,
155 0x06, 0x00, 0x00, 0x00
158 static const u8 sn_hv7131[0x1c] = {
160 0x00, 0x03, 0x60, 0x00, 0x1a, 0x20, 0x20, 0x20,
162 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x03, 0x00, 0x00, 0x01, 0x03, 0x28, 0x1e, 0x41,
166 0x0a, 0x00, 0x00, 0x00
169 static const u8 sn_mi0360[0x1c] = {
171 0x00, 0x63, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
173 0x81, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
175 0x03, 0x00, 0x00, 0x02, 0x0a, 0x28, 0x1e, 0x61,
177 0x06, 0x00, 0x00, 0x00
180 static const u8 sn_mi0360b[0x1c] = {
182 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
184 0x81, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186 0x03, 0x00, 0x00, 0x02, 0x0a, 0x28, 0x1e, 0x40,
188 0x06, 0x00, 0x00, 0x00
191 static const u8 sn_mo4000[0x1c] = {
193 0x00, 0x23, 0x60, 0x00, 0x1a, 0x00, 0x20, 0x18,
195 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x03, 0x00, 0x0b, 0x0f, 0x14, 0x28, 0x1e, 0x40,
199 0x08, 0x00, 0x00, 0x00
202 static const u8 sn_mt9v111[0x1c] = {
204 0x00, 0x61, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
206 0x81, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x03, 0x00, 0x00, 0x02, 0x1c, 0x28, 0x1e, 0x40,
210 0x06, 0x00, 0x00, 0x00
213 static const u8 sn_om6802[0x1c] = {
215 0x00, 0x23, 0x72, 0x00, 0x1a, 0x20, 0x20, 0x19,
217 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219 0x03, 0x00, 0x51, 0x01, 0x00, 0x28, 0x1e, 0x40,
221 0x05, 0x00, 0x00, 0x00
224 static const u8 sn_ov7630[0x1c] = {
226 0x00, 0x21, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
228 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x03, 0x00, 0x04, 0x01, 0x0a, 0x28, 0x1e, 0xc2,
232 0x0b, 0x00, 0x00, 0x00
235 static const u8 sn_ov7648[0x1c] = {
237 0x00, 0x63, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
239 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x03, 0x00, 0x00, 0x01, 0x00, 0x28, 0x1e, 0x00,
243 0x0b, 0x00, 0x00, 0x00
246 static const u8 sn_ov7660[0x1c] = {
248 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
250 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
252 0x03, 0x00, 0x01, 0x01, 0x08, 0x28, 0x1e, 0x20,
254 0x07, 0x00, 0x00, 0x00
257 static const u8 sn_po1030[0x1c] = {
259 0x00, 0x21, 0x62, 0x00, 0x1a, 0x20, 0x20, 0x20,
261 0x81, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
263 0x03, 0x00, 0x00, 0x06, 0x06, 0x28, 0x1e, 0x00,
265 0x07, 0x00, 0x00, 0x00
268 static const u8 sn_po2030n[0x1c] = {
270 0x00, 0x63, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
272 0x81, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x03, 0x00, 0x00, 0x01, 0x14, 0x28, 0x1e, 0x00,
276 0x07, 0x00, 0x00, 0x00
279 static const u8 sn_soi768[0x1c] = {
281 0x00, 0x21, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
283 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
285 0x03, 0x00, 0x00, 0x01, 0x08, 0x28, 0x1e, 0x00,
287 0x07, 0x00, 0x00, 0x00
290 static const u8 sn_sp80708[0x1c] = {
292 0x00, 0x63, 0x60, 0x00, 0x1a, 0x20, 0x20, 0x20,
294 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296 0x03, 0x00, 0x00, 0x03, 0x04, 0x28, 0x1e, 0x00,
298 0x07, 0x00, 0x00, 0x00
322 0x00, 0x2d, 0x46, 0x5a, 0x6c, 0x7c, 0x8b, 0x99,
323 0xa6, 0xb2, 0xbf, 0xca, 0xd5, 0xe0, 0xeb, 0xf5, 0xff
327 0x0f, 0x39, 0x5a, 0x74, 0x86, 0x95, 0xa6, 0xb4,
328 0xbd, 0xc4, 0xcc, 0xd4, 0xd5, 0xde, 0xe4, 0xed, 0xf5
332 0x08, 0x3a, 0x52, 0x65, 0x75, 0x83, 0x91, 0x9d,
333 0xa9, 0xb4, 0xbe, 0xc8, 0xd2, 0xdb, 0xe4, 0xed, 0xf5
337 0x14, 0x37, 0x50, 0x6a, 0x7c, 0x8d, 0x9d, 0xab,
338 0xb5, 0xbf, 0xc2, 0xcb, 0xd1, 0xd6, 0xdb, 0xe1, 0xeb
342 0x0a, 0x2d, 0x4e, 0x68, 0x7d, 0x8f, 0x9f, 0xab,
343 0xb7, 0xc2, 0xcc, 0xd3, 0xd8, 0xde, 0xe2, 0xe5, 0xe6
348 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, /* YR YG YB gains */
349 0xe8, 0x0f, 0xda, 0x0f, 0x40, 0x00, /* UR UG UB */
350 0x3e, 0x00, 0xcd, 0x0f, 0xf7, 0x0f, /* VR VG VB */
351 0x00, 0x00, 0x00 /* YUV offsets */
354 #define DELAY 0xdd
357 {0xa0, 0x51, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10},
358 {0xb0, 0x51, 0x04, 0x08, 0x00, 0x00, 0x00, 0x10}, /* reset */
359 {DELAY, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
360 {0xb0, 0x51, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10},
361 {DELAY, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
362 {0xb0, 0x51, 0x0c, 0xe0, 0x2e, 0x00, 0x00, 0x10},
363 {0xb0, 0x51, 0x10, 0x02, 0x02, 0x00, 0x00, 0x10},
364 {0xb0, 0x51, 0x14, 0x0e, 0x0e, 0x00, 0x00, 0x10},
365 {0xb0, 0x51, 0x1c, 0x00, 0x80, 0x00, 0x00, 0x10},
366 {0xb0, 0x51, 0x20, 0x01, 0x00, 0x00, 0x00, 0x10},
367 {DELAY, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
368 {0xb0, 0x51, 0x04, 0x04, 0x00, 0x00, 0x00, 0x10},
369 {DELAY, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
370 {0xb0, 0x51, 0x04, 0x01, 0x00, 0x00, 0x00, 0x10},
371 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
372 {0xb0, 0x51, 0x14, 0x01, 0x00, 0x00, 0x00, 0x10},
373 {0xb0, 0x51, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
377 {0xb0, 0x51, 0x26, 0xf9, 0x01, 0x00, 0x00, 0x10}, /* exposure? */
378 {0xd0, 0x51, 0x1e, 0x8e, 0x8e, 0x8e, 0x8e, 0x10},
380 {0xa0, 0x51, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x10},
381 {0xb0, 0x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10},
382 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
383 {0xb0, 0x51, 0x32, 0x00, 0x72, 0x00, 0x00, 0x10},
384 {0xd0, 0x51, 0x1e, 0xbe, 0xd7, 0xe8, 0xbe, 0x10}, /* exposure? */
386 {0xa0, 0x51, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x10},
387 {0xb0, 0x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10},
388 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
389 {0xb0, 0x51, 0x32, 0x00, 0xa2, 0x00, 0x00, 0x10},
393 {0xa0, 0x21, 0x43, 0x00, 0x00, 0x00, 0x00, 0x10},
394 {0xa0, 0x21, 0x44, 0xa2, 0x00, 0x00, 0x00, 0x10},
395 {0xa0, 0x21, 0x01, 0x6a, 0x00, 0x00, 0x00, 0x10},
396 {0xa0, 0x21, 0x02, 0x70, 0x00, 0x00, 0x00, 0x10},
397 {0xa0, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
398 {0xa0, 0x21, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
399 {0xa0, 0x21, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10},
400 {0xa0, 0x21, 0x11, 0x05, 0x00, 0x00, 0x00, 0x10},
401 {0xa0, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
402 {0xa0, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10},
403 {0xa0, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10},
404 {0xa0, 0x21, 0x08, 0x02, 0x00, 0x00, 0x00, 0x10},
405 {0xa0, 0x21, 0x09, 0x01, 0x00, 0x00, 0x00, 0x10},
406 {0xa0, 0x21, 0x0a, 0xe8, 0x00, 0x00, 0x00, 0x10},
407 {0xa0, 0x21, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x10},
408 {0xa0, 0x21, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x10},
409 {0xa0, 0x21, 0x0d, 0x22, 0x00, 0x00, 0x00, 0x10},
410 {0xa0, 0x21, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x10},
411 {0xa0, 0x21, 0x0f, 0xb2, 0x00, 0x00, 0x00, 0x10},
412 {0xa0, 0x21, 0x12, 0x70, 0x00, 0x00, 0x00, 0x10},
413 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 10ms*/
414 {0xa0, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, 0x10},
415 {0xa0, 0x21, 0x15, 0xb8, 0x00, 0x00, 0x00, 0x10},
416 {0xa0, 0x21, 0x16, 0x13, 0x00, 0x00, 0x00, 0x10},
417 {0xa0, 0x21, 0x17, 0x52, 0x00, 0x00, 0x00, 0x10},
418 {0xa0, 0x21, 0x18, 0x50, 0x00, 0x00, 0x00, 0x10},
419 {0xa0, 0x21, 0x1e, 0x0d, 0x00, 0x00, 0x00, 0x10},
420 {0xa0, 0x21, 0x1f, 0x32, 0x00, 0x00, 0x00, 0x10},
421 {0xa0, 0x21, 0x61, 0x90, 0x00, 0x00, 0x00, 0x10},
422 {0xa0, 0x21, 0x63, 0x70, 0x00, 0x00, 0x00, 0x10},
423 {0xa0, 0x21, 0x65, 0x98, 0x00, 0x00, 0x00, 0x10},
424 {0xa0, 0x21, 0x67, 0x90, 0x00, 0x00, 0x00, 0x10},
425 {0xa0, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
426 {0xa0, 0x21, 0x04, 0x96, 0x00, 0x00, 0x00, 0x10},
427 {0xa0, 0x21, 0x45, 0x27, 0x00, 0x00, 0x00, 0x10},
428 {0xa0, 0x21, 0x47, 0x2c, 0x00, 0x00, 0x00, 0x10},
429 {0xa0, 0x21, 0x43, 0x47, 0x00, 0x00, 0x00, 0x10},
430 {0xa0, 0x21, 0x44, 0xd8, 0x00, 0x00, 0x00, 0x10},
434 {0xa0, 0x21, 0x68, 0x13, 0x00, 0x00, 0x00, 0x10},
435 {0xd0, 0x21, 0x61, 0x80, 0x00, 0x80, 0x00, 0x10},
436 {0xc0, 0x21, 0x65, 0x80, 0x00, 0x80, 0x00, 0x10},
437 {0xc0, 0x21, 0x63, 0xa0, 0x00, 0xa6, 0x00, 0x10},
439 {0xa0, 0x21, 0x01, 0x6e, 0x00, 0x00, 0x00, 0x10},
440 {0xa0, 0x21, 0x02, 0x88, 0x00, 0x00, 0x00, 0x10},
445 {0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
446 {0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},
447 {0xd1, 0x11, 0x40, 0xff, 0x7f, 0x7f, 0x7f, 0x10},
448 /* {0x91, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x10}, */
449 {0xd1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
450 {0xd1, 0x11, 0x14, 0x01, 0xe2, 0x02, 0x82, 0x10},
451 /* {0x91, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10}, */
453 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
454 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
455 {0xc1, 0x11, 0x25, 0x00, 0x61, 0xa8, 0x00, 0x10},
456 {0xa1, 0x11, 0x30, 0x22, 0x00, 0x00, 0x00, 0x10},
457 {0xc1, 0x11, 0x31, 0x20, 0x2e, 0x20, 0x00, 0x10},
458 {0xc1, 0x11, 0x25, 0x00, 0xc3, 0x50, 0x00, 0x10},
459 {0xa1, 0x11, 0x30, 0x07, 0x00, 0x00, 0x00, 0x10}, /* gain14 */
460 {0xc1, 0x11, 0x31, 0x10, 0x10, 0x10, 0x00, 0x10}, /* r g b 101a10 */
462 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
463 {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
464 {0xa1, 0x11, 0x21, 0xd0, 0x00, 0x00, 0x00, 0x10},
465 {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
466 {0xa1, 0x11, 0x23, 0x09, 0x00, 0x00, 0x00, 0x10},
468 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
469 {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
470 {0xa1, 0x11, 0x21, 0xd0, 0x00, 0x00, 0x00, 0x10},
471 {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
472 {0xa1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},
473 {0xa1, 0x11, 0x01, 0x18, 0x00, 0x00, 0x00, 0x10},
478 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
479 {0xb1, 0x5d, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10},
480 {0xb1, 0x5d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
481 {0xd1, 0x5d, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},
482 {0xd1, 0x5d, 0x03, 0x01, 0xe2, 0x02, 0x82, 0x10},
483 {0xd1, 0x5d, 0x05, 0x00, 0x09, 0x00, 0x53, 0x10},
484 {0xb1, 0x5d, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x10},
485 {0xd1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
486 {0xd1, 0x5d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10},
487 {0xd1, 0x5d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
488 {0xd1, 0x5d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
489 {0xd1, 0x5d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
490 {0xd1, 0x5d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10},
491 {0xd1, 0x5d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10},
492 {0xd1, 0x5d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},
493 {0xd1, 0x5d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x10},
494 {0xd1, 0x5d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
495 {0xb1, 0x5d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
496 {0xd1, 0x5d, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},
497 {0xd1, 0x5d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
498 {0xd1, 0x5d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},
499 {0xd1, 0x5d, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},
500 {0xd1, 0x5d, 0x2f, 0xf7, 0xb0, 0x00, 0x04, 0x10},
501 {0xd1, 0x5d, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
502 {0xd1, 0x5d, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},
503 {0xb1, 0x5d, 0x3d, 0x06, 0x8f, 0x00, 0x00, 0x10},
504 {0xd1, 0x5d, 0x40, 0x01, 0xe0, 0x00, 0xd1, 0x10},
505 {0xb1, 0x5d, 0x44, 0x00, 0x82, 0x00, 0x00, 0x10},
506 {0xd1, 0x5d, 0x58, 0x00, 0x78, 0x00, 0x43, 0x10},
507 {0xd1, 0x5d, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x10},
508 {0xd1, 0x5d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x10},
509 {0xd1, 0x5d, 0x5e, 0x00, 0x00, 0xa3, 0x1d, 0x10},
510 {0xb1, 0x5d, 0x62, 0x04, 0x11, 0x00, 0x00, 0x10},
512 {0xb1, 0x5d, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},
513 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
514 {0xb1, 0x5d, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10},
515 {0xd1, 0x5d, 0x2b, 0x00, 0xa0, 0x00, 0xb0, 0x10},
516 {0xd1, 0x5d, 0x2d, 0x00, 0xa0, 0x00, 0xa0, 0x10},
518 {0xb1, 0x5d, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor clck ?2 */
519 {0xb1, 0x5d, 0x06, 0x00, 0x30, 0x00, 0x00, 0x10},
520 {0xb1, 0x5d, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x10},
521 {0xb1, 0x5d, 0x09, 0x02, 0x35, 0x00, 0x00, 0x10}, /* exposure 2 */
523 {0xd1, 0x5d, 0x2b, 0x00, 0xb9, 0x00, 0xe3, 0x10},
524 {0xd1, 0x5d, 0x2d, 0x00, 0x5f, 0x00, 0xb9, 0x10}, /* 42 */
525 /* {0xb1, 0x5d, 0x35, 0x00, 0x67, 0x00, 0x00, 0x10}, * gain orig */
526 /* {0xb1, 0x5d, 0x35, 0x00, 0x20, 0x00, 0x00, 0x10}, * gain */
527 {0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */
528 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
532 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
533 {0xb1, 0x5d, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10},
534 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 20ms*/
535 {0xb1, 0x5d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
536 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 20ms*/
537 {0xd1, 0x5d, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},
538 {0xd1, 0x5d, 0x03, 0x01, 0xe2, 0x02, 0x82, 0x10},
539 {0xd1, 0x5d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
540 {0xb1, 0x5d, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x10},
541 {0xd1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
542 {0xd1, 0x5d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10},
543 {0xd1, 0x5d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
544 {0xd1, 0x5d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
545 {0xd1, 0x5d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
546 {0xd1, 0x5d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10},
547 {0xd1, 0x5d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10},
548 {0xd1, 0x5d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},
549 {0xd1, 0x5d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x10},
550 {0xd1, 0x5d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
551 {0xb1, 0x5d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
552 {0xd1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
553 {0xd1, 0x5d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
554 {0xd1, 0x5d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},
555 {0xd1, 0x5d, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},
556 {0xd1, 0x5d, 0x2f, 0xf7, 0xb0, 0x00, 0x04, 0x10},
557 {0xd1, 0x5d, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
558 {0xd1, 0x5d, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},
559 {0xb1, 0x5d, 0x3d, 0x06, 0x8f, 0x00, 0x00, 0x10},
560 {0xd1, 0x5d, 0x40, 0x01, 0xe0, 0x00, 0xd1, 0x10},
561 {0xb1, 0x5d, 0x44, 0x00, 0x82, 0x00, 0x00, 0x10},
562 {0xd1, 0x5d, 0x58, 0x00, 0x78, 0x00, 0x43, 0x10},
563 {0xd1, 0x5d, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x10},
564 {0xd1, 0x5d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x10},
565 {0xd1, 0x5d, 0x5e, 0x00, 0x00, 0xa3, 0x1d, 0x10},
566 {0xb1, 0x5d, 0x62, 0x04, 0x11, 0x00, 0x00, 0x10},
568 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
569 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
570 {0xb1, 0x5d, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10},
571 {0xd1, 0x5d, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10},
572 {0xd1, 0x5d, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10},
576 {0xb1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
577 {0xb1, 0x5d, 0x06, 0x00, 0x53, 0x00, 0x00, 0x10},
578 {0xb1, 0x5d, 0x05, 0x00, 0x09, 0x00, 0x00, 0x10},
579 {0xb1, 0x5d, 0x09, 0x02, 0x35, 0x00, 0x00, 0x10}, /* exposure 2 */
581 {0xd1, 0x5d, 0x2b, 0x00, 0xd1, 0x01, 0xc9, 0x10},
582 {0xd1, 0x5d, 0x2d, 0x00, 0xed, 0x00, 0xd1, 0x10},
583 {0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */
584 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
588 {0xa1, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00, 0x10},
589 {0xa1, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10},
590 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
591 {0xa1, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10},
592 {0xa1, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
593 {0xa1, 0x21, 0x05, 0x04, 0x00, 0x00, 0x00, 0x10},
594 {0xa1, 0x21, 0x06, 0x80, 0x00, 0x00, 0x00, 0x10},
595 {0xa1, 0x21, 0x06, 0x81, 0x00, 0x00, 0x00, 0x10},
596 {0xa1, 0x21, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
597 {0xa1, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x10},
598 {0xa1, 0x21, 0x11, 0x20, 0x00, 0x00, 0x00, 0x10},
599 {0xa1, 0x21, 0x11, 0x30, 0x00, 0x00, 0x00, 0x10},
600 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
601 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
602 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
603 {0xa1, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
604 {0xa1, 0x21, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x10},
605 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10},
606 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
607 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
611 {0xb1, 0x5c, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10}, /* reset? */
612 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
613 {0xb1, 0x5c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
614 {0xb1, 0x5c, 0x01, 0x00, 0x01, 0x00, 0x00, 0x10}, /* IFP select */
615 {0xb1, 0x5c, 0x08, 0x04, 0x80, 0x00, 0x00, 0x10}, /* output fmt ctrl */
616 {0xb1, 0x5c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10}, /* op mode ctrl */
617 {0xb1, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, /* sensor select */
618 {0xb1, 0x5c, 0x08, 0x00, 0x08, 0x00, 0x00, 0x10}, /* row start */
619 {0xb1, 0x5c, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10}, /* col start */
620 {0xb1, 0x5c, 0x03, 0x01, 0xe7, 0x00, 0x00, 0x10}, /* window height */
621 {0xb1, 0x5c, 0x04, 0x02, 0x87, 0x00, 0x00, 0x10}, /* window width */
622 {0xb1, 0x5c, 0x07, 0x30, 0x02, 0x00, 0x00, 0x10}, /* output ctrl */
623 {0xb1, 0x5c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10}, /* shutter delay */
624 {0xb1, 0x5c, 0x12, 0x00, 0xb0, 0x00, 0x00, 0x10}, /* zoom col start */
625 {0xb1, 0x5c, 0x13, 0x00, 0x7c, 0x00, 0x00, 0x10}, /* zoom row start */
626 {0xb1, 0x5c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10}, /* digital zoom */
627 {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10}, /* read mode */
628 {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
632 {0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xad, 0x10}, /* G1 and B gains */
633 {0xd1, 0x5c, 0x2d, 0x00, 0xad, 0x00, 0x33, 0x10}, /* R and G2 gains */
634 {0xb1, 0x5c, 0x06, 0x00, 0x40, 0x00, 0x00, 0x10}, /* vert blanking */
635 {0xb1, 0x5c, 0x05, 0x00, 0x09, 0x00, 0x00, 0x10}, /* horiz blanking */
636 {0xb1, 0x5c, 0x35, 0x01, 0xc0, 0x00, 0x00, 0x10}, /* global gain */
641 {0xa0, 0x34, 0x29, 0x0e, 0x00, 0x00, 0x00, 0x10},
642 {0xa0, 0x34, 0x23, 0xb0, 0x00, 0x00, 0x00, 0x10},
645 {0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10},
647 {0xa0, 0x34, 0xdd, 0x18, 0x00, 0x00, 0x00, 0x10},
649 {0xa0, 0x34, 0x5a, 0xc0, 0x00, 0x00, 0x00, 0x10},
650 /* {0xa0, 0x34, 0xfb, 0x11, 0x00, 0x00, 0x00, 0x10}, */
651 {0xa0, 0x34, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x10},
652 /* auto-exposure speed (0) / white balance mode (auto RGB) */
653 /* {0xa0, 0x34, 0xf1, 0x02, 0x00, 0x00, 0x00, 0x10},
655 /* {0xa0, 0x34, 0xfe, 0x5b, 0x00, 0x00, 0x00, 0x10},
657 /* {0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10},
659 /* {0xa0, 0x34, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x10},
661 /* {0xa0, 0x34, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x10},
663 /* {0xa0, 0x34, 0xe8, 0x31, 0x00, 0x00, 0x00, 0x10},
665 {0xa0, 0x34, 0xe9, 0x0f, 0x00, 0x00, 0x00, 0x10},
666 /* luminance mode (0x4f -> AutoExpo on) */
667 {0xa0, 0x34, 0xe4, 0xff, 0x00, 0x00, 0x00, 0x10},
669 /* {0xa0, 0x34, 0xef, 0x00, 0x00, 0x00, 0x00, 0x10},
671 /* {0xa0, 0x34, 0xfb, 0xee, 0x00, 0x00, 0x00, 0x10}, */
672 {0xa0, 0x34, 0x5d, 0x80, 0x00, 0x00, 0x00, 0x10},
676 {0xa0, 0x34, 0x71, 0x84, 0x00, 0x00, 0x00, 0x10},
677 {0xa0, 0x34, 0x72, 0x05, 0x00, 0x00, 0x00, 0x10},
678 {0xa0, 0x34, 0x68, 0x80, 0x00, 0x00, 0x00, 0x10},
679 {0xa0, 0x34, 0x69, 0x01, 0x00, 0x00, 0x00, 0x10},
683 {0xa1, 0x21, 0x76, 0x01, 0x00, 0x00, 0x00, 0x10},
684 {0xa1, 0x21, 0x12, 0xc8, 0x00, 0x00, 0x00, 0x10},
685 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
686 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
687 {0xa1, 0x21, 0x12, 0xc8, 0x00, 0x00, 0x00, 0x10},
688 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
689 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
691 {0xd1, 0x21, 0x03, 0x80, 0x10, 0x20, 0x80, 0x10},
692 {0xb1, 0x21, 0x0c, 0x20, 0x20, 0x00, 0x00, 0x10},
693 /* HDG: 0x11 was 0x00 change to 0x01 for better exposure (15 fps instead of 30)
694 0x13 was 0xc0 change to 0xc3 for auto gain and exposure */
695 {0xd1, 0x21, 0x11, 0x01, 0x48, 0xc3, 0x00, 0x10},
696 {0xb1, 0x21, 0x15, 0x80, 0x03, 0x00, 0x00, 0x10},
697 {0xd1, 0x21, 0x17, 0x1b, 0xbd, 0x05, 0xf6, 0x10},
698 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
699 {0xd1, 0x21, 0x1f, 0x00, 0x80, 0x80, 0x80, 0x10},
700 {0xd1, 0x21, 0x23, 0xde, 0x10, 0x8a, 0xa0, 0x10},
701 {0xc1, 0x21, 0x27, 0xca, 0xa2, 0x74, 0x00, 0x10},
702 {0xd1, 0x21, 0x2a, 0x88, 0x00, 0x88, 0x01, 0x10},
703 {0xc1, 0x21, 0x2e, 0x80, 0x00, 0x18, 0x00, 0x10},
704 {0xa1, 0x21, 0x21, 0x08, 0x00, 0x00, 0x00, 0x10},
705 {0xa1, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
706 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10},
707 {0xb1, 0x21, 0x32, 0xc2, 0x08, 0x00, 0x00, 0x10},
708 {0xb1, 0x21, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x10},
709 {0xd1, 0x21, 0x60, 0x05, 0x40, 0x12, 0x57, 0x10},
710 {0xa1, 0x21, 0x64, 0x73, 0x00, 0x00, 0x00, 0x10},
711 {0xd1, 0x21, 0x65, 0x00, 0x55, 0x01, 0xac, 0x10},
712 {0xa1, 0x21, 0x69, 0x38, 0x00, 0x00, 0x00, 0x10},
713 {0xd1, 0x21, 0x6f, 0x1f, 0x01, 0x00, 0x10, 0x10},
714 {0xd1, 0x21, 0x73, 0x50, 0x20, 0x02, 0x01, 0x10},
715 {0xd1, 0x21, 0x77, 0xf3, 0x90, 0x98, 0x98, 0x10},
716 {0xc1, 0x21, 0x7b, 0x00, 0x4c, 0xf7, 0x00, 0x10},
717 {0xd1, 0x21, 0x17, 0x1b, 0xbd, 0x05, 0xf6, 0x10},
718 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
722 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
723 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
724 /*fixme: + 0x12, 0x04*/
725 /* {0xa1, 0x21, 0x75, 0x82, 0x00, 0x00, 0x00, 0x10}, * COMN
727 {0xa1, 0x21, 0x10, 0x32, 0x00, 0x00, 0x00, 0x10},
728 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
729 {0xb1, 0x21, 0x01, 0x80, 0x80, 0x00, 0x00, 0x10},
731 /* {0xa1, 0x21, 0x2a, 0x88, 0x00, 0x00, 0x00, 0x10}, * set by setfreq */
732 /* {0xa1, 0x21, 0x2b, 0x34, 0x00, 0x00, 0x00, 0x10}, * set by setfreq */
734 {0xa1, 0x21, 0x10, 0x83, 0x00, 0x00, 0x00, 0x10},
735 /* {0xb1, 0x21, 0x01, 0x88, 0x70, 0x00, 0x00, 0x10}, */
740 {0xa1, 0x21, 0x76, 0x00, 0x00, 0x00, 0x00, 0x10},
741 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset */
742 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
743 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
744 {0xd1, 0x21, 0x03, 0xa4, 0x30, 0x88, 0x00, 0x10},
745 {0xb1, 0x21, 0x11, 0x80, 0x08, 0x00, 0x00, 0x10},
746 {0xc1, 0x21, 0x13, 0xa0, 0x04, 0x84, 0x00, 0x10},
747 {0xd1, 0x21, 0x17, 0x1a, 0x02, 0xba, 0xf4, 0x10},
748 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
749 {0xd1, 0x21, 0x1f, 0x41, 0xc0, 0x80, 0x80, 0x10},
750 {0xd1, 0x21, 0x23, 0xde, 0xa0, 0x80, 0x32, 0x10},
751 {0xd1, 0x21, 0x27, 0xfe, 0xa0, 0x00, 0x91, 0x10},
752 {0xd1, 0x21, 0x2b, 0x00, 0x88, 0x85, 0x80, 0x10},
753 {0xc1, 0x21, 0x2f, 0x9c, 0x00, 0xc4, 0x00, 0x10},
754 {0xd1, 0x21, 0x60, 0xa6, 0x60, 0x88, 0x12, 0x10},
755 {0xd1, 0x21, 0x64, 0x88, 0x00, 0x00, 0x94, 0x10},
756 {0xd1, 0x21, 0x68, 0x7a, 0x0c, 0x00, 0x00, 0x10},
757 {0xd1, 0x21, 0x6c, 0x11, 0x33, 0x22, 0x00, 0x10},
758 {0xd1, 0x21, 0x70, 0x11, 0x00, 0x10, 0x50, 0x10},
759 {0xd1, 0x21, 0x74, 0x20, 0x06, 0x00, 0xb5, 0x10},
760 {0xd1, 0x21, 0x78, 0x8a, 0x00, 0x00, 0x00, 0x10},
761 {0xb1, 0x21, 0x7c, 0x00, 0x43, 0x00, 0x00, 0x10},
763 {0xd1, 0x21, 0x21, 0x86, 0x00, 0xde, 0xa0, 0x10},
764 /* {0xd1, 0x21, 0x25, 0x80, 0x32, 0xfe, 0xa0, 0x10}, jfm done */
765 /* {0xd1, 0x21, 0x29, 0x00, 0x91, 0x00, 0x88, 0x10}, jfm done */
766 /* {0xb1, 0x21, 0x2d, 0x85, 0x00, 0x00, 0x00, 0x10}, set by setfreq */
770 /* {0xa1, 0x21, 0x12, 0x08, 0x00, 0x00, 0x00, 0x10}, jfm done */
771 /* {0xa1, 0x21, 0x75, 0x06, 0x00, 0x00, 0x00, 0x10}, * COMN
773 {0xa1, 0x21, 0x19, 0x02, 0x00, 0x00, 0x00, 0x10},
774 {0xa1, 0x21, 0x10, 0x32, 0x00, 0x00, 0x00, 0x10},
775 /* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
776 /* {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, * GAIN - def */
777 /* {0xb1, 0x21, 0x01, 0x6c, 0x6c, 0x00, 0x00, 0x10}, * B R - def: 80 */
779 {0xa1, 0x21, 0x11, 0x81, 0x00, 0x00, 0x00, 0x10}, /* CLKRC */
780 /* {0xa1, 0x21, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
781 /* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
782 /* {0xa1, 0x21, 0x2a, 0x91, 0x00, 0x00, 0x00, 0x10}, jfm done */
783 /* {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
784 /* {0xb1, 0x21, 0x01, 0x64, 0x84, 0x00, 0x00, 0x10}, * B R - def: 80 */
790 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */
791 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
792 {0xa1, 0x21, 0x12, 0x05, 0x00, 0x00, 0x00, 0x10},
794 {0xa1, 0x21, 0x13, 0xb8, 0x00, 0x00, 0x00, 0x10}, /* init COM8 */
795 {0xd1, 0x21, 0x00, 0x01, 0x74, 0x92, 0x00, 0x10},
797 {0xd1, 0x21, 0x04, 0x00, 0x7d, 0x62, 0x00, 0x10},
799 {0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
800 {0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
801 {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10},
803 {0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
804 {0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
806 {0xa1, 0x21, 0x1b, 0x02, 0x00, 0x00, 0x00, 0x10}, /* PSHFT */
807 {0xb1, 0x21, 0x1e, 0x01, 0x0e, 0x00, 0x00, 0x10}, /* MVFP LAEC */
808 {0xd1, 0x21, 0x20, 0x07, 0x07, 0x07, 0x07, 0x10},
810 /* {0xd1, 0x21, 0x24, 0x68, 0x58, 0xd4, 0x80, 0x10}, */
811 {0xd1, 0x21, 0x24, 0x78, 0x68, 0xd4, 0x80, 0x10},
813 {0xd1, 0x21, 0x28, 0x80, 0x30, 0x00, 0x00, 0x10},
815 {0xd1, 0x21, 0x2c, 0x80, 0x00, 0x00, 0x62, 0x10},
817 {0xc1, 0x21, 0x30, 0x08, 0x30, 0xb4, 0x00, 0x10},
819 {0xd1, 0x21, 0x33, 0x00, 0x07, 0x84, 0x00, 0x10}, /* reserved */
820 {0xd1, 0x21, 0x37, 0x0c, 0x02, 0x43, 0x00, 0x10},
822 {0xd1, 0x21, 0x3b, 0x02, 0x6c, 0x19, 0x0e, 0x10},
824 {0xd1, 0x21, 0x3f, 0x41, 0xc1, 0x22, 0x08, 0x10},
826 {0xd1, 0x21, 0x43, 0xf0, 0x10, 0x78, 0xa8, 0x10}, /* reserved */
827 {0xd1, 0x21, 0x47, 0x60, 0x80, 0x00, 0x00, 0x10}, /* reserved */
828 {0xd1, 0x21, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x10}, /* reserved */
829 {0xd1, 0x21, 0x4f, 0x46, 0x36, 0x0f, 0x17, 0x10}, /* MTX 1 2 3 4 */
830 {0xd1, 0x21, 0x53, 0x7f, 0x96, 0x40, 0x40, 0x10}, /* MTX 5 6 7 8 */
831 {0xb1, 0x21, 0x57, 0x40, 0x0f, 0x00, 0x00, 0x10}, /* MTX9 MTXS */
832 {0xd1, 0x21, 0x59, 0xba, 0x9a, 0x22, 0xb9, 0x10}, /* reserved */
833 {0xd1, 0x21, 0x5d, 0x9b, 0x10, 0xf0, 0x05, 0x10}, /* reserved */
834 {0xa1, 0x21, 0x61, 0x60, 0x00, 0x00, 0x00, 0x10}, /* reserved */
835 {0xd1, 0x21, 0x62, 0x00, 0x00, 0x50, 0x30, 0x10},
837 {0xa1, 0x21, 0x66, 0x00, 0x00, 0x00, 0x00, 0x10}, /* LCC5 */
838 {0xd1, 0x21, 0x67, 0x80, 0x7a, 0x90, 0x80, 0x10}, /* MANU */
839 {0xa1, 0x21, 0x6b, 0x0a, 0x00, 0x00, 0x00, 0x10},
840 /* band gap reference [0:3] DBLV */
841 {0xd1, 0x21, 0x6c, 0x30, 0x48, 0x80, 0x74, 0x10}, /* gamma curve */
842 {0xd1, 0x21, 0x70, 0x64, 0x60, 0x5c, 0x58, 0x10}, /* gamma curve */
843 {0xd1, 0x21, 0x74, 0x54, 0x4c, 0x40, 0x38, 0x10}, /* gamma curve */
844 {0xd1, 0x21, 0x78, 0x34, 0x30, 0x2f, 0x2b, 0x10}, /* gamma curve */
845 {0xd1, 0x21, 0x7c, 0x03, 0x07, 0x17, 0x34, 0x10}, /* gamma curve */
846 {0xd1, 0x21, 0x80, 0x41, 0x4d, 0x58, 0x63, 0x10}, /* gamma curve */
847 {0xd1, 0x21, 0x84, 0x6e, 0x77, 0x87, 0x95, 0x10}, /* gamma curve */
848 {0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */
849 {0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */
850 {0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */
852 {0xa1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10},
856 {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */
857 /* bits[3..0]reserved */
858 {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10},
859 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
861 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
862 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10}, /* AECH 0x20 */
863 {0xa1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10}, /* ADVFL */
864 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10}, /* ADVFH */
865 {0xa1, 0x21, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10}, /* GAIN */
866 /* {0xb1, 0x21, 0x01, 0x78, 0x78, 0x00, 0x00, 0x10}, * BLUE */
869 {0xa1, 0x21, 0x93, 0x00, 0x00, 0x00, 0x00, 0x10},/* dummy line hight */
870 {0xa1, 0x21, 0x92, 0x25, 0x00, 0x00, 0x00, 0x10}, /* dummy line low */
871 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10}, /* EXHCH */
872 {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10}, /* EXHCL */
873 /* {0xa1, 0x21, 0x02, 0x90, 0x00, 0x00, 0x00, 0x10}, * RED */
877 {0xa1, 0x21, 0x93, 0x01, 0x00, 0x00, 0x00, 0x10},
878 {0xa1, 0x21, 0x92, 0xff, 0x00, 0x00, 0x00, 0x10},
879 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10},
880 {0xa1, 0x21, 0x2b, 0xc3, 0x00, 0x00, 0x00, 0x10},
886 {0xa1, 0x6e, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x10}, /* sensor reset */
887 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
888 {0xa1, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x10},
889 {0xa1, 0x6e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10},
890 {0xd1, 0x6e, 0x04, 0x02, 0xb1, 0x02, 0x39, 0x10},
891 {0xd1, 0x6e, 0x08, 0x00, 0x01, 0x00, 0x00, 0x10},
892 {0xd1, 0x6e, 0x0c, 0x02, 0x7f, 0x01, 0xe0, 0x10},
893 {0xd1, 0x6e, 0x12, 0x03, 0x02, 0x00, 0x03, 0x10},
894 {0xd1, 0x6e, 0x16, 0x85, 0x40, 0x4a, 0x40, 0x10}, /* r/g1/b/g2 gains */
895 {0xc1, 0x6e, 0x1a, 0x00, 0x80, 0x00, 0x00, 0x10},
896 {0xd1, 0x6e, 0x1d, 0x08, 0x03, 0x00, 0x00, 0x10},
897 {0xd1, 0x6e, 0x23, 0x00, 0xb0, 0x00, 0x94, 0x10},
898 {0xd1, 0x6e, 0x27, 0x58, 0x00, 0x00, 0x00, 0x10},
899 {0xb1, 0x6e, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10},
900 {0xd1, 0x6e, 0x2d, 0x14, 0x35, 0x61, 0x84, 0x10}, /* gamma corr */
901 {0xd1, 0x6e, 0x31, 0xa2, 0xbd, 0xd8, 0xff, 0x10},
902 {0xd1, 0x6e, 0x35, 0x06, 0x1e, 0x12, 0x02, 0x10}, /* color matrix */
903 {0xd1, 0x6e, 0x39, 0xaa, 0x53, 0x37, 0xd5, 0x10},
904 {0xa1, 0x6e, 0x3d, 0xf2, 0x00, 0x00, 0x00, 0x10},
905 {0xd1, 0x6e, 0x3e, 0x00, 0x00, 0x80, 0x03, 0x10},
906 {0xd1, 0x6e, 0x42, 0x03, 0x00, 0x00, 0x00, 0x10},
907 {0xc1, 0x6e, 0x46, 0x00, 0x80, 0x80, 0x00, 0x10},
908 {0xd1, 0x6e, 0x4b, 0x02, 0xef, 0x08, 0xcd, 0x10},
909 {0xd1, 0x6e, 0x4f, 0x00, 0xd0, 0x00, 0xa0, 0x10},
910 {0xd1, 0x6e, 0x53, 0x01, 0xaa, 0x01, 0x40, 0x10},
911 {0xd1, 0x6e, 0x5a, 0x50, 0x04, 0x30, 0x03, 0x10}, /* raw rgb bayer */
912 {0xa1, 0x6e, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x10},
913 {0xd1, 0x6e, 0x5f, 0x10, 0x40, 0xff, 0x00, 0x10},
915 {0xd1, 0x6e, 0x63, 0x40, 0x40, 0x00, 0x00, 0x10},
916 {0xd1, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00, 0x10},
917 {0xd1, 0x6e, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x10},
918 {0xd1, 0x6e, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x10},
919 {0xc1, 0x6e, 0x73, 0x10, 0x80, 0xeb, 0x00, 0x10},
924 {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
925 {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
927 {0xc1, 0x6e, 0x1a, 0x02, 0xd4, 0xa4, 0x00, 0x10}, /* integlines */
928 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10}, /* global gain */
929 {0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10}, /* r/g1/b gains */
931 {0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10}, /* control1 */
932 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10}, /* frameheight */
933 {0xa1, 0x6e, 0x07, 0xd5, 0x00, 0x00, 0x00, 0x10},
934 /* {0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10}, */
939 {0xa1, 0x6e, 0x1e, 0x1a, 0x00, 0x00, 0x00, 0x10},
940 {0xa1, 0x6e, 0x1f, 0x99, 0x00, 0x00, 0x00, 0x10},
941 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 10ms */
942 {0xa1, 0x6e, 0x1e, 0x0a, 0x00, 0x00, 0x00, 0x10},
943 {0xa1, 0x6e, 0x1f, 0x19, 0x00, 0x00, 0x00, 0x10},
944 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 10ms */
945 {0xa1, 0x6e, 0x20, 0x44, 0x00, 0x00, 0x00, 0x10},
946 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10},
947 {0xa1, 0x6e, 0x05, 0x70, 0x00, 0x00, 0x00, 0x10},
948 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
949 {0xa1, 0x6e, 0x07, 0x25, 0x00, 0x00, 0x00, 0x10},
950 {0xd1, 0x6e, 0x08, 0x00, 0xd0, 0x00, 0x08, 0x10},
951 {0xd1, 0x6e, 0x0c, 0x03, 0x50, 0x01, 0xe8, 0x10},
952 {0xd1, 0x6e, 0x1d, 0x20, 0x0a, 0x19, 0x44, 0x10},
953 {0xd1, 0x6e, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10},
954 {0xd1, 0x6e, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10},
955 {0xd1, 0x6e, 0x29, 0x00, 0x00, 0x00, 0x00, 0x10},
956 {0xd1, 0x6e, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10},
957 {0xd1, 0x6e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
958 {0xd1, 0x6e, 0x35, 0x00, 0x00, 0x00, 0x00, 0x10},
959 {0xd1, 0x6e, 0x39, 0x00, 0x00, 0x00, 0x00, 0x10},
960 {0xd1, 0x6e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x10},
961 {0xd1, 0x6e, 0x41, 0x00, 0x00, 0x00, 0x00, 0x10},
962 {0xd1, 0x6e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x10},
963 {0xd1, 0x6e, 0x49, 0x00, 0x00, 0x00, 0x00, 0x10},
964 {0xd1, 0x6e, 0x4d, 0x00, 0x00, 0x00, 0xed, 0x10},
965 {0xd1, 0x6e, 0x51, 0x17, 0x4a, 0x2f, 0xc0, 0x10},
966 {0xd1, 0x6e, 0x55, 0x00, 0x00, 0x00, 0x00, 0x10},
967 {0xd1, 0x6e, 0x59, 0x00, 0x00, 0x00, 0x00, 0x10},
968 {0xd1, 0x6e, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x10},
969 {0xd1, 0x6e, 0x61, 0x00, 0x00, 0x00, 0x00, 0x10},
970 {0xd1, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x10},
971 {0xd1, 0x6e, 0x69, 0x00, 0x00, 0x00, 0x00, 0x10},
972 {0xd1, 0x6e, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10},
973 {0xd1, 0x6e, 0x71, 0x00, 0x00, 0x00, 0x00, 0x10},
974 {0xd1, 0x6e, 0x75, 0x00, 0x00, 0x00, 0x00, 0x10},
975 {0xd1, 0x6e, 0x79, 0x00, 0x00, 0x00, 0x00, 0x10},
976 {0xd1, 0x6e, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x10},
977 {0xd1, 0x6e, 0x81, 0x00, 0x00, 0x00, 0x00, 0x10},
978 {0xd1, 0x6e, 0x85, 0x00, 0x00, 0x00, 0x08, 0x10},
979 {0xd1, 0x6e, 0x89, 0x01, 0xe8, 0x00, 0x01, 0x10},
980 {0xa1, 0x6e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x10},
981 {0xd1, 0x6e, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10},
982 {0xd1, 0x6e, 0x25, 0x00, 0x00, 0x00, 0x01, 0x10},
983 {0xd1, 0x6e, 0x29, 0xe6, 0x00, 0xbd, 0x03, 0x10},
984 {0xd1, 0x6e, 0x2d, 0x41, 0x38, 0x68, 0x40, 0x10},
985 {0xd1, 0x6e, 0x31, 0x2b, 0x00, 0x36, 0x00, 0x10},
986 {0xd1, 0x6e, 0x35, 0x30, 0x30, 0x08, 0x00, 0x10},
987 {0xd1, 0x6e, 0x39, 0x00, 0x00, 0x33, 0x06, 0x10},
988 {0xb1, 0x6e, 0x3d, 0x06, 0x02, 0x00, 0x00, 0x10},
992 {0xa1, 0x6e, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x10},
993 {DELAY, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 8ms */
994 {0xa1, 0x6e, 0x1b, 0xf4, 0x00, 0x00, 0x00, 0x10},
995 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10},
996 {0xd1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x40, 0x10}, /* RGBG gains */
998 {0xa1, 0x6e, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10},
999 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10},
1000 {0xa1, 0x6e, 0x05, 0x6f, 0x00, 0x00, 0x00, 0x10},
1001 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
1002 {0xa1, 0x6e, 0x07, 0x25, 0x00, 0x00, 0x00, 0x10},
1007 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset */
1008 {DELAY, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 96ms */
1009 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
1010 {0xa1, 0x21, 0x13, 0x80, 0x00, 0x00, 0x00, 0x10},
1011 {0xa1, 0x21, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x10},
1012 {0xa1, 0x21, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10},
1016 {0xa1, 0x21, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10},
1017 {0xa1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10},
1018 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10},
1019 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
1020 {0xb1, 0x21, 0x01, 0x7f, 0x7f, 0x00, 0x00, 0x10},
1022 /* {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10}, */
1023 /* {0xa1, 0x21, 0x2d, 0x25, 0x00, 0x00, 0x00, 0x10}, */
1024 {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10},
1025 /* {0xb1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10}, */
1026 {0xa1, 0x21, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x10},
1028 {0xa1, 0x21, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10},
1029 /* global gain ? : 07 - change with 0x15 at the end */
1030 {0xa1, 0x21, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x10}, /* ???? : 063f */
1031 {0xa1, 0x21, 0x04, 0x06, 0x00, 0x00, 0x00, 0x10},
1032 {0xb1, 0x21, 0x2d, 0x63, 0x03, 0x00, 0x00, 0x10},
1033 /* exposure ? : 0200 - change with 0x1e at the end */
1038 {0xa1, 0x18, 0x06, 0xf9, 0x00, 0x00, 0x00, 0x10},
1039 {0xa1, 0x18, 0x09, 0x1f, 0x00, 0x00, 0x00, 0x10},
1040 {0xa1, 0x18, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
1041 {0xa1, 0x18, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x10},
1042 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1043 {0xa1, 0x18, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x10},
1044 {0xa1, 0x18, 0x10, 0x40, 0x00, 0x00, 0x00, 0x10},
1045 {0xa1, 0x18, 0x11, 0x4e, 0x00, 0x00, 0x00, 0x10},
1046 {0xa1, 0x18, 0x12, 0x53, 0x00, 0x00, 0x00, 0x10},
1047 {0xa1, 0x18, 0x15, 0x80, 0x00, 0x00, 0x00, 0x10},
1048 {0xa1, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10},
1049 {0xa1, 0x18, 0x19, 0x18, 0x00, 0x00, 0x00, 0x10},
1050 {0xa1, 0x18, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x10},
1051 {0xa1, 0x18, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x10},
1052 {0xa1, 0x18, 0x1c, 0x28, 0x00, 0x00, 0x00, 0x10},
1053 {0xa1, 0x18, 0x1d, 0x02, 0x00, 0x00, 0x00, 0x10},
1054 {0xa1, 0x18, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x10},
1055 {0xa1, 0x18, 0x26, 0x04, 0x00, 0x00, 0x00, 0x10},
1056 {0xa1, 0x18, 0x27, 0x1e, 0x00, 0x00, 0x00, 0x10},
1057 {0xa1, 0x18, 0x28, 0x5a, 0x00, 0x00, 0x00, 0x10},
1058 {0xa1, 0x18, 0x29, 0x28, 0x00, 0x00, 0x00, 0x10},
1059 {0xa1, 0x18, 0x2a, 0x78, 0x00, 0x00, 0x00, 0x10},
1060 {0xa1, 0x18, 0x2b, 0x01, 0x00, 0x00, 0x00, 0x10},
1061 {0xa1, 0x18, 0x2c, 0xf7, 0x00, 0x00, 0x00, 0x10},
1062 {0xa1, 0x18, 0x2d, 0x2d, 0x00, 0x00, 0x00, 0x10},
1063 {0xa1, 0x18, 0x2e, 0xd5, 0x00, 0x00, 0x00, 0x10},
1064 {0xa1, 0x18, 0x39, 0x42, 0x00, 0x00, 0x00, 0x10},
1065 {0xa1, 0x18, 0x3a, 0x67, 0x00, 0x00, 0x00, 0x10},
1066 {0xa1, 0x18, 0x3b, 0x87, 0x00, 0x00, 0x00, 0x10},
1067 {0xa1, 0x18, 0x3c, 0xa3, 0x00, 0x00, 0x00, 0x10},
1068 {0xa1, 0x18, 0x3d, 0xb0, 0x00, 0x00, 0x00, 0x10},
1069 {0xa1, 0x18, 0x3e, 0xbc, 0x00, 0x00, 0x00, 0x10},
1070 {0xa1, 0x18, 0x3f, 0xc8, 0x00, 0x00, 0x00, 0x10},
1071 {0xa1, 0x18, 0x40, 0xd4, 0x00, 0x00, 0x00, 0x10},
1072 {0xa1, 0x18, 0x41, 0xdf, 0x00, 0x00, 0x00, 0x10},
1073 {0xa1, 0x18, 0x42, 0xea, 0x00, 0x00, 0x00, 0x10},
1074 {0xa1, 0x18, 0x43, 0xf5, 0x00, 0x00, 0x00, 0x10},
1075 {0xa1, 0x18, 0x45, 0x80, 0x00, 0x00, 0x00, 0x10},
1076 {0xa1, 0x18, 0x46, 0x60, 0x00, 0x00, 0x00, 0x10},
1077 {0xa1, 0x18, 0x47, 0x50, 0x00, 0x00, 0x00, 0x10},
1078 {0xa1, 0x18, 0x48, 0x30, 0x00, 0x00, 0x00, 0x10},
1079 {0xa1, 0x18, 0x49, 0x01, 0x00, 0x00, 0x00, 0x10},
1080 {0xa1, 0x18, 0x4d, 0xae, 0x00, 0x00, 0x00, 0x10},
1081 {0xa1, 0x18, 0x4e, 0x03, 0x00, 0x00, 0x00, 0x10},
1082 {0xa1, 0x18, 0x4f, 0x66, 0x00, 0x00, 0x00, 0x10},
1083 {0xa1, 0x18, 0x50, 0x1c, 0x00, 0x00, 0x00, 0x10},
1084 {0xa1, 0x18, 0x44, 0x10, 0x00, 0x00, 0x00, 0x10},
1085 {0xa1, 0x18, 0x4a, 0x30, 0x00, 0x00, 0x00, 0x10},
1086 {0xa1, 0x18, 0x51, 0x80, 0x00, 0x00, 0x00, 0x10},
1087 {0xa1, 0x18, 0x52, 0x80, 0x00, 0x00, 0x00, 0x10},
1088 {0xa1, 0x18, 0x53, 0x80, 0x00, 0x00, 0x00, 0x10},
1089 {0xa1, 0x18, 0x54, 0x80, 0x00, 0x00, 0x00, 0x10},
1090 {0xa1, 0x18, 0x55, 0x80, 0x00, 0x00, 0x00, 0x10},
1091 {0xa1, 0x18, 0x56, 0x80, 0x00, 0x00, 0x00, 0x10},
1092 {0xa1, 0x18, 0x57, 0xe0, 0x00, 0x00, 0x00, 0x10},
1093 {0xa1, 0x18, 0x58, 0xc0, 0x00, 0x00, 0x00, 0x10},
1094 {0xa1, 0x18, 0x59, 0xab, 0x00, 0x00, 0x00, 0x10},
1095 {0xa1, 0x18, 0x5a, 0xa0, 0x00, 0x00, 0x00, 0x10},
1096 {0xa1, 0x18, 0x5b, 0x99, 0x00, 0x00, 0x00, 0x10},
1097 {0xa1, 0x18, 0x5c, 0x90, 0x00, 0x00, 0x00, 0x10},
1098 {0xa1, 0x18, 0x5e, 0x24, 0x00, 0x00, 0x00, 0x10},
1099 {0xa1, 0x18, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x10},
1100 {0xa1, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x10},
1101 {0xa1, 0x18, 0x61, 0x73, 0x00, 0x00, 0x00, 0x10},
1102 {0xa1, 0x18, 0x63, 0x42, 0x00, 0x00, 0x00, 0x10},
1103 {0xa1, 0x18, 0x64, 0x42, 0x00, 0x00, 0x00, 0x10},
1104 {0xa1, 0x18, 0x65, 0x42, 0x00, 0x00, 0x00, 0x10},
1105 {0xa1, 0x18, 0x66, 0x24, 0x00, 0x00, 0x00, 0x10},
1106 {0xa1, 0x18, 0x67, 0x24, 0x00, 0x00, 0x00, 0x10},
1107 {0xa1, 0x18, 0x68, 0x08, 0x00, 0x00, 0x00, 0x10},
1108 {0xa1, 0x18, 0x2f, 0xc9, 0x00, 0x00, 0x00, 0x10},
1112 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1113 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1114 {0xa1, 0x18, 0x03, 0x01, 0x00, 0x00, 0x00, 0x10},
1115 {0xa1, 0x18, 0x04, 0xa4, 0x00, 0x00, 0x00, 0x10},
1116 {0xa1, 0x18, 0x14, 0x3f, 0x00, 0x00, 0x00, 0x10},
1117 {0xa1, 0x18, 0x5d, 0x80, 0x00, 0x00, 0x00, 0x10},
1118 {0xb1, 0x18, 0x11, 0x40, 0x40, 0x00, 0x00, 0x10},
1146 if (gspca_dev->usb_err < 0) in reg_r()
1154 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
1155 0, in reg_r()
1157 value, 0, in reg_r()
1161 value, gspca_dev->usb_buf[0]); in reg_r()
1162 if (ret < 0) { in reg_r()
1169 memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); in reg_r()
1179 if (gspca_dev->usb_err < 0) in reg_w1()
1182 gspca_dev->usb_buf[0] = data; in reg_w1()
1184 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w1()
1185 0x08, in reg_w1()
1188 0, in reg_w1()
1191 if (ret < 0) { in reg_w1()
1203 if (gspca_dev->usb_err < 0) in reg_w()
1206 value, buffer[0], buffer[1]); in reg_w()
1215 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
1216 0x08, in reg_w()
1218 value, 0, in reg_w()
1221 if (ret < 0) { in reg_w()
1233 if (gspca_dev->usb_err < 0) in i2c_w1()
1240 gspca_dev->usb_buf[0] = 0x80 | (2 << 4); in i2c_w1()
1243 gspca_dev->usb_buf[0] = 0x81 | (2 << 4); in i2c_w1()
1249 gspca_dev->usb_buf[4] = 0; in i2c_w1()
1250 gspca_dev->usb_buf[5] = 0; in i2c_w1()
1251 gspca_dev->usb_buf[6] = 0; in i2c_w1()
1252 gspca_dev->usb_buf[7] = 0x10; in i2c_w1()
1254 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w1()
1255 0x08, in i2c_w1()
1257 0x08, /* value = i2c */ in i2c_w1()
1258 0, in i2c_w1()
1262 if (ret < 0) { in i2c_w1()
1274 if (gspca_dev->usb_err < 0) in i2c_w8()
1280 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w8()
1281 0x08, in i2c_w8()
1283 0x08, 0, /* value, index */ in i2c_w8()
1287 if (ret < 0) { in i2c_w8()
1303 mode[0] = 0x80 | 0x10; in i2c_r()
1306 mode[0] = 0x81 | 0x10; in i2c_r()
1311 mode[3] = 0; in i2c_r()
1312 mode[4] = 0; in i2c_r()
1313 mode[5] = 0; in i2c_r()
1314 mode[6] = 0; in i2c_r()
1315 mode[7] = 0x10; in i2c_r()
1318 mode[0] = (mode[0] & 0x81) | (len << 4) | 0x02; in i2c_r()
1319 mode[2] = 0; in i2c_r()
1322 reg_r(gspca_dev, 0x0a, 5); in i2c_r()
1328 while ((*data)[0] != 0) { in i2c_w_seq()
1329 if ((*data)[0] != DELAY) in i2c_w_seq()
1341 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ in hv7131r_probe()
1343 reg_w1(gspca_dev, 0x02, 0x66); /* Gpio on */ in hv7131r_probe()
1345 i2c_r(gspca_dev, 0, 5); /* read sensor id */ in hv7131r_probe()
1346 if (gspca_dev->usb_buf[0] == 0x02 /* chip ID (02 is R) */ in hv7131r_probe()
1347 && gspca_dev->usb_buf[1] == 0x09 in hv7131r_probe()
1348 && gspca_dev->usb_buf[2] == 0x01) { in hv7131r_probe()
1352 pr_warn("Erroneous HV7131R ID 0x%02x 0x%02x 0x%02x\n", in hv7131r_probe()
1353 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1], in hv7131r_probe()
1361 u16 val = 0; in mi0360_probe()
1364 {0xb0, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, in mi0360_probe()
1365 {0x90, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1366 {0xa2, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1367 {0xb0, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10} in mi0360_probe()
1370 {0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, in mi0360_probe()
1371 {0x90, 0x5c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1372 {0xa2, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1377 for (i = 0; i < ARRAY_SIZE(probe_tb); i++) { in mi0360_probe()
1378 reg_w1(gspca_dev, 0x17, 0x62); in mi0360_probe()
1379 reg_w1(gspca_dev, 0x01, 0x08); in mi0360_probe()
1380 for (j = 0; j < 3; j++) in mi0360_probe()
1383 reg_r(gspca_dev, 0x0a, 5); in mi0360_probe()
1385 if (probe_tb[i][3][0] != 0) in mi0360_probe()
1387 reg_w1(gspca_dev, 0x01, 0x29); in mi0360_probe()
1388 reg_w1(gspca_dev, 0x17, 0x42); in mi0360_probe()
1389 if (val != 0xffff) in mi0360_probe()
1392 if (gspca_dev->usb_err < 0) in mi0360_probe()
1395 case 0x8221: in mi0360_probe()
1399 case 0x823a: in mi0360_probe()
1403 case 0x8243: in mi0360_probe()
1419 reg_w1(gspca_dev, 0x17, 0x62); in ov7630_probe()
1420 reg_w1(gspca_dev, 0x01, 0x08); in ov7630_probe()
1421 sd->i2c_addr = 0x21; in ov7630_probe()
1422 i2c_r(gspca_dev, 0x0a, 2); in ov7630_probe()
1424 reg_w1(gspca_dev, 0x01, 0x29); in ov7630_probe()
1425 reg_w1(gspca_dev, 0x17, 0x42); in ov7630_probe()
1426 if (gspca_dev->usb_err < 0) in ov7630_probe()
1428 if (val == 0x7628) { /* soi768 */ in ov7630_probe()
1430 /*fixme: only valid for 0c45:613e?*/ in ov7630_probe()
1445 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1446 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1447 sd->i2c_addr = 0x21; in ov7648_probe()
1448 i2c_r(gspca_dev, 0x0a, 2); in ov7648_probe()
1450 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1451 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1452 if ((val & 0xff00) == 0x7600) { /* ov76xx */ in ov7648_probe()
1458 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1459 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1460 sd->i2c_addr = 0x6e; in ov7648_probe()
1461 i2c_r(gspca_dev, 0x00, 2); in ov7648_probe()
1463 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1464 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1465 if (gspca_dev->usb_err < 0) in ov7648_probe()
1467 if (val == 0x1030) { /* po1030 */ in ov7648_probe()
1475 /* 0c45:6142 sensor may be po2030n, gc0305 or gc0307 */
1482 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1483 reg_w1(gspca_dev, 0x01, 0x08); in po2030n_probe()
1484 reg_w1(gspca_dev, 0x02, 0x22); in po2030n_probe()
1485 sd->i2c_addr = 0x21; in po2030n_probe()
1486 i2c_r(gspca_dev, 0x00, 1); in po2030n_probe()
1488 reg_w1(gspca_dev, 0x01, 0x29); /* reset */ in po2030n_probe()
1489 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1490 if (val == 0x99) { /* gc0307 (?) */ in po2030n_probe()
1497 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1498 reg_w1(gspca_dev, 0x01, 0x0a); in po2030n_probe()
1499 sd->i2c_addr = 0x6e; in po2030n_probe()
1500 i2c_r(gspca_dev, 0x00, 2); in po2030n_probe()
1502 reg_w1(gspca_dev, 0x01, 0x29); in po2030n_probe()
1503 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1504 if (gspca_dev->usb_err < 0) in po2030n_probe()
1506 if (val == 0x2030) { in po2030n_probe()
1540 return 0; in sd_config()
1548 u8 regGpio[] = { 0x29, 0x70 }; /* no audio */ in sd_init()
1552 reg_w1(gspca_dev, 0xf1, 0x01); in sd_init()
1553 reg_r(gspca_dev, 0x00, 1); in sd_init()
1554 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1555 reg_r(gspca_dev, 0x00, 1); /* get sonix chip id */ in sd_init()
1556 regF1 = gspca_dev->usb_buf[0]; in sd_init()
1557 if (gspca_dev->usb_err < 0) in sd_init()
1561 regGpio[1] |= 0x04; /* with audio */ in sd_init()
1565 if (regF1 != 0x11) in sd_init()
1571 if (regF1 != 0x12) in sd_init()
1592 reg_w1(gspca_dev, 0x02, regGpio[1]); in sd_init()
1595 reg_w(gspca_dev, 0x01, regGpio, 2); in sd_init()
1601 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1626 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); in sd_init_controls()
1629 V4L2_CID_CONTRAST, 0, CONTRAST_MAX, 1, 20); in sd_init_controls()
1632 V4L2_CID_SATURATION, 0, 40, 1, COLORS_DEF); in sd_init_controls()
1639 V4L2_CID_GAMMA, 0, 40, 1, GAMMA_DEF); in sd_init_controls()
1643 V4L2_CID_SHARPNESS, 0, 255, 1, 16); in sd_init_controls()
1646 V4L2_CID_SHARPNESS, 0, 255, 1, 90); in sd_init_controls()
1650 V4L2_CID_ILLUMINATORS_1, 0, 1, 1, 0); in sd_init_controls()
1658 V4L2_CID_HFLIP, 0, 1, 1, 0); in sd_init_controls()
1665 V4L2_CID_AUTOGAIN, 0, 1, 1, 1); in sd_init_controls()
1670 V4L2_CID_VFLIP, 0, 1, 1, 0); in sd_init_controls()
1676 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, in sd_init_controls()
1687 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
1690 return 0; in sd_init_controls()
1702 /* expo = 0..255 -> a = 19..43 */ in expo_adjust()
1704 i2c_w1(gspca_dev, 0x68, a); in expo_adjust()
1707 i2c_w1(gspca_dev, 0x03, b >> 8); in expo_adjust()
1708 i2c_w1(gspca_dev, 0x04, b); in expo_adjust()
1713 { 0xc1, 0x11, 0x25, 0x00, 0x00, 0x00, 0x00, 0x16 }; in expo_adjust()
1723 u8 expoMi[] = /* exposure 0x0635 -> 4 fp/s 0x10 */ in expo_adjust()
1724 { 0xb1, 0x5d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x16 }; in expo_adjust()
1726 { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 }; in expo_adjust()
1728 { 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 }; in expo_adjust()
1730 if (expo > 0x0635) in expo_adjust()
1731 expo = 0x0635; in expo_adjust()
1732 else if (expo < 0x0001) in expo_adjust()
1733 expo = 0x0001; in expo_adjust()
1743 { 0xa1, 0x21, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1745 { 0xa1, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1747 { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d }; in expo_adjust()
1749 if (expo > 0x1fff) in expo_adjust()
1750 expo = 0x1fff; in expo_adjust()
1751 else if (expo < 0x0001) in expo_adjust()
1752 expo = 0x0001; in expo_adjust()
1753 expoMof[3] = (expo & 0x03fc) >> 2; in expo_adjust()
1755 expoMo10[3] = ((expo & 0x1c00) >> 10) in expo_adjust()
1756 | ((expo & 0x0003) << 4); in expo_adjust()
1760 ((expoMo10[3] & 0x07) << 10) in expo_adjust()
1762 | ((expoMo10[3] & 0x30) >> 4)); in expo_adjust()
1767 { 0xb1, 0x5c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1769 if (expo > 0x0390) in expo_adjust()
1770 expo = 0x0390; in expo_adjust()
1771 else if (expo < 0x0060) in expo_adjust()
1772 expo = 0x0060; in expo_adjust()
1780 { 0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1783 if (expo > 0x03ff) in expo_adjust()
1784 expo = 0x03ff; in expo_adjust()
1785 if (expo < 0x0001) in expo_adjust()
1786 expo = 0x0001; in expo_adjust()
1789 reg_w1(gspca_dev, 0x96, expo >> 5); in expo_adjust()
1804 k2 = (brightness - 0x80) >> 2; in setbrightness()
1807 if (k2 > 0x1f) in setbrightness()
1808 k2 = 0; /* only positive Y offset */ in setbrightness()
1812 if (expo > 0x002dc6c0) in setbrightness()
1813 expo = 0x002dc6c0; in setbrightness()
1814 else if (expo < 0x02a0) in setbrightness()
1815 expo = 0x02a0; in setbrightness()
1841 reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ in setbrightness()
1852 contrast[0] = (k2 + 1) / 2; /* red */ in setcontrast()
1853 contrast[1] = 0; in setcontrast()
1855 contrast[3] = 0; in setcontrast()
1857 contrast[5] = 0; in setcontrast()
1858 reg_w(gspca_dev, 0x84, contrast, sizeof contrast); in setcontrast()
1881 for (i = 0; i < 6; i++) { in setcolors()
1884 reg8a[i * 2 + 1] = (v >> 8) & 0x0f; in setcolors()
1886 reg_w(gspca_dev, 0x8a, reg8a, sizeof reg8a); in setcolors()
1895 {0xc1, 0x6e, 0x16, 0x00, 0x40, 0x00, 0x00, 0x10}; in setredblue()
1897 /* 0x40 = normal value = gain x 1 */ in setredblue()
1903 reg_w1(gspca_dev, 0x05, sd->red_bal->val); in setredblue()
1904 /* reg_w1(gspca_dev, 0x07, 32); */ in setredblue()
1905 reg_w1(gspca_dev, 0x06, sd->blue_bal->val); in setredblue()
1915 0x00, 0x14, 0x1c, 0x1c, 0x1c, 0x1c, 0x1b, 0x1a, in setgamma()
1916 0x18, 0x13, 0x10, 0x0e, 0x08, 0x07, 0x04, 0x02, 0x00 in setgamma()
1940 for (i = 0; i < sizeof gamma; i++) in setgamma()
1943 reg_w(gspca_dev, 0x20, gamma, sizeof gamma); in setgamma()
1952 {0xa1, 0x6e, 0x1a, 0x00, 0x40, 0x00, 0x00, 0x10}; in setexposure()
1957 rexpo[2] = 0x1b; in setexposure()
1973 comb = 0xc0; in setautogain()
1975 comb = 0xa0; in setautogain()
1977 comb |= 0x03; in setautogain()
1978 i2c_w1(&sd->gspca_dev, 0x13, comb); in setautogain()
1994 {0xa1, 0x6e, 0x15, 0x00, 0x40, 0x00, 0x00, 0x15}; in setgain()
2008 comn = 0x18; /* clkdiv = 1, ablcen = 1 */ in sethvflip()
2010 comn |= 0x01; in sethvflip()
2011 i2c_w1(gspca_dev, 0x01, comn); /* sctra */ in sethvflip()
2014 comn = 0x02; in sethvflip()
2016 comn |= 0x80; in sethvflip()
2017 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2020 comn = 0x06; in sethvflip()
2022 comn |= 0x80; in sethvflip()
2023 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2026 /* Reg. 0x1E: Timing Generator Control Register 2 (Tgcontrol2) in sethvflip()
2027 * (reset value: 0x0A) in sethvflip()
2028 * bit7: HM: Horizontal Mirror: 0: disable, 1: enable in sethvflip()
2029 * bit6: VM: Vertical Mirror: 0: disable, 1: enable in sethvflip()
2030 * bit5: ST: Shutter Selection: 0: electrical, 1: mechanical in sethvflip()
2031 * bit4: FT: Single Frame Transfer: 0: disable, 1: enable in sethvflip()
2032 * bit3-0: X in sethvflip()
2034 comn = 0x0a; in sethvflip()
2036 comn |= 0x80; in sethvflip()
2038 comn |= 0x40; in sethvflip()
2039 i2c_w1(&sd->gspca_dev, 0x1e, comn); in sethvflip()
2048 reg_w1(gspca_dev, 0x99, sd->sharpness->val); in setsharpness()
2057 reg_w1(gspca_dev, 0x02, /* gpio */ in setillum()
2058 sd->illum->val ? 0x64 : 0x60); in setillum()
2061 reg_w1(gspca_dev, 0x02, in setillum()
2062 sd->illum->val ? 0x77 : 0x74); in setillum()
2064 /* 0x55 : 0x54); * 370i */ in setillum()
2065 /* 0x66 : 0x64); * Clip */ in setillum()
2077 com8 = 0xdf; /* auto gain/wb/expo */ in setfreq()
2079 case 0: /* Banding filter disabled */ in setfreq()
2080 i2c_w1(gspca_dev, 0x13, com8 | 0x20); in setfreq()
2083 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2084 i2c_w1(gspca_dev, 0x3b, 0x0a); in setfreq()
2087 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2088 i2c_w1(gspca_dev, 0x3b, 0x02); in setfreq()
2092 u8 reg2a = 0, reg2b = 0, reg2d = 0; in setfreq()
2097 reg2a = 0x08; in setfreq()
2098 reg2d = 0x01; in setfreq()
2101 reg2a = 0x11; in setfreq()
2102 reg2d = 0x81; in setfreq()
2107 case 0: /* Banding filter disabled */ in setfreq()
2110 reg2a |= 0x80; in setfreq()
2111 reg2b = 0xac; in setfreq()
2112 reg2d |= 0x04; in setfreq()
2115 reg2a |= 0x80; in setfreq()
2116 reg2d |= 0x04; in setfreq()
2119 i2c_w1(gspca_dev, 0x2a, reg2a); in setfreq()
2120 i2c_w1(gspca_dev, 0x2b, reg2b); in setfreq()
2121 i2c_w1(gspca_dev, 0x2d, reg2d); in setfreq()
2135 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2136 0x08, in setjpegqual()
2138 0x0100, 0, in setjpegqual()
2143 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2144 0x08, in setjpegqual()
2146 0x0140, 0, in setjpegqual()
2150 sd->reg18 ^= 0x40; in setjpegqual()
2151 reg_w1(gspca_dev, 0x18, sd->reg18); in setjpegqual()
2164 gspca_dev->usb_err = 0; in qual_upd()
2181 {0x00, 0x40, 0x20, 0x00, 0x00, 0x00}; in sd_start()
2183 {0x00, 0x40, 0x38, 0x30, 0x00, 0x20}; in sd_start()
2184 static const u8 regd4[] = {0x60, 0x00, 0x00}; in sd_start()
2185 static const u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f }; in sd_start()
2186 static const u8 CA[] = { 0x28, 0xd8, 0x14, 0xec }; in sd_start()
2188 { 0x14, 0xec, 0x0a, 0xf6 }; in sd_start()
2190 { 0x1e, 0xe2, 0x14, 0xec }; in sd_start()
2191 static const u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */ in sd_start()
2193 { 0x32, 0xce, 0x2d, 0xd3 }; in sd_start()
2195 { 0x32, 0xdd, 0x32, 0xdd }; in sd_start()
2197 { 0x14, 0xe7, 0x1e, 0xdd }; in sd_start()
2202 0x21); /* JPEG 422 */ in sd_start()
2208 /* reg_w1(gspca_dev, 0xf1, 0x00); */ in sd_start()
2212 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2215 reg0102[0] = reg01; in sd_start()
2218 reg0102[1] |= 0x04; /* keep the audio connection */ in sd_start()
2219 reg_w(gspca_dev, 0x01, reg0102, 2); in sd_start()
2220 reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); in sd_start()
2221 reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); in sd_start()
2235 reg_w(gspca_dev, 0x9a, reg9a, 6); in sd_start()
2237 reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); in sd_start()
2239 reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); in sd_start()
2241 reg17 = sn9c1xx[0x17]; in sd_start()
2248 reg_w1(gspca_dev, 0x02, 0x73); in sd_start()
2250 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2251 reg_w1(gspca_dev, 0x01, 0x22); in sd_start()
2255 reg17 |= 0x04; /* clock / 4 */ in sd_start()
2259 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2261 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2263 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2265 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2273 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2274 i2c_w8(gspca_dev, om6802_init0[0]); in sd_start()
2277 reg_w1(gspca_dev, 0x02, 0x71); in sd_start()
2282 reg_w1(gspca_dev, 0x02, 0x62); in sd_start()
2289 reg_w1(gspca_dev, 0x15, sn9c1xx[0x15]); in sd_start()
2290 reg_w1(gspca_dev, 0x16, sn9c1xx[0x16]); in sd_start()
2291 reg_w1(gspca_dev, 0x12, sn9c1xx[0x12]); in sd_start()
2292 reg_w1(gspca_dev, 0x13, sn9c1xx[0x13]); in sd_start()
2293 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2295 reg_w1(gspca_dev, 0xd2, 0x3a); /* AE_H_SIZE = 116 */ in sd_start()
2296 reg_w1(gspca_dev, 0xd3, 0x30); /* AE_V_SIZE = 96 */ in sd_start()
2298 reg_w1(gspca_dev, 0xd2, 0x6a); /* AE_H_SIZE = 212 */ in sd_start()
2299 reg_w1(gspca_dev, 0xd3, 0x50); /* AE_V_SIZE = 160 */ in sd_start()
2301 reg_w1(gspca_dev, 0xc6, 0x00); in sd_start()
2302 reg_w1(gspca_dev, 0xc7, 0x00); in sd_start()
2304 reg_w1(gspca_dev, 0xc8, 0x2c); /* AW_H_STOP = 352 */ in sd_start()
2305 reg_w1(gspca_dev, 0xc9, 0x24); /* AW_V_STOP = 288 */ in sd_start()
2307 reg_w1(gspca_dev, 0xc8, 0x50); /* AW_H_STOP = 640 */ in sd_start()
2308 reg_w1(gspca_dev, 0xc9, 0x3c); /* AW_V_STOP = 480 */ in sd_start()
2310 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2319 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2321 reg_w1(gspca_dev, 0x05, 0x00); /* red */ in sd_start()
2322 reg_w1(gspca_dev, 0x07, 0x00); /* green */ in sd_start()
2323 reg_w1(gspca_dev, 0x06, 0x00); /* blue */ in sd_start()
2324 reg_w1(gspca_dev, 0x14, sn9c1xx[0x14]); in sd_start()
2329 for (i = 0; i < 8; i++) in sd_start()
2330 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2335 reg_w1(gspca_dev, 0x9a, 0x05); in sd_start()
2340 reg_w1(gspca_dev, 0x9a, 0x07); in sd_start()
2344 reg_w1(gspca_dev, 0x9a, 0x0a); in sd_start()
2348 reg_w1(gspca_dev, 0x9a, 0x06); in sd_start()
2351 reg_w1(gspca_dev, 0x9a, 0x08); in sd_start()
2356 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2357 reg_w1(gspca_dev, 0x05, 0x20); /* red */ in sd_start()
2358 reg_w1(gspca_dev, 0x07, 0x20); /* green */ in sd_start()
2359 reg_w1(gspca_dev, 0x06, 0x20); /* blue */ in sd_start()
2365 reg17 |= 0x02; /* clock / 2 */ in sd_start()
2378 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2387 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2397 reg17 |= 0x04; /* clock / 4 */ in sd_start()
2401 reg17 |= 0x02; /* clock / 2 */ in sd_start()
2410 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2435 reg_w(gspca_dev, 0xc0, C0, 6); in sd_start()
2440 reg_w(gspca_dev, 0xca, CA_adcm1700, 4); in sd_start()
2443 reg_w(gspca_dev, 0xca, CA_po2030n, 4); in sd_start()
2446 reg_w(gspca_dev, 0xca, CA, 4); in sd_start()
2455 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); in sd_start()
2458 reg_w(gspca_dev, 0xce, CE_gc0307, 4); in sd_start()
2461 reg_w(gspca_dev, 0xce, CE_po2030n, 4); in sd_start()
2464 reg_w(gspca_dev, 0xce, CE, 4); in sd_start()
2465 /* ?? {0x1e, 0xdd, 0x2d, 0xe7} */ in sd_start()
2469 /* here change size mode 0 -> VGA; 1 -> CIF */ in sd_start()
2470 sd->reg18 = sn9c1xx[0x18] | (mode << 4) | 0x40; in sd_start()
2471 reg_w1(gspca_dev, 0x18, sd->reg18); in sd_start()
2474 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2475 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2479 sd->pktsz = sd->npkt = 0; in sd_start()
2480 sd->nchg = sd->short_mark = 0; in sd_start()
2489 { 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2491 { 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2493 { 0xa1, 0x21, 0x76, 0x20, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2495 { 0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2507 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2509 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2510 /* reg_w1(gspca_dev, 0x02, 0x??); * LED off ? */ in sd_stopN()
2514 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2520 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2521 /* reg_w1(gspca_dev, 0x02, 0x40); * LED off ? */ in sd_stopN()
2528 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2533 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2538 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2546 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2548 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2549 reg_w1(gspca_dev, 0x17, reg17); in sd_stopN()
2551 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2553 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2555 /* reg_w1(gspca_dev, 0xf1, 0x01); */ in sd_stopN()
2558 /* called on streamoff with alt==0 and on disconnect */
2578 if (sd->ag_cnt < 0) in do_autogain()
2580 if (--sd->ag_cnt >= 0) in do_autogain()
2599 if (expotimes < 0) in do_autogain()
2600 expotimes = 0; in do_autogain()
2607 if (expotimes < 0) in do_autogain()
2608 expotimes = 0; in do_autogain()
2616 if (expotimes < 0) in do_autogain()
2617 expotimes = 0; in do_autogain()
2628 if (expotimes < 0) in do_autogain()
2629 expotimes = 0; in do_autogain()
2679 * 0x08: USB full in sd_pkt_scan()
2680 * 0xc0: frame sequence in sd_pkt_scan()
2696 if (i != 0) { in sd_pkt_scan()
2697 sd->short_mark = 0; in sd_pkt_scan()
2698 if (i < 0 /* if 'ff' at end of previous packet */ in sd_pkt_scan()
2699 && data[0] == 0xff in sd_pkt_scan()
2700 && data[1] == 0x00) in sd_pkt_scan()
2702 if (data[0] == 0xff && data[1] == 0xff) { in sd_pkt_scan()
2703 i = 0; in sd_pkt_scan()
2707 if (len <= 0) in sd_pkt_scan()
2713 for (i = len - 1; --i >= 0; ) { in sd_pkt_scan()
2714 if (data[i] != 0xff) { in sd_pkt_scan()
2718 if (data[i + 1] == 0xff) { in sd_pkt_scan()
2721 if (i + 2 >= len || data[i + 2] == 0x00) in sd_pkt_scan()
2728 if (data[len - 1] == 0xff) in sd_pkt_scan()
2739 new_qual = 0; in sd_pkt_scan()
2741 if (data[i - 2] != 0xff || data[i - 1] != 0xd9) { in sd_pkt_scan()
2746 if (data[i + 6] & 0x08) { in sd_pkt_scan()
2755 if (new_qual == 0) { in sd_pkt_scan()
2760 gspca_dev->urb[0]->iso_frame_desc[0].length); in sd_pkt_scan()
2766 if (new_qual != 0) { in sd_pkt_scan()
2769 sd->nchg = 0; in sd_pkt_scan()
2781 sd->nchg = 0; in sd_pkt_scan()
2783 sd->pktsz = sd->npkt = 0; in sd_pkt_scan()
2791 if (sd->ag_cnt >= 0) in sd_pkt_scan()
2810 gspca_dev->usb_err = 0; in sd_s_ctrl()
2813 return 0; in sd_s_ctrl()
2861 if (len == 1 && data[0] == 1) { in sd_int_pkt_scan()
2864 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
2866 ret = 0; in sd_int_pkt_scan()
2898 {USB_DEVICE(0x0458, 0x7025), BSF(SN9C120, MI0360B, F_PDN_INV)},
2899 {USB_DEVICE(0x0458, 0x702e), BS(SN9C120, OV7660)},
2900 {USB_DEVICE(0x045e, 0x00f5), BSF(SN9C105, OV7660, F_PDN_INV)},
2901 {USB_DEVICE(0x045e, 0x00f7), BSF(SN9C105, OV7660, F_PDN_INV)},
2902 {USB_DEVICE(0x0471, 0x0327), BS(SN9C105, MI0360)},
2903 {USB_DEVICE(0x0471, 0x0328), BS(SN9C105, MI0360)},
2904 {USB_DEVICE(0x0471, 0x0330), BS(SN9C105, MI0360)},
2905 {USB_DEVICE(0x06f8, 0x3004), BS(SN9C105, OV7660)},
2906 {USB_DEVICE(0x06f8, 0x3008), BS(SN9C105, OV7660)},
2907 /* {USB_DEVICE(0x0c45, 0x603a), BS(SN9C102P, OV7648)}, */
2908 {USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, HV7131R)},
2909 /* {USB_DEVICE(0x0c45, 0x607a), BS(SN9C102P, OV7648)}, */
2910 /* {USB_DEVICE(0x0c45, 0x607b), BS(SN9C102P, OV7660)}, */
2911 {USB_DEVICE(0x0c45, 0x607c), BS(SN9C102P, HV7131R)},
2912 /* {USB_DEVICE(0x0c45, 0x607e), BS(SN9C102P, OV7630)}, */
2913 {USB_DEVICE(0x0c45, 0x60c0), BSF(SN9C105, MI0360, F_ILLUM)},
2915 /* {USB_DEVICE(0x0c45, 0x60c2), BS(SN9C105, P1030xC)}, */
2916 /* {USB_DEVICE(0x0c45, 0x60c8), BS(SN9C105, OM6802)}, */
2917 /* {USB_DEVICE(0x0c45, 0x60cc), BS(SN9C105, HV7131GP)}, */
2918 {USB_DEVICE(0x0c45, 0x60ce), BS(SN9C105, SP80708)},
2919 {USB_DEVICE(0x0c45, 0x60ec), BS(SN9C105, MO4000)},
2920 /* {USB_DEVICE(0x0c45, 0x60ef), BS(SN9C105, ICM105C)}, */
2921 /* {USB_DEVICE(0x0c45, 0x60fa), BS(SN9C105, OV7648)}, */
2922 /* {USB_DEVICE(0x0c45, 0x60f2), BS(SN9C105, OV7660)}, */
2923 {USB_DEVICE(0x0c45, 0x60fb), BS(SN9C105, OV7660)},
2924 {USB_DEVICE(0x0c45, 0x60fc), BS(SN9C105, HV7131R)},
2925 {USB_DEVICE(0x0c45, 0x60fe), BS(SN9C105, OV7630)},
2926 {USB_DEVICE(0x0c45, 0x6100), BS(SN9C120, MI0360)}, /*sn9c128*/
2927 {USB_DEVICE(0x0c45, 0x6102), BS(SN9C120, PO2030N)}, /* /GC0305*/
2928 /* {USB_DEVICE(0x0c45, 0x6108), BS(SN9C120, OM6802)}, */
2929 {USB_DEVICE(0x0c45, 0x610a), BS(SN9C120, OV7648)}, /*sn9c128*/
2930 {USB_DEVICE(0x0c45, 0x610b), BS(SN9C120, OV7660)}, /*sn9c128*/
2931 {USB_DEVICE(0x0c45, 0x610c), BS(SN9C120, HV7131R)}, /*sn9c128*/
2932 {USB_DEVICE(0x0c45, 0x610e), BS(SN9C120, OV7630)}, /*sn9c128*/
2933 /* {USB_DEVICE(0x0c45, 0x610f), BS(SN9C120, S5K53BEB)}, */
2934 /* {USB_DEVICE(0x0c45, 0x6122), BS(SN9C110, ICM105C)}, */
2935 /* {USB_DEVICE(0x0c45, 0x6123), BS(SN9C110, SanyoCCD)}, */
2936 {USB_DEVICE(0x0c45, 0x6128), BS(SN9C120, OM6802)}, /*sn9c325?*/
2938 {USB_DEVICE(0x0c45, 0x612a), BS(SN9C120, OV7648)}, /*sn9c325?*/
2939 {USB_DEVICE(0x0c45, 0x612b), BS(SN9C110, ADCM1700)},
2940 {USB_DEVICE(0x0c45, 0x612c), BS(SN9C110, MO4000)},
2941 {USB_DEVICE(0x0c45, 0x612e), BS(SN9C110, OV7630)},
2942 /* {USB_DEVICE(0x0c45, 0x612f), BS(SN9C110, ICM105C)}, */
2943 {USB_DEVICE(0x0c45, 0x6130), BS(SN9C120, MI0360)},
2945 /* {USB_DEVICE(0x0c45, 0x6132), BS(SN9C120, OV7670)}, */
2946 {USB_DEVICE(0x0c45, 0x6138), BS(SN9C120, MO4000)},
2947 {USB_DEVICE(0x0c45, 0x613a), BS(SN9C120, OV7648)},
2948 {USB_DEVICE(0x0c45, 0x613b), BS(SN9C120, OV7660)},
2949 {USB_DEVICE(0x0c45, 0x613c), BS(SN9C120, HV7131R)},
2950 {USB_DEVICE(0x0c45, 0x613e), BS(SN9C120, OV7630)},
2951 {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, /*sn9c120b*/
2953 {USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)}, /*sn9c120b*/
2954 {USB_DEVICE(0x0c45, 0x6148), BS(SN9C120, OM6802)}, /*sn9c120b*/
2955 {USB_DEVICE(0x0c45, 0x614a), BSF(SN9C120, ADCM1700, F_ILLUM)},
2956 /* {USB_DEVICE(0x0c45, 0x614c), BS(SN9C120, GC0306)}, */ /*sn9c120b*/