34 #include <linux/module.h>
35 #include <linux/init.h>
36 #include <linux/kernel.h>
37 #include <linux/version.h>
38 #include <linux/errno.h>
39 #include <linux/slab.h>
40 #include <linux/kref.h>
42 #include <linux/usb.h>
43 #include <media/v4l2-common.h>
44 #include <media/v4l2-ioctl.h>
76 STK_INFO(
"Initialize USB2.0 Syntek Camera\n");
114 for (i=0; i<16; i++) {
119 STK_DEBUG(
"Loop 1 : Read 0x0000 = %02X\n", value);
163 for (i=0; i<16; i++) {
168 STK_DEBUG(
"Loop 2 : Read 0x0000 = %02X\n", value);
218 for (i=0; i<16; i++) {
223 STK_DEBUG(
"Loop 3 : Read 0x0000 = %02X\n", value);
369 STK_INFO(
"Syntek USB2.0 Camera is ready\n");
400 static const int values_001B[] = {
401 0x0e, 0x03, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e
403 static const int values_001C[] = {
404 0x06, 0x02, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x0e
406 static const int values_0202[] = {
407 0x1e, 0x0a, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e
409 static const int values_0110[] = {
410 0x07, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00
412 static const int values_0112[] = {
413 0x07, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00
415 static const int values_0114[] = {
416 0x87, 0x80, 0x80, 0x80, 0x80, 0xbe, 0xbe, 0x80, 0x80, 0x80, 0x80, 0x00
418 static const int values_0115[] = {
419 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x05
421 static const int values_0116[] = {
422 0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe9, 0xe9, 0xe0, 0xe0, 0xe0, 0xe0, 0x00
424 static const int values_0117[] = {
425 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04
427 static const int values_0100[] = {
428 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21
431 STK_DEBUG(
"dev_stka311_configure_device : %d\n", step);
718 int *values_204 = NULL;
719 int *values_205 = NULL;
722 static const int values_1_204[] = {
723 0x12, 0x11, 0x3b, 0x6a, 0x13, 0x10, 0x00, 0x01, 0x02, 0x13,
724 0x39, 0x38, 0x37, 0x35, 0x0e, 0x12, 0x04, 0x0c, 0x0d, 0x17,
725 0x18, 0x32, 0x19, 0x1a, 0x03, 0x1b, 0x16, 0x33, 0x34, 0x41,
726 0x96, 0x3d, 0x69, 0x3a, 0x8e, 0x3c, 0x8f, 0x8b, 0x8c, 0x94,
727 0x95, 0x40, 0x29, 0x0f, 0xa5, 0x1e, 0xa9, 0xaa, 0xab, 0x90,
728 0x91, 0x9f, 0xa0, 0x24, 0x25, 0x26, 0x14, 0x2a, 0x2b
730 static const int values_1_205[] = {
731 0x45, 0x80, 0x01, 0x7d, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
732 0x50, 0x93, 0x00, 0x81, 0x20, 0x45, 0x00, 0x00, 0x00, 0x24,
733 0xc4, 0xb6, 0x00, 0x3c, 0x36, 0x00, 0x07, 0xe2, 0xbf, 0x00,
734 0x04, 0x19, 0x40, 0x0d, 0x00, 0x73, 0xdf, 0x06, 0x20, 0x88,
735 0x88, 0xc1, 0x3f, 0x42, 0x80, 0x04, 0xb8, 0x92, 0x0a, 0x00,
736 0x00, 0x00, 0x00, 0x68, 0x5c, 0xc3, 0x2e, 0x00, 0x00
740 static const int values_2_204[] = {
741 0x12, 0x11, 0x3b, 0x6a, 0x13, 0x10, 0x00, 0x01, 0x02, 0x13,
742 0x39, 0x38, 0x37, 0x35, 0x0e, 0x12, 0x04, 0x0c, 0x0d, 0x17,
743 0x18, 0x32, 0x19, 0x1a, 0x03, 0x1b, 0x16, 0x33, 0x34, 0x41,
744 0x96, 0x3d, 0x69, 0x3a, 0x8e, 0x3c, 0x8f, 0x8b, 0x8c, 0x94,
745 0x95, 0x40, 0x29, 0x0f, 0xa5, 0x1e, 0xa9, 0xaa, 0xab, 0x90,
746 0x91, 0x9f, 0xa0, 0x24, 0x25, 0x26, 0x14, 0x2a, 0x2b
748 static const int values_2_205[] = {
749 0x05, 0x80, 0x01, 0x7d, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
750 0x50, 0x93, 0x00, 0x81, 0x20, 0x05, 0x00, 0x00, 0x00, 0x1b,
751 0xbb, 0xa4, 0x01, 0x81, 0x12, 0x00, 0x07, 0xe2, 0xbf, 0x00,
752 0x04, 0x19, 0x40, 0x0d, 0x00, 0x73, 0xdf, 0x06, 0x20, 0x88,
753 0x88, 0xc1, 0x3f, 0x42, 0x80, 0x04, 0xb8, 0x92, 0x0a, 0x00,
754 0x00, 0x00, 0x00, 0x68, 0x5c, 0xc3, 0x2e, 0x00, 0x00
759 switch (dev->resolution) {
760 case STK11XX_1280x1024:
761 case STK11XX_1024x768:
762 case STK11XX_800x600:
763 asize = ARRAY_SIZE(values_2_204);
764 values_204 = (
int *) values_2_204;
765 values_205 = (
int *) values_2_205;
768 case STK11XX_640x480:
769 case STK11XX_320x240:
770 case STK11XX_160x120:
771 case STK11XX_213x160:
775 asize = ARRAY_SIZE(values_1_204);
776 values_204 = (
int *) values_1_204;
777 values_205 = (
int *) values_1_205;
782 for(i=0; i<asize; i++) {
793 STK_ERROR(
"Load default sensor settings fail !\n");
978 int value_116, value_117;
1010 switch (dev->resolution) {
1011 case STK11XX_1280x1024:
1012 case STK11XX_1024x768:
1013 case STK11XX_800x600:
1017 case STK11XX_640x480:
1018 case STK11XX_320x240:
1019 case STK11XX_160x120:
1020 case STK11XX_213x160:
1021 case STK11XX_128x96: