diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:50:49 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-09 22:50:49 -0500 |
commit | 3e7468313758913c5e4d372f35b271b96bad1298 (patch) | |
tree | eb612d252a9e2349a1173451cd779beebd18a33e /drivers/media/video/gspca/zc3xx.c | |
parent | 6825fbc4cb219f2c98bb7d157915d797cf5cb823 (diff) | |
parent | e97f4677961f68e29bd906022ebf60a6df7f530a (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (345 commits)
V4L/DVB (13542): ir-keytable: Allow dynamic table change
V4L/DVB (13541): atbm8830: replace 64-bit division and floating point usage
V4L/DVB (13540): ir-common: Cleanup get key evdev code
V4L/DVB (13539): ir-common: add __func__ for debug messages
V4L/DVB (13538): ir-common: Use a dynamic keycode table
V4L/DVB (13537): ir: Prepare the code for dynamic keycode table allocation
V4L/DVB (13536): em28xx: Use the full RC5 code on HVR-950 Remote Controller
V4L/DVB (13535): ir-common: Add a hauppauge new table with the complete RC5 code
V4L/DVB (13534): ir-common: Remove some unused fields/structs
V4L/DVB (13533): ir: use dynamic tables, instead of static ones
V4L/DVB (13532): ir-common: Add infrastructure to use a dynamic keycode table
V4L/DVB (13531): ir-common: rename the debug routine to allow exporting it
V4L/DVB (13458): go7007: subdev conversion
V4L/DVB (13457): s2250: subdev conversion
V4L/DVB (13456): s2250: Change module structure
V4L/DVB (13528): em28xx: add support for em2800 VC211A card
em28xx: don't reduce scale to half size for em2800
em28xx: don't load audio modules when AC97 is mis-detected
em28xx: em2800 chips support max width of 640
V4L/DVB (13523): dvb-bt8xx: fix compile warning
...
Fix up trivial conflicts due to spelling fixes from the trivial tree in
Documentation/video4linux/gspca.txt
drivers/media/video/cx18/cx18-mailbox.h
Diffstat (limited to 'drivers/media/video/gspca/zc3xx.c')
-rw-r--r-- | drivers/media/video/gspca/zc3xx.c | 1470 |
1 files changed, 527 insertions, 943 deletions
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c index 49c3c1226e0e..69e5dc4fc9de 100644 --- a/drivers/media/video/gspca/zc3xx.c +++ b/drivers/media/video/gspca/zc3xx.c | |||
@@ -61,17 +61,18 @@ struct sd { | |||
61 | #define SENSOR_HV7131C 6 | 61 | #define SENSOR_HV7131C 6 |
62 | #define SENSOR_ICM105A 7 | 62 | #define SENSOR_ICM105A 7 |
63 | #define SENSOR_MC501CB 8 | 63 | #define SENSOR_MC501CB 8 |
64 | #define SENSOR_OV7620 9 | 64 | #define SENSOR_MI0360SOC 9 |
65 | /*#define SENSOR_OV7648 9 - same values */ | 65 | #define SENSOR_OV7620 10 |
66 | #define SENSOR_OV7630C 10 | 66 | /*#define SENSOR_OV7648 10 - same values */ |
67 | #define SENSOR_PAS106 11 | 67 | #define SENSOR_OV7630C 11 |
68 | #define SENSOR_PAS202B 12 | 68 | #define SENSOR_PAS106 12 |
69 | #define SENSOR_PB0330 13 | 69 | #define SENSOR_PAS202B 13 |
70 | #define SENSOR_PO2030 14 | 70 | #define SENSOR_PB0330 14 /* (MI0360) */ |
71 | #define SENSOR_TAS5130CK 15 | 71 | #define SENSOR_PO2030 15 |
72 | #define SENSOR_TAS5130CXX 16 | 72 | #define SENSOR_TAS5130CK 16 |
73 | #define SENSOR_TAS5130C_VF0250 17 | 73 | #define SENSOR_TAS5130CXX 17 |
74 | #define SENSOR_MAX 18 | 74 | #define SENSOR_TAS5130C_VF0250 18 |
75 | #define SENSOR_MAX 19 | ||
75 | unsigned short chip_revision; | 76 | unsigned short chip_revision; |
76 | 77 | ||
77 | u8 *jpeg_hdr; | 78 | u8 *jpeg_hdr; |
@@ -420,9 +421,7 @@ static const struct usb_action adcm2700_NoFliker[] = { | |||
420 | {0xaa, 0xfe, 0x0010}, /* 00,fe,10,aa */ | 421 | {0xaa, 0xfe, 0x0010}, /* 00,fe,10,aa */ |
421 | {} | 422 | {} |
422 | }; | 423 | }; |
423 | static const struct usb_action cs2102_Initial[] = { | 424 | static const struct usb_action cs2102_Initial[] = { /* 320x240 */ |
424 | {0xa1, 0x01, 0x0008}, | ||
425 | {0xa1, 0x01, 0x0008}, | ||
426 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 425 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
427 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 426 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, |
428 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 427 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, |
@@ -471,88 +470,10 @@ static const struct usb_action cs2102_Initial[] = { | |||
471 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 470 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
472 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 471 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, |
473 | {0xa0, 0x00, 0x01ad}, | 472 | {0xa0, 0x00, 0x01ad}, |
474 | {0xa1, 0x01, 0x0002}, | ||
475 | {0xa1, 0x01, 0x0008}, | ||
476 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ | ||
477 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | ||
478 | {0xa1, 0x01, 0x01c8}, | ||
479 | {0xa1, 0x01, 0x01c9}, | ||
480 | {0xa1, 0x01, 0x01ca}, | ||
481 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
482 | {0xa0, 0x24, ZC3XX_R120_GAMMA00}, /* gamma 5 */ | ||
483 | {0xa0, 0x44, ZC3XX_R121_GAMMA01}, | ||
484 | {0xa0, 0x64, ZC3XX_R122_GAMMA02}, | ||
485 | {0xa0, 0x84, ZC3XX_R123_GAMMA03}, | ||
486 | {0xa0, 0x9d, ZC3XX_R124_GAMMA04}, | ||
487 | {0xa0, 0xb2, ZC3XX_R125_GAMMA05}, | ||
488 | {0xa0, 0xc4, ZC3XX_R126_GAMMA06}, | ||
489 | {0xa0, 0xd3, ZC3XX_R127_GAMMA07}, | ||
490 | {0xa0, 0xe0, ZC3XX_R128_GAMMA08}, | ||
491 | {0xa0, 0xeb, ZC3XX_R129_GAMMA09}, | ||
492 | {0xa0, 0xf4, ZC3XX_R12A_GAMMA0A}, | ||
493 | {0xa0, 0xfb, ZC3XX_R12B_GAMMA0B}, | ||
494 | {0xa0, 0xff, ZC3XX_R12C_GAMMA0C}, | ||
495 | {0xa0, 0xff, ZC3XX_R12D_GAMMA0D}, | ||
496 | {0xa0, 0xff, ZC3XX_R12E_GAMMA0E}, | ||
497 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | ||
498 | {0xa0, 0x18, ZC3XX_R130_GAMMA10}, | ||
499 | {0xa0, 0x20, ZC3XX_R131_GAMMA11}, | ||
500 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | ||
501 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | ||
502 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | ||
503 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | ||
504 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | ||
505 | {0xa0, 0x0e, ZC3XX_R137_GAMMA17}, | ||
506 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | ||
507 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | ||
508 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | ||
509 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | ||
510 | {0xa0, 0x00, ZC3XX_R13C_GAMMA1C}, | ||
511 | {0xa0, 0x00, ZC3XX_R13D_GAMMA1D}, | ||
512 | {0xa0, 0x00, ZC3XX_R13E_GAMMA1E}, | ||
513 | {0xa0, 0x01, ZC3XX_R13F_GAMMA1F}, | ||
514 | {0xa0, 0x58, ZC3XX_R10A_RGB00}, /* matrix */ | ||
515 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | ||
516 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | ||
517 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | ||
518 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | ||
519 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | ||
520 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | ||
521 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | ||
522 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | ||
523 | {0xa1, 0x01, 0x0180}, | ||
524 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
525 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
526 | {0xaa, 0x23, 0x0001}, | ||
527 | {0xaa, 0x24, 0x0055}, | ||
528 | {0xaa, 0x25, 0x00cc}, | ||
529 | {0xaa, 0x21, 0x003f}, | ||
530 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
531 | {0xa0, 0xab, ZC3XX_R191_EXPOSURELIMITMID}, | ||
532 | {0xa0, 0x98, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
533 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
534 | {0xa0, 0x30, ZC3XX_R196_ANTIFLICKERMID}, | ||
535 | {0xa0, 0xd4, ZC3XX_R197_ANTIFLICKERLOW}, | ||
536 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | ||
537 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | ||
538 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
539 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
540 | {0xa0, 0x39, ZC3XX_R01D_HSYNC_0}, | ||
541 | {0xa0, 0x70, ZC3XX_R01E_HSYNC_1}, | ||
542 | {0xa0, 0xb0, ZC3XX_R01F_HSYNC_2}, | ||
543 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
544 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
545 | {0xa1, 0x01, 0x0180}, | ||
546 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
547 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | ||
548 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | ||
549 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | ||
550 | {} | 473 | {} |
551 | }; | 474 | }; |
552 | 475 | ||
553 | static const struct usb_action cs2102_InitialScale[] = { | 476 | static const struct usb_action cs2102_InitialScale[] = { /* 640x480 */ |
554 | {0xa1, 0x01, 0x0008}, | ||
555 | {0xa1, 0x01, 0x0008}, | ||
556 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 477 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
557 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 478 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, |
558 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 479 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, |
@@ -601,57 +522,75 @@ static const struct usb_action cs2102_InitialScale[] = { | |||
601 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 522 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
602 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 523 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, |
603 | {0xa0, 0x00, 0x01ad}, | 524 | {0xa0, 0x00, 0x01ad}, |
604 | {0xa1, 0x01, 0x0002}, | 525 | {} |
605 | {0xa1, 0x01, 0x0008}, | 526 | }; |
606 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ | 527 | static const struct usb_action cs2102_50HZ[] = { |
607 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | 528 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
608 | {0xa1, 0x01, 0x01c8}, | 529 | {0xaa, 0x23, 0x0001}, |
609 | {0xa1, 0x01, 0x01c9}, | 530 | {0xaa, 0x24, 0x005f}, |
610 | {0xa1, 0x01, 0x01ca}, | 531 | {0xaa, 0x25, 0x0090}, |
611 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | 532 | {0xaa, 0x21, 0x00dd}, |
612 | {0xa0, 0x24, ZC3XX_R120_GAMMA00}, /* gamma 5 */ | 533 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, |
613 | {0xa0, 0x44, ZC3XX_R121_GAMMA01}, | 534 | {0xa0, 0xbf, ZC3XX_R191_EXPOSURELIMITMID}, |
614 | {0xa0, 0x64, ZC3XX_R122_GAMMA02}, | 535 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, |
615 | {0xa0, 0x84, ZC3XX_R123_GAMMA03}, | 536 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
616 | {0xa0, 0x9d, ZC3XX_R124_GAMMA04}, | 537 | {0xa0, 0x3a, ZC3XX_R196_ANTIFLICKERMID}, |
617 | {0xa0, 0xb2, ZC3XX_R125_GAMMA05}, | 538 | {0xa0, 0x98, ZC3XX_R197_ANTIFLICKERLOW}, |
618 | {0xa0, 0xc4, ZC3XX_R126_GAMMA06}, | 539 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
619 | {0xa0, 0xd3, ZC3XX_R127_GAMMA07}, | 540 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
620 | {0xa0, 0xe0, ZC3XX_R128_GAMMA08}, | 541 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
621 | {0xa0, 0xeb, ZC3XX_R129_GAMMA09}, | 542 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
622 | {0xa0, 0xf4, ZC3XX_R12A_GAMMA0A}, | 543 | {0xa0, 0xdd, ZC3XX_R01D_HSYNC_0}, |
623 | {0xa0, 0xfb, ZC3XX_R12B_GAMMA0B}, | 544 | {0xa0, 0xe4, ZC3XX_R01E_HSYNC_1}, |
624 | {0xa0, 0xff, ZC3XX_R12C_GAMMA0C}, | 545 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, |
625 | {0xa0, 0xff, ZC3XX_R12D_GAMMA0D}, | 546 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
626 | {0xa0, 0xff, ZC3XX_R12E_GAMMA0E}, | 547 | {} |
627 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 548 | }; |
628 | {0xa0, 0x18, ZC3XX_R130_GAMMA10}, | 549 | static const struct usb_action cs2102_50HZScale[] = { |
629 | {0xa0, 0x20, ZC3XX_R131_GAMMA11}, | 550 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
630 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 551 | {0xaa, 0x23, 0x0000}, |
631 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 552 | {0xaa, 0x24, 0x00af}, |
632 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 553 | {0xaa, 0x25, 0x00c8}, |
633 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 554 | {0xaa, 0x21, 0x0068}, |
634 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 555 | {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH}, |
635 | {0xa0, 0x0e, ZC3XX_R137_GAMMA17}, | 556 | {0xa0, 0x5f, ZC3XX_R191_EXPOSURELIMITMID}, |
636 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 557 | {0xa0, 0x90, ZC3XX_R192_EXPOSURELIMITLOW}, |
637 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 558 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
638 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 559 | {0xa0, 0x1d, ZC3XX_R196_ANTIFLICKERMID}, |
639 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 560 | {0xa0, 0x4c, ZC3XX_R197_ANTIFLICKERLOW}, |
640 | {0xa0, 0x00, ZC3XX_R13C_GAMMA1C}, | 561 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
641 | {0xa0, 0x00, ZC3XX_R13D_GAMMA1D}, | 562 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
642 | {0xa0, 0x00, ZC3XX_R13E_GAMMA1E}, | 563 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
643 | {0xa0, 0x01, ZC3XX_R13F_GAMMA1F}, | 564 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
644 | {0xa0, 0x58, ZC3XX_R10A_RGB00}, /* matrix */ | 565 | {0xa0, 0x68, ZC3XX_R01D_HSYNC_0}, |
645 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | 566 | {0xa0, 0xe3, ZC3XX_R01E_HSYNC_1}, |
646 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 567 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, |
647 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | 568 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
648 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | 569 | {} |
649 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | 570 | }; |
650 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | 571 | static const struct usb_action cs2102_60HZ[] = { |
651 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | 572 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
652 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | 573 | {0xaa, 0x23, 0x0001}, |
653 | {0xa1, 0x01, 0x0180}, | 574 | {0xaa, 0x24, 0x0055}, |
654 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 575 | {0xaa, 0x25, 0x00cc}, |
576 | {0xaa, 0x21, 0x003f}, | ||
577 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
578 | {0xa0, 0xab, ZC3XX_R191_EXPOSURELIMITMID}, | ||
579 | {0xa0, 0x98, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
580 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
581 | {0xa0, 0x30, ZC3XX_R196_ANTIFLICKERMID}, | ||
582 | {0xa0, 0xd4, ZC3XX_R197_ANTIFLICKERLOW}, | ||
583 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | ||
584 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | ||
585 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
586 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
587 | {0xa0, 0x39, ZC3XX_R01D_HSYNC_0}, | ||
588 | {0xa0, 0x70, ZC3XX_R01E_HSYNC_1}, | ||
589 | {0xa0, 0xb0, ZC3XX_R01F_HSYNC_2}, | ||
590 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
591 | {} | ||
592 | }; | ||
593 | static const struct usb_action cs2102_60HZScale[] = { | ||
655 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 594 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
656 | {0xaa, 0x23, 0x0000}, | 595 | {0xaa, 0x23, 0x0000}, |
657 | {0xaa, 0x24, 0x00aa}, | 596 | {0xaa, 0x24, 0x00aa}, |
@@ -671,162 +610,50 @@ static const struct usb_action cs2102_InitialScale[] = { | |||
671 | {0xa0, 0xa5, ZC3XX_R01E_HSYNC_1}, | 610 | {0xa0, 0xa5, ZC3XX_R01E_HSYNC_1}, |
672 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, | 611 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, |
673 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 612 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
674 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
675 | {0xa1, 0x01, 0x0180}, | ||
676 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
677 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | ||
678 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | ||
679 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | ||
680 | {} | ||
681 | }; | ||
682 | static const struct usb_action cs2102_50HZ[] = { | ||
683 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | ||
684 | {0xaa, 0x0f, 0x008c}, /* 00,0f,8c,aa */ | ||
685 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | ||
686 | {0xaa, 0x04, 0x00ac}, /* 00,04,ac,aa */ | ||
687 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | ||
688 | {0xaa, 0x11, 0x00ac}, /* 00,11,ac,aa */ | ||
689 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | ||
690 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | ||
691 | {0xaa, 0x1d, 0x00ac}, /* 00,1d,ac,aa */ | ||
692 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
693 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | ||
694 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | ||
695 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
696 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
697 | {0xa0, 0x42, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,42,cc */ | ||
698 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
699 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
700 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | ||
701 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */ | ||
702 | {0xa0, 0x8c, ZC3XX_R01D_HSYNC_0}, /* 00,1d,8c,cc */ | ||
703 | {0xa0, 0xb0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,b0,cc */ | ||
704 | {0xa0, 0xd0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,d0,cc */ | ||
705 | {} | ||
706 | }; | ||
707 | static const struct usb_action cs2102_50HZScale[] = { | ||
708 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | ||
709 | {0xaa, 0x0f, 0x0093}, /* 00,0f,93,aa */ | ||
710 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | ||
711 | {0xaa, 0x04, 0x00a1}, /* 00,04,a1,aa */ | ||
712 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | ||
713 | {0xaa, 0x11, 0x00a1}, /* 00,11,a1,aa */ | ||
714 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | ||
715 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | ||
716 | {0xaa, 0x1d, 0x00a1}, /* 00,1d,a1,aa */ | ||
717 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
718 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | ||
719 | {0xa0, 0xf7, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f7,cc */ | ||
720 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
721 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
722 | {0xa0, 0x83, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,83,cc */ | ||
723 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
724 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
725 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | ||
726 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */ | ||
727 | {0xa0, 0x93, ZC3XX_R01D_HSYNC_0}, /* 00,1d,93,cc */ | ||
728 | {0xa0, 0xb0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,b0,cc */ | ||
729 | {0xa0, 0xd0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,d0,cc */ | ||
730 | {} | ||
731 | }; | ||
732 | static const struct usb_action cs2102_60HZ[] = { | ||
733 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | ||
734 | {0xaa, 0x0f, 0x005d}, /* 00,0f,5d,aa */ | ||
735 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | ||
736 | {0xaa, 0x04, 0x00aa}, /* 00,04,aa,aa */ | ||
737 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | ||
738 | {0xaa, 0x11, 0x00aa}, /* 00,11,aa,aa */ | ||
739 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | ||
740 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | ||
741 | {0xaa, 0x1d, 0x00aa}, /* 00,1d,aa,aa */ | ||
742 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
743 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | ||
744 | {0xa0, 0xe4, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,e4,cc */ | ||
745 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
746 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
747 | {0xa0, 0x3a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3a,cc */ | ||
748 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
749 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
750 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | ||
751 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */ | ||
752 | {0xa0, 0x5d, ZC3XX_R01D_HSYNC_0}, /* 00,1d,5d,cc */ | ||
753 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */ | ||
754 | {0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */ | ||
755 | {} | ||
756 | }; | ||
757 | static const struct usb_action cs2102_60HZScale[] = { | ||
758 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | ||
759 | {0xaa, 0x0f, 0x00b7}, /* 00,0f,b7,aa */ | ||
760 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | ||
761 | {0xaa, 0x04, 0x00be}, /* 00,04,be,aa */ | ||
762 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | ||
763 | {0xaa, 0x11, 0x00be}, /* 00,11,be,aa */ | ||
764 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | ||
765 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | ||
766 | {0xaa, 0x1d, 0x00be}, /* 00,1d,be,aa */ | ||
767 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
768 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | ||
769 | {0xa0, 0xfc, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,fc,cc */ | ||
770 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
771 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
772 | {0xa0, 0x69, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,69,cc */ | ||
773 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
774 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
775 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | ||
776 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */ | ||
777 | {0xa0, 0xb7, ZC3XX_R01D_HSYNC_0}, /* 00,1d,b7,cc */ | ||
778 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | ||
779 | {0xa0, 0xe8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e8,cc */ | ||
780 | {} | 613 | {} |
781 | }; | 614 | }; |
782 | static const struct usb_action cs2102_NoFliker[] = { | 615 | static const struct usb_action cs2102_NoFliker[] = { |
783 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 616 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
784 | {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */ | 617 | {0xaa, 0x23, 0x0001}, |
785 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | 618 | {0xaa, 0x24, 0x005f}, |
786 | {0xaa, 0x04, 0x0080}, /* 00,04,80,aa */ | 619 | {0xaa, 0x25, 0x0000}, |
787 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | 620 | {0xaa, 0x21, 0x0001}, |
788 | {0xaa, 0x11, 0x0080}, /* 00,11,80,aa */ | 621 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, |
789 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | 622 | {0xa0, 0xbf, ZC3XX_R191_EXPOSURELIMITMID}, |
790 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | 623 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, |
791 | {0xaa, 0x1d, 0x0080}, /* 00,1d,80,aa */ | 624 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
792 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 625 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
793 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | 626 | {0xa0, 0x80, ZC3XX_R197_ANTIFLICKERLOW}, |
794 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 627 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
795 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 628 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
796 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 629 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
797 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 630 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, |
798 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 631 | {0xa0, 0x01, ZC3XX_R01D_HSYNC_0}, |
799 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 632 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, |
800 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 633 | {0xa0, 0xa0, ZC3XX_R01F_HSYNC_2}, |
801 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 634 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
802 | {0xa0, 0x59, ZC3XX_R01D_HSYNC_0}, /* 00,1d,59,cc */ | ||
803 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */ | ||
804 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */ | ||
805 | {} | 635 | {} |
806 | }; | 636 | }; |
807 | static const struct usb_action cs2102_NoFlikerScale[] = { | 637 | static const struct usb_action cs2102_NoFlikerScale[] = { |
808 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 638 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
809 | {0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */ | 639 | {0xaa, 0x23, 0x0000}, |
810 | {0xaa, 0x03, 0x0005}, /* 00,03,05,aa */ | 640 | {0xaa, 0x24, 0x00af}, |
811 | {0xaa, 0x04, 0x0080}, /* 00,04,80,aa */ | 641 | {0xaa, 0x25, 0x0080}, |
812 | {0xaa, 0x10, 0x0005}, /* 00,10,05,aa */ | 642 | {0xaa, 0x21, 0x0001}, |
813 | {0xaa, 0x11, 0x0080}, /* 00,11,80,aa */ | 643 | {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH}, |
814 | {0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */ | 644 | {0xa0, 0x5f, ZC3XX_R191_EXPOSURELIMITMID}, |
815 | {0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */ | 645 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW}, |
816 | {0xaa, 0x1d, 0x0080}, /* 00,1d,80,aa */ | 646 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
817 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 647 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
818 | {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */ | 648 | {0xa0, 0x80, ZC3XX_R197_ANTIFLICKERLOW}, |
819 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 649 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
820 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 650 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
821 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 651 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
822 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 652 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, |
823 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 653 | {0xa0, 0x01, ZC3XX_R01D_HSYNC_0}, |
824 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 654 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, |
825 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 655 | {0xa0, 0xa0, ZC3XX_R01F_HSYNC_2}, |
826 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 656 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
827 | {0xa0, 0x59, ZC3XX_R01D_HSYNC_0}, /* 00,1d,59,cc */ | ||
828 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */ | ||
829 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */ | ||
830 | {} | 657 | {} |
831 | }; | 658 | }; |
832 | 659 | ||
@@ -4409,170 +4236,80 @@ static const struct usb_action pas202b_NoFlikerScale[] = { | |||
4409 | {} | 4236 | {} |
4410 | }; | 4237 | }; |
4411 | 4238 | ||
4412 | static const struct usb_action pb03303x_Initial[] = { | 4239 | /* mi0360soc and pb0330 from vm30x.inf for 0ac8:301b and 0ac8:303b 07/02/13 */ |
4240 | static const struct usb_action mi0360soc_Initial[] = { /* 640x480 */ | ||
4413 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 4241 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
4414 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 4242 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, |
4415 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 4243 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, |
4416 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 4244 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, |
4417 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 4245 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, |
4418 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 4246 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, |
4419 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 4247 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, |
4420 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 4248 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, |
4421 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, /* 8b -> dc */ | 4249 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, |
4422 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 4250 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, |
4423 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4251 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, /*jfm: was 03*/ |
4424 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4252 | /* {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, */ |
4425 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 4253 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, |
4426 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 4254 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, |
4427 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 4255 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, |
4428 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 4256 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, |
4429 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 4257 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, |
4258 | {0xdd, 0x00, 0x0200}, | ||
4430 | {0xaa, 0x01, 0x0001}, | 4259 | {0xaa, 0x01, 0x0001}, |
4431 | {0xaa, 0x06, 0x0000}, | 4260 | {0xaa, 0x06, 0x0000}, |
4432 | {0xaa, 0x08, 0x0483}, | 4261 | {0xaa, 0x08, 0x0483}, |
4433 | {0xaa, 0x01, 0x0004}, | 4262 | {0xaa, 0x01, 0x0004}, |
4434 | {0xaa, 0x08, 0x0006}, | 4263 | {0xaa, 0x08, 0x0006}, |
4435 | {0xaa, 0x02, 0x0011}, | 4264 | {0xaa, 0x02, 0x0011}, |
4436 | {0xaa, 0x03, 0x01e7}, | 4265 | {0xaa, 0x03, 0x01e5}, /*jfm: was 01e7*/ |
4437 | {0xaa, 0x04, 0x0287}, | 4266 | {0xaa, 0x04, 0x0285}, /*jfm: was 0287*/ |
4438 | {0xaa, 0x07, 0x3002}, | 4267 | {0xaa, 0x07, 0x3002}, |
4439 | {0xaa, 0x20, 0x1100}, | 4268 | {0xaa, 0x20, 0x5100}, /*jfm: was 1100*/ |
4440 | {0xaa, 0x35, 0x0050}, | 4269 | {0xaa, 0x35, 0x507f}, /*jfm: was 0050*/ |
4441 | {0xaa, 0x30, 0x0005}, | 4270 | {0xaa, 0x30, 0x0005}, |
4442 | {0xaa, 0x31, 0x0000}, | 4271 | {0xaa, 0x31, 0x0000}, |
4443 | {0xaa, 0x58, 0x0078}, | 4272 | {0xaa, 0x58, 0x0078}, |
4444 | {0xaa, 0x62, 0x0411}, | 4273 | {0xaa, 0x62, 0x0411}, |
4445 | {0xaa, 0x2b, 0x0028}, | 4274 | {0xaa, 0x2b, 0x0028}, |
4446 | {0xaa, 0x2c, 0x0030}, | 4275 | {0xaa, 0x2c, 0x007f}, /*jfm: was 0030*/ |
4447 | {0xaa, 0x2d, 0x0030}, | 4276 | {0xaa, 0x2d, 0x007f}, /*jfm: was 0030*/ |
4448 | {0xaa, 0x2e, 0x0028}, | 4277 | {0xaa, 0x2e, 0x007f}, /*jfm: was 0030*/ |
4449 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 4278 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, |
4450 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 4279 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, /*jfm: was 37*/ |
4451 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4280 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4452 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 4281 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
4453 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 4282 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
4454 | {0xa0, 0x00, 0x01ad}, | 4283 | {0xa0, 0x09, 0x01ad}, /*jfm: was 00*/ |
4455 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 4284 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
4456 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 4285 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
4457 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 4286 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
4458 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 4287 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
4459 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 4288 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, |
4460 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 4289 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, /* jfm: was 78 */ |
4461 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 4290 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, |
4462 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 4291 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, |
4463 | |||
4464 | {0xa1, 0x01, 0x0002}, | ||
4465 | {0xa0, 0x09, 0x01ad}, | ||
4466 | {0xa0, 0x15, 0x01ae}, | ||
4467 | {0xa0, 0x0d, 0x003a}, | ||
4468 | {0xa0, 0x02, 0x003b}, | ||
4469 | {0xa0, 0x00, 0x0038}, | ||
4470 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4471 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4472 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4473 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4474 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4475 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4476 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4477 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4478 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4479 | |||
4480 | {0xa1, 0x01, 0x0008}, | ||
4481 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | ||
4482 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, | ||
4483 | {0xa1, 0x01, 0x01c8}, | ||
4484 | {0xa1, 0x01, 0x01c9}, | ||
4485 | {0xa1, 0x01, 0x01ca}, | ||
4486 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
4487 | {0xa0, 0x13, ZC3XX_R120_GAMMA00}, /* gamma 4 */ | ||
4488 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | ||
4489 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | ||
4490 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | ||
4491 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | ||
4492 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | ||
4493 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | ||
4494 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | ||
4495 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | ||
4496 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | ||
4497 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | ||
4498 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | ||
4499 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | ||
4500 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | ||
4501 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | ||
4502 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | ||
4503 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | ||
4504 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | ||
4505 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | ||
4506 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | ||
4507 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | ||
4508 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | ||
4509 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | ||
4510 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | ||
4511 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | ||
4512 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | ||
4513 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | ||
4514 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | ||
4515 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | ||
4516 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | ||
4517 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | ||
4518 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | ||
4519 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4520 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4521 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4522 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4523 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4524 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4525 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4526 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4527 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4528 | |||
4529 | {0xa1, 0x01, 0x0180}, | ||
4530 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4531 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4532 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4533 | {0xaa, 0x05, 0x0009}, | ||
4534 | {0xaa, 0x09, 0x0134}, | ||
4535 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4536 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4537 | {0xa0, 0xec, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4538 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4539 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4540 | {0xa0, 0x9c, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4541 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4542 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | ||
4543 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4544 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4545 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | ||
4546 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | ||
4547 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | ||
4548 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
4549 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4550 | {0xa0, 0x09, 0x01ad}, | ||
4551 | {0xa0, 0x15, 0x01ae}, | ||
4552 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4553 | {0xa1, 0x01, 0x0180}, | ||
4554 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4555 | {} | 4292 | {} |
4556 | }; | 4293 | }; |
4557 | 4294 | static const struct usb_action mi0360soc_InitialScale[] = { /* 320x240 */ | |
4558 | static const struct usb_action pb03303x_InitialScale[] = { | ||
4559 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 4295 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
4560 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 4296 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, |
4561 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 4297 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, |
4562 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 4298 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, |
4563 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 4299 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, |
4564 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 4300 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, |
4565 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 4301 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, |
4566 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 4302 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, |
4567 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, /* 8b -> dc */ | 4303 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, |
4568 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 4304 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, |
4569 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4305 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, /*jfm: was 03*/ |
4570 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4306 | /* {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, */ |
4571 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 4307 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, |
4572 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 4308 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, |
4573 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 4309 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, |
4574 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 4310 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, |
4575 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 4311 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, |
4312 | {0xdd, 0x00, 0x0200}, | ||
4576 | {0xaa, 0x01, 0x0001}, | 4313 | {0xaa, 0x01, 0x0001}, |
4577 | {0xaa, 0x06, 0x0000}, | 4314 | {0xaa, 0x06, 0x0000}, |
4578 | {0xaa, 0x08, 0x0483}, | 4315 | {0xaa, 0x08, 0x0483}, |
@@ -4582,111 +4319,111 @@ static const struct usb_action pb03303x_InitialScale[] = { | |||
4582 | {0xaa, 0x03, 0x01e7}, | 4319 | {0xaa, 0x03, 0x01e7}, |
4583 | {0xaa, 0x04, 0x0287}, | 4320 | {0xaa, 0x04, 0x0287}, |
4584 | {0xaa, 0x07, 0x3002}, | 4321 | {0xaa, 0x07, 0x3002}, |
4585 | {0xaa, 0x20, 0x1100}, | 4322 | {0xaa, 0x20, 0x5100}, /*jfm: was 1100*/ |
4586 | {0xaa, 0x35, 0x0050}, | 4323 | {0xaa, 0x35, 0x007f}, /*jfm: was 0050*/ |
4587 | {0xaa, 0x30, 0x0005}, | 4324 | {0xaa, 0x30, 0x0005}, |
4588 | {0xaa, 0x31, 0x0000}, | 4325 | {0xaa, 0x31, 0x0000}, |
4589 | {0xaa, 0x58, 0x0078}, | 4326 | {0xaa, 0x58, 0x0078}, |
4590 | {0xaa, 0x62, 0x0411}, | 4327 | {0xaa, 0x62, 0x0411}, |
4591 | {0xaa, 0x2b, 0x0028}, | 4328 | {0xaa, 0x2b, 0x007f}, /*jfm: was 28*/ |
4592 | {0xaa, 0x2c, 0x0030}, | 4329 | {0xaa, 0x2c, 0x007f}, /*jfm: was 30*/ |
4593 | {0xaa, 0x2d, 0x0030}, | 4330 | {0xaa, 0x2d, 0x007f}, /*jfm: was 30*/ |
4594 | {0xaa, 0x2e, 0x0028}, | 4331 | {0xaa, 0x2e, 0x007f}, /*jfm: was 28*/ |
4595 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 4332 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, |
4596 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 4333 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, /*jfm: was 37*/ |
4597 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4334 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4598 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 4335 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
4599 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 4336 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
4600 | {0xa0, 0x00, 0x01ad}, | 4337 | {0xa0, 0x09, 0x01ad}, /*jfm: was 00*/ |
4601 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 4338 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
4602 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 4339 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
4603 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 4340 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
4604 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 4341 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
4605 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 4342 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, |
4606 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 4343 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, /*jfm: was 78*/ |
4607 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 4344 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, |
4608 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 4345 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, |
4609 | 4346 | {} | |
4610 | {0xa1, 0x01, 0x0002}, | 4347 | }; |
4611 | 4348 | static const struct usb_action mi360soc_AE50HZ[] = { | |
4612 | {0xa0, 0x09, 0x01ad}, | 4349 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, |
4613 | {0xa0, 0x15, 0x01ae}, | 4350 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4614 | 4351 | {0xbb, 0x00, 0x0562}, | |
4615 | {0xa0, 0x0d, 0x003a}, | 4352 | {0xbb, 0x01, 0x09aa}, |
4616 | {0xa0, 0x02, 0x003b}, | 4353 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
4617 | {0xa0, 0x00, 0x0038}, | 4354 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, |
4618 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | 4355 | {0xa0, 0x9b, ZC3XX_R192_EXPOSURELIMITLOW}, |
4619 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | 4356 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
4620 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | 4357 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
4621 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | 4358 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, |
4622 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | 4359 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, |
4623 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | 4360 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, |
4624 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | 4361 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4625 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | 4362 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, |
4626 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | 4363 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0}, |
4627 | 4364 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | |
4628 | {0xa1, 0x01, 0x0008}, | 4365 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, |
4629 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ | 4366 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
4630 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | 4367 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
4631 | {0xa1, 0x01, 0x01c8}, | 4368 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, |
4632 | {0xa1, 0x01, 0x01c9}, | 4369 | {} |
4633 | {0xa1, 0x01, 0x01ca}, | 4370 | }; |
4634 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | 4371 | static const struct usb_action mi360soc_AE50HZScale[] = { |
4635 | |||
4636 | {0xa0, 0x13, ZC3XX_R120_GAMMA00}, /* gamma 4 */ | ||
4637 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | ||
4638 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | ||
4639 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | ||
4640 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | ||
4641 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | ||
4642 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | ||
4643 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | ||
4644 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | ||
4645 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | ||
4646 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | ||
4647 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | ||
4648 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | ||
4649 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | ||
4650 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | ||
4651 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | ||
4652 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | ||
4653 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | ||
4654 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | ||
4655 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | ||
4656 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | ||
4657 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | ||
4658 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | ||
4659 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | ||
4660 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | ||
4661 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | ||
4662 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | ||
4663 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | ||
4664 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | ||
4665 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | ||
4666 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | ||
4667 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | ||
4668 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4669 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4670 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4671 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4672 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4673 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4674 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4675 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4676 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4677 | |||
4678 | {0xa1, 0x01, 0x0180}, | ||
4679 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 4372 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, |
4373 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4374 | {0xbb, 0x00, 0x0509}, | ||
4375 | {0xbb, 0x01, 0x0934}, | ||
4376 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4377 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4378 | {0xa0, 0xd2, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4379 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4380 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4381 | {0xa0, 0x9a, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4382 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4383 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | ||
4384 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4385 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4386 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | ||
4387 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | ||
4388 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | ||
4389 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
4390 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4391 | {} | ||
4392 | }; | ||
4393 | static const struct usb_action mi360soc_AE60HZ[] = { | ||
4394 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4395 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4396 | {0xbb, 0x00, 0x053d}, | ||
4397 | {0xbb, 0x01, 0x096e}, | ||
4398 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4399 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4400 | {0xa0, 0xdd, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4401 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4402 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4403 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4404 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4405 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | ||
4406 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4407 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4408 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0}, | ||
4409 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | ||
4410 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, | ||
4411 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
4412 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | ||
4413 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4414 | {} | ||
4415 | }; | ||
4416 | static const struct usb_action mi360soc_AE60HZScale[] = { | ||
4680 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 4417 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, |
4681 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 4418 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4682 | {0xaa, 0x05, 0x0009}, | 4419 | {0xbb, 0x00, 0x0509}, |
4683 | {0xaa, 0x09, 0x0134}, | 4420 | {0xbb, 0x01, 0x0983}, |
4684 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 4421 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
4685 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 4422 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
4686 | {0xa0, 0xec, ZC3XX_R192_EXPOSURELIMITLOW}, | 4423 | {0xa0, 0x8f, ZC3XX_R192_EXPOSURELIMITLOW}, |
4687 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 4424 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
4688 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 4425 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
4689 | {0xa0, 0x9c, ZC3XX_R197_ANTIFLICKERLOW}, | 4426 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW}, |
4690 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 4427 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, |
4691 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 4428 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, |
4692 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 4429 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
@@ -4696,20 +4433,60 @@ static const struct usb_action pb03303x_InitialScale[] = { | |||
4696 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 4433 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, |
4697 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 4434 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
4698 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 4435 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, |
4699 | {0xa0, 0x09, 0x01ad}, | 4436 | {} |
4700 | {0xa0, 0x15, 0x01ae}, | 4437 | }; |
4701 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | 4438 | static const struct usb_action mi360soc_AENoFliker[] = { |
4702 | {0xa1, 0x01, 0x0180}, | 4439 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, |
4440 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4441 | {0xbb, 0x00, 0x0509}, | ||
4442 | {0xbb, 0x01, 0x0960}, | ||
4443 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4444 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4445 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4446 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4447 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4448 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4449 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4450 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | ||
4451 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4452 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4453 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, | ||
4454 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | ||
4455 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4456 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | ||
4457 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | ||
4703 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 4458 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, |
4704 | {} | 4459 | {} |
4705 | }; | 4460 | }; |
4706 | static const struct usb_action pb0330xx_Initial[] = { | 4461 | static const struct usb_action mi360soc_AENoFlikerScale[] = { |
4707 | {0xa1, 0x01, 0x0008}, | 4462 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, |
4708 | {0xa1, 0x01, 0x0008}, | 4463 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4464 | {0xbb, 0x00, 0x0534}, | ||
4465 | {0xbb, 0x02, 0x0960}, | ||
4466 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4467 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4468 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4469 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4470 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4471 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4472 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4473 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | ||
4474 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4475 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4476 | {0xa0, 0x34, ZC3XX_R01D_HSYNC_0}, | ||
4477 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | ||
4478 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4479 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | ||
4480 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | ||
4481 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4482 | {} | ||
4483 | }; | ||
4484 | |||
4485 | static const struct usb_action pb0330_Initial[] = { /* 640x480 */ | ||
4709 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 4486 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
4710 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ | 4487 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ |
4711 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 4488 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, |
4712 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 4489 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, |
4713 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 4490 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, |
4714 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 4491 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, |
4715 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 4492 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, |
@@ -4721,11 +4498,12 @@ static const struct usb_action pb0330xx_Initial[] = { | |||
4721 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 4498 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, |
4722 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 4499 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, |
4723 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 4500 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, |
4501 | {0xdd, 0x00, 0x0200}, | ||
4724 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4502 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4725 | {0xaa, 0x01, 0x0006}, | 4503 | {0xaa, 0x01, 0x0006}, |
4726 | {0xaa, 0x02, 0x0011}, | 4504 | {0xaa, 0x02, 0x0011}, |
4727 | {0xaa, 0x03, 0x01e7}, | 4505 | {0xaa, 0x03, 0x01e5}, /*jfm: was 1e7*/ |
4728 | {0xaa, 0x04, 0x0287}, | 4506 | {0xaa, 0x04, 0x0285}, /*jfm: was 0287*/ |
4729 | {0xaa, 0x06, 0x0003}, | 4507 | {0xaa, 0x06, 0x0003}, |
4730 | {0xaa, 0x07, 0x3002}, | 4508 | {0xaa, 0x07, 0x3002}, |
4731 | {0xaa, 0x20, 0x1100}, | 4509 | {0xaa, 0x20, 0x1100}, |
@@ -4743,88 +4521,21 @@ static const struct usb_action pb0330xx_Initial[] = { | |||
4743 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4521 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4744 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 4522 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
4745 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 4523 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
4746 | {0xa0, 0x00, 0x01ad}, | 4524 | {0xa0, 0x09, 0x01ad}, /*jfm: was 00 */ |
4525 | {0xa0, 0x15, 0x01ae}, | ||
4747 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 4526 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
4748 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 4527 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
4749 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 4528 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
4750 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 4529 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
4751 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 4530 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, |
4752 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, | 4531 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, /*jfm: was 6c*/ |
4753 | {0xa1, 0x01, 0x0002}, | ||
4754 | {0xa0, 0x09, 0x01ad}, | ||
4755 | {0xa0, 0x15, 0x01ae}, | ||
4756 | {0xa0, 0x00, ZC3XX_R092_I2CADDRESSSELECT}, | ||
4757 | {0xa0, 0x02, ZC3XX_R090_I2CCOMMAND}, | ||
4758 | {0xa1, 0x01, 0x0091}, | ||
4759 | {0xa1, 0x01, 0x0095}, | ||
4760 | {0xa1, 0x01, 0x0096}, | ||
4761 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4762 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4763 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4764 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4765 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4766 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4767 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4768 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4769 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4770 | {0xa1, 0x01, 0x0008}, | ||
4771 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ | ||
4772 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | ||
4773 | {0xa1, 0x01, 0x01c8}, | ||
4774 | {0xa1, 0x01, 0x01c9}, | ||
4775 | {0xa1, 0x01, 0x01ca}, | ||
4776 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
4777 | |||
4778 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4779 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4780 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4781 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4782 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4783 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4784 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4785 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4786 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4787 | {0xa1, 0x01, 0x0180}, | ||
4788 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4789 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4790 | {0xaa, 0x05, 0x0066}, | ||
4791 | {0xaa, 0x09, 0x02b2}, | ||
4792 | {0xaa, 0x10, 0x0002}, | ||
4793 | |||
4794 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | ||
4795 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4796 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4797 | {0xa0, 0x8c, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4798 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4799 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4800 | {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4801 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | ||
4802 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | ||
4803 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4804 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4805 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | ||
4806 | {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, | ||
4807 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, | ||
4808 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
4809 | {0xa0, 0x09, 0x01ad}, | ||
4810 | {0xa0, 0x15, 0x01ae}, | ||
4811 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4812 | {0xa1, 0x01, 0x0180}, | ||
4813 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4814 | {0xa1, 0x01, 0x0008}, | ||
4815 | {0xa1, 0x01, 0x0007}, | ||
4816 | /* {0xa0, 0x30, 0x0007}, */ | ||
4817 | /* {0xa0, 0x00, 0x0007}, */ | ||
4818 | {} | 4532 | {} |
4819 | }; | 4533 | }; |
4820 | 4534 | static const struct usb_action pb0330_InitialScale[] = { /* 320x240 */ | |
4821 | static const struct usb_action pb0330xx_InitialScale[] = { | ||
4822 | {0xa1, 0x01, 0x0008}, | ||
4823 | {0xa1, 0x01, 0x0008}, | ||
4824 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 4535 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
4825 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ | 4536 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ |
4826 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 4537 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, |
4827 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, /* 10 */ | 4538 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, |
4828 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 4539 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, |
4829 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 4540 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, |
4830 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 4541 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, |
@@ -4836,6 +4547,7 @@ static const struct usb_action pb0330xx_InitialScale[] = { | |||
4836 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 4547 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, |
4837 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 4548 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, |
4838 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 4549 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, |
4550 | {0xdd, 0x00, 0x0200}, | ||
4839 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4551 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4840 | {0xaa, 0x01, 0x0006}, | 4552 | {0xaa, 0x01, 0x0006}, |
4841 | {0xaa, 0x02, 0x0011}, | 4553 | {0xaa, 0x02, 0x0011}, |
@@ -4858,53 +4570,43 @@ static const struct usb_action pb0330xx_InitialScale[] = { | |||
4858 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 4570 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, |
4859 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 4571 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
4860 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 4572 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
4861 | {0xa0, 0x00, 0x01ad}, | 4573 | {0xa0, 0x09, 0x01ad}, |
4574 | {0xa0, 0x15, 0x01ae}, | ||
4862 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 4575 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
4863 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 4576 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
4864 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 4577 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
4865 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 4578 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
4866 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 4579 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, |
4867 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, | 4580 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, /*jfm: was 6c*/ |
4868 | {0xa1, 0x01, 0x0002}, | 4581 | {} |
4869 | {0xa0, 0x09, 0x01ad}, | 4582 | }; |
4870 | {0xa0, 0x15, 0x01ae}, | 4583 | static const struct usb_action pb0330_50HZ[] = { |
4871 | {0xa0, 0x00, ZC3XX_R092_I2CADDRESSSELECT}, | ||
4872 | {0xa0, 0x02, ZC3XX_R090_I2CCOMMAND}, | ||
4873 | {0xa1, 0x01, 0x0091}, | ||
4874 | {0xa1, 0x01, 0x0095}, | ||
4875 | {0xa1, 0x01, 0x0096}, | ||
4876 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4877 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4878 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4879 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4880 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4881 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4882 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4883 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4884 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4885 | {0xa1, 0x01, 0x0008}, | ||
4886 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ | ||
4887 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | ||
4888 | {0xa1, 0x01, 0x01c8}, | ||
4889 | {0xa1, 0x01, 0x01c9}, | ||
4890 | {0xa1, 0x01, 0x01ca}, | ||
4891 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
4892 | |||
4893 | {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ | ||
4894 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | ||
4895 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | ||
4896 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | ||
4897 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | ||
4898 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | ||
4899 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | ||
4900 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | ||
4901 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | ||
4902 | {0xa1, 0x01, 0x0180}, | ||
4903 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4904 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 4584 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4905 | {0xaa, 0x05, 0x0066}, | 4585 | {0xbb, 0x00, 0x055c}, |
4906 | {0xaa, 0x09, 0x02b2}, | 4586 | {0xbb, 0x01, 0x09aa}, |
4907 | {0xaa, 0x10, 0x0002}, | 4587 | {0xbb, 0x00, 0x1001}, |
4588 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | ||
4589 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
4590 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | ||
4591 | {0xa0, 0xc4, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
4592 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
4593 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
4594 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, | ||
4595 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | ||
4596 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, | ||
4597 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
4598 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4599 | {0xa0, 0x5c, ZC3XX_R01D_HSYNC_0}, | ||
4600 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | ||
4601 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, | ||
4602 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
4603 | {} | ||
4604 | }; | ||
4605 | static const struct usb_action pb0330_50HZScale[] = { | ||
4606 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
4607 | {0xbb, 0x00, 0x0566}, | ||
4608 | {0xbb, 0x02, 0x09b2}, | ||
4609 | {0xbb, 0x00, 0x1002}, | ||
4908 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 4610 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
4909 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 4611 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
4910 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 4612 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
@@ -4912,124 +4614,102 @@ static const struct usb_action pb0330xx_InitialScale[] = { | |||
4912 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 4614 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
4913 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 4615 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
4914 | {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW}, | 4616 | {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW}, |
4915 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 4617 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, |
4916 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 4618 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, |
4917 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 4619 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4918 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 4620 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, |
4919 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 4621 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, |
4920 | {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, | 4622 | {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, |
4921 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, | 4623 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, |
4922 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 4624 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, |
4923 | {0xa0, 0x09, 0x01ad}, | ||
4924 | {0xa0, 0x15, 0x01ae}, | ||
4925 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4926 | {0xa1, 0x01, 0x0180}, | ||
4927 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
4928 | {0xa1, 0x01, 0x0008}, | ||
4929 | {0xa1, 0x01, 0x0007}, | ||
4930 | /* {0xa0, 0x30, 0x0007}, */ | ||
4931 | /* {0xa0, 0x00, 0x0007}, */ | ||
4932 | {} | ||
4933 | }; | ||
4934 | static const struct usb_action pb0330_50HZ[] = { | ||
4935 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
4936 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | ||
4937 | {0xa0, 0xee, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,ee,cc */ | ||
4938 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
4939 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
4940 | {0xa0, 0x46, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,46,cc */ | ||
4941 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
4942 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
4943 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | ||
4944 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | ||
4945 | {0xa0, 0x68, ZC3XX_R01D_HSYNC_0}, /* 00,1d,68,cc */ | ||
4946 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */ | ||
4947 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */ | ||
4948 | {} | ||
4949 | }; | ||
4950 | static const struct usb_action pb0330_50HZScale[] = { | ||
4951 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | ||
4952 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | ||
4953 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | ||
4954 | {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,a0,cc */ | ||
4955 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | ||
4956 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | ||
4957 | {0xa0, 0x7a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7a,cc */ | ||
4958 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | ||
4959 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | ||
4960 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | ||
4961 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | ||
4962 | {0xa0, 0xe5, ZC3XX_R01D_HSYNC_0}, /* 00,1d,e5,cc */ | ||
4963 | {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,f0,cc */ | ||
4964 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f8,cc */ | ||
4965 | {} | 4625 | {} |
4966 | }; | 4626 | }; |
4967 | static const struct usb_action pb0330_60HZ[] = { | 4627 | static const struct usb_action pb0330_60HZ[] = { |
4968 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 4628 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4969 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 4629 | {0xbb, 0x00, 0x0535}, |
4970 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | 4630 | {0xbb, 0x01, 0x0974}, |
4971 | {0xa0, 0xdd, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,dd,cc */ | 4631 | {0xbb, 0x00, 0x1001}, |
4972 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 4632 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
4973 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 4633 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
4974 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3d,cc */ | 4634 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
4975 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 4635 | {0xa0, 0xfe, ZC3XX_R192_EXPOSURELIMITLOW}, |
4976 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 4636 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
4977 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 4637 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
4978 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 4638 | {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW}, |
4979 | {0xa0, 0x43, ZC3XX_R01D_HSYNC_0}, /* 00,1d,43,cc */ | 4639 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, |
4980 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, /* 00,1e,50,cc */ | 4640 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, |
4981 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ | 4641 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4642 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4643 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | ||
4644 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, | ||
4645 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4646 | {0xa0, 0xd0, ZC3XX_R020_HSYNC_3}, | ||
4982 | {} | 4647 | {} |
4983 | }; | 4648 | }; |
4984 | static const struct usb_action pb0330_60HZScale[] = { | 4649 | static const struct usb_action pb0330_60HZScale[] = { |
4985 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 4650 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
4986 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 4651 | {0xbb, 0x00, 0x0535}, |
4987 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | 4652 | {0xbb, 0x02, 0x096c}, |
4988 | {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,a0,cc */ | 4653 | {0xbb, 0x00, 0x1002}, |
4989 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 4654 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
4990 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 4655 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
4991 | {0xa0, 0x7a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7a,cc */ | 4656 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
4992 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 4657 | {0xa0, 0xc0, ZC3XX_R192_EXPOSURELIMITLOW}, |
4993 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 4658 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
4994 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 4659 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
4995 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 4660 | {0xa0, 0x7c, ZC3XX_R197_ANTIFLICKERLOW}, |
4996 | {0xa0, 0x41, ZC3XX_R01D_HSYNC_0}, /* 00,1d,41,cc */ | 4661 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, |
4997 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, /* 00,1e,50,cc */ | 4662 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, |
4998 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ | 4663 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4664 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4665 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | ||
4666 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, | ||
4667 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4668 | {0xa0, 0xd0, ZC3XX_R020_HSYNC_3}, | ||
4999 | {} | 4669 | {} |
5000 | }; | 4670 | }; |
5001 | static const struct usb_action pb0330_NoFliker[] = { | 4671 | static const struct usb_action pb0330_NoFliker[] = { |
5002 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 4672 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
5003 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 4673 | {0xbb, 0x00, 0x0509}, |
5004 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | 4674 | {0xbb, 0x02, 0x0940}, |
5005 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 4675 | {0xbb, 0x00, 0x1002}, |
5006 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 4676 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
5007 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 4677 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
5008 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 4678 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
5009 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 4679 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, |
5010 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 4680 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
5011 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 4681 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
5012 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 4682 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, |
5013 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, /* 00,1d,09,cc */ | 4683 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
5014 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, /* 00,1e,40,cc */ | 4684 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
5015 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ | 4685 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4686 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4687 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, | ||
4688 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | ||
4689 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4690 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | ||
5016 | {} | 4691 | {} |
5017 | }; | 4692 | }; |
5018 | static const struct usb_action pb0330_NoFlikerScale[] = { | 4693 | static const struct usb_action pb0330_NoFlikerScale[] = { |
5019 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 4694 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, |
5020 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 4695 | {0xbb, 0x00, 0x0535}, |
5021 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ | 4696 | {0xbb, 0x01, 0x0980}, |
5022 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 4697 | {0xbb, 0x00, 0x1001}, |
5023 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 4698 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, |
5024 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 4699 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, |
5025 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 4700 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
5026 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 4701 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, |
5027 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 4702 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
5028 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 4703 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
5029 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 4704 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, |
5030 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, /* 00,1d,09,cc */ | 4705 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, |
5031 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, /* 00,1e,40,cc */ | 4706 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, |
5032 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ | 4707 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
4708 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
4709 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | ||
4710 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | ||
4711 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | ||
4712 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | ||
5033 | {} | 4713 | {} |
5034 | }; | 4714 | }; |
5035 | 4715 | ||
@@ -5655,7 +5335,7 @@ static const struct usb_action tas5130CK_InitialScale[] = { | |||
5655 | {} | 5335 | {} |
5656 | }; | 5336 | }; |
5657 | 5337 | ||
5658 | static const struct usb_action tas5130cxx_Initial[] = { | 5338 | static const struct usb_action tas5130cxx_InitialScale[] = { /* 320x240 */ |
5659 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 5339 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
5660 | {0xa0, 0x50, ZC3XX_R002_CLOCKSELECT}, | 5340 | {0xa0, 0x50, ZC3XX_R002_CLOCKSELECT}, |
5661 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 5341 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, |
@@ -5684,74 +5364,19 @@ static const struct usb_action tas5130cxx_Initial[] = { | |||
5684 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, | 5364 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, |
5685 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 5365 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
5686 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 5366 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
5687 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 5367 | {0xa0, 0x95, ZC3XX_R18D_YTARGET}, |
5688 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 5368 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, |
5689 | {0xa0, 0x00, 0x01ad}, | 5369 | {0xa0, 0x00, 0x01ad}, |
5690 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 5370 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
5691 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 5371 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
5692 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 5372 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
5693 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 5373 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
5694 | {0xa1, 0x01, 0x0002}, | ||
5695 | {0xa1, 0x01, 0x0008}, | ||
5696 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ | ||
5697 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | ||
5698 | {0xa1, 0x01, 0x01c8}, | ||
5699 | {0xa1, 0x01, 0x01c9}, | ||
5700 | {0xa1, 0x01, 0x01ca}, | ||
5701 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
5702 | |||
5703 | {0xa0, 0x68, ZC3XX_R10A_RGB00}, /* matrix */ | ||
5704 | {0xa0, 0xec, ZC3XX_R10B_RGB01}, | ||
5705 | {0xa0, 0xec, ZC3XX_R10C_RGB02}, | ||
5706 | {0xa0, 0xec, ZC3XX_R10D_RGB10}, | ||
5707 | {0xa0, 0x68, ZC3XX_R10E_RGB11}, | ||
5708 | {0xa0, 0xec, ZC3XX_R10F_RGB12}, | ||
5709 | {0xa0, 0xec, ZC3XX_R110_RGB20}, | ||
5710 | {0xa0, 0xec, ZC3XX_R111_RGB21}, | ||
5711 | {0xa0, 0x68, ZC3XX_R112_RGB22}, | ||
5712 | |||
5713 | {0xa1, 0x01, 0x018d}, | ||
5714 | {0xa0, 0x90, ZC3XX_R18D_YTARGET}, /* 90 */ | ||
5715 | {0xa1, 0x01, 0x0180}, | ||
5716 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5717 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
5718 | |||
5719 | {0xaa, 0xa3, 0x0001}, | ||
5720 | {0xaa, 0xa4, 0x0077}, | ||
5721 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | ||
5722 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, | ||
5723 | |||
5724 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 00 */ | ||
5725 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, /* 03 */ | ||
5726 | {0xa0, 0xe8, ZC3XX_R192_EXPOSURELIMITLOW}, /* e8 */ | ||
5727 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 0 */ | ||
5728 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 0 */ | ||
5729 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 7d */ | ||
5730 | |||
5731 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | ||
5732 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | ||
5733 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 08 */ | ||
5734 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 24 */ | ||
5735 | {0xa0, 0xf0, ZC3XX_R01D_HSYNC_0}, | ||
5736 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | ||
5737 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, | ||
5738 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
5739 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, | ||
5740 | {0xa0, 0xc0, ZC3XX_R0A0_MAXXLOW}, | ||
5741 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, /* 50 */ | ||
5742 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5743 | {0xa1, 0x01, 0x0180}, | ||
5744 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5745 | {} | 5374 | {} |
5746 | }; | 5375 | }; |
5747 | static const struct usb_action tas5130cxx_InitialScale[] = { | 5376 | static const struct usb_action tas5130cxx_Initial[] = { /* 640x480 */ |
5748 | /*?? {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, */ | ||
5749 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 5377 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, |
5750 | {0xa0, 0x40, ZC3XX_R002_CLOCKSELECT}, | 5378 | {0xa0, 0x40, ZC3XX_R002_CLOCKSELECT}, |
5751 | |||
5752 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 5379 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, |
5753 | {0xa1, 0x01, 0x0008}, | ||
5754 | |||
5755 | {0xa0, 0x02, ZC3XX_R010_CMOSSENSORSELECT}, | 5380 | {0xa0, 0x02, ZC3XX_R010_CMOSSENSORSELECT}, |
5756 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 5381 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, |
5757 | {0xa0, 0x00, ZC3XX_R001_SYSTEMOPERATING}, | 5382 | {0xa0, 0x00, ZC3XX_R001_SYSTEMOPERATING}, |
@@ -5775,63 +5400,13 @@ static const struct usb_action tas5130cxx_InitialScale[] = { | |||
5775 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 5400 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, |
5776 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 5401 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, |
5777 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 5402 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, |
5778 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 5403 | {0xa0, 0x95, ZC3XX_R18D_YTARGET}, |
5779 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 5404 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, |
5780 | {0xa0, 0x00, 0x01ad}, | 5405 | {0xa0, 0x00, 0x01ad}, |
5781 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 5406 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, |
5782 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 5407 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, |
5783 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 5408 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, |
5784 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 5409 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, |
5785 | {0xa1, 0x01, 0x0002}, | ||
5786 | {0xa1, 0x01, 0x0008}, | ||
5787 | |||
5788 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | ||
5789 | {0xa1, 0x01, 0x0008}, /* clock ? */ | ||
5790 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ | ||
5791 | {0xa1, 0x01, 0x01c8}, | ||
5792 | {0xa1, 0x01, 0x01c9}, | ||
5793 | {0xa1, 0x01, 0x01ca}, | ||
5794 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ | ||
5795 | |||
5796 | {0xa0, 0x68, ZC3XX_R10A_RGB00}, /* matrix */ | ||
5797 | {0xa0, 0xec, ZC3XX_R10B_RGB01}, | ||
5798 | {0xa0, 0xec, ZC3XX_R10C_RGB02}, | ||
5799 | {0xa0, 0xec, ZC3XX_R10D_RGB10}, | ||
5800 | {0xa0, 0x68, ZC3XX_R10E_RGB11}, | ||
5801 | {0xa0, 0xec, ZC3XX_R10F_RGB12}, | ||
5802 | {0xa0, 0xec, ZC3XX_R110_RGB20}, | ||
5803 | {0xa0, 0xec, ZC3XX_R111_RGB21}, | ||
5804 | {0xa0, 0x68, ZC3XX_R112_RGB22}, | ||
5805 | |||
5806 | {0xa1, 0x01, 0x018d}, | ||
5807 | {0xa0, 0x90, ZC3XX_R18D_YTARGET}, | ||
5808 | {0xa1, 0x01, 0x0180}, | ||
5809 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5810 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | ||
5811 | {0xaa, 0xa3, 0x0001}, | ||
5812 | {0xaa, 0xa4, 0x0063}, | ||
5813 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | ||
5814 | {0xa0, 0x63, ZC3XX_R0A4_EXPOSURETIMELOW}, | ||
5815 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | ||
5816 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | ||
5817 | {0xa0, 0x38, ZC3XX_R192_EXPOSURELIMITLOW}, | ||
5818 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | ||
5819 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | ||
5820 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, | ||
5821 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | ||
5822 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | ||
5823 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, | ||
5824 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | ||
5825 | {0xa0, 0xd3, ZC3XX_R01D_HSYNC_0}, | ||
5826 | {0xa0, 0xda, ZC3XX_R01E_HSYNC_1}, | ||
5827 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, | ||
5828 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | ||
5829 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, | ||
5830 | {0xa0, 0x4c, ZC3XX_R0A0_MAXXLOW}, | ||
5831 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5832 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5833 | {0xa1, 0x01, 0x0180}, | ||
5834 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | ||
5835 | {} | 5410 | {} |
5836 | }; | 5411 | }; |
5837 | static const struct usb_action tas5130cxx_50HZ[] = { | 5412 | static const struct usb_action tas5130cxx_50HZ[] = { |
@@ -5841,20 +5416,22 @@ static const struct usb_action tas5130cxx_50HZ[] = { | |||
5841 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5416 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5842 | {0xa0, 0x63, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,63,cc */ | 5417 | {0xa0, 0x63, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,63,cc */ |
5843 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5418 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5844 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,02,cc */ | 5419 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, |
5845 | {0xa0, 0x38, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,38,cc */ | 5420 | {0xa0, 0xfe, ZC3XX_R192_EXPOSURELIMITLOW}, |
5846 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5421 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ |
5847 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5422 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ |
5848 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,47,cc */ | 5423 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,47,cc */ |
5849 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 5424 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5850 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5425 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5851 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 5426 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
5852 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 5427 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
5853 | {0xa0, 0xd3, ZC3XX_R01D_HSYNC_0}, /* 00,1d,d3,cc */ | 5428 | {0xa0, 0xd3, ZC3XX_R01D_HSYNC_0}, /* 00,1d,d3,cc */ |
5854 | {0xa0, 0xda, ZC3XX_R01E_HSYNC_1}, /* 00,1e,da,cc */ | 5429 | {0xa0, 0xda, ZC3XX_R01E_HSYNC_1}, /* 00,1e,da,cc */ |
5855 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, /* 00,1f,ea,cc */ | 5430 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, /* 00,1f,ea,cc */ |
5856 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5431 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5857 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 5432 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ |
5433 | {0xa0, 0x4c, ZC3XX_R0A0_MAXXLOW}, | ||
5434 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5858 | {} | 5435 | {} |
5859 | }; | 5436 | }; |
5860 | static const struct usb_action tas5130cxx_50HZScale[] = { | 5437 | static const struct usb_action tas5130cxx_50HZScale[] = { |
@@ -5864,20 +5441,22 @@ static const struct usb_action tas5130cxx_50HZScale[] = { | |||
5864 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5441 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5865 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ | 5442 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ |
5866 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5443 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5867 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,03,cc */ | 5444 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, |
5868 | {0xa0, 0xe8, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,e8,cc */ | 5445 | {0xa0, 0xd0, ZC3XX_R192_EXPOSURELIMITLOW}, |
5869 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5446 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ |
5870 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5447 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ |
5871 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ | 5448 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ |
5872 | {0xa0, 0x14, ZC3XX_R18C_AEFREEZE}, /* 01,8c,14,cc */ | 5449 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5873 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5450 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5874 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 5451 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
5875 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 5452 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
5876 | {0xa0, 0xf0, ZC3XX_R01D_HSYNC_0}, /* 00,1d,f0,cc */ | 5453 | {0xa0, 0xf0, ZC3XX_R01D_HSYNC_0}, /* 00,1d,f0,cc */ |
5877 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,f4,cc */ | 5454 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,f4,cc */ |
5878 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f8,cc */ | 5455 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f8,cc */ |
5879 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5456 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5880 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 5457 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ |
5458 | {0xa0, 0xc0, ZC3XX_R0A0_MAXXLOW}, | ||
5459 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5881 | {} | 5460 | {} |
5882 | }; | 5461 | }; |
5883 | static const struct usb_action tas5130cxx_60HZ[] = { | 5462 | static const struct usb_action tas5130cxx_60HZ[] = { |
@@ -5887,20 +5466,22 @@ static const struct usb_action tas5130cxx_60HZ[] = { | |||
5887 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5466 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5888 | {0xa0, 0x36, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,36,cc */ | 5467 | {0xa0, 0x36, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,36,cc */ |
5889 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5468 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5890 | {0xa0, 0x01, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,01,cc */ | 5469 | {0xa0, 0x05, ZC3XX_R191_EXPOSURELIMITMID}, |
5891 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 5470 | {0xa0, 0x54, ZC3XX_R192_EXPOSURELIMITLOW}, |
5892 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5471 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ |
5893 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5472 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ |
5894 | {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3e,cc */ | 5473 | {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3e,cc */ |
5895 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 5474 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5896 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5475 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5897 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 5476 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
5898 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 5477 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
5899 | {0xa0, 0xca, ZC3XX_R01D_HSYNC_0}, /* 00,1d,ca,cc */ | 5478 | {0xa0, 0xca, ZC3XX_R01D_HSYNC_0}, /* 00,1d,ca,cc */ |
5900 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 5479 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ |
5901 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 5480 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ |
5902 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5481 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5903 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 5482 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ |
5483 | {0xa0, 0x28, ZC3XX_R0A0_MAXXLOW}, | ||
5484 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5904 | {} | 5485 | {} |
5905 | }; | 5486 | }; |
5906 | static const struct usb_action tas5130cxx_60HZScale[] = { | 5487 | static const struct usb_action tas5130cxx_60HZScale[] = { |
@@ -5910,20 +5491,22 @@ static const struct usb_action tas5130cxx_60HZScale[] = { | |||
5910 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5491 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5911 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ | 5492 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ |
5912 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5493 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5913 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,03,cc */ | 5494 | {0xa0, 0x09, ZC3XX_R191_EXPOSURELIMITMID}, |
5914 | {0xa0, 0xe8, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,e8,cc */ | 5495 | {0xa0, 0x47, ZC3XX_R192_EXPOSURELIMITLOW}, |
5915 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5496 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ |
5916 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5497 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ |
5917 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ | 5498 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ |
5918 | {0xa0, 0x14, ZC3XX_R18C_AEFREEZE}, /* 01,8c,14,cc */ | 5499 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5919 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5500 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5920 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 5501 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, |
5921 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ | 5502 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, |
5922 | {0xa0, 0xc8, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c8,cc */ | 5503 | {0xa0, 0xc8, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c8,cc */ |
5923 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 5504 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ |
5924 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 5505 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ |
5925 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5506 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5926 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 5507 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ |
5508 | {0xa0, 0x20, ZC3XX_R0A0_MAXXLOW}, | ||
5509 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5927 | {} | 5510 | {} |
5928 | }; | 5511 | }; |
5929 | static const struct usb_action tas5130cxx_NoFliker[] = { | 5512 | static const struct usb_action tas5130cxx_NoFliker[] = { |
@@ -5933,13 +5516,13 @@ static const struct usb_action tas5130cxx_NoFliker[] = { | |||
5933 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5516 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5934 | {0xa0, 0x40, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,40,cc */ | 5517 | {0xa0, 0x40, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,40,cc */ |
5935 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5518 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5936 | {0xa0, 0x01, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,01,cc */ | 5519 | {0xa0, 0x05, ZC3XX_R191_EXPOSURELIMITMID}, |
5937 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 5520 | {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, |
5938 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5521 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
5939 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5522 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
5940 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 5523 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, |
5941 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 5524 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5942 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5525 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5943 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 5526 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ |
5944 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 5527 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ |
5945 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ | 5528 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ |
@@ -5947,6 +5530,8 @@ static const struct usb_action tas5130cxx_NoFliker[] = { | |||
5947 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 5530 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ |
5948 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5531 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5949 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ | 5532 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ |
5533 | {0xa0, 0xf0, ZC3XX_R0A0_MAXXLOW}, | ||
5534 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5950 | {} | 5535 | {} |
5951 | }; | 5536 | }; |
5952 | 5537 | ||
@@ -5957,13 +5542,13 @@ static const struct usb_action tas5130cxx_NoFlikerScale[] = { | |||
5957 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 5542 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ |
5958 | {0xa0, 0x90, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,90,cc */ | 5543 | {0xa0, 0x90, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,90,cc */ |
5959 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 5544 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ |
5960 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,03,cc */ | 5545 | {0xa0, 0x0a, ZC3XX_R191_EXPOSURELIMITMID}, |
5961 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ | 5546 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, |
5962 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 5547 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, |
5963 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 5548 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, |
5964 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 5549 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, |
5965 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 5550 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, |
5966 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 5551 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, |
5967 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 5552 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ |
5968 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 5553 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ |
5969 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ | 5554 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ |
@@ -5971,6 +5556,8 @@ static const struct usb_action tas5130cxx_NoFlikerScale[] = { | |||
5971 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 5556 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ |
5972 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 5557 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ |
5973 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ | 5558 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ |
5559 | {0xa0, 0xf0, ZC3XX_R0A0_MAXXLOW}, | ||
5560 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | ||
5974 | {} | 5561 | {} |
5975 | }; | 5562 | }; |
5976 | 5563 | ||
@@ -6303,8 +5890,10 @@ static __u16 i2c_read(struct gspca_dev *gspca_dev, | |||
6303 | 5890 | ||
6304 | reg_w_i(gspca_dev->dev, reg, 0x0092); | 5891 | reg_w_i(gspca_dev->dev, reg, 0x0092); |
6305 | reg_w_i(gspca_dev->dev, 0x02, 0x0090); /* <- read command */ | 5892 | reg_w_i(gspca_dev->dev, 0x02, 0x0090); /* <- read command */ |
6306 | msleep(25); | 5893 | msleep(20); |
6307 | retbyte = reg_r_i(gspca_dev, 0x0091); /* read status */ | 5894 | retbyte = reg_r_i(gspca_dev, 0x0091); /* read status */ |
5895 | if (retbyte != 0x00) | ||
5896 | err("i2c_r status error %02x", retbyte); | ||
6308 | retval = reg_r_i(gspca_dev, 0x0095); /* read Lowbyte */ | 5897 | retval = reg_r_i(gspca_dev, 0x0095); /* read Lowbyte */ |
6309 | retval |= reg_r_i(gspca_dev, 0x0096) << 8; /* read Hightbyte */ | 5898 | retval |= reg_r_i(gspca_dev, 0x0096) << 8; /* read Hightbyte */ |
6310 | PDEBUG(D_USBI, "i2c r [%02x] -> %04x (%02x)", | 5899 | PDEBUG(D_USBI, "i2c r [%02x] -> %04x (%02x)", |
@@ -6323,8 +5912,10 @@ static __u8 i2c_write(struct gspca_dev *gspca_dev, | |||
6323 | reg_w_i(gspca_dev->dev, valL, 0x93); | 5912 | reg_w_i(gspca_dev->dev, valL, 0x93); |
6324 | reg_w_i(gspca_dev->dev, valH, 0x94); | 5913 | reg_w_i(gspca_dev->dev, valH, 0x94); |
6325 | reg_w_i(gspca_dev->dev, 0x01, 0x90); /* <- write command */ | 5914 | reg_w_i(gspca_dev->dev, 0x01, 0x90); /* <- write command */ |
6326 | msleep(15); | 5915 | msleep(1); |
6327 | retbyte = reg_r_i(gspca_dev, 0x0091); /* read status */ | 5916 | retbyte = reg_r_i(gspca_dev, 0x0091); /* read status */ |
5917 | if (retbyte != 0x00) | ||
5918 | err("i2c_w status error %02x", retbyte); | ||
6328 | PDEBUG(D_USBO, "i2c w [%02x] = %02x%02x (%02x)", | 5919 | PDEBUG(D_USBO, "i2c w [%02x] = %02x%02x (%02x)", |
6329 | reg, valH, valL, retbyte); | 5920 | reg, valH, valL, retbyte); |
6330 | return retbyte; | 5921 | return retbyte; |
@@ -6359,7 +5950,7 @@ static void usb_exchange(struct gspca_dev *gspca_dev, | |||
6359 | break; | 5950 | break; |
6360 | } | 5951 | } |
6361 | action++; | 5952 | action++; |
6362 | /* msleep(1); */ | 5953 | msleep(1); |
6363 | } | 5954 | } |
6364 | } | 5955 | } |
6365 | 5956 | ||
@@ -6380,11 +5971,13 @@ static void setmatrix(struct gspca_dev *gspca_dev) | |||
6380 | {0x4c, 0xf5, 0xff, 0xf9, 0x51, 0xf5, 0xfb, 0xed, 0x5f}; | 5971 | {0x4c, 0xf5, 0xff, 0xf9, 0x51, 0xf5, 0xfb, 0xed, 0x5f}; |
6381 | static const __u8 po2030_matrix[9] = | 5972 | static const __u8 po2030_matrix[9] = |
6382 | {0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60}; | 5973 | {0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60}; |
5974 | static const u8 tas5130c_matrix[9] = | ||
5975 | {0x68, 0xec, 0xec, 0xec, 0x68, 0xec, 0xec, 0xec, 0x68}; | ||
6383 | static const __u8 vf0250_matrix[9] = | 5976 | static const __u8 vf0250_matrix[9] = |
6384 | {0x7b, 0xea, 0xea, 0xea, 0x7b, 0xea, 0xea, 0xea, 0x7b}; | 5977 | {0x7b, 0xea, 0xea, 0xea, 0x7b, 0xea, 0xea, 0xea, 0x7b}; |
6385 | static const __u8 *matrix_tb[SENSOR_MAX] = { | 5978 | static const __u8 *matrix_tb[SENSOR_MAX] = { |
6386 | adcm2700_matrix, /* SENSOR_ADCM2700 0 */ | 5979 | adcm2700_matrix, /* SENSOR_ADCM2700 0 */ |
6387 | NULL, /* SENSOR_CS2102 1 */ | 5980 | ov7620_matrix, /* SENSOR_CS2102 1 */ |
6388 | NULL, /* SENSOR_CS2102K 2 */ | 5981 | NULL, /* SENSOR_CS2102K 2 */ |
6389 | gc0305_matrix, /* SENSOR_GC0305 3 */ | 5982 | gc0305_matrix, /* SENSOR_GC0305 3 */ |
6390 | NULL, /* SENSOR_HDCS2020b 4 */ | 5983 | NULL, /* SENSOR_HDCS2020b 4 */ |
@@ -6392,15 +5985,16 @@ static void setmatrix(struct gspca_dev *gspca_dev) | |||
6392 | NULL, /* SENSOR_HV7131C 6 */ | 5985 | NULL, /* SENSOR_HV7131C 6 */ |
6393 | NULL, /* SENSOR_ICM105A 7 */ | 5986 | NULL, /* SENSOR_ICM105A 7 */ |
6394 | NULL, /* SENSOR_MC501CB 8 */ | 5987 | NULL, /* SENSOR_MC501CB 8 */ |
6395 | ov7620_matrix, /* SENSOR_OV7620 9 */ | 5988 | gc0305_matrix, /* SENSOR_MI0360SOC 9 */ |
6396 | NULL, /* SENSOR_OV7630C 10 */ | 5989 | ov7620_matrix, /* SENSOR_OV7620 10 */ |
6397 | NULL, /* SENSOR_PAS106 11 */ | 5990 | NULL, /* SENSOR_OV7630C 11 */ |
6398 | pas202b_matrix, /* SENSOR_PAS202B 12 */ | 5991 | NULL, /* SENSOR_PAS106 12 */ |
6399 | NULL, /* SENSOR_PB0330 13 */ | 5992 | pas202b_matrix, /* SENSOR_PAS202B 13 */ |
6400 | po2030_matrix, /* SENSOR_PO2030 14 */ | 5993 | gc0305_matrix, /* SENSOR_PB0330 14 */ |
6401 | NULL, /* SENSOR_TAS5130CK 15 */ | 5994 | po2030_matrix, /* SENSOR_PO2030 15 */ |
6402 | NULL, /* SENSOR_TAS5130CXX 16 */ | 5995 | NULL, /* SENSOR_TAS5130CK 16 */ |
6403 | vf0250_matrix, /* SENSOR_TAS5130C_VF0250 17 */ | 5996 | tas5130c_matrix, /* SENSOR_TAS5130CXX 17 */ |
5997 | vf0250_matrix, /* SENSOR_TAS5130C_VF0250 18 */ | ||
6404 | }; | 5998 | }; |
6405 | 5999 | ||
6406 | matrix = matrix_tb[sd->sensor]; | 6000 | matrix = matrix_tb[sd->sensor]; |
@@ -6640,39 +6234,43 @@ static int setlightfreq(struct gspca_dev *gspca_dev) | |||
6640 | {MC501CB_NoFliker, MC501CB_NoFlikerScale, | 6234 | {MC501CB_NoFliker, MC501CB_NoFlikerScale, |
6641 | MC501CB_50HZ, MC501CB_50HZScale, | 6235 | MC501CB_50HZ, MC501CB_50HZScale, |
6642 | MC501CB_60HZ, MC501CB_60HZScale}, | 6236 | MC501CB_60HZ, MC501CB_60HZScale}, |
6643 | /* SENSOR_OV7620 9 */ | 6237 | /* SENSOR_MI0360SOC 9 */ |
6238 | {mi360soc_AENoFlikerScale, mi360soc_AENoFliker, | ||
6239 | mi360soc_AE50HZScale, mi360soc_AE50HZ, | ||
6240 | mi360soc_AE60HZScale, mi360soc_AE60HZ}, | ||
6241 | /* SENSOR_OV7620 10 */ | ||
6644 | {OV7620_NoFliker, OV7620_NoFliker, | 6242 | {OV7620_NoFliker, OV7620_NoFliker, |
6645 | OV7620_50HZ, OV7620_50HZ, | 6243 | OV7620_50HZ, OV7620_50HZ, |
6646 | OV7620_60HZ, OV7620_60HZ}, | 6244 | OV7620_60HZ, OV7620_60HZ}, |
6647 | /* SENSOR_OV7630C 10 */ | 6245 | /* SENSOR_OV7630C 11 */ |
6648 | {NULL, NULL, | 6246 | {NULL, NULL, |
6649 | NULL, NULL, | 6247 | NULL, NULL, |
6650 | NULL, NULL}, | 6248 | NULL, NULL}, |
6651 | /* SENSOR_PAS106 11 */ | 6249 | /* SENSOR_PAS106 12 */ |
6652 | {pas106b_NoFliker, pas106b_NoFliker, | 6250 | {pas106b_NoFliker, pas106b_NoFliker, |
6653 | pas106b_50HZ, pas106b_50HZ, | 6251 | pas106b_50HZ, pas106b_50HZ, |
6654 | pas106b_60HZ, pas106b_60HZ}, | 6252 | pas106b_60HZ, pas106b_60HZ}, |
6655 | /* SENSOR_PAS202B 12 */ | 6253 | /* SENSOR_PAS202B 13 */ |
6656 | {pas202b_NoFlikerScale, pas202b_NoFliker, | 6254 | {pas202b_NoFlikerScale, pas202b_NoFliker, |
6657 | pas202b_50HZScale, pas202b_50HZ, | 6255 | pas202b_50HZScale, pas202b_50HZ, |
6658 | pas202b_60HZScale, pas202b_60HZ}, | 6256 | pas202b_60HZScale, pas202b_60HZ}, |
6659 | /* SENSOR_PB0330 13 */ | 6257 | /* SENSOR_PB0330 14 */ |
6660 | {pb0330_NoFliker, pb0330_NoFlikerScale, | 6258 | {pb0330_NoFlikerScale, pb0330_NoFliker, |
6661 | pb0330_50HZ, pb0330_50HZScale, | 6259 | pb0330_50HZScale, pb0330_50HZ, |
6662 | pb0330_60HZ, pb0330_60HZScale}, | 6260 | pb0330_60HZScale, pb0330_60HZ}, |
6663 | /* SENSOR_PO2030 14 */ | 6261 | /* SENSOR_PO2030 15 */ |
6664 | {PO2030_NoFliker, PO2030_NoFliker, | 6262 | {PO2030_NoFliker, PO2030_NoFliker, |
6665 | PO2030_50HZ, PO2030_50HZ, | 6263 | PO2030_50HZ, PO2030_50HZ, |
6666 | PO2030_60HZ, PO2030_60HZ}, | 6264 | PO2030_60HZ, PO2030_60HZ}, |
6667 | /* SENSOR_TAS5130CK 15 */ | 6265 | /* SENSOR_TAS5130CK 16 */ |
6668 | {tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale, | 6266 | {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker, |
6669 | tas5130cxx_50HZ, tas5130cxx_50HZScale, | 6267 | tas5130cxx_50HZScale, tas5130cxx_50HZ, |
6670 | tas5130cxx_60HZ, tas5130cxx_60HZScale}, | 6268 | tas5130cxx_60HZScale, tas5130cxx_60HZ}, |
6671 | /* SENSOR_TAS5130CXX 16 */ | 6269 | /* SENSOR_TAS5130CXX 17 */ |
6672 | {tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale, | 6270 | {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker, |
6673 | tas5130cxx_50HZ, tas5130cxx_50HZScale, | 6271 | tas5130cxx_50HZScale, tas5130cxx_50HZ, |
6674 | tas5130cxx_60HZ, tas5130cxx_60HZScale}, | 6272 | tas5130cxx_60HZScale, tas5130cxx_60HZ}, |
6675 | /* SENSOR_TAS5130C_VF0250 17 */ | 6273 | /* SENSOR_TAS5130C_VF0250 18 */ |
6676 | {tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale, | 6274 | {tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale, |
6677 | tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale, | 6275 | tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale, |
6678 | tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale}, | 6276 | tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale}, |
@@ -6729,6 +6327,7 @@ static void send_unknown(struct usb_device *dev, int sensor) | |||
6729 | case SENSOR_ADCM2700: | 6327 | case SENSOR_ADCM2700: |
6730 | case SENSOR_GC0305: | 6328 | case SENSOR_GC0305: |
6731 | case SENSOR_OV7620: | 6329 | case SENSOR_OV7620: |
6330 | case SENSOR_MI0360SOC: | ||
6732 | case SENSOR_PB0330: | 6331 | case SENSOR_PB0330: |
6733 | case SENSOR_PO2030: | 6332 | case SENSOR_PO2030: |
6734 | reg_w(dev, 0x0d, 0x003a); | 6333 | reg_w(dev, 0x0d, 0x003a); |
@@ -6820,7 +6419,7 @@ static int vga_2wr_probe(struct gspca_dev *gspca_dev) | |||
6820 | start_2wr_probe(dev, 0x0e); /* PAS202BCB */ | 6419 | start_2wr_probe(dev, 0x0e); /* PAS202BCB */ |
6821 | reg_w(dev, 0x08, 0x008d); | 6420 | reg_w(dev, 0x08, 0x008d); |
6822 | i2c_write(gspca_dev, 0x03, 0xaa, 0x00); | 6421 | i2c_write(gspca_dev, 0x03, 0xaa, 0x00); |
6823 | msleep(500); | 6422 | msleep(50); |
6824 | retword = i2c_read(gspca_dev, 0x03); | 6423 | retword = i2c_read(gspca_dev, 0x03); |
6825 | if (retword != 0) | 6424 | if (retword != 0) |
6826 | return 0x0e; /* PAS202BCB */ | 6425 | return 0x0e; /* PAS202BCB */ |
@@ -6863,7 +6462,8 @@ struct sensor_by_chipset_revision { | |||
6863 | __u8 internal_sensor_id; | 6462 | __u8 internal_sensor_id; |
6864 | }; | 6463 | }; |
6865 | static const struct sensor_by_chipset_revision chipset_revision_sensor[] = { | 6464 | static const struct sensor_by_chipset_revision chipset_revision_sensor[] = { |
6866 | {0xc001, 0x13}, /* MI0360 */ | 6465 | {0xc000, 0x12}, /* TAS5130C */ |
6466 | {0xc001, 0x13}, /* MI0360SOC */ | ||
6867 | {0xe001, 0x13}, | 6467 | {0xe001, 0x13}, |
6868 | {0x8001, 0x13}, | 6468 | {0x8001, 0x13}, |
6869 | {0x8000, 0x14}, /* CS2102K */ | 6469 | {0x8000, 0x14}, /* CS2102K */ |
@@ -6963,7 +6563,6 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev) | |||
6963 | reg_w(dev, 0x01, 0x0001); | 6563 | reg_w(dev, 0x01, 0x0001); |
6964 | reg_w(dev, 0xee, 0x008b); | 6564 | reg_w(dev, 0xee, 0x008b); |
6965 | reg_w(dev, 0x03, 0x0012); | 6565 | reg_w(dev, 0x03, 0x0012); |
6966 | /* msleep(150); */ | ||
6967 | reg_w(dev, 0x01, 0x0012); | 6566 | reg_w(dev, 0x01, 0x0012); |
6968 | reg_w(dev, 0x05, 0x0012); | 6567 | reg_w(dev, 0x05, 0x0012); |
6969 | retword = i2c_read(gspca_dev, 0x00) << 8; /* ID 0 */ | 6568 | retword = i2c_read(gspca_dev, 0x00) << 8; /* ID 0 */ |
@@ -7025,7 +6624,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7025 | int vga = 1; /* 1: vga, 0: sif */ | 6624 | int vga = 1; /* 1: vga, 0: sif */ |
7026 | static const __u8 gamma[SENSOR_MAX] = { | 6625 | static const __u8 gamma[SENSOR_MAX] = { |
7027 | 4, /* SENSOR_ADCM2700 0 */ | 6626 | 4, /* SENSOR_ADCM2700 0 */ |
7028 | 5, /* SENSOR_CS2102 1 */ | 6627 | 4, /* SENSOR_CS2102 1 */ |
7029 | 5, /* SENSOR_CS2102K 2 */ | 6628 | 5, /* SENSOR_CS2102K 2 */ |
7030 | 4, /* SENSOR_GC0305 3 */ | 6629 | 4, /* SENSOR_GC0305 3 */ |
7031 | 4, /* SENSOR_HDCS2020b 4 */ | 6630 | 4, /* SENSOR_HDCS2020b 4 */ |
@@ -7033,15 +6632,16 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7033 | 4, /* SENSOR_HV7131C 6 */ | 6632 | 4, /* SENSOR_HV7131C 6 */ |
7034 | 4, /* SENSOR_ICM105A 7 */ | 6633 | 4, /* SENSOR_ICM105A 7 */ |
7035 | 4, /* SENSOR_MC501CB 8 */ | 6634 | 4, /* SENSOR_MC501CB 8 */ |
7036 | 3, /* SENSOR_OV7620 9 */ | 6635 | 4, /* SENSOR_MI0360SOC 9 */ |
7037 | 4, /* SENSOR_OV7630C 10 */ | 6636 | 3, /* SENSOR_OV7620 10 */ |
7038 | 4, /* SENSOR_PAS106 11 */ | 6637 | 4, /* SENSOR_OV7630C 11 */ |
7039 | 4, /* SENSOR_PAS202B 12 */ | 6638 | 4, /* SENSOR_PAS106 12 */ |
7040 | 4, /* SENSOR_PB0330 13 */ | 6639 | 4, /* SENSOR_PAS202B 13 */ |
7041 | 4, /* SENSOR_PO2030 14 */ | 6640 | 4, /* SENSOR_PB0330 14 */ |
7042 | 4, /* SENSOR_TAS5130CK 15 */ | 6641 | 4, /* SENSOR_PO2030 15 */ |
7043 | 4, /* SENSOR_TAS5130CXX 16 */ | 6642 | 4, /* SENSOR_TAS5130CK 16 */ |
7044 | 3, /* SENSOR_TAS5130C_VF0250 17 */ | 6643 | 3, /* SENSOR_TAS5130CXX 17 */ |
6644 | 3, /* SENSOR_TAS5130C_VF0250 18 */ | ||
7045 | }; | 6645 | }; |
7046 | 6646 | ||
7047 | /* define some sensors from the vendor/product */ | 6647 | /* define some sensors from the vendor/product */ |
@@ -7103,7 +6703,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7103 | break; | 6703 | break; |
7104 | case 0x10: | 6704 | case 0x10: |
7105 | case 0x12: | 6705 | case 0x12: |
7106 | PDEBUG(D_PROBE, "Find Sensor TAS5130"); | 6706 | PDEBUG(D_PROBE, "Find Sensor TAS5130C"); |
7107 | sd->sensor = SENSOR_TAS5130CXX; | 6707 | sd->sensor = SENSOR_TAS5130CXX; |
7108 | break; | 6708 | break; |
7109 | case 0x11: | 6709 | case 0x11: |
@@ -7112,9 +6712,9 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7112 | break; | 6712 | break; |
7113 | case 0x13: | 6713 | case 0x13: |
7114 | PDEBUG(D_PROBE, | 6714 | PDEBUG(D_PROBE, |
7115 | "Find Sensor MI0360. Chip revision %x", | 6715 | "Find Sensor MI0360SOC. Chip revision %x", |
7116 | sd->chip_revision); | 6716 | sd->chip_revision); |
7117 | sd->sensor = SENSOR_PB0330; | 6717 | sd->sensor = SENSOR_MI0360SOC; |
7118 | break; | 6718 | break; |
7119 | case 0x14: | 6719 | case 0x14: |
7120 | PDEBUG(D_PROBE, | 6720 | PDEBUG(D_PROBE, |
@@ -7228,17 +6828,17 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
7228 | {hv7131cxx_InitialScale, hv7131cxx_Initial}, /* 6 */ | 6828 | {hv7131cxx_InitialScale, hv7131cxx_Initial}, /* 6 */ |
7229 | {icm105axx_InitialScale, icm105axx_Initial}, /* 7 */ | 6829 | {icm105axx_InitialScale, icm105axx_Initial}, /* 7 */ |
7230 | {MC501CB_InitialScale, MC501CB_Initial}, /* 8 */ | 6830 | {MC501CB_InitialScale, MC501CB_Initial}, /* 8 */ |
7231 | {OV7620_mode0, OV7620_mode1}, /* 9 */ | 6831 | {mi0360soc_Initial, mi0360soc_InitialScale}, /* 9 */ |
7232 | {ov7630c_InitialScale, ov7630c_Initial}, /* 10 */ | 6832 | {OV7620_mode0, OV7620_mode1}, /* 10 */ |
7233 | {pas106b_InitialScale, pas106b_Initial}, /* 11 */ | 6833 | {ov7630c_InitialScale, ov7630c_Initial}, /* 11 */ |
7234 | {pas202b_Initial, pas202b_InitialScale}, /* 12 */ | 6834 | {pas106b_InitialScale, pas106b_Initial}, /* 12 */ |
7235 | {pb0330xx_InitialScale, pb0330xx_Initial}, /* 13 */ | 6835 | {pas202b_Initial, pas202b_InitialScale}, /* 13 */ |
7236 | /* or {pb03303x_InitialScale, pb03303x_Initial}, */ | 6836 | {pb0330_Initial, pb0330_InitialScale}, /* 14 */ |
7237 | {PO2030_mode0, PO2030_mode1}, /* 14 */ | 6837 | {PO2030_mode0, PO2030_mode1}, /* 15 */ |
7238 | {tas5130CK_InitialScale, tas5130CK_Initial}, /* 15 */ | 6838 | {tas5130CK_InitialScale, tas5130CK_Initial}, /* 16 */ |
7239 | {tas5130cxx_InitialScale, tas5130cxx_Initial}, /* 16 */ | 6839 | {tas5130cxx_Initial, tas5130cxx_InitialScale}, /* 17 */ |
7240 | {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial}, | 6840 | {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial}, |
7241 | /* 17 */ | 6841 | /* 18 */ |
7242 | }; | 6842 | }; |
7243 | 6843 | ||
7244 | /* create the JPEG header */ | 6844 | /* create the JPEG header */ |
@@ -7258,19 +6858,6 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
7258 | case SENSOR_PAS106: | 6858 | case SENSOR_PAS106: |
7259 | usb_exchange(gspca_dev, pas106b_Initial_com); | 6859 | usb_exchange(gspca_dev, pas106b_Initial_com); |
7260 | break; | 6860 | break; |
7261 | case SENSOR_PB0330: | ||
7262 | if (mode) { | ||
7263 | if (sd->chip_revision == 0xc001 | ||
7264 | || sd->chip_revision == 0xe001 | ||
7265 | || sd->chip_revision == 0x8001) | ||
7266 | zc3_init = pb03303x_Initial; | ||
7267 | } else { | ||
7268 | if (sd->chip_revision == 0xc001 | ||
7269 | || sd->chip_revision == 0xe001 | ||
7270 | || sd->chip_revision == 0x8001) | ||
7271 | zc3_init = pb03303x_InitialScale; | ||
7272 | } | ||
7273 | break; | ||
7274 | } | 6861 | } |
7275 | usb_exchange(gspca_dev, zc3_init); | 6862 | usb_exchange(gspca_dev, zc3_init); |
7276 | 6863 | ||
@@ -7310,10 +6897,8 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
7310 | 6897 | ||
7311 | /* set the gamma tables when not set */ | 6898 | /* set the gamma tables when not set */ |
7312 | switch (sd->sensor) { | 6899 | switch (sd->sensor) { |
7313 | case SENSOR_CS2102: /* gamma set in xxx_Initial */ | 6900 | case SENSOR_CS2102K: /* gamma set in xxx_Initial */ |
7314 | case SENSOR_CS2102K: | ||
7315 | case SENSOR_HDCS2020b: | 6901 | case SENSOR_HDCS2020b: |
7316 | case SENSOR_PB0330: /* pb with chip_revision - see above */ | ||
7317 | case SENSOR_OV7630C: | 6902 | case SENSOR_OV7630C: |
7318 | case SENSOR_TAS5130CK: | 6903 | case SENSOR_TAS5130CK: |
7319 | break; | 6904 | break; |
@@ -7365,7 +6950,7 @@ static int sd_start(struct gspca_dev *gspca_dev) | |||
7365 | setautogain(gspca_dev); | 6950 | setautogain(gspca_dev); |
7366 | switch (sd->sensor) { | 6951 | switch (sd->sensor) { |
7367 | case SENSOR_PO2030: | 6952 | case SENSOR_PO2030: |
7368 | msleep(500); | 6953 | msleep(50); |
7369 | reg_r(gspca_dev, 0x0008); | 6954 | reg_r(gspca_dev, 0x0008); |
7370 | reg_r(gspca_dev, 0x0007); | 6955 | reg_r(gspca_dev, 0x0007); |
7371 | /*fall thru*/ | 6956 | /*fall thru*/ |
@@ -7389,17 +6974,16 @@ static void sd_stop0(struct gspca_dev *gspca_dev) | |||
7389 | } | 6974 | } |
7390 | 6975 | ||
7391 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, | 6976 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, |
7392 | struct gspca_frame *frame, | 6977 | u8 *data, |
7393 | __u8 *data, | ||
7394 | int len) | 6978 | int len) |
7395 | { | 6979 | { |
7396 | struct sd *sd = (struct sd *) gspca_dev; | 6980 | struct sd *sd = (struct sd *) gspca_dev; |
7397 | 6981 | ||
7398 | if (data[0] == 0xff && data[1] == 0xd8) { /* start of frame */ | 6982 | if (data[0] == 0xff && data[1] == 0xd8) { /* start of frame */ |
7399 | frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, | 6983 | gspca_frame_add(gspca_dev, LAST_PACKET, |
7400 | data, 0); | 6984 | NULL, 0); |
7401 | /* put the JPEG header in the new frame */ | 6985 | /* put the JPEG header in the new frame */ |
7402 | gspca_frame_add(gspca_dev, FIRST_PACKET, frame, | 6986 | gspca_frame_add(gspca_dev, FIRST_PACKET, |
7403 | sd->jpeg_hdr, JPEG_HDR_SZ); | 6987 | sd->jpeg_hdr, JPEG_HDR_SZ); |
7404 | 6988 | ||
7405 | /* remove the webcam's header: | 6989 | /* remove the webcam's header: |
@@ -7411,7 +6995,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev, | |||
7411 | data += 18; | 6995 | data += 18; |
7412 | len -= 18; | 6996 | len -= 18; |
7413 | } | 6997 | } |
7414 | gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len); | 6998 | gspca_frame_add(gspca_dev, INTER_PACKET, data, len); |
7415 | } | 6999 | } |
7416 | 7000 | ||
7417 | static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val) | 7001 | static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val) |