• Home
  • Raw
  • Download

Lines Matching +full:0 +full:x10

73 #define BRIDGE_SN9C102P 0
103 #define F_PDN_INV 0x01 /* inverse pin S_PWR_DN / sn_xxx tables */
104 #define F_ILLUM 0x02 /* presence of illuminator */
107 /* register 0x01 */
108 #define S_PWR_DN 0x01 /* sensor power down */
109 #define S_PDN_INV 0x02 /* inverse pin S_PWR_DN */
110 #define V_TX_EN 0x04 /* video transfer enable */
111 #define LED 0x08 /* output to pin LED */
112 #define SCL_SEL_OD 0x20 /* open-drain mode */
113 #define SYS_SEL_48M 0x40 /* system clock 0: 24MHz, 1: 48MHz */
114 /* register 0x17 */
115 #define MCK_SIZE_MASK 0x1f /* sensor master clock */
116 #define SEN_CLK_EN 0x20 /* enable sensor clock */
117 #define DEF_EN 0x80 /* defect pixel by 0: soft, 1: hard */
124 .priv = 0},
142 .priv = 0},
145 static const u8 sn_adcm1700[0x1c] = {
147 0x00, 0x43, 0x60, 0x00, 0x1a, 0x00, 0x00, 0x00,
149 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
151 0x03, 0x00, 0x05, 0x01, 0x05, 0x16, 0x12, 0x42,
153 0x06, 0x00, 0x00, 0x00
156 static const u8 sn_gc0307[0x1c] = {
158 0x00, 0x61, 0x62, 0x00, 0x1a, 0x00, 0x00, 0x00,
160 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x03, 0x00, 0x03, 0x01, 0x08, 0x28, 0x1e, 0x02,
164 0x06, 0x00, 0x00, 0x00
167 static const u8 sn_hv7131[0x1c] = {
169 0x00, 0x03, 0x60, 0x00, 0x1a, 0x20, 0x20, 0x20,
171 0x81, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173 0x03, 0x00, 0x00, 0x01, 0x03, 0x28, 0x1e, 0x41,
175 0x0a, 0x00, 0x00, 0x00
178 static const u8 sn_mi0360[0x1c] = {
180 0x00, 0x63, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
182 0x81, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x03, 0x00, 0x00, 0x02, 0x0a, 0x28, 0x1e, 0x61,
186 0x06, 0x00, 0x00, 0x00
189 static const u8 sn_mi0360b[0x1c] = {
191 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
193 0x81, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x03, 0x00, 0x00, 0x02, 0x0a, 0x28, 0x1e, 0x40,
197 0x06, 0x00, 0x00, 0x00
200 static const u8 sn_mo4000[0x1c] = {
202 0x00, 0x23, 0x60, 0x00, 0x1a, 0x00, 0x20, 0x18,
204 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0x03, 0x00, 0x0b, 0x0f, 0x14, 0x28, 0x1e, 0x40,
208 0x08, 0x00, 0x00, 0x00
211 static const u8 sn_mt9v111[0x1c] = {
213 0x00, 0x61, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
215 0x81, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217 0x03, 0x00, 0x00, 0x02, 0x1c, 0x28, 0x1e, 0x40,
219 0x06, 0x00, 0x00, 0x00
222 static const u8 sn_om6802[0x1c] = {
224 0x00, 0x23, 0x72, 0x00, 0x1a, 0x20, 0x20, 0x19,
226 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x03, 0x00, 0x51, 0x01, 0x00, 0x28, 0x1e, 0x40,
230 0x05, 0x00, 0x00, 0x00
233 static const u8 sn_ov7630[0x1c] = {
235 0x00, 0x21, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
237 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x03, 0x00, 0x04, 0x01, 0x0a, 0x28, 0x1e, 0xc2,
241 0x0b, 0x00, 0x00, 0x00
244 static const u8 sn_ov7648[0x1c] = {
246 0x00, 0x63, 0x40, 0x00, 0x1a, 0x20, 0x20, 0x20,
248 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
250 0x03, 0x00, 0x00, 0x01, 0x00, 0x28, 0x1e, 0x00,
252 0x0b, 0x00, 0x00, 0x00
255 static const u8 sn_ov7660[0x1c] = {
257 0x00, 0x61, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
259 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
261 0x03, 0x00, 0x01, 0x01, 0x08, 0x28, 0x1e, 0x20,
263 0x07, 0x00, 0x00, 0x00
266 static const u8 sn_po1030[0x1c] = {
268 0x00, 0x21, 0x62, 0x00, 0x1a, 0x20, 0x20, 0x20,
270 0x81, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
272 0x03, 0x00, 0x00, 0x06, 0x06, 0x28, 0x1e, 0x00,
274 0x07, 0x00, 0x00, 0x00
277 static const u8 sn_po2030n[0x1c] = {
279 0x00, 0x63, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
281 0x81, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
283 0x03, 0x00, 0x00, 0x01, 0x14, 0x28, 0x1e, 0x00,
285 0x07, 0x00, 0x00, 0x00
288 static const u8 sn_soi768[0x1c] = {
290 0x00, 0x21, 0x40, 0x00, 0x1a, 0x00, 0x00, 0x00,
292 0x81, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
294 0x03, 0x00, 0x00, 0x01, 0x08, 0x28, 0x1e, 0x00,
296 0x07, 0x00, 0x00, 0x00
299 static const u8 sn_sp80708[0x1c] = {
301 0x00, 0x63, 0x60, 0x00, 0x1a, 0x20, 0x20, 0x20,
303 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
305 0x03, 0x00, 0x00, 0x03, 0x04, 0x28, 0x1e, 0x00,
307 0x07, 0x00, 0x00, 0x00
331 0x00, 0x2d, 0x46, 0x5a, 0x6c, 0x7c, 0x8b, 0x99,
332 0xa6, 0xb2, 0xbf, 0xca, 0xd5, 0xe0, 0xeb, 0xf5, 0xff
336 0x0f, 0x39, 0x5a, 0x74, 0x86, 0x95, 0xa6, 0xb4,
337 0xbd, 0xc4, 0xcc, 0xd4, 0xd5, 0xde, 0xe4, 0xed, 0xf5
341 0x08, 0x3a, 0x52, 0x65, 0x75, 0x83, 0x91, 0x9d,
342 0xa9, 0xb4, 0xbe, 0xc8, 0xd2, 0xdb, 0xe4, 0xed, 0xf5
346 0x14, 0x37, 0x50, 0x6a, 0x7c, 0x8d, 0x9d, 0xab,
347 0xb5, 0xbf, 0xc2, 0xcb, 0xd1, 0xd6, 0xdb, 0xe1, 0xeb
351 0x0a, 0x2d, 0x4e, 0x68, 0x7d, 0x8f, 0x9f, 0xab,
352 0xb7, 0xc2, 0xcc, 0xd3, 0xd8, 0xde, 0xe2, 0xe5, 0xe6
357 0x14, 0x00, 0x27, 0x00, 0x07, 0x00, /* YR YG YB gains */
358 0xe8, 0x0f, 0xda, 0x0f, 0x40, 0x00, /* UR UG UB */
359 0x3e, 0x00, 0xcd, 0x0f, 0xf7, 0x0f, /* VR VG VB */
360 0x00, 0x00, 0x00 /* YUV offsets */
363 #define DELAY 0xdd
366 {0xa0, 0x51, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x10},
367 {0xb0, 0x51, 0x04, 0x08, 0x00, 0x00, 0x00, 0x10}, /* reset */
368 {DELAY, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
369 {0xb0, 0x51, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10},
370 {DELAY, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
371 {0xb0, 0x51, 0x0c, 0xe0, 0x2e, 0x00, 0x00, 0x10},
372 {0xb0, 0x51, 0x10, 0x02, 0x02, 0x00, 0x00, 0x10},
373 {0xb0, 0x51, 0x14, 0x0e, 0x0e, 0x00, 0x00, 0x10},
374 {0xb0, 0x51, 0x1c, 0x00, 0x80, 0x00, 0x00, 0x10},
375 {0xb0, 0x51, 0x20, 0x01, 0x00, 0x00, 0x00, 0x10},
376 {DELAY, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
377 {0xb0, 0x51, 0x04, 0x04, 0x00, 0x00, 0x00, 0x10},
378 {DELAY, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
379 {0xb0, 0x51, 0x04, 0x01, 0x00, 0x00, 0x00, 0x10},
380 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
381 {0xb0, 0x51, 0x14, 0x01, 0x00, 0x00, 0x00, 0x10},
382 {0xb0, 0x51, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
386 {0xb0, 0x51, 0x26, 0xf9, 0x01, 0x00, 0x00, 0x10}, /* exposure? */
387 {0xd0, 0x51, 0x1e, 0x8e, 0x8e, 0x8e, 0x8e, 0x10},
389 {0xa0, 0x51, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x10},
390 {0xb0, 0x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10},
391 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
392 {0xb0, 0x51, 0x32, 0x00, 0x72, 0x00, 0x00, 0x10},
393 {0xd0, 0x51, 0x1e, 0xbe, 0xd7, 0xe8, 0xbe, 0x10}, /* exposure? */
395 {0xa0, 0x51, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x10},
396 {0xb0, 0x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10},
397 {0xa0, 0x51, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x10},
398 {0xb0, 0x51, 0x32, 0x00, 0xa2, 0x00, 0x00, 0x10},
402 {0xa0, 0x21, 0x43, 0x00, 0x00, 0x00, 0x00, 0x10},
403 {0xa0, 0x21, 0x44, 0xa2, 0x00, 0x00, 0x00, 0x10},
404 {0xa0, 0x21, 0x01, 0x6a, 0x00, 0x00, 0x00, 0x10},
405 {0xa0, 0x21, 0x02, 0x70, 0x00, 0x00, 0x00, 0x10},
406 {0xa0, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
407 {0xa0, 0x21, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
408 {0xa0, 0x21, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10},
409 {0xa0, 0x21, 0x11, 0x05, 0x00, 0x00, 0x00, 0x10},
410 {0xa0, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
411 {0xa0, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10},
412 {0xa0, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10},
413 {0xa0, 0x21, 0x08, 0x02, 0x00, 0x00, 0x00, 0x10},
414 {0xa0, 0x21, 0x09, 0x01, 0x00, 0x00, 0x00, 0x10},
415 {0xa0, 0x21, 0x0a, 0xe8, 0x00, 0x00, 0x00, 0x10},
416 {0xa0, 0x21, 0x0b, 0x02, 0x00, 0x00, 0x00, 0x10},
417 {0xa0, 0x21, 0x0c, 0x80, 0x00, 0x00, 0x00, 0x10},
418 {0xa0, 0x21, 0x0d, 0x22, 0x00, 0x00, 0x00, 0x10},
419 {0xa0, 0x21, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x10},
420 {0xa0, 0x21, 0x0f, 0xb2, 0x00, 0x00, 0x00, 0x10},
421 {0xa0, 0x21, 0x12, 0x70, 0x00, 0x00, 0x00, 0x10},
422 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 10ms*/
423 {0xa0, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, 0x10},
424 {0xa0, 0x21, 0x15, 0xb8, 0x00, 0x00, 0x00, 0x10},
425 {0xa0, 0x21, 0x16, 0x13, 0x00, 0x00, 0x00, 0x10},
426 {0xa0, 0x21, 0x17, 0x52, 0x00, 0x00, 0x00, 0x10},
427 {0xa0, 0x21, 0x18, 0x50, 0x00, 0x00, 0x00, 0x10},
428 {0xa0, 0x21, 0x1e, 0x0d, 0x00, 0x00, 0x00, 0x10},
429 {0xa0, 0x21, 0x1f, 0x32, 0x00, 0x00, 0x00, 0x10},
430 {0xa0, 0x21, 0x61, 0x90, 0x00, 0x00, 0x00, 0x10},
431 {0xa0, 0x21, 0x63, 0x70, 0x00, 0x00, 0x00, 0x10},
432 {0xa0, 0x21, 0x65, 0x98, 0x00, 0x00, 0x00, 0x10},
433 {0xa0, 0x21, 0x67, 0x90, 0x00, 0x00, 0x00, 0x10},
434 {0xa0, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
435 {0xa0, 0x21, 0x04, 0x96, 0x00, 0x00, 0x00, 0x10},
436 {0xa0, 0x21, 0x45, 0x27, 0x00, 0x00, 0x00, 0x10},
437 {0xa0, 0x21, 0x47, 0x2c, 0x00, 0x00, 0x00, 0x10},
438 {0xa0, 0x21, 0x43, 0x47, 0x00, 0x00, 0x00, 0x10},
439 {0xa0, 0x21, 0x44, 0xd8, 0x00, 0x00, 0x00, 0x10},
443 {0xa0, 0x21, 0x68, 0x13, 0x00, 0x00, 0x00, 0x10},
444 {0xd0, 0x21, 0x61, 0x80, 0x00, 0x80, 0x00, 0x10},
445 {0xc0, 0x21, 0x65, 0x80, 0x00, 0x80, 0x00, 0x10},
446 {0xc0, 0x21, 0x63, 0xa0, 0x00, 0xa6, 0x00, 0x10},
448 {0xa0, 0x21, 0x01, 0x6e, 0x00, 0x00, 0x00, 0x10},
449 {0xa0, 0x21, 0x02, 0x88, 0x00, 0x00, 0x00, 0x10},
454 {0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
455 {0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},
456 {0xd1, 0x11, 0x40, 0xff, 0x7f, 0x7f, 0x7f, 0x10},
457 /* {0x91, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x10}, */
458 {0xd1, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
459 {0xd1, 0x11, 0x14, 0x01, 0xe2, 0x02, 0x82, 0x10},
460 /* {0x91, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10}, */
462 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
463 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
464 {0xc1, 0x11, 0x25, 0x00, 0x61, 0xa8, 0x00, 0x10},
465 {0xa1, 0x11, 0x30, 0x22, 0x00, 0x00, 0x00, 0x10},
466 {0xc1, 0x11, 0x31, 0x20, 0x2e, 0x20, 0x00, 0x10},
467 {0xc1, 0x11, 0x25, 0x00, 0xc3, 0x50, 0x00, 0x10},
468 {0xa1, 0x11, 0x30, 0x07, 0x00, 0x00, 0x00, 0x10}, /* gain14 */
469 {0xc1, 0x11, 0x31, 0x10, 0x10, 0x10, 0x00, 0x10}, /* r g b 101a10 */
471 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
472 {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
473 {0xa1, 0x11, 0x21, 0xd0, 0x00, 0x00, 0x00, 0x10},
474 {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
475 {0xa1, 0x11, 0x23, 0x09, 0x00, 0x00, 0x00, 0x10},
477 {0xa1, 0x11, 0x01, 0x08, 0x00, 0x00, 0x00, 0x10},
478 {0xa1, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
479 {0xa1, 0x11, 0x21, 0xd0, 0x00, 0x00, 0x00, 0x10},
480 {0xa1, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
481 {0xa1, 0x11, 0x23, 0x10, 0x00, 0x00, 0x00, 0x10},
482 {0xa1, 0x11, 0x01, 0x18, 0x00, 0x00, 0x00, 0x10},
487 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
488 {0xb1, 0x5d, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10},
489 {0xb1, 0x5d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
490 {0xd1, 0x5d, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},
491 {0xd1, 0x5d, 0x03, 0x01, 0xe2, 0x02, 0x82, 0x10},
492 {0xd1, 0x5d, 0x05, 0x00, 0x09, 0x00, 0x53, 0x10},
493 {0xb1, 0x5d, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x10},
494 {0xd1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
495 {0xd1, 0x5d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10},
496 {0xd1, 0x5d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
497 {0xd1, 0x5d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
498 {0xd1, 0x5d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
499 {0xd1, 0x5d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10},
500 {0xd1, 0x5d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10},
501 {0xd1, 0x5d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},
502 {0xd1, 0x5d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x10},
503 {0xd1, 0x5d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
504 {0xb1, 0x5d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
505 {0xd1, 0x5d, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},
506 {0xd1, 0x5d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
507 {0xd1, 0x5d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},
508 {0xd1, 0x5d, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},
509 {0xd1, 0x5d, 0x2f, 0xf7, 0xb0, 0x00, 0x04, 0x10},
510 {0xd1, 0x5d, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
511 {0xd1, 0x5d, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},
512 {0xb1, 0x5d, 0x3d, 0x06, 0x8f, 0x00, 0x00, 0x10},
513 {0xd1, 0x5d, 0x40, 0x01, 0xe0, 0x00, 0xd1, 0x10},
514 {0xb1, 0x5d, 0x44, 0x00, 0x82, 0x00, 0x00, 0x10},
515 {0xd1, 0x5d, 0x58, 0x00, 0x78, 0x00, 0x43, 0x10},
516 {0xd1, 0x5d, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x10},
517 {0xd1, 0x5d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x10},
518 {0xd1, 0x5d, 0x5e, 0x00, 0x00, 0xa3, 0x1d, 0x10},
519 {0xb1, 0x5d, 0x62, 0x04, 0x11, 0x00, 0x00, 0x10},
521 {0xb1, 0x5d, 0x20, 0x91, 0x01, 0x00, 0x00, 0x10},
522 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
523 {0xb1, 0x5d, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10},
524 {0xd1, 0x5d, 0x2b, 0x00, 0xa0, 0x00, 0xb0, 0x10},
525 {0xd1, 0x5d, 0x2d, 0x00, 0xa0, 0x00, 0xa0, 0x10},
527 {0xb1, 0x5d, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor clck ?2 */
528 {0xb1, 0x5d, 0x06, 0x00, 0x30, 0x00, 0x00, 0x10},
529 {0xb1, 0x5d, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x10},
530 {0xb1, 0x5d, 0x09, 0x02, 0x35, 0x00, 0x00, 0x10}, /* exposure 2 */
532 {0xd1, 0x5d, 0x2b, 0x00, 0xb9, 0x00, 0xe3, 0x10},
533 {0xd1, 0x5d, 0x2d, 0x00, 0x5f, 0x00, 0xb9, 0x10}, /* 42 */
534 /* {0xb1, 0x5d, 0x35, 0x00, 0x67, 0x00, 0x00, 0x10}, * gain orig */
535 /* {0xb1, 0x5d, 0x35, 0x00, 0x20, 0x00, 0x00, 0x10}, * gain */
536 {0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */
537 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
541 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10},
542 {0xb1, 0x5d, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10},
543 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 20ms*/
544 {0xb1, 0x5d, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
545 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*delay 20ms*/
546 {0xd1, 0x5d, 0x01, 0x00, 0x08, 0x00, 0x16, 0x10},
547 {0xd1, 0x5d, 0x03, 0x01, 0xe2, 0x02, 0x82, 0x10},
548 {0xd1, 0x5d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
549 {0xb1, 0x5d, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x10},
550 {0xd1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
551 {0xd1, 0x5d, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10},
552 {0xd1, 0x5d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
553 {0xd1, 0x5d, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
554 {0xd1, 0x5d, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
555 {0xd1, 0x5d, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10},
556 {0xd1, 0x5d, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10},
557 {0xd1, 0x5d, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10},
558 {0xd1, 0x5d, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x10},
559 {0xd1, 0x5d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10},
560 {0xb1, 0x5d, 0x32, 0x00, 0x00, 0x00, 0x00, 0x10},
561 {0xd1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
562 {0xd1, 0x5d, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
563 {0xd1, 0x5d, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10},
564 {0xd1, 0x5d, 0x26, 0x00, 0x00, 0x00, 0x24, 0x10},
565 {0xd1, 0x5d, 0x2f, 0xf7, 0xb0, 0x00, 0x04, 0x10},
566 {0xd1, 0x5d, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
567 {0xd1, 0x5d, 0x33, 0x00, 0x00, 0x01, 0x00, 0x10},
568 {0xb1, 0x5d, 0x3d, 0x06, 0x8f, 0x00, 0x00, 0x10},
569 {0xd1, 0x5d, 0x40, 0x01, 0xe0, 0x00, 0xd1, 0x10},
570 {0xb1, 0x5d, 0x44, 0x00, 0x82, 0x00, 0x00, 0x10},
571 {0xd1, 0x5d, 0x58, 0x00, 0x78, 0x00, 0x43, 0x10},
572 {0xd1, 0x5d, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x10},
573 {0xd1, 0x5d, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x10},
574 {0xd1, 0x5d, 0x5e, 0x00, 0x00, 0xa3, 0x1d, 0x10},
575 {0xb1, 0x5d, 0x62, 0x04, 0x11, 0x00, 0x00, 0x10},
577 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
578 {0xb1, 0x5d, 0x20, 0x11, 0x01, 0x00, 0x00, 0x10},
579 {0xb1, 0x5d, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10},
580 {0xd1, 0x5d, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10},
581 {0xd1, 0x5d, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10},
585 {0xb1, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
586 {0xb1, 0x5d, 0x06, 0x00, 0x53, 0x00, 0x00, 0x10},
587 {0xb1, 0x5d, 0x05, 0x00, 0x09, 0x00, 0x00, 0x10},
588 {0xb1, 0x5d, 0x09, 0x02, 0x35, 0x00, 0x00, 0x10}, /* exposure 2 */
590 {0xd1, 0x5d, 0x2b, 0x00, 0xd1, 0x01, 0xc9, 0x10},
591 {0xd1, 0x5d, 0x2d, 0x00, 0xed, 0x00, 0xd1, 0x10},
592 {0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10}, /* update */
593 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */
597 {0xa1, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00, 0x10},
598 {0xa1, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10},
599 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
600 {0xa1, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10},
601 {0xa1, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10},
602 {0xa1, 0x21, 0x05, 0x04, 0x00, 0x00, 0x00, 0x10},
603 {0xa1, 0x21, 0x06, 0x80, 0x00, 0x00, 0x00, 0x10},
604 {0xa1, 0x21, 0x06, 0x81, 0x00, 0x00, 0x00, 0x10},
605 {0xa1, 0x21, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10},
606 {0xa1, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, 0x10},
607 {0xa1, 0x21, 0x11, 0x20, 0x00, 0x00, 0x00, 0x10},
608 {0xa1, 0x21, 0x11, 0x30, 0x00, 0x00, 0x00, 0x10},
609 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
610 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
611 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
612 {0xa1, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10},
613 {0xa1, 0x21, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x10},
614 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10},
615 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
616 {0xa1, 0x21, 0x11, 0x38, 0x00, 0x00, 0x00, 0x10},
620 {0xb1, 0x5c, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x10}, /* reset? */
621 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
622 {0xb1, 0x5c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x10},
623 {0xb1, 0x5c, 0x01, 0x00, 0x01, 0x00, 0x00, 0x10}, /* IFP select */
624 {0xb1, 0x5c, 0x08, 0x04, 0x80, 0x00, 0x00, 0x10}, /* output fmt ctrl */
625 {0xb1, 0x5c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x10}, /* op mode ctrl */
626 {0xb1, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, /* sensor select */
627 {0xb1, 0x5c, 0x08, 0x00, 0x08, 0x00, 0x00, 0x10}, /* row start */
628 {0xb1, 0x5c, 0x02, 0x00, 0x16, 0x00, 0x00, 0x10}, /* col start */
629 {0xb1, 0x5c, 0x03, 0x01, 0xe7, 0x00, 0x00, 0x10}, /* window height */
630 {0xb1, 0x5c, 0x04, 0x02, 0x87, 0x00, 0x00, 0x10}, /* window width */
631 {0xb1, 0x5c, 0x07, 0x30, 0x02, 0x00, 0x00, 0x10}, /* output ctrl */
632 {0xb1, 0x5c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x10}, /* shutter delay */
633 {0xb1, 0x5c, 0x12, 0x00, 0xb0, 0x00, 0x00, 0x10}, /* zoom col start */
634 {0xb1, 0x5c, 0x13, 0x00, 0x7c, 0x00, 0x00, 0x10}, /* zoom row start */
635 {0xb1, 0x5c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10}, /* digital zoom */
636 {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10}, /* read mode */
637 {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
641 {0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xad, 0x10}, /* G1 and B gains */
642 {0xd1, 0x5c, 0x2d, 0x00, 0xad, 0x00, 0x33, 0x10}, /* R and G2 gains */
643 {0xb1, 0x5c, 0x06, 0x00, 0x40, 0x00, 0x00, 0x10}, /* vert blanking */
644 {0xb1, 0x5c, 0x05, 0x00, 0x09, 0x00, 0x00, 0x10}, /* horiz blanking */
645 {0xb1, 0x5c, 0x35, 0x01, 0xc0, 0x00, 0x00, 0x10}, /* global gain */
650 {0xa0, 0x34, 0x29, 0x0e, 0x00, 0x00, 0x00, 0x10},
651 {0xa0, 0x34, 0x23, 0xb0, 0x00, 0x00, 0x00, 0x10},
654 {0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10},
656 {0xa0, 0x34, 0xdd, 0x18, 0x00, 0x00, 0x00, 0x10},
658 {0xa0, 0x34, 0x5a, 0xc0, 0x00, 0x00, 0x00, 0x10},
659 /* {0xa0, 0x34, 0xfb, 0x11, 0x00, 0x00, 0x00, 0x10}, */
660 {0xa0, 0x34, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x10},
661 /* auto-exposure speed (0) / white balance mode (auto RGB) */
662 /* {0xa0, 0x34, 0xf1, 0x02, 0x00, 0x00, 0x00, 0x10},
664 /* {0xa0, 0x34, 0xfe, 0x5b, 0x00, 0x00, 0x00, 0x10},
666 /* {0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10},
668 /* {0xa0, 0x34, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x10},
670 /* {0xa0, 0x34, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x10},
672 /* {0xa0, 0x34, 0xe8, 0x31, 0x00, 0x00, 0x00, 0x10},
674 {0xa0, 0x34, 0xe9, 0x0f, 0x00, 0x00, 0x00, 0x10},
675 /* luminance mode (0x4f -> AutoExpo on) */
676 {0xa0, 0x34, 0xe4, 0xff, 0x00, 0x00, 0x00, 0x10},
678 /* {0xa0, 0x34, 0xef, 0x00, 0x00, 0x00, 0x00, 0x10},
680 /* {0xa0, 0x34, 0xfb, 0xee, 0x00, 0x00, 0x00, 0x10}, */
681 {0xa0, 0x34, 0x5d, 0x80, 0x00, 0x00, 0x00, 0x10},
685 {0xa0, 0x34, 0x71, 0x84, 0x00, 0x00, 0x00, 0x10},
686 {0xa0, 0x34, 0x72, 0x05, 0x00, 0x00, 0x00, 0x10},
687 {0xa0, 0x34, 0x68, 0x80, 0x00, 0x00, 0x00, 0x10},
688 {0xa0, 0x34, 0x69, 0x01, 0x00, 0x00, 0x00, 0x10},
692 {0xa1, 0x21, 0x76, 0x01, 0x00, 0x00, 0x00, 0x10},
693 {0xa1, 0x21, 0x12, 0xc8, 0x00, 0x00, 0x00, 0x10},
694 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
695 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
696 {0xa1, 0x21, 0x12, 0xc8, 0x00, 0x00, 0x00, 0x10},
697 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
698 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
700 {0xd1, 0x21, 0x03, 0x80, 0x10, 0x20, 0x80, 0x10},
701 {0xb1, 0x21, 0x0c, 0x20, 0x20, 0x00, 0x00, 0x10},
702 /* HDG: 0x11 was 0x00 change to 0x01 for better exposure (15 fps instead of 30)
703 0x13 was 0xc0 change to 0xc3 for auto gain and exposure */
704 {0xd1, 0x21, 0x11, 0x01, 0x48, 0xc3, 0x00, 0x10},
705 {0xb1, 0x21, 0x15, 0x80, 0x03, 0x00, 0x00, 0x10},
706 {0xd1, 0x21, 0x17, 0x1b, 0xbd, 0x05, 0xf6, 0x10},
707 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
708 {0xd1, 0x21, 0x1f, 0x00, 0x80, 0x80, 0x80, 0x10},
709 {0xd1, 0x21, 0x23, 0xde, 0x10, 0x8a, 0xa0, 0x10},
710 {0xc1, 0x21, 0x27, 0xca, 0xa2, 0x74, 0x00, 0x10},
711 {0xd1, 0x21, 0x2a, 0x88, 0x00, 0x88, 0x01, 0x10},
712 {0xc1, 0x21, 0x2e, 0x80, 0x00, 0x18, 0x00, 0x10},
713 {0xa1, 0x21, 0x21, 0x08, 0x00, 0x00, 0x00, 0x10},
714 {0xa1, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10},
715 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10},
716 {0xb1, 0x21, 0x32, 0xc2, 0x08, 0x00, 0x00, 0x10},
717 {0xb1, 0x21, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x10},
718 {0xd1, 0x21, 0x60, 0x05, 0x40, 0x12, 0x57, 0x10},
719 {0xa1, 0x21, 0x64, 0x73, 0x00, 0x00, 0x00, 0x10},
720 {0xd1, 0x21, 0x65, 0x00, 0x55, 0x01, 0xac, 0x10},
721 {0xa1, 0x21, 0x69, 0x38, 0x00, 0x00, 0x00, 0x10},
722 {0xd1, 0x21, 0x6f, 0x1f, 0x01, 0x00, 0x10, 0x10},
723 {0xd1, 0x21, 0x73, 0x50, 0x20, 0x02, 0x01, 0x10},
724 {0xd1, 0x21, 0x77, 0xf3, 0x90, 0x98, 0x98, 0x10},
725 {0xc1, 0x21, 0x7b, 0x00, 0x4c, 0xf7, 0x00, 0x10},
726 {0xd1, 0x21, 0x17, 0x1b, 0xbd, 0x05, 0xf6, 0x10},
727 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
731 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
732 {0xa1, 0x21, 0x12, 0x48, 0x00, 0x00, 0x00, 0x10},
733 /*fixme: + 0x12, 0x04*/
734 /* {0xa1, 0x21, 0x75, 0x82, 0x00, 0x00, 0x00, 0x10}, * COMN
736 {0xa1, 0x21, 0x10, 0x32, 0x00, 0x00, 0x00, 0x10},
737 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
738 {0xb1, 0x21, 0x01, 0x80, 0x80, 0x00, 0x00, 0x10},
740 /* {0xa1, 0x21, 0x2a, 0x88, 0x00, 0x00, 0x00, 0x10}, * set by setfreq */
741 /* {0xa1, 0x21, 0x2b, 0x34, 0x00, 0x00, 0x00, 0x10}, * set by setfreq */
743 {0xa1, 0x21, 0x10, 0x83, 0x00, 0x00, 0x00, 0x10},
744 /* {0xb1, 0x21, 0x01, 0x88, 0x70, 0x00, 0x00, 0x10}, */
749 {0xa1, 0x21, 0x76, 0x00, 0x00, 0x00, 0x00, 0x10},
750 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset */
751 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
752 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
753 {0xd1, 0x21, 0x03, 0xa4, 0x30, 0x88, 0x00, 0x10},
754 {0xb1, 0x21, 0x11, 0x80, 0x08, 0x00, 0x00, 0x10},
755 {0xc1, 0x21, 0x13, 0xa0, 0x04, 0x84, 0x00, 0x10},
756 {0xd1, 0x21, 0x17, 0x1a, 0x02, 0xba, 0xf4, 0x10},
757 {0xa1, 0x21, 0x1b, 0x04, 0x00, 0x00, 0x00, 0x10},
758 {0xd1, 0x21, 0x1f, 0x41, 0xc0, 0x80, 0x80, 0x10},
759 {0xd1, 0x21, 0x23, 0xde, 0xa0, 0x80, 0x32, 0x10},
760 {0xd1, 0x21, 0x27, 0xfe, 0xa0, 0x00, 0x91, 0x10},
761 {0xd1, 0x21, 0x2b, 0x00, 0x88, 0x85, 0x80, 0x10},
762 {0xc1, 0x21, 0x2f, 0x9c, 0x00, 0xc4, 0x00, 0x10},
763 {0xd1, 0x21, 0x60, 0xa6, 0x60, 0x88, 0x12, 0x10},
764 {0xd1, 0x21, 0x64, 0x88, 0x00, 0x00, 0x94, 0x10},
765 {0xd1, 0x21, 0x68, 0x7a, 0x0c, 0x00, 0x00, 0x10},
766 {0xd1, 0x21, 0x6c, 0x11, 0x33, 0x22, 0x00, 0x10},
767 {0xd1, 0x21, 0x70, 0x11, 0x00, 0x10, 0x50, 0x10},
768 {0xd1, 0x21, 0x74, 0x20, 0x06, 0x00, 0xb5, 0x10},
769 {0xd1, 0x21, 0x78, 0x8a, 0x00, 0x00, 0x00, 0x10},
770 {0xb1, 0x21, 0x7c, 0x00, 0x43, 0x00, 0x00, 0x10},
772 {0xd1, 0x21, 0x21, 0x86, 0x00, 0xde, 0xa0, 0x10},
773 /* {0xd1, 0x21, 0x25, 0x80, 0x32, 0xfe, 0xa0, 0x10}, jfm done */
774 /* {0xd1, 0x21, 0x29, 0x00, 0x91, 0x00, 0x88, 0x10}, jfm done */
775 /* {0xb1, 0x21, 0x2d, 0x85, 0x00, 0x00, 0x00, 0x10}, set by setfreq */
779 /* {0xa1, 0x21, 0x12, 0x08, 0x00, 0x00, 0x00, 0x10}, jfm done */
780 /* {0xa1, 0x21, 0x75, 0x06, 0x00, 0x00, 0x00, 0x10}, * COMN
782 {0xa1, 0x21, 0x19, 0x02, 0x00, 0x00, 0x00, 0x10},
783 {0xa1, 0x21, 0x10, 0x32, 0x00, 0x00, 0x00, 0x10},
784 /* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
785 /* {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, * GAIN - def */
786 /* {0xb1, 0x21, 0x01, 0x6c, 0x6c, 0x00, 0x00, 0x10}, * B R - def: 80 */
788 {0xa1, 0x21, 0x11, 0x81, 0x00, 0x00, 0x00, 0x10}, /* CLKRC */
789 /* {0xa1, 0x21, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
790 /* {0xa1, 0x21, 0x16, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
791 /* {0xa1, 0x21, 0x2a, 0x91, 0x00, 0x00, 0x00, 0x10}, jfm done */
792 /* {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10}, jfm done */
793 /* {0xb1, 0x21, 0x01, 0x64, 0x84, 0x00, 0x00, 0x10}, * B R - def: 80 */
799 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset SCCB */
800 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
801 {0xa1, 0x21, 0x12, 0x05, 0x00, 0x00, 0x00, 0x10},
803 {0xa1, 0x21, 0x13, 0xb8, 0x00, 0x00, 0x00, 0x10}, /* init COM8 */
804 {0xd1, 0x21, 0x00, 0x01, 0x74, 0x92, 0x00, 0x10},
806 {0xd1, 0x21, 0x04, 0x00, 0x7d, 0x62, 0x00, 0x10},
808 {0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
809 {0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
810 {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10},
812 {0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
813 {0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
815 {0xa1, 0x21, 0x1b, 0x02, 0x00, 0x00, 0x00, 0x10}, /* PSHFT */
816 {0xb1, 0x21, 0x1e, 0x01, 0x0e, 0x00, 0x00, 0x10}, /* MVFP LAEC */
817 {0xd1, 0x21, 0x20, 0x07, 0x07, 0x07, 0x07, 0x10},
819 /* {0xd1, 0x21, 0x24, 0x68, 0x58, 0xd4, 0x80, 0x10}, */
820 {0xd1, 0x21, 0x24, 0x78, 0x68, 0xd4, 0x80, 0x10},
822 {0xd1, 0x21, 0x28, 0x80, 0x30, 0x00, 0x00, 0x10},
824 {0xd1, 0x21, 0x2c, 0x80, 0x00, 0x00, 0x62, 0x10},
826 {0xc1, 0x21, 0x30, 0x08, 0x30, 0xb4, 0x00, 0x10},
828 {0xd1, 0x21, 0x33, 0x00, 0x07, 0x84, 0x00, 0x10}, /* reserved */
829 {0xd1, 0x21, 0x37, 0x0c, 0x02, 0x43, 0x00, 0x10},
831 {0xd1, 0x21, 0x3b, 0x02, 0x6c, 0x19, 0x0e, 0x10},
833 {0xd1, 0x21, 0x3f, 0x41, 0xc1, 0x22, 0x08, 0x10},
835 {0xd1, 0x21, 0x43, 0xf0, 0x10, 0x78, 0xa8, 0x10}, /* reserved */
836 {0xd1, 0x21, 0x47, 0x60, 0x80, 0x00, 0x00, 0x10}, /* reserved */
837 {0xd1, 0x21, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x10}, /* reserved */
838 {0xd1, 0x21, 0x4f, 0x46, 0x36, 0x0f, 0x17, 0x10}, /* MTX 1 2 3 4 */
839 {0xd1, 0x21, 0x53, 0x7f, 0x96, 0x40, 0x40, 0x10}, /* MTX 5 6 7 8 */
840 {0xb1, 0x21, 0x57, 0x40, 0x0f, 0x00, 0x00, 0x10}, /* MTX9 MTXS */
841 {0xd1, 0x21, 0x59, 0xba, 0x9a, 0x22, 0xb9, 0x10}, /* reserved */
842 {0xd1, 0x21, 0x5d, 0x9b, 0x10, 0xf0, 0x05, 0x10}, /* reserved */
843 {0xa1, 0x21, 0x61, 0x60, 0x00, 0x00, 0x00, 0x10}, /* reserved */
844 {0xd1, 0x21, 0x62, 0x00, 0x00, 0x50, 0x30, 0x10},
846 {0xa1, 0x21, 0x66, 0x00, 0x00, 0x00, 0x00, 0x10}, /* LCC5 */
847 {0xd1, 0x21, 0x67, 0x80, 0x7a, 0x90, 0x80, 0x10}, /* MANU */
848 {0xa1, 0x21, 0x6b, 0x0a, 0x00, 0x00, 0x00, 0x10},
849 /* band gap reference [0:3] DBLV */
850 {0xd1, 0x21, 0x6c, 0x30, 0x48, 0x80, 0x74, 0x10}, /* gamma curve */
851 {0xd1, 0x21, 0x70, 0x64, 0x60, 0x5c, 0x58, 0x10}, /* gamma curve */
852 {0xd1, 0x21, 0x74, 0x54, 0x4c, 0x40, 0x38, 0x10}, /* gamma curve */
853 {0xd1, 0x21, 0x78, 0x34, 0x30, 0x2f, 0x2b, 0x10}, /* gamma curve */
854 {0xd1, 0x21, 0x7c, 0x03, 0x07, 0x17, 0x34, 0x10}, /* gamma curve */
855 {0xd1, 0x21, 0x80, 0x41, 0x4d, 0x58, 0x63, 0x10}, /* gamma curve */
856 {0xd1, 0x21, 0x84, 0x6e, 0x77, 0x87, 0x95, 0x10}, /* gamma curve */
857 {0xc1, 0x21, 0x88, 0xaf, 0xc7, 0xdf, 0x00, 0x10}, /* gamma curve */
858 {0xc1, 0x21, 0x8b, 0x99, 0x99, 0xcf, 0x00, 0x10}, /* reserved */
859 {0xb1, 0x21, 0x92, 0x00, 0x00, 0x00, 0x00, 0x10}, /* DM_LNL/H */
861 {0xa1, 0x21, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x10},
865 {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10}, /* MVFP */
866 /* bits[3..0]reserved */
867 {0xa1, 0x21, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x10},
868 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
870 {0xa1, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10},
871 {0xa1, 0x21, 0x10, 0x20, 0x00, 0x00, 0x00, 0x10}, /* AECH 0x20 */
872 {0xa1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10}, /* ADVFL */
873 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10}, /* ADVFH */
874 {0xa1, 0x21, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10}, /* GAIN */
875 /* {0xb1, 0x21, 0x01, 0x78, 0x78, 0x00, 0x00, 0x10}, * BLUE */
878 {0xa1, 0x21, 0x93, 0x00, 0x00, 0x00, 0x00, 0x10},/* dummy line hight */
879 {0xa1, 0x21, 0x92, 0x25, 0x00, 0x00, 0x00, 0x10}, /* dummy line low */
880 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10}, /* EXHCH */
881 {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10}, /* EXHCL */
882 /* {0xa1, 0x21, 0x02, 0x90, 0x00, 0x00, 0x00, 0x10}, * RED */
886 {0xa1, 0x21, 0x93, 0x01, 0x00, 0x00, 0x00, 0x10},
887 {0xa1, 0x21, 0x92, 0xff, 0x00, 0x00, 0x00, 0x10},
888 {0xa1, 0x21, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x10},
889 {0xa1, 0x21, 0x2b, 0xc3, 0x00, 0x00, 0x00, 0x10},
895 {0xa1, 0x6e, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x10}, /* sensor reset */
896 {DELAY, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 20ms */
897 {0xa1, 0x6e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x10},
898 {0xa1, 0x6e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x10},
899 {0xd1, 0x6e, 0x04, 0x02, 0xb1, 0x02, 0x39, 0x10},
900 {0xd1, 0x6e, 0x08, 0x00, 0x01, 0x00, 0x00, 0x10},
901 {0xd1, 0x6e, 0x0c, 0x02, 0x7f, 0x01, 0xe0, 0x10},
902 {0xd1, 0x6e, 0x12, 0x03, 0x02, 0x00, 0x03, 0x10},
903 {0xd1, 0x6e, 0x16, 0x85, 0x40, 0x4a, 0x40, 0x10}, /* r/g1/b/g2 gains */
904 {0xc1, 0x6e, 0x1a, 0x00, 0x80, 0x00, 0x00, 0x10},
905 {0xd1, 0x6e, 0x1d, 0x08, 0x03, 0x00, 0x00, 0x10},
906 {0xd1, 0x6e, 0x23, 0x00, 0xb0, 0x00, 0x94, 0x10},
907 {0xd1, 0x6e, 0x27, 0x58, 0x00, 0x00, 0x00, 0x10},
908 {0xb1, 0x6e, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10},
909 {0xd1, 0x6e, 0x2d, 0x14, 0x35, 0x61, 0x84, 0x10}, /* gamma corr */
910 {0xd1, 0x6e, 0x31, 0xa2, 0xbd, 0xd8, 0xff, 0x10},
911 {0xd1, 0x6e, 0x35, 0x06, 0x1e, 0x12, 0x02, 0x10}, /* color matrix */
912 {0xd1, 0x6e, 0x39, 0xaa, 0x53, 0x37, 0xd5, 0x10},
913 {0xa1, 0x6e, 0x3d, 0xf2, 0x00, 0x00, 0x00, 0x10},
914 {0xd1, 0x6e, 0x3e, 0x00, 0x00, 0x80, 0x03, 0x10},
915 {0xd1, 0x6e, 0x42, 0x03, 0x00, 0x00, 0x00, 0x10},
916 {0xc1, 0x6e, 0x46, 0x00, 0x80, 0x80, 0x00, 0x10},
917 {0xd1, 0x6e, 0x4b, 0x02, 0xef, 0x08, 0xcd, 0x10},
918 {0xd1, 0x6e, 0x4f, 0x00, 0xd0, 0x00, 0xa0, 0x10},
919 {0xd1, 0x6e, 0x53, 0x01, 0xaa, 0x01, 0x40, 0x10},
920 {0xd1, 0x6e, 0x5a, 0x50, 0x04, 0x30, 0x03, 0x10}, /* raw rgb bayer */
921 {0xa1, 0x6e, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x10},
922 {0xd1, 0x6e, 0x5f, 0x10, 0x40, 0xff, 0x00, 0x10},
924 {0xd1, 0x6e, 0x63, 0x40, 0x40, 0x00, 0x00, 0x10},
925 {0xd1, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00, 0x10},
926 {0xd1, 0x6e, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x10},
927 {0xd1, 0x6e, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x10},
928 {0xc1, 0x6e, 0x73, 0x10, 0x80, 0xeb, 0x00, 0x10},
933 {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
934 {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
936 {0xc1, 0x6e, 0x1a, 0x02, 0xd4, 0xa4, 0x00, 0x10}, /* integlines */
937 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10}, /* global gain */
938 {0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10}, /* r/g1/b gains */
940 {0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10}, /* control1 */
941 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10}, /* frameheight */
942 {0xa1, 0x6e, 0x07, 0xd5, 0x00, 0x00, 0x00, 0x10},
943 /* {0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10}, */
948 {0xa1, 0x6e, 0x1e, 0x1a, 0x00, 0x00, 0x00, 0x10},
949 {0xa1, 0x6e, 0x1f, 0x99, 0x00, 0x00, 0x00, 0x10},
950 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 10ms */
951 {0xa1, 0x6e, 0x1e, 0x0a, 0x00, 0x00, 0x00, 0x10},
952 {0xa1, 0x6e, 0x1f, 0x19, 0x00, 0x00, 0x00, 0x10},
953 {DELAY, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 10ms */
954 {0xa1, 0x6e, 0x20, 0x44, 0x00, 0x00, 0x00, 0x10},
955 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10},
956 {0xa1, 0x6e, 0x05, 0x70, 0x00, 0x00, 0x00, 0x10},
957 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
958 {0xa1, 0x6e, 0x07, 0x25, 0x00, 0x00, 0x00, 0x10},
959 {0xd1, 0x6e, 0x08, 0x00, 0xd0, 0x00, 0x08, 0x10},
960 {0xd1, 0x6e, 0x0c, 0x03, 0x50, 0x01, 0xe8, 0x10},
961 {0xd1, 0x6e, 0x1d, 0x20, 0x0a, 0x19, 0x44, 0x10},
962 {0xd1, 0x6e, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10},
963 {0xd1, 0x6e, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10},
964 {0xd1, 0x6e, 0x29, 0x00, 0x00, 0x00, 0x00, 0x10},
965 {0xd1, 0x6e, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10},
966 {0xd1, 0x6e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x10},
967 {0xd1, 0x6e, 0x35, 0x00, 0x00, 0x00, 0x00, 0x10},
968 {0xd1, 0x6e, 0x39, 0x00, 0x00, 0x00, 0x00, 0x10},
969 {0xd1, 0x6e, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x10},
970 {0xd1, 0x6e, 0x41, 0x00, 0x00, 0x00, 0x00, 0x10},
971 {0xd1, 0x6e, 0x45, 0x00, 0x00, 0x00, 0x00, 0x10},
972 {0xd1, 0x6e, 0x49, 0x00, 0x00, 0x00, 0x00, 0x10},
973 {0xd1, 0x6e, 0x4d, 0x00, 0x00, 0x00, 0xed, 0x10},
974 {0xd1, 0x6e, 0x51, 0x17, 0x4a, 0x2f, 0xc0, 0x10},
975 {0xd1, 0x6e, 0x55, 0x00, 0x00, 0x00, 0x00, 0x10},
976 {0xd1, 0x6e, 0x59, 0x00, 0x00, 0x00, 0x00, 0x10},
977 {0xd1, 0x6e, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x10},
978 {0xd1, 0x6e, 0x61, 0x00, 0x00, 0x00, 0x00, 0x10},
979 {0xd1, 0x6e, 0x65, 0x00, 0x00, 0x00, 0x00, 0x10},
980 {0xd1, 0x6e, 0x69, 0x00, 0x00, 0x00, 0x00, 0x10},
981 {0xd1, 0x6e, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10},
982 {0xd1, 0x6e, 0x71, 0x00, 0x00, 0x00, 0x00, 0x10},
983 {0xd1, 0x6e, 0x75, 0x00, 0x00, 0x00, 0x00, 0x10},
984 {0xd1, 0x6e, 0x79, 0x00, 0x00, 0x00, 0x00, 0x10},
985 {0xd1, 0x6e, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x10},
986 {0xd1, 0x6e, 0x81, 0x00, 0x00, 0x00, 0x00, 0x10},
987 {0xd1, 0x6e, 0x85, 0x00, 0x00, 0x00, 0x08, 0x10},
988 {0xd1, 0x6e, 0x89, 0x01, 0xe8, 0x00, 0x01, 0x10},
989 {0xa1, 0x6e, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x10},
990 {0xd1, 0x6e, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10},
991 {0xd1, 0x6e, 0x25, 0x00, 0x00, 0x00, 0x01, 0x10},
992 {0xd1, 0x6e, 0x29, 0xe6, 0x00, 0xbd, 0x03, 0x10},
993 {0xd1, 0x6e, 0x2d, 0x41, 0x38, 0x68, 0x40, 0x10},
994 {0xd1, 0x6e, 0x31, 0x2b, 0x00, 0x36, 0x00, 0x10},
995 {0xd1, 0x6e, 0x35, 0x30, 0x30, 0x08, 0x00, 0x10},
996 {0xd1, 0x6e, 0x39, 0x00, 0x00, 0x33, 0x06, 0x10},
997 {0xb1, 0x6e, 0x3d, 0x06, 0x02, 0x00, 0x00, 0x10},
1001 {0xa1, 0x6e, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x10},
1002 {DELAY, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 8ms */
1003 {0xa1, 0x6e, 0x1b, 0xf4, 0x00, 0x00, 0x00, 0x10},
1004 {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10},
1005 {0xd1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x40, 0x10}, /* RGBG gains */
1007 {0xa1, 0x6e, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10},
1008 {0xa1, 0x6e, 0x04, 0x03, 0x00, 0x00, 0x00, 0x10},
1009 {0xa1, 0x6e, 0x05, 0x6f, 0x00, 0x00, 0x00, 0x10},
1010 {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
1011 {0xa1, 0x6e, 0x07, 0x25, 0x00, 0x00, 0x00, 0x10},
1016 {0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10}, /* reset */
1017 {DELAY, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* delay 96ms */
1018 {0xa1, 0x21, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10},
1019 {0xa1, 0x21, 0x13, 0x80, 0x00, 0x00, 0x00, 0x10},
1020 {0xa1, 0x21, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x10},
1021 {0xa1, 0x21, 0x19, 0x00, 0x00, 0x00, 0x00, 0x10},
1025 {0xa1, 0x21, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10},
1026 {0xa1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10},
1027 {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10},
1028 {0xa1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
1029 {0xb1, 0x21, 0x01, 0x7f, 0x7f, 0x00, 0x00, 0x10},
1031 /* {0xa1, 0x21, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10}, */
1032 /* {0xa1, 0x21, 0x2d, 0x25, 0x00, 0x00, 0x00, 0x10}, */
1033 {0xa1, 0x21, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x10},
1034 /* {0xb1, 0x21, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x10}, */
1035 {0xa1, 0x21, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x10},
1037 {0xa1, 0x21, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10},
1038 /* global gain ? : 07 - change with 0x15 at the end */
1039 {0xa1, 0x21, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x10}, /* ???? : 063f */
1040 {0xa1, 0x21, 0x04, 0x06, 0x00, 0x00, 0x00, 0x10},
1041 {0xb1, 0x21, 0x2d, 0x63, 0x03, 0x00, 0x00, 0x10},
1042 /* exposure ? : 0200 - change with 0x1e at the end */
1047 {0xa1, 0x18, 0x06, 0xf9, 0x00, 0x00, 0x00, 0x10},
1048 {0xa1, 0x18, 0x09, 0x1f, 0x00, 0x00, 0x00, 0x10},
1049 {0xa1, 0x18, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10},
1050 {0xa1, 0x18, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x10},
1051 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1052 {0xa1, 0x18, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x10},
1053 {0xa1, 0x18, 0x10, 0x40, 0x00, 0x00, 0x00, 0x10},
1054 {0xa1, 0x18, 0x11, 0x4e, 0x00, 0x00, 0x00, 0x10},
1055 {0xa1, 0x18, 0x12, 0x53, 0x00, 0x00, 0x00, 0x10},
1056 {0xa1, 0x18, 0x15, 0x80, 0x00, 0x00, 0x00, 0x10},
1057 {0xa1, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10},
1058 {0xa1, 0x18, 0x19, 0x18, 0x00, 0x00, 0x00, 0x10},
1059 {0xa1, 0x18, 0x1a, 0x10, 0x00, 0x00, 0x00, 0x10},
1060 {0xa1, 0x18, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x10},
1061 {0xa1, 0x18, 0x1c, 0x28, 0x00, 0x00, 0x00, 0x10},
1062 {0xa1, 0x18, 0x1d, 0x02, 0x00, 0x00, 0x00, 0x10},
1063 {0xa1, 0x18, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x10},
1064 {0xa1, 0x18, 0x26, 0x04, 0x00, 0x00, 0x00, 0x10},
1065 {0xa1, 0x18, 0x27, 0x1e, 0x00, 0x00, 0x00, 0x10},
1066 {0xa1, 0x18, 0x28, 0x5a, 0x00, 0x00, 0x00, 0x10},
1067 {0xa1, 0x18, 0x29, 0x28, 0x00, 0x00, 0x00, 0x10},
1068 {0xa1, 0x18, 0x2a, 0x78, 0x00, 0x00, 0x00, 0x10},
1069 {0xa1, 0x18, 0x2b, 0x01, 0x00, 0x00, 0x00, 0x10},
1070 {0xa1, 0x18, 0x2c, 0xf7, 0x00, 0x00, 0x00, 0x10},
1071 {0xa1, 0x18, 0x2d, 0x2d, 0x00, 0x00, 0x00, 0x10},
1072 {0xa1, 0x18, 0x2e, 0xd5, 0x00, 0x00, 0x00, 0x10},
1073 {0xa1, 0x18, 0x39, 0x42, 0x00, 0x00, 0x00, 0x10},
1074 {0xa1, 0x18, 0x3a, 0x67, 0x00, 0x00, 0x00, 0x10},
1075 {0xa1, 0x18, 0x3b, 0x87, 0x00, 0x00, 0x00, 0x10},
1076 {0xa1, 0x18, 0x3c, 0xa3, 0x00, 0x00, 0x00, 0x10},
1077 {0xa1, 0x18, 0x3d, 0xb0, 0x00, 0x00, 0x00, 0x10},
1078 {0xa1, 0x18, 0x3e, 0xbc, 0x00, 0x00, 0x00, 0x10},
1079 {0xa1, 0x18, 0x3f, 0xc8, 0x00, 0x00, 0x00, 0x10},
1080 {0xa1, 0x18, 0x40, 0xd4, 0x00, 0x00, 0x00, 0x10},
1081 {0xa1, 0x18, 0x41, 0xdf, 0x00, 0x00, 0x00, 0x10},
1082 {0xa1, 0x18, 0x42, 0xea, 0x00, 0x00, 0x00, 0x10},
1083 {0xa1, 0x18, 0x43, 0xf5, 0x00, 0x00, 0x00, 0x10},
1084 {0xa1, 0x18, 0x45, 0x80, 0x00, 0x00, 0x00, 0x10},
1085 {0xa1, 0x18, 0x46, 0x60, 0x00, 0x00, 0x00, 0x10},
1086 {0xa1, 0x18, 0x47, 0x50, 0x00, 0x00, 0x00, 0x10},
1087 {0xa1, 0x18, 0x48, 0x30, 0x00, 0x00, 0x00, 0x10},
1088 {0xa1, 0x18, 0x49, 0x01, 0x00, 0x00, 0x00, 0x10},
1089 {0xa1, 0x18, 0x4d, 0xae, 0x00, 0x00, 0x00, 0x10},
1090 {0xa1, 0x18, 0x4e, 0x03, 0x00, 0x00, 0x00, 0x10},
1091 {0xa1, 0x18, 0x4f, 0x66, 0x00, 0x00, 0x00, 0x10},
1092 {0xa1, 0x18, 0x50, 0x1c, 0x00, 0x00, 0x00, 0x10},
1093 {0xa1, 0x18, 0x44, 0x10, 0x00, 0x00, 0x00, 0x10},
1094 {0xa1, 0x18, 0x4a, 0x30, 0x00, 0x00, 0x00, 0x10},
1095 {0xa1, 0x18, 0x51, 0x80, 0x00, 0x00, 0x00, 0x10},
1096 {0xa1, 0x18, 0x52, 0x80, 0x00, 0x00, 0x00, 0x10},
1097 {0xa1, 0x18, 0x53, 0x80, 0x00, 0x00, 0x00, 0x10},
1098 {0xa1, 0x18, 0x54, 0x80, 0x00, 0x00, 0x00, 0x10},
1099 {0xa1, 0x18, 0x55, 0x80, 0x00, 0x00, 0x00, 0x10},
1100 {0xa1, 0x18, 0x56, 0x80, 0x00, 0x00, 0x00, 0x10},
1101 {0xa1, 0x18, 0x57, 0xe0, 0x00, 0x00, 0x00, 0x10},
1102 {0xa1, 0x18, 0x58, 0xc0, 0x00, 0x00, 0x00, 0x10},
1103 {0xa1, 0x18, 0x59, 0xab, 0x00, 0x00, 0x00, 0x10},
1104 {0xa1, 0x18, 0x5a, 0xa0, 0x00, 0x00, 0x00, 0x10},
1105 {0xa1, 0x18, 0x5b, 0x99, 0x00, 0x00, 0x00, 0x10},
1106 {0xa1, 0x18, 0x5c, 0x90, 0x00, 0x00, 0x00, 0x10},
1107 {0xa1, 0x18, 0x5e, 0x24, 0x00, 0x00, 0x00, 0x10},
1108 {0xa1, 0x18, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x10},
1109 {0xa1, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x10},
1110 {0xa1, 0x18, 0x61, 0x73, 0x00, 0x00, 0x00, 0x10},
1111 {0xa1, 0x18, 0x63, 0x42, 0x00, 0x00, 0x00, 0x10},
1112 {0xa1, 0x18, 0x64, 0x42, 0x00, 0x00, 0x00, 0x10},
1113 {0xa1, 0x18, 0x65, 0x42, 0x00, 0x00, 0x00, 0x10},
1114 {0xa1, 0x18, 0x66, 0x24, 0x00, 0x00, 0x00, 0x10},
1115 {0xa1, 0x18, 0x67, 0x24, 0x00, 0x00, 0x00, 0x10},
1116 {0xa1, 0x18, 0x68, 0x08, 0x00, 0x00, 0x00, 0x10},
1117 {0xa1, 0x18, 0x2f, 0xc9, 0x00, 0x00, 0x00, 0x10},
1121 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1122 {0xa1, 0x18, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x10},
1123 {0xa1, 0x18, 0x03, 0x01, 0x00, 0x00, 0x00, 0x10},
1124 {0xa1, 0x18, 0x04, 0xa4, 0x00, 0x00, 0x00, 0x10},
1125 {0xa1, 0x18, 0x14, 0x3f, 0x00, 0x00, 0x00, 0x10},
1126 {0xa1, 0x18, 0x5d, 0x80, 0x00, 0x00, 0x00, 0x10},
1127 {0xb1, 0x18, 0x11, 0x40, 0x40, 0x00, 0x00, 0x10},
1155 if (gspca_dev->usb_err < 0) in reg_r()
1163 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
1164 0, in reg_r()
1166 value, 0, in reg_r()
1170 value, gspca_dev->usb_buf[0]); in reg_r()
1171 if (ret < 0) { in reg_r()
1178 memset(gspca_dev->usb_buf, 0, USB_BUF_SZ); in reg_r()
1188 if (gspca_dev->usb_err < 0) in reg_w1()
1191 gspca_dev->usb_buf[0] = data; in reg_w1()
1193 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w1()
1194 0x08, in reg_w1()
1197 0, in reg_w1()
1200 if (ret < 0) { in reg_w1()
1212 if (gspca_dev->usb_err < 0) in reg_w()
1215 value, buffer[0], buffer[1]); in reg_w()
1224 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
1225 0x08, in reg_w()
1227 value, 0, in reg_w()
1230 if (ret < 0) { in reg_w()
1242 if (gspca_dev->usb_err < 0) in i2c_w1()
1249 gspca_dev->usb_buf[0] = 0x80 | (2 << 4); in i2c_w1()
1252 gspca_dev->usb_buf[0] = 0x81 | (2 << 4); in i2c_w1()
1258 gspca_dev->usb_buf[4] = 0; in i2c_w1()
1259 gspca_dev->usb_buf[5] = 0; in i2c_w1()
1260 gspca_dev->usb_buf[6] = 0; in i2c_w1()
1261 gspca_dev->usb_buf[7] = 0x10; in i2c_w1()
1263 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w1()
1264 0x08, in i2c_w1()
1266 0x08, /* value = i2c */ in i2c_w1()
1267 0, in i2c_w1()
1271 if (ret < 0) { in i2c_w1()
1283 if (gspca_dev->usb_err < 0) in i2c_w8()
1289 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_w8()
1290 0x08, in i2c_w8()
1292 0x08, 0, /* value, index */ in i2c_w8()
1296 if (ret < 0) { in i2c_w8()
1312 mode[0] = 0x80 | 0x10; in i2c_r()
1315 mode[0] = 0x81 | 0x10; in i2c_r()
1320 mode[3] = 0; in i2c_r()
1321 mode[4] = 0; in i2c_r()
1322 mode[5] = 0; in i2c_r()
1323 mode[6] = 0; in i2c_r()
1324 mode[7] = 0x10; in i2c_r()
1327 mode[0] = (mode[0] & 0x81) | (len << 4) | 0x02; in i2c_r()
1328 mode[2] = 0; in i2c_r()
1331 reg_r(gspca_dev, 0x0a, 5); in i2c_r()
1337 while ((*data)[0] != 0) { in i2c_w_seq()
1338 if ((*data)[0] != DELAY) in i2c_w_seq()
1350 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ in hv7131r_probe()
1352 reg_w1(gspca_dev, 0x02, 0x66); /* Gpio on */ in hv7131r_probe()
1354 i2c_r(gspca_dev, 0, 5); /* read sensor id */ in hv7131r_probe()
1355 if (gspca_dev->usb_buf[0] == 0x02 /* chip ID (02 is R) */ in hv7131r_probe()
1356 && gspca_dev->usb_buf[1] == 0x09 in hv7131r_probe()
1357 && gspca_dev->usb_buf[2] == 0x01) { in hv7131r_probe()
1361 pr_warn("Erroneous HV7131R ID 0x%02x 0x%02x 0x%02x\n", in hv7131r_probe()
1362 gspca_dev->usb_buf[0], gspca_dev->usb_buf[1], in hv7131r_probe()
1370 u16 val = 0; in mi0360_probe()
1373 {0xb0, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, in mi0360_probe()
1374 {0x90, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1375 {0xa2, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1376 {0xb0, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10} in mi0360_probe()
1379 {0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, in mi0360_probe()
1380 {0x90, 0x5c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1381 {0xa2, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, in mi0360_probe()
1386 for (i = 0; i < ARRAY_SIZE(probe_tb); i++) { in mi0360_probe()
1387 reg_w1(gspca_dev, 0x17, 0x62); in mi0360_probe()
1388 reg_w1(gspca_dev, 0x01, 0x08); in mi0360_probe()
1389 for (j = 0; j < 3; j++) in mi0360_probe()
1392 reg_r(gspca_dev, 0x0a, 5); in mi0360_probe()
1394 if (probe_tb[i][3][0] != 0) in mi0360_probe()
1396 reg_w1(gspca_dev, 0x01, 0x29); in mi0360_probe()
1397 reg_w1(gspca_dev, 0x17, 0x42); in mi0360_probe()
1398 if (val != 0xffff) in mi0360_probe()
1401 if (gspca_dev->usb_err < 0) in mi0360_probe()
1404 case 0x8221: in mi0360_probe()
1408 case 0x823a: in mi0360_probe()
1412 case 0x8243: in mi0360_probe()
1428 reg_w1(gspca_dev, 0x17, 0x62); in ov7630_probe()
1429 reg_w1(gspca_dev, 0x01, 0x08); in ov7630_probe()
1430 sd->i2c_addr = 0x21; in ov7630_probe()
1431 i2c_r(gspca_dev, 0x0a, 2); in ov7630_probe()
1433 reg_w1(gspca_dev, 0x01, 0x29); in ov7630_probe()
1434 reg_w1(gspca_dev, 0x17, 0x42); in ov7630_probe()
1435 if (gspca_dev->usb_err < 0) in ov7630_probe()
1437 if (val == 0x7628) { /* soi768 */ in ov7630_probe()
1439 /*fixme: only valid for 0c45:613e?*/ in ov7630_probe()
1454 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1455 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1456 sd->i2c_addr = 0x21; in ov7648_probe()
1457 i2c_r(gspca_dev, 0x0a, 2); in ov7648_probe()
1459 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1460 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1461 if ((val & 0xff00) == 0x7600) { /* ov76xx */ in ov7648_probe()
1467 reg_w1(gspca_dev, 0x17, 0x62); in ov7648_probe()
1468 reg_w1(gspca_dev, 0x01, 0x08); in ov7648_probe()
1469 sd->i2c_addr = 0x6e; in ov7648_probe()
1470 i2c_r(gspca_dev, 0x00, 2); in ov7648_probe()
1472 reg_w1(gspca_dev, 0x01, 0x29); in ov7648_probe()
1473 reg_w1(gspca_dev, 0x17, 0x42); in ov7648_probe()
1474 if (gspca_dev->usb_err < 0) in ov7648_probe()
1476 if (val == 0x1030) { /* po1030 */ in ov7648_probe()
1484 /* 0c45:6142 sensor may be po2030n, gc0305 or gc0307 */
1491 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1492 reg_w1(gspca_dev, 0x01, 0x08); in po2030n_probe()
1493 reg_w1(gspca_dev, 0x02, 0x22); in po2030n_probe()
1494 sd->i2c_addr = 0x21; in po2030n_probe()
1495 i2c_r(gspca_dev, 0x00, 1); in po2030n_probe()
1497 reg_w1(gspca_dev, 0x01, 0x29); /* reset */ in po2030n_probe()
1498 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1499 if (val == 0x99) { /* gc0307 (?) */ in po2030n_probe()
1506 reg_w1(gspca_dev, 0x17, 0x62); in po2030n_probe()
1507 reg_w1(gspca_dev, 0x01, 0x0a); in po2030n_probe()
1508 sd->i2c_addr = 0x6e; in po2030n_probe()
1509 i2c_r(gspca_dev, 0x00, 2); in po2030n_probe()
1511 reg_w1(gspca_dev, 0x01, 0x29); in po2030n_probe()
1512 reg_w1(gspca_dev, 0x17, 0x42); in po2030n_probe()
1513 if (gspca_dev->usb_err < 0) in po2030n_probe()
1515 if (val == 0x2030) { in po2030n_probe()
1549 return 0; in sd_config()
1557 u8 regGpio[] = { 0x29, 0x70 }; /* no audio */ in sd_init()
1561 reg_w1(gspca_dev, 0xf1, 0x01); in sd_init()
1562 reg_r(gspca_dev, 0x00, 1); in sd_init()
1563 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1564 reg_r(gspca_dev, 0x00, 1); /* get sonix chip id */ in sd_init()
1565 regF1 = gspca_dev->usb_buf[0]; in sd_init()
1566 if (gspca_dev->usb_err < 0) in sd_init()
1570 regGpio[1] |= 0x04; /* with audio */ in sd_init()
1574 if (regF1 != 0x11) in sd_init()
1580 if (regF1 != 0x12) in sd_init()
1601 reg_w1(gspca_dev, 0x02, regGpio[1]); in sd_init()
1604 reg_w(gspca_dev, 0x01, regGpio, 2); in sd_init()
1610 reg_w1(gspca_dev, 0xf1, 0x00); in sd_init()
1635 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); in sd_init_controls()
1638 V4L2_CID_CONTRAST, 0, CONTRAST_MAX, 1, 20); in sd_init_controls()
1641 V4L2_CID_SATURATION, 0, 40, 1, COLORS_DEF); in sd_init_controls()
1648 V4L2_CID_GAMMA, 0, 40, 1, GAMMA_DEF); in sd_init_controls()
1652 V4L2_CID_SHARPNESS, 0, 255, 1, 16); in sd_init_controls()
1655 V4L2_CID_SHARPNESS, 0, 255, 1, 90); in sd_init_controls()
1659 V4L2_CID_ILLUMINATORS_1, 0, 1, 1, 0); in sd_init_controls()
1667 V4L2_CID_HFLIP, 0, 1, 1, 0); in sd_init_controls()
1674 V4L2_CID_AUTOGAIN, 0, 1, 1, 1); in sd_init_controls()
1679 V4L2_CID_VFLIP, 0, 1, 1, 0); in sd_init_controls()
1685 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, in sd_init_controls()
1696 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
1699 return 0; in sd_init_controls()
1711 /* expo = 0..255 -> a = 19..43 */ in expo_adjust()
1713 i2c_w1(gspca_dev, 0x68, a); in expo_adjust()
1716 i2c_w1(gspca_dev, 0x03, b >> 8); in expo_adjust()
1717 i2c_w1(gspca_dev, 0x04, b); in expo_adjust()
1722 { 0xc1, 0x11, 0x25, 0x00, 0x00, 0x00, 0x00, 0x16 }; in expo_adjust()
1732 u8 expoMi[] = /* exposure 0x0635 -> 4 fp/s 0x10 */ in expo_adjust()
1733 { 0xb1, 0x5d, 0x09, 0x00, 0x00, 0x00, 0x00, 0x16 }; in expo_adjust()
1735 { 0xb1, 0x5d, 0x07, 0x00, 0x03, 0x00, 0x00, 0x10 }; in expo_adjust()
1737 { 0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10 }; in expo_adjust()
1739 if (expo > 0x0635) in expo_adjust()
1740 expo = 0x0635; in expo_adjust()
1741 else if (expo < 0x0001) in expo_adjust()
1742 expo = 0x0001; in expo_adjust()
1752 { 0xa1, 0x21, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1754 { 0xa1, 0x21, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1756 { 0xa1, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1d }; in expo_adjust()
1758 if (expo > 0x1fff) in expo_adjust()
1759 expo = 0x1fff; in expo_adjust()
1760 else if (expo < 0x0001) in expo_adjust()
1761 expo = 0x0001; in expo_adjust()
1762 expoMof[3] = (expo & 0x03fc) >> 2; in expo_adjust()
1764 expoMo10[3] = ((expo & 0x1c00) >> 10) in expo_adjust()
1765 | ((expo & 0x0003) << 4); in expo_adjust()
1769 ((expoMo10[3] & 0x07) << 10) in expo_adjust()
1771 | ((expoMo10[3] & 0x30) >> 4)); in expo_adjust()
1776 { 0xb1, 0x5c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1778 if (expo > 0x0390) in expo_adjust()
1779 expo = 0x0390; in expo_adjust()
1780 else if (expo < 0x0060) in expo_adjust()
1781 expo = 0x0060; in expo_adjust()
1789 { 0xa0, 0x34, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x10 }; in expo_adjust()
1792 if (expo > 0x03ff) in expo_adjust()
1793 expo = 0x03ff; in expo_adjust()
1794 if (expo < 0x0001) in expo_adjust()
1795 expo = 0x0001; in expo_adjust()
1798 reg_w1(gspca_dev, 0x96, expo >> 5); in expo_adjust()
1813 k2 = (brightness - 0x80) >> 2; in setbrightness()
1816 if (k2 > 0x1f) in setbrightness()
1817 k2 = 0; /* only positive Y offset */ in setbrightness()
1821 if (expo > 0x002dc6c0) in setbrightness()
1822 expo = 0x002dc6c0; in setbrightness()
1823 else if (expo < 0x02a0) in setbrightness()
1824 expo = 0x02a0; in setbrightness()
1850 reg_w1(gspca_dev, 0x96, k2); /* color matrix Y offset */ in setbrightness()
1861 contrast[0] = (k2 + 1) / 2; /* red */ in setcontrast()
1862 contrast[1] = 0; in setcontrast()
1864 contrast[3] = 0; in setcontrast()
1866 contrast[5] = 0; in setcontrast()
1867 reg_w(gspca_dev, 0x84, contrast, sizeof contrast); in setcontrast()
1890 for (i = 0; i < 6; i++) { in setcolors()
1893 reg8a[i * 2 + 1] = (v >> 8) & 0x0f; in setcolors()
1895 reg_w(gspca_dev, 0x8a, reg8a, sizeof reg8a); in setcolors()
1904 {0xc1, 0x6e, 0x16, 0x00, 0x40, 0x00, 0x00, 0x10}; in setredblue()
1906 /* 0x40 = normal value = gain x 1 */ in setredblue()
1912 reg_w1(gspca_dev, 0x05, sd->red_bal->val); in setredblue()
1913 /* reg_w1(gspca_dev, 0x07, 32); */ in setredblue()
1914 reg_w1(gspca_dev, 0x06, sd->blue_bal->val); in setredblue()
1924 0x00, 0x14, 0x1c, 0x1c, 0x1c, 0x1c, 0x1b, 0x1a, in setgamma()
1925 0x18, 0x13, 0x10, 0x0e, 0x08, 0x07, 0x04, 0x02, 0x00 in setgamma()
1949 for (i = 0; i < sizeof gamma; i++) in setgamma()
1952 reg_w(gspca_dev, 0x20, gamma, sizeof gamma); in setgamma()
1961 {0xa1, 0x6e, 0x1a, 0x00, 0x40, 0x00, 0x00, 0x10}; in setexposure()
1966 rexpo[2] = 0x1b; in setexposure()
1982 comb = 0xc0; in setautogain()
1984 comb = 0xa0; in setautogain()
1986 comb |= 0x03; in setautogain()
1987 i2c_w1(&sd->gspca_dev, 0x13, comb); in setautogain()
2003 {0xa1, 0x6e, 0x15, 0x00, 0x40, 0x00, 0x00, 0x15}; in setgain()
2017 comn = 0x18; /* clkdiv = 1, ablcen = 1 */ in sethvflip()
2019 comn |= 0x01; in sethvflip()
2020 i2c_w1(gspca_dev, 0x01, comn); /* sctra */ in sethvflip()
2023 comn = 0x02; in sethvflip()
2025 comn |= 0x80; in sethvflip()
2026 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2029 comn = 0x06; in sethvflip()
2031 comn |= 0x80; in sethvflip()
2032 i2c_w1(gspca_dev, 0x75, comn); in sethvflip()
2035 /* Reg. 0x1E: Timing Generator Control Register 2 (Tgcontrol2) in sethvflip()
2036 * (reset value: 0x0A) in sethvflip()
2037 * bit7: HM: Horizontal Mirror: 0: disable, 1: enable in sethvflip()
2038 * bit6: VM: Vertical Mirror: 0: disable, 1: enable in sethvflip()
2039 * bit5: ST: Shutter Selection: 0: electrical, 1: mechanical in sethvflip()
2040 * bit4: FT: Single Frame Transfer: 0: disable, 1: enable in sethvflip()
2041 * bit3-0: X in sethvflip()
2043 comn = 0x0a; in sethvflip()
2045 comn |= 0x80; in sethvflip()
2047 comn |= 0x40; in sethvflip()
2048 i2c_w1(&sd->gspca_dev, 0x1e, comn); in sethvflip()
2057 reg_w1(gspca_dev, 0x99, sd->sharpness->val); in setsharpness()
2066 reg_w1(gspca_dev, 0x02, /* gpio */ in setillum()
2067 sd->illum->val ? 0x64 : 0x60); in setillum()
2070 reg_w1(gspca_dev, 0x02, in setillum()
2071 sd->illum->val ? 0x77 : 0x74); in setillum()
2073 /* 0x55 : 0x54); * 370i */ in setillum()
2074 /* 0x66 : 0x64); * Clip */ in setillum()
2086 com8 = 0xdf; /* auto gain/wb/expo */ in setfreq()
2088 case 0: /* Banding filter disabled */ in setfreq()
2089 i2c_w1(gspca_dev, 0x13, com8 | 0x20); in setfreq()
2092 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2093 i2c_w1(gspca_dev, 0x3b, 0x0a); in setfreq()
2096 i2c_w1(gspca_dev, 0x13, com8); in setfreq()
2097 i2c_w1(gspca_dev, 0x3b, 0x02); in setfreq()
2101 u8 reg2a = 0, reg2b = 0, reg2d = 0; in setfreq()
2106 reg2a = 0x08; in setfreq()
2107 reg2d = 0x01; in setfreq()
2110 reg2a = 0x11; in setfreq()
2111 reg2d = 0x81; in setfreq()
2116 case 0: /* Banding filter disabled */ in setfreq()
2119 reg2a |= 0x80; in setfreq()
2120 reg2b = 0xac; in setfreq()
2121 reg2d |= 0x04; in setfreq()
2124 reg2a |= 0x80; in setfreq()
2125 reg2d |= 0x04; in setfreq()
2128 i2c_w1(gspca_dev, 0x2a, reg2a); in setfreq()
2129 i2c_w1(gspca_dev, 0x2b, reg2b); in setfreq()
2130 i2c_w1(gspca_dev, 0x2d, reg2d); in setfreq()
2144 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2145 0x08, in setjpegqual()
2147 0x0100, 0, in setjpegqual()
2152 usb_sndctrlpipe(gspca_dev->dev, 0), in setjpegqual()
2153 0x08, in setjpegqual()
2155 0x0140, 0, in setjpegqual()
2159 sd->reg18 ^= 0x40; in setjpegqual()
2160 reg_w1(gspca_dev, 0x18, sd->reg18); in setjpegqual()
2173 gspca_dev->usb_err = 0; in qual_upd()
2190 {0x00, 0x40, 0x20, 0x00, 0x00, 0x00}; in sd_start()
2192 {0x00, 0x40, 0x38, 0x30, 0x00, 0x20}; in sd_start()
2193 static const u8 regd4[] = {0x60, 0x00, 0x00}; in sd_start()
2194 static const u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f }; in sd_start()
2195 static const u8 CA[] = { 0x28, 0xd8, 0x14, 0xec }; in sd_start()
2197 { 0x14, 0xec, 0x0a, 0xf6 }; in sd_start()
2199 { 0x1e, 0xe2, 0x14, 0xec }; in sd_start()
2200 static const u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */ in sd_start()
2202 { 0x32, 0xce, 0x2d, 0xd3 }; in sd_start()
2204 { 0x32, 0xdd, 0x32, 0xdd }; in sd_start()
2206 { 0x14, 0xe7, 0x1e, 0xdd }; in sd_start()
2211 0x21); /* JPEG 422 */ in sd_start()
2217 /* reg_w1(gspca_dev, 0xf1, 0x00); */ in sd_start()
2221 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2224 reg0102[0] = reg01; in sd_start()
2227 reg0102[1] |= 0x04; /* keep the audio connection */ in sd_start()
2228 reg_w(gspca_dev, 0x01, reg0102, 2); in sd_start()
2229 reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2); in sd_start()
2230 reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5); in sd_start()
2244 reg_w(gspca_dev, 0x9a, reg9a, 6); in sd_start()
2246 reg_w(gspca_dev, 0xd4, regd4, sizeof regd4); in sd_start()
2248 reg_w(gspca_dev, 0x03, &sn9c1xx[3], 0x0f); in sd_start()
2250 reg17 = sn9c1xx[0x17]; in sd_start()
2257 reg_w1(gspca_dev, 0x02, 0x73); in sd_start()
2259 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2260 reg_w1(gspca_dev, 0x01, 0x22); in sd_start()
2264 reg17 |= 0x04; /* clock / 4 */ in sd_start()
2268 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2270 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2272 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2274 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2282 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2283 i2c_w8(gspca_dev, om6802_init0[0]); in sd_start()
2286 reg_w1(gspca_dev, 0x02, 0x71); in sd_start()
2291 reg_w1(gspca_dev, 0x02, 0x62); in sd_start()
2298 reg_w1(gspca_dev, 0x15, sn9c1xx[0x15]); in sd_start()
2299 reg_w1(gspca_dev, 0x16, sn9c1xx[0x16]); in sd_start()
2300 reg_w1(gspca_dev, 0x12, sn9c1xx[0x12]); in sd_start()
2301 reg_w1(gspca_dev, 0x13, sn9c1xx[0x13]); in sd_start()
2302 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2304 reg_w1(gspca_dev, 0xd2, 0x3a); /* AE_H_SIZE = 116 */ in sd_start()
2305 reg_w1(gspca_dev, 0xd3, 0x30); /* AE_V_SIZE = 96 */ in sd_start()
2307 reg_w1(gspca_dev, 0xd2, 0x6a); /* AE_H_SIZE = 212 */ in sd_start()
2308 reg_w1(gspca_dev, 0xd3, 0x50); /* AE_V_SIZE = 160 */ in sd_start()
2310 reg_w1(gspca_dev, 0xc6, 0x00); in sd_start()
2311 reg_w1(gspca_dev, 0xc7, 0x00); in sd_start()
2313 reg_w1(gspca_dev, 0xc8, 0x2c); /* AW_H_STOP = 352 */ in sd_start()
2314 reg_w1(gspca_dev, 0xc9, 0x24); /* AW_V_STOP = 288 */ in sd_start()
2316 reg_w1(gspca_dev, 0xc8, 0x50); /* AW_H_STOP = 640 */ in sd_start()
2317 reg_w1(gspca_dev, 0xc9, 0x3c); /* AW_V_STOP = 480 */ in sd_start()
2319 reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]); in sd_start()
2328 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2330 reg_w1(gspca_dev, 0x05, 0x00); /* red */ in sd_start()
2331 reg_w1(gspca_dev, 0x07, 0x00); /* green */ in sd_start()
2332 reg_w1(gspca_dev, 0x06, 0x00); /* blue */ in sd_start()
2333 reg_w1(gspca_dev, 0x14, sn9c1xx[0x14]); in sd_start()
2338 for (i = 0; i < 8; i++) in sd_start()
2339 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2344 reg_w1(gspca_dev, 0x9a, 0x05); in sd_start()
2349 reg_w1(gspca_dev, 0x9a, 0x07); in sd_start()
2353 reg_w1(gspca_dev, 0x9a, 0x0a); in sd_start()
2357 reg_w1(gspca_dev, 0x9a, 0x06); in sd_start()
2360 reg_w1(gspca_dev, 0x9a, 0x08); in sd_start()
2365 reg_w(gspca_dev, 0x84, reg84, sizeof reg84); in sd_start()
2366 reg_w1(gspca_dev, 0x05, 0x20); /* red */ in sd_start()
2367 reg_w1(gspca_dev, 0x07, 0x20); /* green */ in sd_start()
2368 reg_w1(gspca_dev, 0x06, 0x20); /* blue */ in sd_start()
2374 reg17 |= 0x02; /* clock / 2 */ in sd_start()
2387 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2396 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2406 reg17 |= 0x04; /* clock / 4 */ in sd_start()
2410 reg17 |= 0x02; /* clock / 2 */ in sd_start()
2419 reg17 |= 0x01; /* clock / 1 */ in sd_start()
2444 reg_w(gspca_dev, 0xc0, C0, 6); in sd_start()
2449 reg_w(gspca_dev, 0xca, CA_adcm1700, 4); in sd_start()
2452 reg_w(gspca_dev, 0xca, CA_po2030n, 4); in sd_start()
2455 reg_w(gspca_dev, 0xca, CA, 4); in sd_start()
2464 reg_w(gspca_dev, 0xce, CE_ov76xx, 4); in sd_start()
2467 reg_w(gspca_dev, 0xce, CE_gc0307, 4); in sd_start()
2470 reg_w(gspca_dev, 0xce, CE_po2030n, 4); in sd_start()
2473 reg_w(gspca_dev, 0xce, CE, 4); in sd_start()
2474 /* ?? {0x1e, 0xdd, 0x2d, 0xe7} */ in sd_start()
2478 /* here change size mode 0 -> VGA; 1 -> CIF */ in sd_start()
2479 sd->reg18 = sn9c1xx[0x18] | (mode << 4) | 0x40; in sd_start()
2480 reg_w1(gspca_dev, 0x18, sd->reg18); in sd_start()
2483 reg_w1(gspca_dev, 0x17, reg17); in sd_start()
2484 reg_w1(gspca_dev, 0x01, reg01); in sd_start()
2488 sd->pktsz = sd->npkt = 0; in sd_start()
2489 sd->nchg = sd->short_mark = 0; in sd_start()
2498 { 0xa1, 0x11, 0x02, 0x09, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2500 { 0xb1, 0x5d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2502 { 0xa1, 0x21, 0x76, 0x20, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2504 { 0xa1, 0x21, 0x12, 0x80, 0x00, 0x00, 0x00, 0x10 }; in sd_stopN()
2516 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2518 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2519 /* reg_w1(gspca_dev, 0x02, 0x??); * LED off ? */ in sd_stopN()
2523 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2529 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2530 /* reg_w1(gspca_dev, 0x02, 0x40); * LED off ? */ in sd_stopN()
2537 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2542 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2547 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2555 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2557 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2558 reg_w1(gspca_dev, 0x17, reg17); in sd_stopN()
2560 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2562 reg_w1(gspca_dev, 0x01, reg01); in sd_stopN()
2564 /* reg_w1(gspca_dev, 0xf1, 0x01); */ in sd_stopN()
2567 /* called on streamoff with alt==0 and on disconnect */
2587 if (sd->ag_cnt < 0) in do_autogain()
2589 if (--sd->ag_cnt >= 0) in do_autogain()
2608 if (expotimes < 0) in do_autogain()
2609 expotimes = 0; in do_autogain()
2616 if (expotimes < 0) in do_autogain()
2617 expotimes = 0; in do_autogain()
2625 if (expotimes < 0) in do_autogain()
2626 expotimes = 0; in do_autogain()
2637 if (expotimes < 0) in do_autogain()
2638 expotimes = 0; in do_autogain()
2688 * 0x08: USB full in sd_pkt_scan()
2689 * 0xc0: frame sequence in sd_pkt_scan()
2705 if (i != 0) { in sd_pkt_scan()
2706 sd->short_mark = 0; in sd_pkt_scan()
2707 if (i < 0 /* if 'ff' at end of previous packet */ in sd_pkt_scan()
2708 && data[0] == 0xff in sd_pkt_scan()
2709 && data[1] == 0x00) in sd_pkt_scan()
2711 if (data[0] == 0xff && data[1] == 0xff) { in sd_pkt_scan()
2712 i = 0; in sd_pkt_scan()
2716 if (len <= 0) in sd_pkt_scan()
2722 for (i = len - 1; --i >= 0; ) { in sd_pkt_scan()
2723 if (data[i] != 0xff) { in sd_pkt_scan()
2727 if (data[i + 1] == 0xff) { in sd_pkt_scan()
2730 if (i + 2 >= len || data[i + 2] == 0x00) in sd_pkt_scan()
2737 if (data[len - 1] == 0xff) in sd_pkt_scan()
2748 new_qual = 0; in sd_pkt_scan()
2750 if (data[i - 2] != 0xff || data[i - 1] != 0xd9) { in sd_pkt_scan()
2755 if (data[i + 6] & 0x08) { in sd_pkt_scan()
2764 if (new_qual == 0) { in sd_pkt_scan()
2769 gspca_dev->urb[0]->iso_frame_desc[0].length); in sd_pkt_scan()
2775 if (new_qual != 0) { in sd_pkt_scan()
2778 sd->nchg = 0; in sd_pkt_scan()
2790 sd->nchg = 0; in sd_pkt_scan()
2792 sd->pktsz = sd->npkt = 0; in sd_pkt_scan()
2800 if (sd->ag_cnt >= 0) in sd_pkt_scan()
2819 gspca_dev->usb_err = 0; in sd_s_ctrl()
2822 return 0; in sd_s_ctrl()
2870 if (len == 1 && data[0] == 1) { in sd_int_pkt_scan()
2873 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
2875 ret = 0; in sd_int_pkt_scan()
2907 {USB_DEVICE(0x0458, 0x7025), BSF(SN9C120, MI0360B, F_PDN_INV)},
2908 {USB_DEVICE(0x0458, 0x702e), BS(SN9C120, OV7660)},
2909 {USB_DEVICE(0x045e, 0x00f5), BSF(SN9C105, OV7660, F_PDN_INV)},
2910 {USB_DEVICE(0x045e, 0x00f7), BSF(SN9C105, OV7660, F_PDN_INV)},
2911 {USB_DEVICE(0x0471, 0x0327), BS(SN9C105, MI0360)},
2912 {USB_DEVICE(0x0471, 0x0328), BS(SN9C105, MI0360)},
2913 {USB_DEVICE(0x0471, 0x0330), BS(SN9C105, MI0360)},
2914 {USB_DEVICE(0x06f8, 0x3004), BS(SN9C105, OV7660)},
2915 {USB_DEVICE(0x06f8, 0x3008), BS(SN9C105, OV7660)},
2916 /* {USB_DEVICE(0x0c45, 0x603a), BS(SN9C102P, OV7648)}, */
2917 {USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, HV7131R)},
2918 /* {USB_DEVICE(0x0c45, 0x607a), BS(SN9C102P, OV7648)}, */
2919 /* {USB_DEVICE(0x0c45, 0x607b), BS(SN9C102P, OV7660)}, */
2920 {USB_DEVICE(0x0c45, 0x607c), BS(SN9C102P, HV7131R)},
2921 /* {USB_DEVICE(0x0c45, 0x607e), BS(SN9C102P, OV7630)}, */
2922 {USB_DEVICE(0x0c45, 0x60c0), BSF(SN9C105, MI0360, F_ILLUM)},
2924 /* {USB_DEVICE(0x0c45, 0x60c2), BS(SN9C105, P1030xC)}, */
2925 /* {USB_DEVICE(0x0c45, 0x60c8), BS(SN9C105, OM6802)}, */
2926 /* {USB_DEVICE(0x0c45, 0x60cc), BS(SN9C105, HV7131GP)}, */
2927 {USB_DEVICE(0x0c45, 0x60ce), BS(SN9C105, SP80708)},
2928 {USB_DEVICE(0x0c45, 0x60ec), BS(SN9C105, MO4000)},
2929 /* {USB_DEVICE(0x0c45, 0x60ef), BS(SN9C105, ICM105C)}, */
2930 /* {USB_DEVICE(0x0c45, 0x60fa), BS(SN9C105, OV7648)}, */
2931 /* {USB_DEVICE(0x0c45, 0x60f2), BS(SN9C105, OV7660)}, */
2932 {USB_DEVICE(0x0c45, 0x60fb), BS(SN9C105, OV7660)},
2933 {USB_DEVICE(0x0c45, 0x60fc), BS(SN9C105, HV7131R)},
2934 {USB_DEVICE(0x0c45, 0x60fe), BS(SN9C105, OV7630)},
2935 {USB_DEVICE(0x0c45, 0x6100), BS(SN9C120, MI0360)}, /*sn9c128*/
2936 {USB_DEVICE(0x0c45, 0x6102), BS(SN9C120, PO2030N)}, /* /GC0305*/
2937 /* {USB_DEVICE(0x0c45, 0x6108), BS(SN9C120, OM6802)}, */
2938 {USB_DEVICE(0x0c45, 0x610a), BS(SN9C120, OV7648)}, /*sn9c128*/
2939 {USB_DEVICE(0x0c45, 0x610b), BS(SN9C120, OV7660)}, /*sn9c128*/
2940 {USB_DEVICE(0x0c45, 0x610c), BS(SN9C120, HV7131R)}, /*sn9c128*/
2941 {USB_DEVICE(0x0c45, 0x610e), BS(SN9C120, OV7630)}, /*sn9c128*/
2942 /* {USB_DEVICE(0x0c45, 0x610f), BS(SN9C120, S5K53BEB)}, */
2943 /* {USB_DEVICE(0x0c45, 0x6122), BS(SN9C110, ICM105C)}, */
2944 /* {USB_DEVICE(0x0c45, 0x6123), BS(SN9C110, SanyoCCD)}, */
2945 {USB_DEVICE(0x0c45, 0x6128), BS(SN9C120, OM6802)}, /*sn9c325?*/
2947 {USB_DEVICE(0x0c45, 0x612a), BS(SN9C120, OV7648)}, /*sn9c325?*/
2948 {USB_DEVICE(0x0c45, 0x612b), BS(SN9C110, ADCM1700)},
2949 {USB_DEVICE(0x0c45, 0x612c), BS(SN9C110, MO4000)},
2950 {USB_DEVICE(0x0c45, 0x612e), BS(SN9C110, OV7630)},
2951 /* {USB_DEVICE(0x0c45, 0x612f), BS(SN9C110, ICM105C)}, */
2952 {USB_DEVICE(0x0c45, 0x6130), BS(SN9C120, MI0360)},
2954 /* {USB_DEVICE(0x0c45, 0x6132), BS(SN9C120, OV7670)}, */
2955 {USB_DEVICE(0x0c45, 0x6138), BS(SN9C120, MO4000)},
2956 {USB_DEVICE(0x0c45, 0x613a), BS(SN9C120, OV7648)},
2957 {USB_DEVICE(0x0c45, 0x613b), BS(SN9C120, OV7660)},
2958 {USB_DEVICE(0x0c45, 0x613c), BS(SN9C120, HV7131R)},
2959 {USB_DEVICE(0x0c45, 0x613e), BS(SN9C120, OV7630)},
2960 {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, /*sn9c120b*/
2962 {USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)}, /*sn9c120b*/
2963 {USB_DEVICE(0x0c45, 0x6148), BS(SN9C120, OM6802)}, /*sn9c120b*/
2964 {USB_DEVICE(0x0c45, 0x614a), BSF(SN9C120, ADCM1700, F_ILLUM)},
2965 /* {USB_DEVICE(0x0c45, 0x614c), BS(SN9C120, GC0306)}, */ /*sn9c120b*/