diff options
Diffstat (limited to 'drivers/media/video/gspca/zc3xx.c')
-rw-r--r-- | drivers/media/video/gspca/zc3xx.c | 649 |
1 files changed, 351 insertions, 298 deletions
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c index 03cc7fc58dbc..b767f32511bb 100644 --- a/drivers/media/video/gspca/zc3xx.c +++ b/drivers/media/video/gspca/zc3xx.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * Copyright (C) 2004 2005 2006 Michel Xhaard | 3 | * Copyright (C) 2004 2005 2006 Michel Xhaard |
4 | * mxhaard@magic.fr | 4 | * mxhaard@magic.fr |
5 | * | 5 | * |
6 | * V4L2 by Jean-François Moine <http://moinejf.free.fr> | 6 | * V4L2 by Jean-Francois Moine <http://moinejf.free.fr> |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
@@ -24,15 +24,14 @@ | |||
24 | 24 | ||
25 | #include "gspca.h" | 25 | #include "gspca.h" |
26 | 26 | ||
27 | #define DRIVER_VERSION_NUMBER KERNEL_VERSION(0, 2, 13) | 27 | #define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 1, 0) |
28 | static const char version[] = "0.2.13"; | 28 | static const char version[] = "2.1.0"; |
29 | 29 | ||
30 | MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>, " | 30 | MODULE_AUTHOR("Michel Xhaard <mxhaard@users.sourceforge.net>, " |
31 | "Serge A. Suchkov <Serge.A.S@tochka.ru>"); | 31 | "Serge A. Suchkov <Serge.A.S@tochka.ru>"); |
32 | MODULE_DESCRIPTION("GSPCA ZC03xx/VC3xx USB Camera Driver"); | 32 | MODULE_DESCRIPTION("GSPCA ZC03xx/VC3xx USB Camera Driver"); |
33 | MODULE_LICENSE("GPL"); | 33 | MODULE_LICENSE("GPL"); |
34 | 34 | ||
35 | static int lightfreq = 50; | ||
36 | static int force_sensor = -1; | 35 | static int force_sensor = -1; |
37 | 36 | ||
38 | #include "jpeg.h" | 37 | #include "jpeg.h" |
@@ -41,10 +40,12 @@ static int force_sensor = -1; | |||
41 | struct sd { | 40 | struct sd { |
42 | struct gspca_dev gspca_dev; /* !! must be the first item */ | 41 | struct gspca_dev gspca_dev; /* !! must be the first item */ |
43 | 42 | ||
44 | unsigned char brightness; | 43 | __u8 brightness; |
45 | unsigned char contrast; | 44 | __u8 contrast; |
46 | unsigned char autogain; | 45 | __u8 gamma; |
47 | unsigned char gamma; | 46 | __u8 autogain; |
47 | __u8 lightfreq; | ||
48 | __u8 sharpness; | ||
48 | 49 | ||
49 | char qindex; | 50 | char qindex; |
50 | char sensor; /* Type of image sensor chip */ | 51 | char sensor; /* Type of image sensor chip */ |
@@ -61,14 +62,13 @@ struct sd { | |||
61 | #define SENSOR_OV7620 9 | 62 | #define SENSOR_OV7620 9 |
62 | /*#define SENSOR_OV7648 9 - same values */ | 63 | /*#define SENSOR_OV7648 9 - same values */ |
63 | #define SENSOR_OV7630C 10 | 64 | #define SENSOR_OV7630C 10 |
64 | /*#define SENSOR_free 11 */ | 65 | #define SENSOR_PAS106 11 |
65 | #define SENSOR_PAS106 12 | 66 | #define SENSOR_PB0330 12 |
66 | #define SENSOR_PB0330 13 | 67 | #define SENSOR_PO2030 13 |
67 | #define SENSOR_PO2030 14 | 68 | #define SENSOR_TAS5130CK 14 |
68 | #define SENSOR_TAS5130CK 15 | 69 | #define SENSOR_TAS5130CXX 15 |
69 | #define SENSOR_TAS5130CXX 16 | 70 | #define SENSOR_TAS5130C_VF0250 16 |
70 | #define SENSOR_TAS5130C_VF0250 17 | 71 | #define SENSOR_MAX 17 |
71 | #define SENSOR_MAX 18 | ||
72 | unsigned short chip_revision; | 72 | unsigned short chip_revision; |
73 | }; | 73 | }; |
74 | 74 | ||
@@ -79,7 +79,12 @@ static int sd_setcontrast(struct gspca_dev *gspca_dev, __s32 val); | |||
79 | static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val); | 79 | static int sd_getcontrast(struct gspca_dev *gspca_dev, __s32 *val); |
80 | static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val); | 80 | static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val); |
81 | static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val); | 81 | static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val); |
82 | static int sd_setgamma(struct gspca_dev *gspca_dev, __s32 val); | ||
82 | static int sd_getgamma(struct gspca_dev *gspca_dev, __s32 *val); | 83 | static int sd_getgamma(struct gspca_dev *gspca_dev, __s32 *val); |
84 | static int sd_setfreq(struct gspca_dev *gspca_dev, __s32 val); | ||
85 | static int sd_getfreq(struct gspca_dev *gspca_dev, __s32 *val); | ||
86 | static int sd_setsharpness(struct gspca_dev *gspca_dev, __s32 val); | ||
87 | static int sd_getsharpness(struct gspca_dev *gspca_dev, __s32 *val); | ||
83 | 88 | ||
84 | static struct ctrl sd_ctrls[] = { | 89 | static struct ctrl sd_ctrls[] = { |
85 | #define SD_BRIGHTNESS 0 | 90 | #define SD_BRIGHTNESS 0 |
@@ -110,7 +115,21 @@ static struct ctrl sd_ctrls[] = { | |||
110 | .set = sd_setcontrast, | 115 | .set = sd_setcontrast, |
111 | .get = sd_getcontrast, | 116 | .get = sd_getcontrast, |
112 | }, | 117 | }, |
113 | #define SD_AUTOGAIN 2 | 118 | #define SD_GAMMA 2 |
119 | { | ||
120 | { | ||
121 | .id = V4L2_CID_GAMMA, | ||
122 | .type = V4L2_CTRL_TYPE_INTEGER, | ||
123 | .name = "Gamma", | ||
124 | .minimum = 1, | ||
125 | .maximum = 6, | ||
126 | .step = 1, | ||
127 | .default_value = 4, | ||
128 | }, | ||
129 | .set = sd_setgamma, | ||
130 | .get = sd_getgamma, | ||
131 | }, | ||
132 | #define SD_AUTOGAIN 3 | ||
114 | { | 133 | { |
115 | { | 134 | { |
116 | .id = V4L2_CID_AUTOGAIN, | 135 | .id = V4L2_CID_AUTOGAIN, |
@@ -124,19 +143,33 @@ static struct ctrl sd_ctrls[] = { | |||
124 | .set = sd_setautogain, | 143 | .set = sd_setautogain, |
125 | .get = sd_getautogain, | 144 | .get = sd_getautogain, |
126 | }, | 145 | }, |
127 | #define SD_GAMMA 3 | 146 | #define SD_FREQ 4 |
128 | { | 147 | { |
129 | { | 148 | { |
130 | .id = V4L2_CID_GAMMA, | 149 | .id = V4L2_CID_POWER_LINE_FREQUENCY, |
150 | .type = V4L2_CTRL_TYPE_MENU, | ||
151 | .name = "Light frequency filter", | ||
152 | .minimum = 0, | ||
153 | .maximum = 2, /* 0: 0, 1: 50Hz, 2:60Hz */ | ||
154 | .step = 1, | ||
155 | .default_value = 1, | ||
156 | }, | ||
157 | .set = sd_setfreq, | ||
158 | .get = sd_getfreq, | ||
159 | }, | ||
160 | #define SD_SHARPNESS 5 | ||
161 | { | ||
162 | { | ||
163 | .id = V4L2_CID_SHARPNESS, | ||
131 | .type = V4L2_CTRL_TYPE_INTEGER, | 164 | .type = V4L2_CTRL_TYPE_INTEGER, |
132 | .name = "Gamma", | 165 | .name = "Sharpness", |
133 | .minimum = 1, | 166 | .minimum = 0, |
134 | .maximum = 6, | 167 | .maximum = 3, |
135 | .step = 1, | 168 | .step = 1, |
136 | .default_value = 4, | 169 | .default_value = 2, |
137 | }, | 170 | }, |
138 | .set = sd_setcontrast, | 171 | .set = sd_setsharpness, |
139 | .get = sd_getgamma, | 172 | .get = sd_getsharpness, |
140 | }, | 173 | }, |
141 | }; | 174 | }; |
142 | 175 | ||
@@ -211,11 +244,11 @@ static struct usb_action cs2102_Initial[] = { | |||
211 | {0xa1, 0x01, 0x0002}, | 244 | {0xa1, 0x01, 0x0002}, |
212 | {0xa1, 0x01, 0x0008}, | 245 | {0xa1, 0x01, 0x0008}, |
213 | {0xa0, 0x03, 0x0008}, /* 00 */ | 246 | {0xa0, 0x03, 0x0008}, /* 00 */ |
214 | {0xa0, 0x08, 0x01c6}, /* clock ? */ | 247 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
215 | {0xa1, 0x01, 0x01c8}, | 248 | {0xa1, 0x01, 0x01c8}, |
216 | {0xa1, 0x01, 0x01c9}, | 249 | {0xa1, 0x01, 0x01c9}, |
217 | {0xa1, 0x01, 0x01ca}, | 250 | {0xa1, 0x01, 0x01ca}, |
218 | {0xa0, 0x0f, 0x01cb}, | 251 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
219 | {0xa0, 0x24, 0x0120}, /* gamma 5 */ | 252 | {0xa0, 0x24, 0x0120}, /* gamma 5 */ |
220 | {0xa0, 0x44, 0x0121}, | 253 | {0xa0, 0x44, 0x0121}, |
221 | {0xa0, 0x64, 0x0122}, | 254 | {0xa0, 0x64, 0x0122}, |
@@ -284,7 +317,7 @@ static struct usb_action cs2102_Initial[] = { | |||
284 | {0xa0, 0x40, 0x0116}, | 317 | {0xa0, 0x40, 0x0116}, |
285 | {0xa0, 0x40, 0x0117}, | 318 | {0xa0, 0x40, 0x0117}, |
286 | {0xa0, 0x40, 0x0118}, | 319 | {0xa0, 0x40, 0x0118}, |
287 | {0, 0, 0} | 320 | {} |
288 | }; | 321 | }; |
289 | 322 | ||
290 | static struct usb_action cs2102_InitialScale[] = { | 323 | static struct usb_action cs2102_InitialScale[] = { |
@@ -341,11 +374,11 @@ static struct usb_action cs2102_InitialScale[] = { | |||
341 | {0xa1, 0x01, 0x0002}, | 374 | {0xa1, 0x01, 0x0002}, |
342 | {0xa1, 0x01, 0x0008}, | 375 | {0xa1, 0x01, 0x0008}, |
343 | {0xa0, 0x03, 0x0008}, /* 00 */ | 376 | {0xa0, 0x03, 0x0008}, /* 00 */ |
344 | {0xa0, 0x08, 0x01c6}, /* clock ? */ | 377 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
345 | {0xa1, 0x01, 0x01c8}, | 378 | {0xa1, 0x01, 0x01c8}, |
346 | {0xa1, 0x01, 0x01c9}, | 379 | {0xa1, 0x01, 0x01c9}, |
347 | {0xa1, 0x01, 0x01ca}, | 380 | {0xa1, 0x01, 0x01ca}, |
348 | {0xa0, 0x0f, 0x01cb}, | 381 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
349 | {0xa0, 0x24, 0x0120}, /* gamma 5 */ | 382 | {0xa0, 0x24, 0x0120}, /* gamma 5 */ |
350 | {0xa0, 0x44, 0x0121}, | 383 | {0xa0, 0x44, 0x0121}, |
351 | {0xa0, 0x64, 0x0122}, | 384 | {0xa0, 0x64, 0x0122}, |
@@ -414,7 +447,7 @@ static struct usb_action cs2102_InitialScale[] = { | |||
414 | {0xa0, 0x40, 0x0116}, | 447 | {0xa0, 0x40, 0x0116}, |
415 | {0xa0, 0x40, 0x0117}, | 448 | {0xa0, 0x40, 0x0117}, |
416 | {0xa0, 0x40, 0x0118}, | 449 | {0xa0, 0x40, 0x0118}, |
417 | {0, 0, 0} | 450 | {} |
418 | }; | 451 | }; |
419 | static struct usb_action cs2102_50HZ[] = { | 452 | static struct usb_action cs2102_50HZ[] = { |
420 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 453 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -439,7 +472,7 @@ static struct usb_action cs2102_50HZ[] = { | |||
439 | {0xa0, 0x8c, 0x001d}, /* 00,1d,8c,cc */ | 472 | {0xa0, 0x8c, 0x001d}, /* 00,1d,8c,cc */ |
440 | {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */ | 473 | {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */ |
441 | {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ | 474 | {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ |
442 | {0, 0, 0} | 475 | {} |
443 | }; | 476 | }; |
444 | static struct usb_action cs2102_50HZScale[] = { | 477 | static struct usb_action cs2102_50HZScale[] = { |
445 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 478 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -464,7 +497,7 @@ static struct usb_action cs2102_50HZScale[] = { | |||
464 | {0xa0, 0x93, 0x001d}, /* 00,1d,93,cc */ | 497 | {0xa0, 0x93, 0x001d}, /* 00,1d,93,cc */ |
465 | {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */ | 498 | {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */ |
466 | {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ | 499 | {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */ |
467 | {0, 0, 0} | 500 | {} |
468 | }; | 501 | }; |
469 | static struct usb_action cs2102_60HZ[] = { | 502 | static struct usb_action cs2102_60HZ[] = { |
470 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 503 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -489,7 +522,7 @@ static struct usb_action cs2102_60HZ[] = { | |||
489 | {0xa0, 0x5d, 0x001d}, /* 00,1d,5d,cc */ | 522 | {0xa0, 0x5d, 0x001d}, /* 00,1d,5d,cc */ |
490 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ | 523 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ |
491 | {0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */ | 524 | {0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */ |
492 | {0, 0, 0} | 525 | {} |
493 | }; | 526 | }; |
494 | static struct usb_action cs2102_60HZScale[] = { | 527 | static struct usb_action cs2102_60HZScale[] = { |
495 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 528 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -514,7 +547,7 @@ static struct usb_action cs2102_60HZScale[] = { | |||
514 | {0xa0, 0xb7, 0x001d}, /* 00,1d,b7,cc */ | 547 | {0xa0, 0xb7, 0x001d}, /* 00,1d,b7,cc */ |
515 | {0xa0, 0xd0, 0x001e}, /* 00,1e,d0,cc */ | 548 | {0xa0, 0xd0, 0x001e}, /* 00,1e,d0,cc */ |
516 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ | 549 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ |
517 | {0, 0, 0} | 550 | {} |
518 | }; | 551 | }; |
519 | static struct usb_action cs2102_NoFliker[] = { | 552 | static struct usb_action cs2102_NoFliker[] = { |
520 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 553 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -539,7 +572,7 @@ static struct usb_action cs2102_NoFliker[] = { | |||
539 | {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */ | 572 | {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */ |
540 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ | 573 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ |
541 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ | 574 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ |
542 | {0, 0, 0} | 575 | {} |
543 | }; | 576 | }; |
544 | static struct usb_action cs2102_NoFlikerScale[] = { | 577 | static struct usb_action cs2102_NoFlikerScale[] = { |
545 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 578 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -564,7 +597,7 @@ static struct usb_action cs2102_NoFlikerScale[] = { | |||
564 | {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */ | 597 | {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */ |
565 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ | 598 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ |
566 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ | 599 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ |
567 | {0, 0, 0} | 600 | {} |
568 | }; | 601 | }; |
569 | 602 | ||
570 | /* CS2102_KOCOM */ | 603 | /* CS2102_KOCOM */ |
@@ -676,8 +709,8 @@ static struct usb_action cs2102K_Initial[] = { | |||
676 | {0xa0, 0x40, 0x0117}, | 709 | {0xa0, 0x40, 0x0117}, |
677 | {0xa0, 0x4c, 0x0118}, | 710 | {0xa0, 0x4c, 0x0118}, |
678 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 711 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
679 | {0xa0, 0x08, 0x01c6}, | 712 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
680 | {0xa0, 0x0f, 0x01cb}, | 713 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
681 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 714 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
682 | {0xa0, 0x38, 0x0121}, | 715 | {0xa0, 0x38, 0x0121}, |
683 | {0xa0, 0x59, 0x0122}, | 716 | {0xa0, 0x59, 0x0122}, |
@@ -824,7 +857,7 @@ static struct usb_action cs2102K_Initial[] = { | |||
824 | {0xa0, 0x00, 0x01a7}, | 857 | {0xa0, 0x00, 0x01a7}, |
825 | {0xa0, 0x04, 0x01a7}, | 858 | {0xa0, 0x04, 0x01a7}, |
826 | {0xa0, 0x00, 0x01a7}, | 859 | {0xa0, 0x00, 0x01a7}, |
827 | {0, 0, 0} | 860 | {} |
828 | }; | 861 | }; |
829 | 862 | ||
830 | static struct usb_action cs2102K_InitialScale[] = { | 863 | static struct usb_action cs2102K_InitialScale[] = { |
@@ -936,8 +969,8 @@ static struct usb_action cs2102K_InitialScale[] = { | |||
936 | {0xa0, 0x40, 0x0117}, | 969 | {0xa0, 0x40, 0x0117}, |
937 | {0xa0, 0x4c, 0x0118}, | 970 | {0xa0, 0x4c, 0x0118}, |
938 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 971 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
939 | {0xa0, 0x08, 0x01c6}, | 972 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
940 | {0xa0, 0x0f, 0x01cb}, | 973 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
941 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 974 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
942 | {0xa0, 0x38, 0x0121}, | 975 | {0xa0, 0x38, 0x0121}, |
943 | {0xa0, 0x59, 0x0122}, | 976 | {0xa0, 0x59, 0x0122}, |
@@ -1137,8 +1170,8 @@ static struct usb_action cs2102K_InitialScale[] = { | |||
1137 | {0xa0, 0x40, 0x0117}, | 1170 | {0xa0, 0x40, 0x0117}, |
1138 | {0xa0, 0x4c, 0x0118}, | 1171 | {0xa0, 0x4c, 0x0118}, |
1139 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 1172 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
1140 | {0xa0, 0x08, 0x01c6}, | 1173 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
1141 | {0xa0, 0x0f, 0x01cb}, | 1174 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
1142 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 1175 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
1143 | {0xa0, 0x38, 0x0121}, | 1176 | {0xa0, 0x38, 0x0121}, |
1144 | {0xa0, 0x59, 0x0122}, | 1177 | {0xa0, 0x59, 0x0122}, |
@@ -1401,7 +1434,7 @@ static struct usb_action cs2102K_InitialScale[] = { | |||
1401 | {0xa0, 0x04, 0x01a7}, | 1434 | {0xa0, 0x04, 0x01a7}, |
1402 | {0xa0, 0x00, 0x01a7}, | 1435 | {0xa0, 0x00, 0x01a7}, |
1403 | {0xa0, 0x04, 0x01a7}, | 1436 | {0xa0, 0x04, 0x01a7}, |
1404 | {0, 0, 0} | 1437 | {} |
1405 | }; | 1438 | }; |
1406 | 1439 | ||
1407 | static struct usb_action gc0305_Initial[] = { /* 640x480 */ | 1440 | static struct usb_action gc0305_Initial[] = { /* 640x480 */ |
@@ -1466,7 +1499,7 @@ static struct usb_action gc0305_Initial[] = { /* 640x480 */ | |||
1466 | {0xa0, 0x40, 0x0117}, /* 01,17,40,cc */ | 1499 | {0xa0, 0x40, 0x0117}, /* 01,17,40,cc */ |
1467 | {0xa0, 0x52, 0x0118}, /* 01,18,52,cc */ | 1500 | {0xa0, 0x52, 0x0118}, /* 01,18,52,cc */ |
1468 | {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ | 1501 | {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ |
1469 | {0,0,0} | 1502 | {} |
1470 | }; | 1503 | }; |
1471 | static struct usb_action gc0305_InitialScale[] = { /* 320x240 */ | 1504 | static struct usb_action gc0305_InitialScale[] = { /* 320x240 */ |
1472 | {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ | 1505 | {0xa0, 0x01, 0x0000}, /* 00,00,01,cc */ |
@@ -1529,7 +1562,7 @@ static struct usb_action gc0305_InitialScale[] = { /* 320x240 */ | |||
1529 | {0xa0, 0x40, 0x0117}, /* 01,17,40,cc */ | 1562 | {0xa0, 0x40, 0x0117}, /* 01,17,40,cc */ |
1530 | {0xa0, 0x52, 0x0118}, /* 01,18,52,cc */ | 1563 | {0xa0, 0x52, 0x0118}, /* 01,18,52,cc */ |
1531 | {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ | 1564 | {0xa0, 0x03, 0x0113}, /* 01,13,03,cc */ |
1532 | {0,0,0} | 1565 | {} |
1533 | }; | 1566 | }; |
1534 | static struct usb_action gc0305_50HZ[] = { | 1567 | static struct usb_action gc0305_50HZ[] = { |
1535 | {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ | 1568 | {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ |
@@ -1552,7 +1585,7 @@ static struct usb_action gc0305_50HZ[] = { | |||
1552 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ | 1585 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ |
1553 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ | 1586 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ |
1554 | /* {0xa0, 0x85, 0x018d}, * 01,8d,85,cc * * if 640x480 */ | 1587 | /* {0xa0, 0x85, 0x018d}, * 01,8d,85,cc * * if 640x480 */ |
1555 | {0,0,0} | 1588 | {} |
1556 | }; | 1589 | }; |
1557 | static struct usb_action gc0305_60HZ[] = { | 1590 | static struct usb_action gc0305_60HZ[] = { |
1558 | {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ | 1591 | {0xaa, 0x82, 0x0000}, /* 00,82,00,aa */ |
@@ -1575,7 +1608,7 @@ static struct usb_action gc0305_60HZ[] = { | |||
1575 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ | 1608 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ |
1576 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ | 1609 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ |
1577 | {0xa0, 0x80, 0x018d}, /* 01,8d,80,cc */ | 1610 | {0xa0, 0x80, 0x018d}, /* 01,8d,80,cc */ |
1578 | {0,0,0} | 1611 | {} |
1579 | }; | 1612 | }; |
1580 | 1613 | ||
1581 | static struct usb_action gc0305_NoFliker[] = { | 1614 | static struct usb_action gc0305_NoFliker[] = { |
@@ -1598,7 +1631,7 @@ static struct usb_action gc0305_NoFliker[] = { | |||
1598 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ | 1631 | {0xa0, 0x60, 0x011d}, /* 01,1d,60,cc */ |
1599 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ | 1632 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ |
1600 | {0xa0, 0x80, 0x018d}, /* 01,8d,80,cc */ | 1633 | {0xa0, 0x80, 0x018d}, /* 01,8d,80,cc */ |
1601 | {0,0,0} | 1634 | {} |
1602 | }; | 1635 | }; |
1603 | 1636 | ||
1604 | /* play poker with registers at your own risk !! */ | 1637 | /* play poker with registers at your own risk !! */ |
@@ -1647,11 +1680,11 @@ static struct usb_action hdcs2020xx_Initial[] = { | |||
1647 | {0xa1, 0x01, 0x0002}, | 1680 | {0xa1, 0x01, 0x0002}, |
1648 | {0xa1, 0x01, 0x0008}, | 1681 | {0xa1, 0x01, 0x0008}, |
1649 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 1682 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
1650 | {0xa0, 0x04, 0x01c6}, | 1683 | {0xa0, 0x04, 0x01c6}, /* sharpness+ */ |
1651 | {0xa1, 0x01, 0x01c8}, | 1684 | {0xa1, 0x01, 0x01c8}, |
1652 | {0xa1, 0x01, 0x01c9}, | 1685 | {0xa1, 0x01, 0x01c9}, |
1653 | {0xa1, 0x01, 0x01ca}, | 1686 | {0xa1, 0x01, 0x01ca}, |
1654 | {0xa0, 0x07, 0x01cb}, | 1687 | {0xa0, 0x07, 0x01cb}, /* sharpness- */ |
1655 | {0xa0, 0x11, 0x0120}, /* gamma ~4 */ | 1688 | {0xa0, 0x11, 0x0120}, /* gamma ~4 */ |
1656 | {0xa0, 0x37, 0x0121}, | 1689 | {0xa0, 0x37, 0x0121}, |
1657 | {0xa0, 0x58, 0x0122}, | 1690 | {0xa0, 0x58, 0x0122}, |
@@ -1744,7 +1777,7 @@ static struct usb_action hdcs2020xx_Initial[] = { | |||
1744 | {0xa1, 0x01, 0x0118}, | 1777 | {0xa1, 0x01, 0x0118}, |
1745 | /* {0xa0, 0x02, 0x0008}, */ | 1778 | /* {0xa0, 0x02, 0x0008}, */ |
1746 | {0xa0, 0x00, 0x0007}, | 1779 | {0xa0, 0x00, 0x0007}, |
1747 | {0, 0, 0} | 1780 | {} |
1748 | }; | 1781 | }; |
1749 | 1782 | ||
1750 | static struct usb_action hdcs2020xx_InitialScale[] = { | 1783 | static struct usb_action hdcs2020xx_InitialScale[] = { |
@@ -1792,11 +1825,11 @@ static struct usb_action hdcs2020xx_InitialScale[] = { | |||
1792 | {0xa1, 0x01, 0x0002}, | 1825 | {0xa1, 0x01, 0x0002}, |
1793 | {0xa1, 0x01, 0x0008}, | 1826 | {0xa1, 0x01, 0x0008}, |
1794 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 1827 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
1795 | {0xa0, 0x04, 0x01c6}, | 1828 | {0xa0, 0x04, 0x01c6}, /* sharpness+ */ |
1796 | {0xa1, 0x01, 0x01c8}, | 1829 | {0xa1, 0x01, 0x01c8}, |
1797 | {0xa1, 0x01, 0x01c9}, | 1830 | {0xa1, 0x01, 0x01c9}, |
1798 | {0xa1, 0x01, 0x01ca}, | 1831 | {0xa1, 0x01, 0x01ca}, |
1799 | {0xa0, 0x07, 0x01cb}, | 1832 | {0xa0, 0x07, 0x01cb}, /* sharpness- */ |
1800 | {0xa0, 0x11, 0x0120}, /* gamma ~4*/ | 1833 | {0xa0, 0x11, 0x0120}, /* gamma ~4*/ |
1801 | {0xa0, 0x37, 0x0121}, | 1834 | {0xa0, 0x37, 0x0121}, |
1802 | {0xa0, 0x58, 0x0122}, | 1835 | {0xa0, 0x58, 0x0122}, |
@@ -1887,7 +1920,7 @@ static struct usb_action hdcs2020xx_InitialScale[] = { | |||
1887 | /* {0xa0, 0x02, 0x0008}, */ | 1920 | /* {0xa0, 0x02, 0x0008}, */ |
1888 | {0xa0, 0x00, 0x0007}, | 1921 | {0xa0, 0x00, 0x0007}, |
1889 | /* {0xa0, 0x18, 0x00fe}, */ | 1922 | /* {0xa0, 0x18, 0x00fe}, */ |
1890 | {0, 0, 0} | 1923 | {} |
1891 | }; | 1924 | }; |
1892 | static struct usb_action hdcs2020xb_Initial[] = { | 1925 | static struct usb_action hdcs2020xb_Initial[] = { |
1893 | {0xa0, 0x01, 0x0000}, | 1926 | {0xa0, 0x01, 0x0000}, |
@@ -1942,11 +1975,11 @@ static struct usb_action hdcs2020xb_Initial[] = { | |||
1942 | {0xa0, 0x40, 0x0118}, | 1975 | {0xa0, 0x40, 0x0118}, |
1943 | {0xa1, 0x01, 0x0008}, | 1976 | {0xa1, 0x01, 0x0008}, |
1944 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 1977 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
1945 | {0xa0, 0x08, 0x01c6}, | 1978 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
1946 | {0xa1, 0x01, 0x01c8}, | 1979 | {0xa1, 0x01, 0x01c8}, |
1947 | {0xa1, 0x01, 0x01c9}, | 1980 | {0xa1, 0x01, 0x01c9}, |
1948 | {0xa1, 0x01, 0x01ca}, | 1981 | {0xa1, 0x01, 0x01ca}, |
1949 | {0xa0, 0x0f, 0x01cb}, | 1982 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
1950 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 1983 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
1951 | {0xa0, 0x38, 0x0121}, | 1984 | {0xa0, 0x38, 0x0121}, |
1952 | {0xa0, 0x59, 0x0122}, | 1985 | {0xa0, 0x59, 0x0122}, |
@@ -2019,7 +2052,7 @@ static struct usb_action hdcs2020xb_Initial[] = { | |||
2019 | {0xa0, 0x40, 0x0116}, | 2052 | {0xa0, 0x40, 0x0116}, |
2020 | {0xa0, 0x40, 0x0117}, | 2053 | {0xa0, 0x40, 0x0117}, |
2021 | {0xa0, 0x40, 0x0118}, | 2054 | {0xa0, 0x40, 0x0118}, |
2022 | {0, 0, 0} | 2055 | {} |
2023 | }; | 2056 | }; |
2024 | static struct usb_action hdcs2020xb_InitialScale[] = { | 2057 | static struct usb_action hdcs2020xb_InitialScale[] = { |
2025 | {0xa0, 0x01, 0x0000}, | 2058 | {0xa0, 0x01, 0x0000}, |
@@ -2072,11 +2105,11 @@ static struct usb_action hdcs2020xb_InitialScale[] = { | |||
2072 | {0xa0, 0x40, 0x0118}, | 2105 | {0xa0, 0x40, 0x0118}, |
2073 | {0xa1, 0x01, 0x0008}, | 2106 | {0xa1, 0x01, 0x0008}, |
2074 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2107 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2075 | {0xa0, 0x08, 0x01c6}, | 2108 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2076 | {0xa1, 0x01, 0x01c8}, | 2109 | {0xa1, 0x01, 0x01c8}, |
2077 | {0xa1, 0x01, 0x01c9}, | 2110 | {0xa1, 0x01, 0x01c9}, |
2078 | {0xa1, 0x01, 0x01ca}, | 2111 | {0xa1, 0x01, 0x01ca}, |
2079 | {0xa0, 0x0f, 0x01cb}, | 2112 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2080 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 2113 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
2081 | {0xa0, 0x38, 0x0121}, | 2114 | {0xa0, 0x38, 0x0121}, |
2082 | {0xa0, 0x59, 0x0122}, | 2115 | {0xa0, 0x59, 0x0122}, |
@@ -2147,7 +2180,7 @@ static struct usb_action hdcs2020xb_InitialScale[] = { | |||
2147 | {0xa0, 0x40, 0x0116}, | 2180 | {0xa0, 0x40, 0x0116}, |
2148 | {0xa0, 0x40, 0x0117}, | 2181 | {0xa0, 0x40, 0x0117}, |
2149 | {0xa0, 0x40, 0x0118}, | 2182 | {0xa0, 0x40, 0x0118}, |
2150 | {0, 0, 0} | 2183 | {} |
2151 | }; | 2184 | }; |
2152 | static struct usb_action hdcs2020b_50HZ[] = { | 2185 | static struct usb_action hdcs2020b_50HZ[] = { |
2153 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 2186 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -2168,7 +2201,7 @@ static struct usb_action hdcs2020b_50HZ[] = { | |||
2168 | {0xa0, 0x05, 0x001d}, /* 00,1d,05,cc */ | 2201 | {0xa0, 0x05, 0x001d}, /* 00,1d,05,cc */ |
2169 | {0xa0, 0x1a, 0x001e}, /* 00,1e,1a,cc */ | 2202 | {0xa0, 0x1a, 0x001e}, /* 00,1e,1a,cc */ |
2170 | {0xa0, 0x2f, 0x001f}, /* 00,1f,2f,cc */ | 2203 | {0xa0, 0x2f, 0x001f}, /* 00,1f,2f,cc */ |
2171 | {0, 0, 0} | 2204 | {} |
2172 | }; | 2205 | }; |
2173 | static struct usb_action hdcs2020b_60HZ[] = { | 2206 | static struct usb_action hdcs2020b_60HZ[] = { |
2174 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 2207 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -2189,7 +2222,7 @@ static struct usb_action hdcs2020b_60HZ[] = { | |||
2189 | {0xa0, 0x04, 0x001d}, /* 00,1d,04,cc */ | 2222 | {0xa0, 0x04, 0x001d}, /* 00,1d,04,cc */ |
2190 | {0xa0, 0x18, 0x001e}, /* 00,1e,18,cc */ | 2223 | {0xa0, 0x18, 0x001e}, /* 00,1e,18,cc */ |
2191 | {0xa0, 0x2c, 0x001f}, /* 00,1f,2c,cc */ | 2224 | {0xa0, 0x2c, 0x001f}, /* 00,1f,2c,cc */ |
2192 | {0, 0, 0} | 2225 | {} |
2193 | }; | 2226 | }; |
2194 | static struct usb_action hdcs2020b_NoFliker[] = { | 2227 | static struct usb_action hdcs2020b_NoFliker[] = { |
2195 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 2228 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -2210,7 +2243,7 @@ static struct usb_action hdcs2020b_NoFliker[] = { | |||
2210 | {0xa0, 0x04, 0x001d}, /* 00,1d,04,cc */ | 2243 | {0xa0, 0x04, 0x001d}, /* 00,1d,04,cc */ |
2211 | {0xa0, 0x17, 0x001e}, /* 00,1e,17,cc */ | 2244 | {0xa0, 0x17, 0x001e}, /* 00,1e,17,cc */ |
2212 | {0xa0, 0x2a, 0x001f}, /* 00,1f,2a,cc */ | 2245 | {0xa0, 0x2a, 0x001f}, /* 00,1f,2a,cc */ |
2213 | {0, 0, 0} | 2246 | {} |
2214 | }; | 2247 | }; |
2215 | 2248 | ||
2216 | static struct usb_action hv7131bxx_Initial[] = { | 2249 | static struct usb_action hv7131bxx_Initial[] = { |
@@ -2266,11 +2299,11 @@ static struct usb_action hv7131bxx_Initial[] = { | |||
2266 | 2299 | ||
2267 | {0xa1, 0x01, 0x0008}, | 2300 | {0xa1, 0x01, 0x0008}, |
2268 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2301 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2269 | {0xa0, 0x08, 0x01c6}, | 2302 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2270 | {0xa1, 0x01, 0x01c8}, | 2303 | {0xa1, 0x01, 0x01c8}, |
2271 | {0xa1, 0x01, 0x01c9}, | 2304 | {0xa1, 0x01, 0x01c9}, |
2272 | {0xa1, 0x01, 0x01ca}, | 2305 | {0xa1, 0x01, 0x01ca}, |
2273 | {0xa0, 0x0f, 0x01cb}, | 2306 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2274 | 2307 | ||
2275 | {0xa0, 0x50, 0x010a}, /* matrix */ | 2308 | {0xa0, 0x50, 0x010a}, /* matrix */ |
2276 | {0xa0, 0xf8, 0x010b}, | 2309 | {0xa0, 0xf8, 0x010b}, |
@@ -2318,7 +2351,7 @@ static struct usb_action hv7131bxx_Initial[] = { | |||
2318 | {0xa0, 0x40, 0x0117}, | 2351 | {0xa0, 0x40, 0x0117}, |
2319 | {0xa0, 0x40, 0x0118}, | 2352 | {0xa0, 0x40, 0x0118}, |
2320 | /* {0xa0, 0x02, 0x0008}, */ | 2353 | /* {0xa0, 0x02, 0x0008}, */ |
2321 | {0, 0, 0} | 2354 | {} |
2322 | }; | 2355 | }; |
2323 | 2356 | ||
2324 | static struct usb_action hv7131bxx_InitialScale[] = { | 2357 | static struct usb_action hv7131bxx_InitialScale[] = { |
@@ -2373,11 +2406,11 @@ static struct usb_action hv7131bxx_InitialScale[] = { | |||
2373 | {0xa1, 0x01, 0x0096}, | 2406 | {0xa1, 0x01, 0x0096}, |
2374 | {0xa1, 0x01, 0x0008}, | 2407 | {0xa1, 0x01, 0x0008}, |
2375 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2408 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2376 | {0xa0, 0x08, 0x01c6}, | 2409 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2377 | {0xa1, 0x01, 0x01c8}, | 2410 | {0xa1, 0x01, 0x01c8}, |
2378 | {0xa1, 0x01, 0x01c9}, | 2411 | {0xa1, 0x01, 0x01c9}, |
2379 | {0xa1, 0x01, 0x01ca}, | 2412 | {0xa1, 0x01, 0x01ca}, |
2380 | {0xa0, 0x0f, 0x01cb}, | 2413 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2381 | 2414 | ||
2382 | {0xa0, 0x50, 0x010a}, /* matrix */ | 2415 | {0xa0, 0x50, 0x010a}, /* matrix */ |
2383 | {0xa0, 0xf8, 0x010b}, | 2416 | {0xa0, 0xf8, 0x010b}, |
@@ -2424,7 +2457,7 @@ static struct usb_action hv7131bxx_InitialScale[] = { | |||
2424 | {0xa0, 0x40, 0x0117}, | 2457 | {0xa0, 0x40, 0x0117}, |
2425 | {0xa0, 0x40, 0x0118}, | 2458 | {0xa0, 0x40, 0x0118}, |
2426 | /* {0xa0, 0x02, 0x0008}, */ | 2459 | /* {0xa0, 0x02, 0x0008}, */ |
2427 | {0, 0, 0} | 2460 | {} |
2428 | }; | 2461 | }; |
2429 | 2462 | ||
2430 | static struct usb_action hv7131cxx_Initial[] = { | 2463 | static struct usb_action hv7131cxx_Initial[] = { |
@@ -2478,11 +2511,11 @@ static struct usb_action hv7131cxx_Initial[] = { | |||
2478 | 2511 | ||
2479 | {0xa1, 0x01, 0x0008}, | 2512 | {0xa1, 0x01, 0x0008}, |
2480 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2513 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2481 | {0xa0, 0x08, 0x01c6}, | 2514 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2482 | {0xa1, 0x01, 0x01c8}, | 2515 | {0xa1, 0x01, 0x01c8}, |
2483 | {0xa1, 0x01, 0x01c9}, | 2516 | {0xa1, 0x01, 0x01c9}, |
2484 | {0xa1, 0x01, 0x01ca}, | 2517 | {0xa1, 0x01, 0x01ca}, |
2485 | {0xa0, 0x0f, 0x01cb}, | 2518 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2486 | 2519 | ||
2487 | {0xa0, 0x60, 0x010a}, /* matrix */ | 2520 | {0xa0, 0x60, 0x010a}, /* matrix */ |
2488 | {0xa0, 0xf0, 0x010b}, | 2521 | {0xa0, 0xf0, 0x010b}, |
@@ -2518,7 +2551,7 @@ static struct usb_action hv7131cxx_Initial[] = { | |||
2518 | {0xa0, 0x40, 0x0180}, | 2551 | {0xa0, 0x40, 0x0180}, |
2519 | {0xa1, 0x01, 0x0180}, | 2552 | {0xa1, 0x01, 0x0180}, |
2520 | {0xa0, 0x42, 0x0180}, | 2553 | {0xa0, 0x42, 0x0180}, |
2521 | {0, 0, 0} | 2554 | {} |
2522 | }; | 2555 | }; |
2523 | 2556 | ||
2524 | static struct usb_action hv7131cxx_InitialScale[] = { | 2557 | static struct usb_action hv7131cxx_InitialScale[] = { |
@@ -2577,11 +2610,11 @@ static struct usb_action hv7131cxx_InitialScale[] = { | |||
2577 | 2610 | ||
2578 | {0xa1, 0x01, 0x0008}, | 2611 | {0xa1, 0x01, 0x0008}, |
2579 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2612 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2580 | {0xa0, 0x08, 0x01c6}, | 2613 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2581 | {0xa1, 0x01, 0x01c8}, | 2614 | {0xa1, 0x01, 0x01c8}, |
2582 | {0xa1, 0x01, 0x01c9}, | 2615 | {0xa1, 0x01, 0x01c9}, |
2583 | {0xa1, 0x01, 0x01ca}, | 2616 | {0xa1, 0x01, 0x01ca}, |
2584 | {0xa0, 0x0f, 0x01cb}, | 2617 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2585 | 2618 | ||
2586 | {0xa0, 0x60, 0x010a}, /* matrix */ | 2619 | {0xa0, 0x60, 0x010a}, /* matrix */ |
2587 | {0xa0, 0xf0, 0x010b}, | 2620 | {0xa0, 0xf0, 0x010b}, |
@@ -2619,7 +2652,7 @@ static struct usb_action hv7131cxx_InitialScale[] = { | |||
2619 | {0xa0, 0x40, 0x0180}, | 2652 | {0xa0, 0x40, 0x0180}, |
2620 | {0xa1, 0x01, 0x0180}, | 2653 | {0xa1, 0x01, 0x0180}, |
2621 | {0xa0, 0x42, 0x0180}, | 2654 | {0xa0, 0x42, 0x0180}, |
2622 | {0, 0, 0} | 2655 | {} |
2623 | }; | 2656 | }; |
2624 | 2657 | ||
2625 | static struct usb_action icm105axx_Initial[] = { | 2658 | static struct usb_action icm105axx_Initial[] = { |
@@ -2743,11 +2776,11 @@ static struct usb_action icm105axx_Initial[] = { | |||
2743 | {0xa1, 0x01, 0x0008}, | 2776 | {0xa1, 0x01, 0x0008}, |
2744 | 2777 | ||
2745 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2778 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2746 | {0xa0, 0x08, 0x01c6}, | 2779 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2747 | {0xa1, 0x01, 0x01c8}, | 2780 | {0xa1, 0x01, 0x01c8}, |
2748 | {0xa1, 0x01, 0x01c9}, | 2781 | {0xa1, 0x01, 0x01c9}, |
2749 | {0xa1, 0x01, 0x01ca}, | 2782 | {0xa1, 0x01, 0x01ca}, |
2750 | {0xa0, 0x0f, 0x01cb}, | 2783 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2751 | {0xa0, 0x52, 0x010a}, /* matrix */ | 2784 | {0xa0, 0x52, 0x010a}, /* matrix */ |
2752 | {0xa0, 0xf7, 0x010b}, | 2785 | {0xa0, 0xf7, 0x010b}, |
2753 | {0xa0, 0xf7, 0x010c}, | 2786 | {0xa0, 0xf7, 0x010c}, |
@@ -2796,7 +2829,7 @@ static struct usb_action icm105axx_Initial[] = { | |||
2796 | {0xa0, 0x40, 0x0116}, | 2829 | {0xa0, 0x40, 0x0116}, |
2797 | {0xa0, 0x40, 0x0117}, | 2830 | {0xa0, 0x40, 0x0117}, |
2798 | {0xa0, 0x40, 0x0118}, | 2831 | {0xa0, 0x40, 0x0118}, |
2799 | {0, 0, 0} | 2832 | {} |
2800 | }; | 2833 | }; |
2801 | 2834 | ||
2802 | static struct usb_action icm105axx_InitialScale[] = { | 2835 | static struct usb_action icm105axx_InitialScale[] = { |
@@ -2924,11 +2957,11 @@ static struct usb_action icm105axx_InitialScale[] = { | |||
2924 | {0xa1, 0x01, 0x0008}, | 2957 | {0xa1, 0x01, 0x0008}, |
2925 | 2958 | ||
2926 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 2959 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
2927 | {0xa0, 0x08, 0x01c6}, | 2960 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
2928 | {0xa1, 0x01, 0x01c8}, | 2961 | {0xa1, 0x01, 0x01c8}, |
2929 | {0xa1, 0x01, 0x01c9}, | 2962 | {0xa1, 0x01, 0x01c9}, |
2930 | {0xa1, 0x01, 0x01ca}, | 2963 | {0xa1, 0x01, 0x01ca}, |
2931 | {0xa0, 0x0f, 0x01cb}, | 2964 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
2932 | 2965 | ||
2933 | {0xa0, 0x52, 0x010a}, /* matrix */ | 2966 | {0xa0, 0x52, 0x010a}, /* matrix */ |
2934 | {0xa0, 0xf7, 0x010b}, | 2967 | {0xa0, 0xf7, 0x010b}, |
@@ -2976,7 +3009,7 @@ static struct usb_action icm105axx_InitialScale[] = { | |||
2976 | {0xa0, 0x40, 0x0116}, | 3009 | {0xa0, 0x40, 0x0116}, |
2977 | {0xa0, 0x40, 0x0117}, | 3010 | {0xa0, 0x40, 0x0117}, |
2978 | {0xa0, 0x40, 0x0118}, | 3011 | {0xa0, 0x40, 0x0118}, |
2979 | {0, 0, 0} | 3012 | {} |
2980 | }; | 3013 | }; |
2981 | static struct usb_action icm105a_50HZ[] = { | 3014 | static struct usb_action icm105a_50HZ[] = { |
2982 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3015 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3007,7 +3040,7 @@ static struct usb_action icm105a_50HZ[] = { | |||
3007 | {0xa0, 0xd8, 0x001e}, /* 00,1e,d8,cc */ | 3040 | {0xa0, 0xd8, 0x001e}, /* 00,1e,d8,cc */ |
3008 | {0xa0, 0xea, 0x001f}, /* 00,1f,ea,cc */ | 3041 | {0xa0, 0xea, 0x001f}, /* 00,1f,ea,cc */ |
3009 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3042 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3010 | {0, 0, 0} | 3043 | {} |
3011 | }; | 3044 | }; |
3012 | static struct usb_action icm105a_50HZScale[] = { | 3045 | static struct usb_action icm105a_50HZScale[] = { |
3013 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3046 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3040,7 +3073,7 @@ static struct usb_action icm105a_50HZScale[] = { | |||
3040 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3073 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3041 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ | 3074 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ |
3042 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ | 3075 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ |
3043 | {0, 0, 0} | 3076 | {} |
3044 | }; | 3077 | }; |
3045 | static struct usb_action icm105a_60HZ[] = { | 3078 | static struct usb_action icm105a_60HZ[] = { |
3046 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3079 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3071,7 +3104,7 @@ static struct usb_action icm105a_60HZ[] = { | |||
3071 | {0xa0, 0xd4, 0x001e}, /* 00,1e,d4,cc */ | 3104 | {0xa0, 0xd4, 0x001e}, /* 00,1e,d4,cc */ |
3072 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ | 3105 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ |
3073 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3106 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3074 | {0, 0, 0} | 3107 | {} |
3075 | }; | 3108 | }; |
3076 | static struct usb_action icm105a_60HZScale[] = { | 3109 | static struct usb_action icm105a_60HZScale[] = { |
3077 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3110 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3104,7 +3137,7 @@ static struct usb_action icm105a_60HZScale[] = { | |||
3104 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3137 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3105 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ | 3138 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ |
3106 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ | 3139 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ |
3107 | {0, 0, 0} | 3140 | {} |
3108 | }; | 3141 | }; |
3109 | static struct usb_action icm105a_NoFliker[] = { | 3142 | static struct usb_action icm105a_NoFliker[] = { |
3110 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3143 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3135,7 +3168,7 @@ static struct usb_action icm105a_NoFliker[] = { | |||
3135 | {0xa0, 0xd4, 0x001e}, /* 00,1e,d4,cc */ | 3168 | {0xa0, 0xd4, 0x001e}, /* 00,1e,d4,cc */ |
3136 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ | 3169 | {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */ |
3137 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3170 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3138 | {0, 0, 0} | 3171 | {} |
3139 | }; | 3172 | }; |
3140 | static struct usb_action icm105a_NoFlikerScale[] = { | 3173 | static struct usb_action icm105a_NoFlikerScale[] = { |
3141 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 3174 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -3168,7 +3201,7 @@ static struct usb_action icm105a_NoFlikerScale[] = { | |||
3168 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 3201 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
3169 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ | 3202 | {0xa0, 0x00, 0x01a7}, /* 01,a7,00,cc */ |
3170 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ | 3203 | {0xa0, 0xc0, 0x01a8}, /* 01,a8,c0,cc */ |
3171 | {0, 0, 0} | 3204 | {} |
3172 | }; | 3205 | }; |
3173 | 3206 | ||
3174 | static struct usb_action MC501CB_InitialScale[] = { | 3207 | static struct usb_action MC501CB_InitialScale[] = { |
@@ -3288,7 +3321,7 @@ static struct usb_action MC501CB_InitialScale[] = { | |||
3288 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ | 3321 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ |
3289 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ | 3322 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ |
3290 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ | 3323 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ |
3291 | {0, 0, 0} | 3324 | {} |
3292 | }; | 3325 | }; |
3293 | 3326 | ||
3294 | static struct usb_action MC501CB_Initial[] = { /* 320x240 */ | 3327 | static struct usb_action MC501CB_Initial[] = { /* 320x240 */ |
@@ -3407,7 +3440,7 @@ static struct usb_action MC501CB_Initial[] = { /* 320x240 */ | |||
3407 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ | 3440 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ |
3408 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ | 3441 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ |
3409 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ | 3442 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ |
3410 | {0, 0, 0} | 3443 | {} |
3411 | }; | 3444 | }; |
3412 | 3445 | ||
3413 | static struct usb_action MC501CB_50HZ[] = { | 3446 | static struct usb_action MC501CB_50HZ[] = { |
@@ -3424,7 +3457,7 @@ static struct usb_action MC501CB_50HZ[] = { | |||
3424 | {0xaa, 0x36, 0x003a}, /* 00,36,3A,aa */ | 3457 | {0xaa, 0x36, 0x003a}, /* 00,36,3A,aa */ |
3425 | {0xaa, 0x37, 0x0098}, /* 00,37,98,aa */ | 3458 | {0xaa, 0x37, 0x0098}, /* 00,37,98,aa */ |
3426 | {0xaa, 0x3b, 0x003a}, /* 00,3B,3A,aa */ | 3459 | {0xaa, 0x3b, 0x003a}, /* 00,3B,3A,aa */ |
3427 | {0, 0, 0} | 3460 | {} |
3428 | }; | 3461 | }; |
3429 | 3462 | ||
3430 | static struct usb_action MC501CB_50HZScale[] = { | 3463 | static struct usb_action MC501CB_50HZScale[] = { |
@@ -3441,7 +3474,7 @@ static struct usb_action MC501CB_50HZScale[] = { | |||
3441 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ | 3474 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ |
3442 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ | 3475 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ |
3443 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ | 3476 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ |
3444 | {0, 0, 0} | 3477 | {} |
3445 | }; | 3478 | }; |
3446 | 3479 | ||
3447 | static struct usb_action MC501CB_60HZ[] = { | 3480 | static struct usb_action MC501CB_60HZ[] = { |
@@ -3458,7 +3491,7 @@ static struct usb_action MC501CB_60HZ[] = { | |||
3458 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ | 3491 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ |
3459 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ | 3492 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ |
3460 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ | 3493 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ |
3461 | {0, 0, 0} | 3494 | {} |
3462 | }; | 3495 | }; |
3463 | 3496 | ||
3464 | static struct usb_action MC501CB_60HZScale[] = { | 3497 | static struct usb_action MC501CB_60HZScale[] = { |
@@ -3475,7 +3508,7 @@ static struct usb_action MC501CB_60HZScale[] = { | |||
3475 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ | 3508 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ |
3476 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ | 3509 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ |
3477 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ | 3510 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ |
3478 | {0, 0, 0} | 3511 | {} |
3479 | }; | 3512 | }; |
3480 | 3513 | ||
3481 | static struct usb_action MC501CB_NoFliker[] = { | 3514 | static struct usb_action MC501CB_NoFliker[] = { |
@@ -3492,7 +3525,7 @@ static struct usb_action MC501CB_NoFliker[] = { | |||
3492 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ | 3525 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ |
3493 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ | 3526 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ |
3494 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ | 3527 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ |
3495 | {0, 0, 0} | 3528 | {} |
3496 | }; | 3529 | }; |
3497 | 3530 | ||
3498 | static struct usb_action MC501CB_NoFlikerScale[] = { | 3531 | static struct usb_action MC501CB_NoFlikerScale[] = { |
@@ -3504,7 +3537,7 @@ static struct usb_action MC501CB_NoFlikerScale[] = { | |||
3504 | {0xaa, 0x3e, 0x00d4}, /* 00,3E,D4,aa */ | 3537 | {0xaa, 0x3e, 0x00d4}, /* 00,3E,D4,aa */ |
3505 | {0xaa, 0x3b, 0x0030}, /* 00,3B,30,aa */ | 3538 | {0xaa, 0x3b, 0x0030}, /* 00,3B,30,aa */ |
3506 | {0xaa, 0x3c, 0x00d4}, /* 00,3C,D4,aa */ | 3539 | {0xaa, 0x3c, 0x00d4}, /* 00,3C,D4,aa */ |
3507 | {0, 0, 0} | 3540 | {} |
3508 | }; | 3541 | }; |
3509 | 3542 | ||
3510 | /* from zs211.inf - HKR,%OV7620%,Initial - 640x480 */ | 3543 | /* from zs211.inf - HKR,%OV7620%,Initial - 640x480 */ |
@@ -3575,7 +3608,7 @@ static struct usb_action OV7620_mode0[] = { | |||
3575 | {0xa0, 0x40, 0x011d}, /* 01,1d,40,cc */ | 3608 | {0xa0, 0x40, 0x011d}, /* 01,1d,40,cc */ |
3576 | {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */ | 3609 | {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */ |
3577 | {0xa0, 0x50, 0x01a8}, /* 01,a8,50,cc */ | 3610 | {0xa0, 0x50, 0x01a8}, /* 01,a8,50,cc */ |
3578 | {0, 0, 0} | 3611 | {} |
3579 | }; | 3612 | }; |
3580 | 3613 | ||
3581 | /* from zs211.inf - HKR,%OV7620%,InitialScale - 320x240 */ | 3614 | /* from zs211.inf - HKR,%OV7620%,InitialScale - 320x240 */ |
@@ -3646,7 +3679,7 @@ static struct usb_action OV7620_mode1[] = { | |||
3646 | {0xa0, 0x50, 0x011d}, /* 01,1d,50,cc */ | 3679 | {0xa0, 0x50, 0x011d}, /* 01,1d,50,cc */ |
3647 | {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */ | 3680 | {0xa0, 0x02, 0x0180}, /* 01,80,02,cc */ |
3648 | {0xa0, 0x50, 0x01a8}, /* 01,a8,50,cc */ | 3681 | {0xa0, 0x50, 0x01a8}, /* 01,a8,50,cc */ |
3649 | {0, 0, 0} | 3682 | {} |
3650 | }; | 3683 | }; |
3651 | 3684 | ||
3652 | /* from zs211.inf - HKR,%OV7620%\AE,50HZ */ | 3685 | /* from zs211.inf - HKR,%OV7620%\AE,50HZ */ |
@@ -3665,7 +3698,7 @@ static struct usb_action OV7620_50HZ[] = { | |||
3665 | {0xaa, 0x10, 0x0082}, /* 00,10,82,aa */ | 3698 | {0xaa, 0x10, 0x0082}, /* 00,10,82,aa */ |
3666 | {0xaa, 0x76, 0x0003}, /* 00,76,03,aa */ | 3699 | {0xaa, 0x76, 0x0003}, /* 00,76,03,aa */ |
3667 | /* {0xa0, 0x40, 0x0002}, * 00,02,40,cc - if mode0 (640x480) */ | 3700 | /* {0xa0, 0x40, 0x0002}, * 00,02,40,cc - if mode0 (640x480) */ |
3668 | {0, 0, 0} | 3701 | {} |
3669 | }; | 3702 | }; |
3670 | 3703 | ||
3671 | /* from zs211.inf - HKR,%OV7620%\AE,60HZ */ | 3704 | /* from zs211.inf - HKR,%OV7620%\AE,60HZ */ |
@@ -3687,7 +3720,7 @@ static struct usb_action OV7620_60HZ[] = { | |||
3687 | /* ?? in gspca v1, it was | 3720 | /* ?? in gspca v1, it was |
3688 | {0xa0, 0x00, 0x0039}, * 00,00,00,dd * | 3721 | {0xa0, 0x00, 0x0039}, * 00,00,00,dd * |
3689 | {0xa1, 0x01, 0x0037}, */ | 3722 | {0xa1, 0x01, 0x0037}, */ |
3690 | {0, 0, 0} | 3723 | {} |
3691 | }; | 3724 | }; |
3692 | 3725 | ||
3693 | /* from zs211.inf - HKR,%OV7620%\AE,NoFliker */ | 3726 | /* from zs211.inf - HKR,%OV7620%\AE,NoFliker */ |
@@ -3707,7 +3740,7 @@ static struct usb_action OV7620_NoFliker[] = { | |||
3707 | /* ?? was | 3740 | /* ?? was |
3708 | {0xa0, 0x00, 0x0039}, * 00,00,00,dd * | 3741 | {0xa0, 0x00, 0x0039}, * 00,00,00,dd * |
3709 | {0xa1, 0x01, 0x0037}, */ | 3742 | {0xa1, 0x01, 0x0037}, */ |
3710 | {0, 0, 0} | 3743 | {} |
3711 | }; | 3744 | }; |
3712 | 3745 | ||
3713 | static struct usb_action ov7630c_Initial[] = { | 3746 | static struct usb_action ov7630c_Initial[] = { |
@@ -3795,14 +3828,11 @@ static struct usb_action ov7630c_Initial[] = { | |||
3795 | /* 0x03, */ | 3828 | /* 0x03, */ |
3796 | {0xa1, 0x01, 0x0008}, | 3829 | {0xa1, 0x01, 0x0008}, |
3797 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 3830 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
3798 | {0xa0, 0x08, 0x01c6}, | 3831 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
3799 | /* 0x05, */ | ||
3800 | {0xa1, 0x01, 0x01c8}, | 3832 | {0xa1, 0x01, 0x01c8}, |
3801 | /* 0x07, */ | ||
3802 | {0xa1, 0x01, 0x01c9}, | 3833 | {0xa1, 0x01, 0x01c9}, |
3803 | /* 0x0f, */ | ||
3804 | {0xa1, 0x01, 0x01ca}, | 3834 | {0xa1, 0x01, 0x01ca}, |
3805 | {0xa0, 0x0f, 0x01cb}, | 3835 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
3806 | {0xa0, 0x01, 0x0120}, /* gamma 2 ?*/ | 3836 | {0xa0, 0x01, 0x0120}, /* gamma 2 ?*/ |
3807 | {0xa0, 0x0c, 0x0121}, | 3837 | {0xa0, 0x0c, 0x0121}, |
3808 | {0xa0, 0x1f, 0x0122}, | 3838 | {0xa0, 0x1f, 0x0122}, |
@@ -3867,7 +3897,7 @@ static struct usb_action ov7630c_Initial[] = { | |||
3867 | {0xaa, 0x13, 0x0083}, /* 40 */ | 3897 | {0xaa, 0x13, 0x0083}, /* 40 */ |
3868 | {0xa1, 0x01, 0x0180}, | 3898 | {0xa1, 0x01, 0x0180}, |
3869 | {0xa0, 0x42, 0x0180}, | 3899 | {0xa0, 0x42, 0x0180}, |
3870 | {0, 0, 0} | 3900 | {} |
3871 | }; | 3901 | }; |
3872 | 3902 | ||
3873 | static struct usb_action ov7630c_InitialScale[] = { | 3903 | static struct usb_action ov7630c_InitialScale[] = { |
@@ -3954,14 +3984,11 @@ static struct usb_action ov7630c_InitialScale[] = { | |||
3954 | 3984 | ||
3955 | {0xa1, 0x01, 0x0008}, | 3985 | {0xa1, 0x01, 0x0008}, |
3956 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 3986 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
3957 | {0xa0, 0x08, 0x01c6}, | 3987 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
3958 | |||
3959 | {0xa1, 0x01, 0x01c8}, | 3988 | {0xa1, 0x01, 0x01c8}, |
3960 | |||
3961 | {0xa1, 0x01, 0x01c9}, | 3989 | {0xa1, 0x01, 0x01c9}, |
3962 | |||
3963 | {0xa1, 0x01, 0x01ca}, | 3990 | {0xa1, 0x01, 0x01ca}, |
3964 | {0xa0, 0x0f, 0x01cb}, | 3991 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
3965 | {0xa0, 0x16, 0x0120}, /* gamma ~4 */ | 3992 | {0xa0, 0x16, 0x0120}, /* gamma ~4 */ |
3966 | {0xa0, 0x3a, 0x0121}, | 3993 | {0xa0, 0x3a, 0x0121}, |
3967 | {0xa0, 0x5b, 0x0122}, | 3994 | {0xa0, 0x5b, 0x0122}, |
@@ -4027,7 +4054,7 @@ static struct usb_action ov7630c_InitialScale[] = { | |||
4027 | 4054 | ||
4028 | {0xa1, 0x01, 0x0180}, | 4055 | {0xa1, 0x01, 0x0180}, |
4029 | {0xa0, 0x42, 0x0180}, | 4056 | {0xa0, 0x42, 0x0180}, |
4030 | {0, 0, 0} | 4057 | {} |
4031 | }; | 4058 | }; |
4032 | 4059 | ||
4033 | static struct usb_action pas106b_Initial_com[] = { | 4060 | static struct usb_action pas106b_Initial_com[] = { |
@@ -4041,7 +4068,7 @@ static struct usb_action pas106b_Initial_com[] = { | |||
4041 | {0xa0, 0x03, 0x003a}, | 4068 | {0xa0, 0x03, 0x003a}, |
4042 | {0xa0, 0x0c, 0x003b}, | 4069 | {0xa0, 0x0c, 0x003b}, |
4043 | {0xa0, 0x04, 0x0038}, | 4070 | {0xa0, 0x04, 0x0038}, |
4044 | {0, 0, 0} | 4071 | {} |
4045 | }; | 4072 | }; |
4046 | 4073 | ||
4047 | static struct usb_action pas106b_Initial[] = { /* 176x144 */ | 4074 | static struct usb_action pas106b_Initial[] = { /* 176x144 */ |
@@ -4099,10 +4126,8 @@ static struct usb_action pas106b_Initial[] = { /* 176x144 */ | |||
4099 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ | 4126 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ |
4100 | /* JPEG control */ | 4127 | /* JPEG control */ |
4101 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ | 4128 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ |
4102 | /* Unknown */ | 4129 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4103 | {0xa0, 0x08, 0x01c6}, | 4130 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4104 | /* Sharpness */ | ||
4105 | {0xa0, 0x0f, 0x01cb}, /* Sharpness05 */ | ||
4106 | /* Other registers */ | 4131 | /* Other registers */ |
4107 | {0xa0, 0x0d, 0x0100}, /* OperationMode */ | 4132 | {0xa0, 0x0d, 0x0100}, /* OperationMode */ |
4108 | /* Auto exposure and white balance */ | 4133 | /* Auto exposure and white balance */ |
@@ -4113,9 +4138,8 @@ static struct usb_action pas106b_Initial[] = { /* 176x144 */ | |||
4113 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ | 4138 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ |
4114 | /* JPEG control */ | 4139 | /* JPEG control */ |
4115 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ | 4140 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ |
4116 | /* Sharpness */ | 4141 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4117 | {0xa0, 0x08, 0x01c6}, /* Sharpness00 */ | 4142 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4118 | {0xa0, 0x0f, 0x01cb}, /* Sharpness05 */ | ||
4119 | 4143 | ||
4120 | {0xa0, 0x58, 0x010a}, /* matrix */ | 4144 | {0xa0, 0x58, 0x010a}, /* matrix */ |
4121 | {0xa0, 0xf4, 0x010b}, | 4145 | {0xa0, 0xf4, 0x010b}, |
@@ -4162,7 +4186,7 @@ static struct usb_action pas106b_Initial[] = { /* 176x144 */ | |||
4162 | {0xa0, 0x40, 0x0116}, /* RGain */ | 4186 | {0xa0, 0x40, 0x0116}, /* RGain */ |
4163 | {0xa0, 0x40, 0x0117}, /* GGain */ | 4187 | {0xa0, 0x40, 0x0117}, /* GGain */ |
4164 | {0xa0, 0x40, 0x0118}, /* BGain */ | 4188 | {0xa0, 0x40, 0x0118}, /* BGain */ |
4165 | {0, 0, 0} | 4189 | {} |
4166 | }; | 4190 | }; |
4167 | 4191 | ||
4168 | static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ | 4192 | static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ |
@@ -4221,10 +4245,8 @@ static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ | |||
4221 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ | 4245 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ |
4222 | /* JPEG control */ | 4246 | /* JPEG control */ |
4223 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ | 4247 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ |
4224 | /* Unknown */ | 4248 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4225 | {0xa0, 0x08, 0x01c6}, | 4249 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4226 | /* Sharpness */ | ||
4227 | {0xa0, 0x0f, 0x01cb}, /* Sharpness05 */ | ||
4228 | /* Other registers */ | 4250 | /* Other registers */ |
4229 | {0xa0, 0x0d, 0x0100}, /* OperationMode */ | 4251 | {0xa0, 0x0d, 0x0100}, /* OperationMode */ |
4230 | /* Auto exposure and white balance */ | 4252 | /* Auto exposure and white balance */ |
@@ -4235,9 +4257,8 @@ static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ | |||
4235 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ | 4257 | {0xa0, 0x08, 0x0301}, /* EEPROMAccess */ |
4236 | /* JPEG control */ | 4258 | /* JPEG control */ |
4237 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ | 4259 | {0xa0, 0x03, 0x0008}, /* ClockSetting */ |
4238 | /* Sharpness */ | 4260 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4239 | {0xa0, 0x08, 0x01c6}, /* Sharpness00 */ | 4261 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4240 | {0xa0, 0x0f, 0x01cb}, /* Sharpness05 */ | ||
4241 | 4262 | ||
4242 | {0xa0, 0x58, 0x010a}, /* matrix */ | 4263 | {0xa0, 0x58, 0x010a}, /* matrix */ |
4243 | {0xa0, 0xf4, 0x010b}, | 4264 | {0xa0, 0xf4, 0x010b}, |
@@ -4289,7 +4310,7 @@ static struct usb_action pas106b_InitialScale[] = { /* 352x288 */ | |||
4289 | 4310 | ||
4290 | {0xa0, 0x00, 0x0007}, /* AutoCorrectEnable */ | 4311 | {0xa0, 0x00, 0x0007}, /* AutoCorrectEnable */ |
4291 | {0xa0, 0xff, 0x0018}, /* Frame adjust */ | 4312 | {0xa0, 0xff, 0x0018}, /* Frame adjust */ |
4292 | {0, 0, 0} | 4313 | {} |
4293 | }; | 4314 | }; |
4294 | static struct usb_action pas106b_50HZ[] = { | 4315 | static struct usb_action pas106b_50HZ[] = { |
4295 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ | 4316 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ |
@@ -4305,7 +4326,7 @@ static struct usb_action pas106b_50HZ[] = { | |||
4305 | {0xaa, 0x05, 0x0002}, /* 00,05,02,aa */ | 4326 | {0xaa, 0x05, 0x0002}, /* 00,05,02,aa */ |
4306 | {0xaa, 0x07, 0x001c}, /* 00,07,1c,aa */ | 4327 | {0xaa, 0x07, 0x001c}, /* 00,07,1c,aa */ |
4307 | {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ | 4328 | {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ |
4308 | {0, 0, 0} | 4329 | {} |
4309 | }; | 4330 | }; |
4310 | static struct usb_action pas106b_60HZ[] = { | 4331 | static struct usb_action pas106b_60HZ[] = { |
4311 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ | 4332 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ |
@@ -4321,7 +4342,7 @@ static struct usb_action pas106b_60HZ[] = { | |||
4321 | {0xaa, 0x05, 0x0001}, /* 00,05,01,aa */ | 4342 | {0xaa, 0x05, 0x0001}, /* 00,05,01,aa */ |
4322 | {0xaa, 0x07, 0x00c4}, /* 00,07,c4,aa */ | 4343 | {0xaa, 0x07, 0x00c4}, /* 00,07,c4,aa */ |
4323 | {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ | 4344 | {0xa0, 0x04, 0x01a9}, /* 01,a9,04,cc */ |
4324 | {0, 0, 0} | 4345 | {} |
4325 | }; | 4346 | }; |
4326 | static struct usb_action pas106b_NoFliker[] = { | 4347 | static struct usb_action pas106b_NoFliker[] = { |
4327 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ | 4348 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ |
@@ -4337,10 +4358,9 @@ static struct usb_action pas106b_NoFliker[] = { | |||
4337 | {0xaa, 0x05, 0x0001}, /* 00,05,01,aa */ | 4358 | {0xaa, 0x05, 0x0001}, /* 00,05,01,aa */ |
4338 | {0xaa, 0x07, 0x0030}, /* 00,07,30,aa */ | 4359 | {0xaa, 0x07, 0x0030}, /* 00,07,30,aa */ |
4339 | {0xa0, 0x00, 0x01a9}, /* 01,a9,00,cc */ | 4360 | {0xa0, 0x00, 0x01a9}, /* 01,a9,00,cc */ |
4340 | {0, 0, 0} | 4361 | {} |
4341 | }; | 4362 | }; |
4342 | 4363 | ||
4343 | /* Aurelien setting from snoop */ | ||
4344 | static struct usb_action pb03303x_Initial[] = { | 4364 | static struct usb_action pb03303x_Initial[] = { |
4345 | {0xa0, 0x01, 0x0000}, | 4365 | {0xa0, 0x01, 0x0000}, |
4346 | {0xa0, 0x03, 0x0008}, | 4366 | {0xa0, 0x03, 0x0008}, |
@@ -4411,11 +4431,11 @@ static struct usb_action pb03303x_Initial[] = { | |||
4411 | 4431 | ||
4412 | {0xa1, 0x01, 0x0008}, | 4432 | {0xa1, 0x01, 0x0008}, |
4413 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 4433 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
4414 | {0xa0, 0x08, 0x01c6}, | 4434 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4415 | {0xa1, 0x01, 0x01c8}, | 4435 | {0xa1, 0x01, 0x01c8}, |
4416 | {0xa1, 0x01, 0x01c9}, | 4436 | {0xa1, 0x01, 0x01c9}, |
4417 | {0xa1, 0x01, 0x01ca}, | 4437 | {0xa1, 0x01, 0x01ca}, |
4418 | {0xa0, 0x0f, 0x01cb}, | 4438 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4419 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 4439 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
4420 | {0xa0, 0x38, 0x0121}, | 4440 | {0xa0, 0x38, 0x0121}, |
4421 | {0xa0, 0x59, 0x0122}, | 4441 | {0xa0, 0x59, 0x0122}, |
@@ -4484,7 +4504,7 @@ static struct usb_action pb03303x_Initial[] = { | |||
4484 | {0xa0, 0x40, 0x0180}, | 4504 | {0xa0, 0x40, 0x0180}, |
4485 | {0xa1, 0x01, 0x0180}, | 4505 | {0xa1, 0x01, 0x0180}, |
4486 | {0xa0, 0x42, 0x0180}, | 4506 | {0xa0, 0x42, 0x0180}, |
4487 | {0, 0, 0} | 4507 | {} |
4488 | }; | 4508 | }; |
4489 | 4509 | ||
4490 | static struct usb_action pb03303x_InitialScale[] = { | 4510 | static struct usb_action pb03303x_InitialScale[] = { |
@@ -4559,11 +4579,11 @@ static struct usb_action pb03303x_InitialScale[] = { | |||
4559 | 4579 | ||
4560 | {0xa1, 0x01, 0x0008}, | 4580 | {0xa1, 0x01, 0x0008}, |
4561 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 4581 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
4562 | {0xa0, 0x08, 0x01c6}, | 4582 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4563 | {0xa1, 0x01, 0x01c8}, | 4583 | {0xa1, 0x01, 0x01c8}, |
4564 | {0xa1, 0x01, 0x01c9}, | 4584 | {0xa1, 0x01, 0x01c9}, |
4565 | {0xa1, 0x01, 0x01ca}, | 4585 | {0xa1, 0x01, 0x01ca}, |
4566 | {0xa0, 0x0f, 0x01cb}, | 4586 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4567 | 4587 | ||
4568 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ | 4588 | {0xa0, 0x13, 0x0120}, /* gamma 4 */ |
4569 | {0xa0, 0x38, 0x0121}, | 4589 | {0xa0, 0x38, 0x0121}, |
@@ -4633,7 +4653,7 @@ static struct usb_action pb03303x_InitialScale[] = { | |||
4633 | {0xa0, 0x40, 0x0180}, | 4653 | {0xa0, 0x40, 0x0180}, |
4634 | {0xa1, 0x01, 0x0180}, | 4654 | {0xa1, 0x01, 0x0180}, |
4635 | {0xa0, 0x42, 0x0180}, | 4655 | {0xa0, 0x42, 0x0180}, |
4636 | {0, 0, 0} | 4656 | {} |
4637 | }; | 4657 | }; |
4638 | static struct usb_action pb0330xx_Initial[] = { | 4658 | static struct usb_action pb0330xx_Initial[] = { |
4639 | {0xa1, 0x01, 0x0008}, | 4659 | {0xa1, 0x01, 0x0008}, |
@@ -4701,11 +4721,11 @@ static struct usb_action pb0330xx_Initial[] = { | |||
4701 | {0xa0, 0x50, 0x0112}, | 4721 | {0xa0, 0x50, 0x0112}, |
4702 | {0xa1, 0x01, 0x0008}, | 4722 | {0xa1, 0x01, 0x0008}, |
4703 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 4723 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
4704 | {0xa0, 0x08, 0x01c6}, | 4724 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4705 | {0xa1, 0x01, 0x01c8}, | 4725 | {0xa1, 0x01, 0x01c8}, |
4706 | {0xa1, 0x01, 0x01c9}, | 4726 | {0xa1, 0x01, 0x01c9}, |
4707 | {0xa1, 0x01, 0x01ca}, | 4727 | {0xa1, 0x01, 0x01ca}, |
4708 | {0xa0, 0x0f, 0x01cb}, | 4728 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4709 | 4729 | ||
4710 | {0xa0, 0x50, 0x010a}, /* matrix */ | 4730 | {0xa0, 0x50, 0x010a}, /* matrix */ |
4711 | {0xa0, 0xf8, 0x010b}, | 4731 | {0xa0, 0xf8, 0x010b}, |
@@ -4747,7 +4767,7 @@ static struct usb_action pb0330xx_Initial[] = { | |||
4747 | {0xa1, 0x01, 0x0007}, | 4767 | {0xa1, 0x01, 0x0007}, |
4748 | /* {0xa0, 0x30, 0x0007}, */ | 4768 | /* {0xa0, 0x30, 0x0007}, */ |
4749 | /* {0xa0, 0x00, 0x0007}, */ | 4769 | /* {0xa0, 0x00, 0x0007}, */ |
4750 | {0, 0, 0} | 4770 | {} |
4751 | }; | 4771 | }; |
4752 | 4772 | ||
4753 | static struct usb_action pb0330xx_InitialScale[] = { | 4773 | static struct usb_action pb0330xx_InitialScale[] = { |
@@ -4816,11 +4836,11 @@ static struct usb_action pb0330xx_InitialScale[] = { | |||
4816 | {0xa0, 0x50, 0x0112}, | 4836 | {0xa0, 0x50, 0x0112}, |
4817 | {0xa1, 0x01, 0x0008}, | 4837 | {0xa1, 0x01, 0x0008}, |
4818 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 4838 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
4819 | {0xa0, 0x08, 0x01c6}, | 4839 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
4820 | {0xa1, 0x01, 0x01c8}, | 4840 | {0xa1, 0x01, 0x01c8}, |
4821 | {0xa1, 0x01, 0x01c9}, | 4841 | {0xa1, 0x01, 0x01c9}, |
4822 | {0xa1, 0x01, 0x01ca}, | 4842 | {0xa1, 0x01, 0x01ca}, |
4823 | {0xa0, 0x0f, 0x01cb}, | 4843 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
4824 | 4844 | ||
4825 | {0xa0, 0x50, 0x010a}, /* matrix */ | 4845 | {0xa0, 0x50, 0x010a}, /* matrix */ |
4826 | {0xa0, 0xf8, 0x010b}, | 4846 | {0xa0, 0xf8, 0x010b}, |
@@ -4861,7 +4881,7 @@ static struct usb_action pb0330xx_InitialScale[] = { | |||
4861 | {0xa1, 0x01, 0x0007}, | 4881 | {0xa1, 0x01, 0x0007}, |
4862 | /* {0xa0, 0x30, 0x0007}, */ | 4882 | /* {0xa0, 0x30, 0x0007}, */ |
4863 | /* {0xa0, 0x00, 0x0007}, */ | 4883 | /* {0xa0, 0x00, 0x0007}, */ |
4864 | {0, 0, 0} | 4884 | {} |
4865 | }; | 4885 | }; |
4866 | static struct usb_action pb0330_50HZ[] = { | 4886 | static struct usb_action pb0330_50HZ[] = { |
4867 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ | 4887 | {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */ |
@@ -4877,7 +4897,7 @@ static struct usb_action pb0330_50HZ[] = { | |||
4877 | {0xa0, 0x68, 0x001d}, /* 00,1d,68,cc */ | 4897 | {0xa0, 0x68, 0x001d}, /* 00,1d,68,cc */ |
4878 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ | 4898 | {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */ |
4879 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ | 4899 | {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */ |
4880 | {0, 0, 0} | 4900 | {} |
4881 | }; | 4901 | }; |
4882 | static struct usb_action pb0330_50HZScale[] = { | 4902 | static struct usb_action pb0330_50HZScale[] = { |
4883 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 4903 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -4894,7 +4914,7 @@ static struct usb_action pb0330_50HZScale[] = { | |||
4894 | {0xa0, 0xe5, 0x001d}, /* 00,1d,e5,cc */ | 4914 | {0xa0, 0xe5, 0x001d}, /* 00,1d,e5,cc */ |
4895 | {0xa0, 0xf0, 0x001e}, /* 00,1e,f0,cc */ | 4915 | {0xa0, 0xf0, 0x001e}, /* 00,1e,f0,cc */ |
4896 | {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */ | 4916 | {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */ |
4897 | {0, 0, 0} | 4917 | {} |
4898 | }; | 4918 | }; |
4899 | static struct usb_action pb0330_60HZ[] = { | 4919 | static struct usb_action pb0330_60HZ[] = { |
4900 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 4920 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -4911,7 +4931,7 @@ static struct usb_action pb0330_60HZ[] = { | |||
4911 | {0xa0, 0x43, 0x001d}, /* 00,1d,43,cc */ | 4931 | {0xa0, 0x43, 0x001d}, /* 00,1d,43,cc */ |
4912 | {0xa0, 0x50, 0x001e}, /* 00,1e,50,cc */ | 4932 | {0xa0, 0x50, 0x001e}, /* 00,1e,50,cc */ |
4913 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ | 4933 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ |
4914 | {0, 0, 0} | 4934 | {} |
4915 | }; | 4935 | }; |
4916 | static struct usb_action pb0330_60HZScale[] = { | 4936 | static struct usb_action pb0330_60HZScale[] = { |
4917 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 4937 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -4928,7 +4948,7 @@ static struct usb_action pb0330_60HZScale[] = { | |||
4928 | {0xa0, 0x41, 0x001d}, /* 00,1d,41,cc */ | 4948 | {0xa0, 0x41, 0x001d}, /* 00,1d,41,cc */ |
4929 | {0xa0, 0x50, 0x001e}, /* 00,1e,50,cc */ | 4949 | {0xa0, 0x50, 0x001e}, /* 00,1e,50,cc */ |
4930 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ | 4950 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ |
4931 | {0, 0, 0} | 4951 | {} |
4932 | }; | 4952 | }; |
4933 | static struct usb_action pb0330_NoFliker[] = { | 4953 | static struct usb_action pb0330_NoFliker[] = { |
4934 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 4954 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -4945,7 +4965,7 @@ static struct usb_action pb0330_NoFliker[] = { | |||
4945 | {0xa0, 0x09, 0x001d}, /* 00,1d,09,cc */ | 4965 | {0xa0, 0x09, 0x001d}, /* 00,1d,09,cc */ |
4946 | {0xa0, 0x40, 0x001e}, /* 00,1e,40,cc */ | 4966 | {0xa0, 0x40, 0x001e}, /* 00,1e,40,cc */ |
4947 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ | 4967 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ |
4948 | {0, 0, 0} | 4968 | {} |
4949 | }; | 4969 | }; |
4950 | static struct usb_action pb0330_NoFlikerScale[] = { | 4970 | static struct usb_action pb0330_NoFlikerScale[] = { |
4951 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 4971 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -4962,7 +4982,7 @@ static struct usb_action pb0330_NoFlikerScale[] = { | |||
4962 | {0xa0, 0x09, 0x001d}, /* 00,1d,09,cc */ | 4982 | {0xa0, 0x09, 0x001d}, /* 00,1d,09,cc */ |
4963 | {0xa0, 0x40, 0x001e}, /* 00,1e,40,cc */ | 4983 | {0xa0, 0x40, 0x001e}, /* 00,1e,40,cc */ |
4964 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ | 4984 | {0xa0, 0x90, 0x001f}, /* 00,1f,90,cc */ |
4965 | {0, 0, 0} | 4985 | {} |
4966 | }; | 4986 | }; |
4967 | 4987 | ||
4968 | /* from oem9.inf - HKR,%PO2030%,Initial - 640x480 - (close to CS2102) */ | 4988 | /* from oem9.inf - HKR,%PO2030%,Initial - 640x480 - (close to CS2102) */ |
@@ -5039,7 +5059,7 @@ static struct usb_action PO2030_mode0[] = { | |||
5039 | {0xa0, 0x08, 0x0301}, /* 03,01,08,cc */ | 5059 | {0xa0, 0x08, 0x0301}, /* 03,01,08,cc */ |
5040 | {0xa0, 0x7a, 0x0116}, /* 01,16,7a,cc */ | 5060 | {0xa0, 0x7a, 0x0116}, /* 01,16,7a,cc */ |
5041 | {0xa0, 0x4a, 0x0118}, /* 01,18,4a,cc */ | 5061 | {0xa0, 0x4a, 0x0118}, /* 01,18,4a,cc */ |
5042 | {0, 0, 0} | 5062 | {} |
5043 | }; | 5063 | }; |
5044 | 5064 | ||
5045 | /* from oem9.inf - HKR,%PO2030%,InitialScale - 320x240 */ | 5065 | /* from oem9.inf - HKR,%PO2030%,InitialScale - 320x240 */ |
@@ -5116,7 +5136,7 @@ static struct usb_action PO2030_mode1[] = { | |||
5116 | {0xa0, 0x08, 0x0301}, /* 03,01,08,cc */ | 5136 | {0xa0, 0x08, 0x0301}, /* 03,01,08,cc */ |
5117 | {0xa0, 0x7a, 0x0116}, /* 01,16,7a,cc */ | 5137 | {0xa0, 0x7a, 0x0116}, /* 01,16,7a,cc */ |
5118 | {0xa0, 0x4a, 0x0118}, /* 01,18,4a,cc */ | 5138 | {0xa0, 0x4a, 0x0118}, /* 01,18,4a,cc */ |
5119 | {0, 0, 0} | 5139 | {} |
5120 | }; | 5140 | }; |
5121 | 5141 | ||
5122 | static struct usb_action PO2030_50HZ[] = { | 5142 | static struct usb_action PO2030_50HZ[] = { |
@@ -5138,7 +5158,7 @@ static struct usb_action PO2030_50HZ[] = { | |||
5138 | {0xa0, 0x88, 0x018d}, /* 01,8d,88,cc */ | 5158 | {0xa0, 0x88, 0x018d}, /* 01,8d,88,cc */ |
5139 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc */ | 5159 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc */ |
5140 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ | 5160 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ |
5141 | {0, 0, 0} | 5161 | {} |
5142 | }; | 5162 | }; |
5143 | 5163 | ||
5144 | static struct usb_action PO2030_60HZ[] = { | 5164 | static struct usb_action PO2030_60HZ[] = { |
@@ -5160,7 +5180,7 @@ static struct usb_action PO2030_60HZ[] = { | |||
5160 | {0xa0, 0x88, 0x018d}, /* 01,8d,88,cc */ /* win: 01,8d,80 */ | 5180 | {0xa0, 0x88, 0x018d}, /* 01,8d,88,cc */ /* win: 01,8d,80 */ |
5161 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc */ | 5181 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc */ |
5162 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ | 5182 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc */ |
5163 | {0, 0, 0} | 5183 | {} |
5164 | }; | 5184 | }; |
5165 | 5185 | ||
5166 | static struct usb_action PO2030_NoFliker[] = { | 5186 | static struct usb_action PO2030_NoFliker[] = { |
@@ -5171,7 +5191,7 @@ static struct usb_action PO2030_NoFliker[] = { | |||
5171 | {0xaa, 0x1c, 0x0078}, /* 00,1c,78,aa */ | 5191 | {0xaa, 0x1c, 0x0078}, /* 00,1c,78,aa */ |
5172 | {0xaa, 0x46, 0x0000}, /* 00,46,00,aa */ | 5192 | {0xaa, 0x46, 0x0000}, /* 00,46,00,aa */ |
5173 | {0xaa, 0x15, 0x0000}, /* 00,15,00,aa */ | 5193 | {0xaa, 0x15, 0x0000}, /* 00,15,00,aa */ |
5174 | {0, 0, 0} | 5194 | {} |
5175 | }; | 5195 | }; |
5176 | 5196 | ||
5177 | /* TEST */ | 5197 | /* TEST */ |
@@ -5302,8 +5322,8 @@ static struct usb_action tas5130CK_Initial[] = { | |||
5302 | {0xa0, 0x03, 0x0111}, | 5322 | {0xa0, 0x03, 0x0111}, |
5303 | {0xa0, 0x51, 0x0112}, | 5323 | {0xa0, 0x51, 0x0112}, |
5304 | {0xa0, 0x03, 0x0008}, | 5324 | {0xa0, 0x03, 0x0008}, |
5305 | {0xa0, 0x08, 0x01c6}, | 5325 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
5306 | {0xa0, 0x0f, 0x01cb}, | 5326 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
5307 | {0xa0, 0x38, 0x0120}, /* gamma > 5 */ | 5327 | {0xa0, 0x38, 0x0120}, /* gamma > 5 */ |
5308 | {0xa0, 0x51, 0x0121}, | 5328 | {0xa0, 0x51, 0x0121}, |
5309 | {0xa0, 0x6e, 0x0122}, | 5329 | {0xa0, 0x6e, 0x0122}, |
@@ -5375,7 +5395,7 @@ static struct usb_action tas5130CK_Initial[] = { | |||
5375 | {0xa0, 0x15, 0x01ae}, | 5395 | {0xa0, 0x15, 0x01ae}, |
5376 | {0xa0, 0x40, 0x0180}, | 5396 | {0xa0, 0x40, 0x0180}, |
5377 | {0xa0, 0x42, 0x0180}, | 5397 | {0xa0, 0x42, 0x0180}, |
5378 | {0, 0, 0} | 5398 | {} |
5379 | }; | 5399 | }; |
5380 | 5400 | ||
5381 | static struct usb_action tas5130CK_InitialScale[] = { | 5401 | static struct usb_action tas5130CK_InitialScale[] = { |
@@ -5505,8 +5525,8 @@ static struct usb_action tas5130CK_InitialScale[] = { | |||
5505 | {0xa0, 0x03, 0x0111}, | 5525 | {0xa0, 0x03, 0x0111}, |
5506 | {0xa0, 0x51, 0x0112}, | 5526 | {0xa0, 0x51, 0x0112}, |
5507 | {0xa0, 0x03, 0x0008}, | 5527 | {0xa0, 0x03, 0x0008}, |
5508 | {0xa0, 0x08, 0x01c6}, | 5528 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
5509 | {0xa0, 0x0f, 0x01cb}, | 5529 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
5510 | {0xa0, 0x38, 0x0120}, /* gamma > 5 */ | 5530 | {0xa0, 0x38, 0x0120}, /* gamma > 5 */ |
5511 | {0xa0, 0x51, 0x0121}, | 5531 | {0xa0, 0x51, 0x0121}, |
5512 | {0xa0, 0x6e, 0x0122}, | 5532 | {0xa0, 0x6e, 0x0122}, |
@@ -5583,7 +5603,7 @@ static struct usb_action tas5130CK_InitialScale[] = { | |||
5583 | {0xa0, 0x02, 0x0008}, | 5603 | {0xa0, 0x02, 0x0008}, |
5584 | {0xa0, 0x00, 0x0007}, | 5604 | {0xa0, 0x00, 0x0007}, |
5585 | {0xa0, 0x03, 0x0008}, | 5605 | {0xa0, 0x03, 0x0008}, |
5586 | {0, 0, 0} | 5606 | {} |
5587 | }; | 5607 | }; |
5588 | 5608 | ||
5589 | static struct usb_action tas5130cxx_Initial[] = { | 5609 | static struct usb_action tas5130cxx_Initial[] = { |
@@ -5625,11 +5645,11 @@ static struct usb_action tas5130cxx_Initial[] = { | |||
5625 | {0xa1, 0x01, 0x0002}, | 5645 | {0xa1, 0x01, 0x0002}, |
5626 | {0xa1, 0x01, 0x0008}, | 5646 | {0xa1, 0x01, 0x0008}, |
5627 | {0xa0, 0x03, 0x0008}, /* clock ? */ | 5647 | {0xa0, 0x03, 0x0008}, /* clock ? */ |
5628 | {0xa0, 0x08, 0x01c6}, | 5648 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
5629 | {0xa1, 0x01, 0x01c8}, | 5649 | {0xa1, 0x01, 0x01c8}, |
5630 | {0xa1, 0x01, 0x01c9}, | 5650 | {0xa1, 0x01, 0x01c9}, |
5631 | {0xa1, 0x01, 0x01ca}, | 5651 | {0xa1, 0x01, 0x01ca}, |
5632 | {0xa0, 0x0f, 0x01cb}, | 5652 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
5633 | 5653 | ||
5634 | {0xa0, 0x68, 0x010a}, /* matrix */ | 5654 | {0xa0, 0x68, 0x010a}, /* matrix */ |
5635 | {0xa0, 0xec, 0x010b}, | 5655 | {0xa0, 0xec, 0x010b}, |
@@ -5673,7 +5693,7 @@ static struct usb_action tas5130cxx_Initial[] = { | |||
5673 | {0xa0, 0x40, 0x0180}, | 5693 | {0xa0, 0x40, 0x0180}, |
5674 | {0xa1, 0x01, 0x0180}, | 5694 | {0xa1, 0x01, 0x0180}, |
5675 | {0xa0, 0x42, 0x0180}, | 5695 | {0xa0, 0x42, 0x0180}, |
5676 | {0, 0, 0} | 5696 | {} |
5677 | }; | 5697 | }; |
5678 | static struct usb_action tas5130cxx_InitialScale[] = { | 5698 | static struct usb_action tas5130cxx_InitialScale[] = { |
5679 | {0xa0, 0x01, 0x0000}, | 5699 | {0xa0, 0x01, 0x0000}, |
@@ -5718,11 +5738,11 @@ static struct usb_action tas5130cxx_InitialScale[] = { | |||
5718 | 5738 | ||
5719 | {0xa0, 0x03, 0x0008}, | 5739 | {0xa0, 0x03, 0x0008}, |
5720 | {0xa1, 0x01, 0x0008}, /* clock ? */ | 5740 | {0xa1, 0x01, 0x0008}, /* clock ? */ |
5721 | {0xa0, 0x08, 0x01c6}, | 5741 | {0xa0, 0x08, 0x01c6}, /* sharpness+ */ |
5722 | {0xa1, 0x01, 0x01c8}, | 5742 | {0xa1, 0x01, 0x01c8}, |
5723 | {0xa1, 0x01, 0x01c9}, | 5743 | {0xa1, 0x01, 0x01c9}, |
5724 | {0xa1, 0x01, 0x01ca}, | 5744 | {0xa1, 0x01, 0x01ca}, |
5725 | {0xa0, 0x0f, 0x01cb}, | 5745 | {0xa0, 0x0f, 0x01cb}, /* sharpness- */ |
5726 | 5746 | ||
5727 | {0xa0, 0x68, 0x010a}, /* matrix */ | 5747 | {0xa0, 0x68, 0x010a}, /* matrix */ |
5728 | {0xa0, 0xec, 0x010b}, | 5748 | {0xa0, 0xec, 0x010b}, |
@@ -5763,7 +5783,7 @@ static struct usb_action tas5130cxx_InitialScale[] = { | |||
5763 | {0xa0, 0x40, 0x0180}, | 5783 | {0xa0, 0x40, 0x0180}, |
5764 | {0xa1, 0x01, 0x0180}, | 5784 | {0xa1, 0x01, 0x0180}, |
5765 | {0xa0, 0x42, 0x0180}, | 5785 | {0xa0, 0x42, 0x0180}, |
5766 | {0, 0, 0} | 5786 | {} |
5767 | }; | 5787 | }; |
5768 | static struct usb_action tas5130cxx_50HZ[] = { | 5788 | static struct usb_action tas5130cxx_50HZ[] = { |
5769 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 5789 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -5786,7 +5806,7 @@ static struct usb_action tas5130cxx_50HZ[] = { | |||
5786 | {0xa0, 0xea, 0x001f}, /* 00,1f,ea,cc */ | 5806 | {0xa0, 0xea, 0x001f}, /* 00,1f,ea,cc */ |
5787 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5807 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5788 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ | 5808 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ |
5789 | {0, 0, 0} | 5809 | {} |
5790 | }; | 5810 | }; |
5791 | static struct usb_action tas5130cxx_50HZScale[] = { | 5811 | static struct usb_action tas5130cxx_50HZScale[] = { |
5792 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 5812 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -5809,7 +5829,7 @@ static struct usb_action tas5130cxx_50HZScale[] = { | |||
5809 | {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */ | 5829 | {0xa0, 0xf8, 0x001f}, /* 00,1f,f8,cc */ |
5810 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5830 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5811 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ | 5831 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ |
5812 | {0, 0, 0} | 5832 | {} |
5813 | }; | 5833 | }; |
5814 | static struct usb_action tas5130cxx_60HZ[] = { | 5834 | static struct usb_action tas5130cxx_60HZ[] = { |
5815 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 5835 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -5832,7 +5852,7 @@ static struct usb_action tas5130cxx_60HZ[] = { | |||
5832 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ | 5852 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ |
5833 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5853 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5834 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ | 5854 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ |
5835 | {0, 0, 0} | 5855 | {} |
5836 | }; | 5856 | }; |
5837 | static struct usb_action tas5130cxx_60HZScale[] = { | 5857 | static struct usb_action tas5130cxx_60HZScale[] = { |
5838 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 5858 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -5855,7 +5875,7 @@ static struct usb_action tas5130cxx_60HZScale[] = { | |||
5855 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ | 5875 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ |
5856 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5876 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5857 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ | 5877 | {0xa0, 0x03, 0x009f}, /* 00,9f,03,cc */ |
5858 | {0, 0, 0} | 5878 | {} |
5859 | }; | 5879 | }; |
5860 | static struct usb_action tas5130cxx_NoFliker[] = { | 5880 | static struct usb_action tas5130cxx_NoFliker[] = { |
5861 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ | 5881 | {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */ |
@@ -5878,7 +5898,7 @@ static struct usb_action tas5130cxx_NoFliker[] = { | |||
5878 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ | 5898 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ |
5879 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5899 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5880 | {0xa0, 0x02, 0x009f}, /* 00,9f,02,cc */ | 5900 | {0xa0, 0x02, 0x009f}, /* 00,9f,02,cc */ |
5881 | {0, 0, 0} | 5901 | {} |
5882 | }; | 5902 | }; |
5883 | 5903 | ||
5884 | static struct usb_action tas5130cxx_NoFlikerScale[] = { | 5904 | static struct usb_action tas5130cxx_NoFlikerScale[] = { |
@@ -5902,7 +5922,7 @@ static struct usb_action tas5130cxx_NoFlikerScale[] = { | |||
5902 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ | 5922 | {0xa0, 0xe0, 0x001f}, /* 00,1f,e0,cc */ |
5903 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ | 5923 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc */ |
5904 | {0xa0, 0x02, 0x009f}, /* 00,9f,02,cc */ | 5924 | {0xa0, 0x02, 0x009f}, /* 00,9f,02,cc */ |
5905 | {0, 0, 0} | 5925 | {} |
5906 | }; | 5926 | }; |
5907 | 5927 | ||
5908 | static struct usb_action tas5130c_vf0250_Initial[] = { | 5928 | static struct usb_action tas5130c_vf0250_Initial[] = { |
@@ -5966,7 +5986,7 @@ static struct usb_action tas5130c_vf0250_Initial[] = { | |||
5966 | {0xa0, 0x60, 0x01a8}, /* 01,a8,60,cc, */ | 5986 | {0xa0, 0x60, 0x01a8}, /* 01,a8,60,cc, */ |
5967 | {0xa0, 0x61, 0x0116}, /* 01,16,61,cc, */ | 5987 | {0xa0, 0x61, 0x0116}, /* 01,16,61,cc, */ |
5968 | {0xa0, 0x65, 0x0118}, /* 01,18,65,cc */ | 5988 | {0xa0, 0x65, 0x0118}, /* 01,18,65,cc */ |
5969 | {0, 0, 0} | 5989 | {} |
5970 | }; | 5990 | }; |
5971 | 5991 | ||
5972 | static struct usb_action tas5130c_vf0250_InitialScale[] = { | 5992 | static struct usb_action tas5130c_vf0250_InitialScale[] = { |
@@ -6030,7 +6050,7 @@ static struct usb_action tas5130c_vf0250_InitialScale[] = { | |||
6030 | {0xa0, 0x60, 0x01a8}, /* 01,a8,60,cc, */ | 6050 | {0xa0, 0x60, 0x01a8}, /* 01,a8,60,cc, */ |
6031 | {0xa0, 0x61, 0x0116}, /* 01,16,61,cc, */ | 6051 | {0xa0, 0x61, 0x0116}, /* 01,16,61,cc, */ |
6032 | {0xa0, 0x65, 0x0118}, /* 01,18,65,cc */ | 6052 | {0xa0, 0x65, 0x0118}, /* 01,18,65,cc */ |
6033 | {0, 0, 0} | 6053 | {} |
6034 | }; | 6054 | }; |
6035 | /* "50HZ" light frequency banding filter */ | 6055 | /* "50HZ" light frequency banding filter */ |
6036 | static struct usb_action tas5130c_vf0250_50HZ[] = { | 6056 | static struct usb_action tas5130c_vf0250_50HZ[] = { |
@@ -6054,7 +6074,7 @@ static struct usb_action tas5130c_vf0250_50HZ[] = { | |||
6054 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ | 6074 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ |
6055 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ | 6075 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ |
6056 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ | 6076 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ |
6057 | {0, 0, 0} | 6077 | {} |
6058 | }; | 6078 | }; |
6059 | 6079 | ||
6060 | /* "50HZScale" light frequency banding filter */ | 6080 | /* "50HZScale" light frequency banding filter */ |
@@ -6079,7 +6099,7 @@ static struct usb_action tas5130c_vf0250_50HZScale[] = { | |||
6079 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ | 6099 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ |
6080 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ | 6100 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ |
6081 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ | 6101 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ |
6082 | {0, 0, 0} | 6102 | {} |
6083 | }; | 6103 | }; |
6084 | 6104 | ||
6085 | /* "60HZ" light frequency banding filter */ | 6105 | /* "60HZ" light frequency banding filter */ |
@@ -6104,7 +6124,7 @@ static struct usb_action tas5130c_vf0250_60HZ[] = { | |||
6104 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ | 6124 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ |
6105 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ | 6125 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ |
6106 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ | 6126 | {0xa0, 0x78, 0x018d}, /* 01,8d,78,cc */ |
6107 | {0, 0, 0} | 6127 | {} |
6108 | }; | 6128 | }; |
6109 | 6129 | ||
6110 | /* "60HZScale" light frequency banding ilter */ | 6130 | /* "60HZScale" light frequency banding ilter */ |
@@ -6129,7 +6149,7 @@ static struct usb_action tas5130c_vf0250_60HZScale[] = { | |||
6129 | {0xa0, 0x58, 0x011d}, /* 01,d,58,cc, */ | 6149 | {0xa0, 0x58, 0x011d}, /* 01,d,58,cc, */ |
6130 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ | 6150 | {0xa0, 0x42, 0x0180}, /* 01,80,42,cc, */ |
6131 | {0xa0, 0x78, 0x018d}, /* 01,d,78,cc */ | 6151 | {0xa0, 0x78, 0x018d}, /* 01,d,78,cc */ |
6132 | {0, 0, 0} | 6152 | {} |
6133 | }; | 6153 | }; |
6134 | 6154 | ||
6135 | /* "NoFliker" light frequency banding flter */ | 6155 | /* "NoFliker" light frequency banding flter */ |
@@ -6152,7 +6172,7 @@ static struct usb_action tas5130c_vf0250_NoFliker[] = { | |||
6152 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc, */ | 6172 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc, */ |
6153 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ | 6173 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ |
6154 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ | 6174 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ |
6155 | {0, 0, 0} | 6175 | {} |
6156 | }; | 6176 | }; |
6157 | 6177 | ||
6158 | /* "NoFlikerScale" light frequency banding filter */ | 6178 | /* "NoFlikerScale" light frequency banding filter */ |
@@ -6175,7 +6195,7 @@ static struct usb_action tas5130c_vf0250_NoFlikerScale[] = { | |||
6175 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc, */ | 6195 | {0xa0, 0xff, 0x0020}, /* 00,20,ff,cc, */ |
6176 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ | 6196 | {0xa0, 0x58, 0x011d}, /* 01,1d,58,cc, */ |
6177 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ | 6197 | {0xa0, 0x03, 0x0180}, /* 01,80,03,cc */ |
6178 | {0, 0, 0} | 6198 | {} |
6179 | }; | 6199 | }; |
6180 | 6200 | ||
6181 | static void reg_r_i(struct usb_device *dev, | 6201 | static void reg_r_i(struct usb_device *dev, |
@@ -6325,7 +6345,7 @@ static void setbrightness(struct gspca_dev *gspca_dev) | |||
6325 | case SENSOR_PO2030: | 6345 | case SENSOR_PO2030: |
6326 | return; | 6346 | return; |
6327 | } | 6347 | } |
6328 | /*fixme: is it really 011d 018d for all other sensors? */ | 6348 | /*fixme: is it really write to 011d and 018d for all other sensors? */ |
6329 | brightness = sd->brightness; | 6349 | brightness = sd->brightness; |
6330 | reg_w(gspca_dev->dev, brightness, 0x011d); | 6350 | reg_w(gspca_dev->dev, brightness, 0x011d); |
6331 | if (brightness < 0x70) | 6351 | if (brightness < 0x70) |
@@ -6348,20 +6368,7 @@ static void setsharpness(struct gspca_dev *gspca_dev) | |||
6348 | {0x10, 0x1e} | 6368 | {0x10, 0x1e} |
6349 | }; | 6369 | }; |
6350 | 6370 | ||
6351 | switch (sd->sensor) { | 6371 | sharpness = sd->sharpness; |
6352 | case SENSOR_GC0305: | ||
6353 | sharpness = 3; | ||
6354 | break; | ||
6355 | case SENSOR_OV7620: | ||
6356 | sharpness = 2; | ||
6357 | break; | ||
6358 | case SENSOR_PO2030: | ||
6359 | sharpness = 0; | ||
6360 | break; | ||
6361 | default: | ||
6362 | return; | ||
6363 | } | ||
6364 | /*fixme: sharpness set by V4L2_CID_SATURATION?*/ | ||
6365 | reg_w(dev, sharpness_tb[sharpness][0], 0x01c6); | 6372 | reg_w(dev, sharpness_tb[sharpness][0], 0x01c6); |
6366 | reg_r(dev, 0x01c8, &retbyte); | 6373 | reg_r(dev, 0x01c8, &retbyte); |
6367 | reg_r(dev, 0x01c9, &retbyte); | 6374 | reg_r(dev, 0x01c9, &retbyte); |
@@ -6411,7 +6418,7 @@ static void setcontrast(struct gspca_dev *gspca_dev) | |||
6411 | static __u8 Tgradient_5[16] = | 6418 | static __u8 Tgradient_5[16] = |
6412 | {0x37, 0x26, 0x20, 0x1a, 0x14, 0x10, 0x0e, 0x0b, | 6419 | {0x37, 0x26, 0x20, 0x1a, 0x14, 0x10, 0x0e, 0x0b, |
6413 | 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x02}; | 6420 | 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x02}; |
6414 | static __u8 Tgamma_6[16] = /* ?? was gama 5 */ | 6421 | static __u8 Tgamma_6[16] = /* ?? was gamma 5 */ |
6415 | {0x24, 0x44, 0x64, 0x84, 0x9d, 0xb2, 0xc4, 0xd3, | 6422 | {0x24, 0x44, 0x64, 0x84, 0x9d, 0xb2, 0xc4, 0xd3, |
6416 | 0xe0, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff}; | 6423 | 0xe0, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff}; |
6417 | static __u8 Tgradient_6[16] = | 6424 | static __u8 Tgradient_6[16] = |
@@ -6425,7 +6432,7 @@ static void setcontrast(struct gspca_dev *gspca_dev) | |||
6425 | 0, Tgradient_1, Tgradient_2, | 6432 | 0, Tgradient_1, Tgradient_2, |
6426 | Tgradient_3, Tgradient_4, Tgradient_5, Tgradient_6 | 6433 | Tgradient_3, Tgradient_4, Tgradient_5, Tgradient_6 |
6427 | }; | 6434 | }; |
6428 | #ifdef GSPCA_DEBUG | 6435 | #ifdef VIDEO_ADV_DEBUG |
6429 | __u8 v[16]; | 6436 | __u8 v[16]; |
6430 | #endif | 6437 | #endif |
6431 | 6438 | ||
@@ -6443,7 +6450,7 @@ static void setcontrast(struct gspca_dev *gspca_dev) | |||
6443 | else if (g <= 0) | 6450 | else if (g <= 0) |
6444 | g = 1; | 6451 | g = 1; |
6445 | reg_w(dev, g, 0x0120 + i); /* gamma */ | 6452 | reg_w(dev, g, 0x0120 + i); /* gamma */ |
6446 | #ifdef GSPCA_DEBUG | 6453 | #ifdef VIDEO_ADV_DEBUG |
6447 | if (gspca_debug & D_CONF) | 6454 | if (gspca_debug & D_CONF) |
6448 | v[i] = g; | 6455 | v[i] = g; |
6449 | #endif | 6456 | #endif |
@@ -6463,7 +6470,7 @@ static void setcontrast(struct gspca_dev *gspca_dev) | |||
6463 | g = 1; | 6470 | g = 1; |
6464 | } | 6471 | } |
6465 | reg_w(dev, g, 0x0130 + i); /* gradient */ | 6472 | reg_w(dev, g, 0x0130 + i); /* gradient */ |
6466 | #ifdef GSPCA_DEBUG | 6473 | #ifdef VIDEO_ADV_DEBUG |
6467 | if (gspca_debug & D_CONF) | 6474 | if (gspca_debug & D_CONF) |
6468 | v[i] = g; | 6475 | v[i] = g; |
6469 | #endif | 6476 | #endif |
@@ -6488,7 +6495,7 @@ static void setquality(struct gspca_dev *gspca_dev) | |||
6488 | return; | 6495 | return; |
6489 | } | 6496 | } |
6490 | /*fixme: is it really 0008 0007 0018 for all other sensors? */ | 6497 | /*fixme: is it really 0008 0007 0018 for all other sensors? */ |
6491 | quality = sd->qindex & 0x0f; | 6498 | quality = sd->qindex; |
6492 | reg_w(dev, quality, 0x0008); | 6499 | reg_w(dev, quality, 0x0008); |
6493 | frxt = 0x30; | 6500 | frxt = 0x30; |
6494 | reg_w(dev, frxt, 0x0007); | 6501 | reg_w(dev, frxt, 0x0007); |
@@ -6525,25 +6532,25 @@ static int setlightfreq(struct gspca_dev *gspca_dev) | |||
6525 | struct usb_action *zc3_freq; | 6532 | struct usb_action *zc3_freq; |
6526 | static struct usb_action *freq_tb[SENSOR_MAX][6] = { | 6533 | static struct usb_action *freq_tb[SENSOR_MAX][6] = { |
6527 | /* SENSOR_CS2102 0 */ | 6534 | /* SENSOR_CS2102 0 */ |
6528 | {cs2102_50HZ, cs2102_50HZScale, | 6535 | {cs2102_NoFliker, cs2102_NoFlikerScale, |
6529 | cs2102_60HZ, cs2102_60HZScale, | 6536 | cs2102_50HZ, cs2102_50HZScale, |
6530 | cs2102_NoFliker, cs2102_NoFlikerScale}, | 6537 | cs2102_60HZ, cs2102_60HZScale}, |
6531 | /* SENSOR_CS2102K 1 */ | 6538 | /* SENSOR_CS2102K 1 */ |
6532 | {cs2102_50HZ, cs2102_50HZScale, | 6539 | {cs2102_NoFliker, cs2102_NoFlikerScale, |
6533 | cs2102_60HZ, cs2102_60HZScale, | 6540 | cs2102_50HZ, cs2102_50HZScale, |
6534 | cs2102_NoFliker, cs2102_NoFlikerScale}, | 6541 | cs2102_60HZ, cs2102_60HZScale}, |
6535 | /* SENSOR_GC0305 2 */ | 6542 | /* SENSOR_GC0305 2 */ |
6536 | {gc0305_50HZ, gc0305_50HZ, | 6543 | {gc0305_NoFliker, gc0305_NoFliker, |
6537 | gc0305_60HZ, gc0305_60HZ, | 6544 | gc0305_50HZ, gc0305_50HZ, |
6538 | gc0305_NoFliker, gc0305_NoFliker}, | 6545 | gc0305_60HZ, gc0305_60HZ}, |
6539 | /* SENSOR_HDCS2020 3 */ | 6546 | /* SENSOR_HDCS2020 3 */ |
6540 | {0, 0, | 6547 | {0, 0, |
6541 | 0, 0, | 6548 | 0, 0, |
6542 | 0, 0}, | 6549 | 0, 0}, |
6543 | /* SENSOR_HDCS2020b 4 */ | 6550 | /* SENSOR_HDCS2020b 4 */ |
6544 | {hdcs2020b_50HZ, hdcs2020b_50HZ, | 6551 | {hdcs2020b_NoFliker, hdcs2020b_NoFliker, |
6545 | hdcs2020b_60HZ, hdcs2020b_60HZ, | 6552 | hdcs2020b_50HZ, hdcs2020b_50HZ, |
6546 | hdcs2020b_NoFliker, hdcs2020b_NoFliker}, | 6553 | hdcs2020b_60HZ, hdcs2020b_60HZ}, |
6547 | /* SENSOR_HV7131B 5 */ | 6554 | /* SENSOR_HV7131B 5 */ |
6548 | {0, 0, | 6555 | {0, 0, |
6549 | 0, 0, | 6556 | 0, 0, |
@@ -6553,66 +6560,48 @@ static int setlightfreq(struct gspca_dev *gspca_dev) | |||
6553 | 0, 0, | 6560 | 0, 0, |
6554 | 0, 0}, | 6561 | 0, 0}, |
6555 | /* SENSOR_ICM105A 7 */ | 6562 | /* SENSOR_ICM105A 7 */ |
6556 | {icm105a_50HZ, icm105a_50HZScale, | 6563 | {icm105a_NoFliker, icm105a_NoFlikerScale, |
6557 | icm105a_60HZ, icm105a_60HZScale, | 6564 | icm105a_50HZ, icm105a_50HZScale, |
6558 | icm105a_NoFliker, icm105a_NoFlikerScale}, | 6565 | icm105a_60HZ, icm105a_60HZScale}, |
6559 | /* SENSOR_MC501CB 8 */ | 6566 | /* SENSOR_MC501CB 8 */ |
6560 | {MC501CB_50HZ, MC501CB_50HZScale, | 6567 | {MC501CB_NoFliker, MC501CB_NoFlikerScale, |
6561 | MC501CB_60HZ, MC501CB_60HZScale, | 6568 | MC501CB_50HZ, MC501CB_50HZScale, |
6562 | MC501CB_NoFliker, MC501CB_NoFlikerScale}, | 6569 | MC501CB_60HZ, MC501CB_60HZScale}, |
6563 | /* SENSOR_OV7620 9 */ | 6570 | /* SENSOR_OV7620 9 */ |
6564 | {OV7620_50HZ, OV7620_50HZ, | 6571 | {OV7620_NoFliker, OV7620_NoFliker, |
6565 | OV7620_60HZ, OV7620_60HZ, | 6572 | OV7620_50HZ, OV7620_50HZ, |
6566 | OV7620_NoFliker, OV7620_NoFliker}, | 6573 | OV7620_60HZ, OV7620_60HZ}, |
6567 | /* SENSOR_OV7630C 10 */ | 6574 | /* SENSOR_OV7630C 10 */ |
6568 | {0, 0, | 6575 | {0, 0, |
6569 | 0, 0, | 6576 | 0, 0, |
6570 | 0, 0}, | 6577 | 0, 0}, |
6571 | /* SENSOR_free 11 */ | 6578 | /* SENSOR_PAS106 11 */ |
6572 | {0, 0, | 6579 | {pas106b_NoFliker, pas106b_NoFliker, |
6573 | 0, 0, | 6580 | pas106b_50HZ, pas106b_50HZ, |
6574 | 0, 0}, | 6581 | pas106b_60HZ, pas106b_60HZ}, |
6575 | /* SENSOR_PAS106 12 */ | 6582 | /* SENSOR_PB0330 12 */ |
6576 | {pas106b_50HZ, pas106b_50HZ, | 6583 | {pb0330_NoFliker, pb0330_NoFlikerScale, |
6577 | pas106b_60HZ, pas106b_60HZ, | 6584 | pb0330_50HZ, pb0330_50HZScale, |
6578 | pas106b_NoFliker, pas106b_NoFliker}, | 6585 | pb0330_60HZ, pb0330_60HZScale}, |
6579 | /* SENSOR_PB0330 13 */ | 6586 | /* SENSOR_PO2030 13 */ |
6580 | {pb0330_50HZ, pb0330_50HZScale, | 6587 | {PO2030_NoFliker, PO2030_NoFliker, |
6581 | pb0330_60HZ, pb0330_60HZScale, | 6588 | PO2030_50HZ, PO2030_50HZ, |
6582 | pb0330_NoFliker, pb0330_NoFlikerScale}, | 6589 | PO2030_60HZ, PO2030_60HZ}, |
6583 | /* SENSOR_PO2030 14 */ | 6590 | /* SENSOR_TAS5130CK 14 */ |
6584 | {PO2030_50HZ, PO2030_50HZ, | 6591 | {tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale, |
6585 | PO2030_60HZ, PO2030_60HZ, | 6592 | tas5130cxx_50HZ, tas5130cxx_50HZScale, |
6586 | PO2030_NoFliker, PO2030_NoFliker}, | 6593 | tas5130cxx_60HZ, tas5130cxx_60HZScale}, |
6587 | /* SENSOR_TAS5130CK 15 */ | 6594 | /* SENSOR_TAS5130CXX 15 */ |
6588 | {tas5130cxx_50HZ, tas5130cxx_50HZScale, | 6595 | {tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale, |
6589 | tas5130cxx_60HZ, tas5130cxx_60HZScale, | 6596 | tas5130cxx_50HZ, tas5130cxx_50HZScale, |
6590 | tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale}, | 6597 | tas5130cxx_60HZ, tas5130cxx_60HZScale}, |
6591 | /* SENSOR_TAS5130CXX 16 */ | 6598 | /* SENSOR_TAS5130C_VF0250 16 */ |
6592 | {tas5130cxx_50HZ, tas5130cxx_50HZScale, | 6599 | {tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale, |
6593 | tas5130cxx_60HZ, tas5130cxx_60HZScale, | 6600 | tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale, |
6594 | tas5130cxx_NoFliker, tas5130cxx_NoFlikerScale}, | 6601 | tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale}, |
6595 | /* SENSOR_TAS5130C_VF0250 17 */ | ||
6596 | {tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale, | ||
6597 | tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale, | ||
6598 | tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale}, | ||
6599 | }; | 6602 | }; |
6600 | 6603 | ||
6601 | switch (lightfreq) { | 6604 | i = sd->lightfreq * 2; |
6602 | case 50: | ||
6603 | i = 0; | ||
6604 | break; | ||
6605 | case 60: | ||
6606 | i = 2; | ||
6607 | break; | ||
6608 | default: | ||
6609 | PDEBUG(D_ERR, "Invalid light freq value %d", lightfreq); | ||
6610 | lightfreq = 0; /* set to default filter value */ | ||
6611 | /* fall thru */ | ||
6612 | case 0: | ||
6613 | i = 4; | ||
6614 | break; | ||
6615 | } | ||
6616 | mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode; | 6605 | mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode; |
6617 | if (!mode) | 6606 | if (!mode) |
6618 | i++; /* 640x480 */ | 6607 | i++; /* 640x480 */ |
@@ -6622,13 +6611,13 @@ static int setlightfreq(struct gspca_dev *gspca_dev) | |||
6622 | switch (sd->sensor) { | 6611 | switch (sd->sensor) { |
6623 | case SENSOR_GC0305: | 6612 | case SENSOR_GC0305: |
6624 | if (mode /* if 320x240 */ | 6613 | if (mode /* if 320x240 */ |
6625 | && lightfreq == 50) | 6614 | && sd->lightfreq == 1) /* and 50Hz */ |
6626 | reg_w(gspca_dev->dev, 0x85, 0x018d); | 6615 | reg_w(gspca_dev->dev, 0x85, 0x018d); |
6627 | /* win: 0x80, 0x018d */ | 6616 | /* win: 0x80, 0x018d */ |
6628 | break; | 6617 | break; |
6629 | case SENSOR_OV7620: | 6618 | case SENSOR_OV7620: |
6630 | if (!mode) { /* if 640x480 */ | 6619 | if (!mode) { /* if 640x480 */ |
6631 | if (lightfreq != 0) /* 50 or 60 Hz */ | 6620 | if (sd->lightfreq != 0) /* and 50 or 60 Hz */ |
6632 | reg_w(gspca_dev->dev, 0x40, 0x0002); | 6621 | reg_w(gspca_dev->dev, 0x40, 0x0002); |
6633 | else | 6622 | else |
6634 | reg_w(gspca_dev->dev, 0x44, 0x0002); | 6623 | reg_w(gspca_dev->dev, 0x44, 0x0002); |
@@ -6653,9 +6642,9 @@ static void setautogain(struct gspca_dev *gspca_dev) | |||
6653 | 6642 | ||
6654 | static void send_unknown(struct usb_device *dev, int sensor) | 6643 | static void send_unknown(struct usb_device *dev, int sensor) |
6655 | { | 6644 | { |
6645 | reg_w(dev, 0x01, 0x0000); /* led off */ | ||
6656 | switch (sensor) { | 6646 | switch (sensor) { |
6657 | case SENSOR_PAS106: | 6647 | case SENSOR_PAS106: |
6658 | reg_w(dev, 0x01, 0x0000); | ||
6659 | reg_w(dev, 0x03, 0x003a); | 6648 | reg_w(dev, 0x03, 0x003a); |
6660 | reg_w(dev, 0x0c, 0x003b); | 6649 | reg_w(dev, 0x0c, 0x003b); |
6661 | reg_w(dev, 0x08, 0x0038); | 6650 | reg_w(dev, 0x08, 0x0038); |
@@ -6664,7 +6653,6 @@ static void send_unknown(struct usb_device *dev, int sensor) | |||
6664 | case SENSOR_OV7620: | 6653 | case SENSOR_OV7620: |
6665 | case SENSOR_PB0330: | 6654 | case SENSOR_PB0330: |
6666 | case SENSOR_PO2030: | 6655 | case SENSOR_PO2030: |
6667 | reg_w(dev, 0x01, 0x0000); | ||
6668 | reg_w(dev, 0x0d, 0x003a); | 6656 | reg_w(dev, 0x0d, 0x003a); |
6669 | reg_w(dev, 0x02, 0x003b); | 6657 | reg_w(dev, 0x02, 0x003b); |
6670 | reg_w(dev, 0x00, 0x0038); | 6658 | reg_w(dev, 0x00, 0x0038); |
@@ -6817,7 +6805,7 @@ static int vga_3wr_probe(struct gspca_dev *gspca_dev) | |||
6817 | 6805 | ||
6818 | /*fixme: lack of 8b=b3 (11,12)-> 10, 8b=e0 (14,15,16)-> 12 found in gspcav1*/ | 6806 | /*fixme: lack of 8b=b3 (11,12)-> 10, 8b=e0 (14,15,16)-> 12 found in gspcav1*/ |
6819 | reg_w(dev, 0x02, 0x0010); | 6807 | reg_w(dev, 0x02, 0x0010); |
6820 | reg_r(dev, 0x0010, &retbyte); | 6808 | reg_r(dev, 0x10, &retbyte); |
6821 | reg_w(dev, 0x01, 0x0000); | 6809 | reg_w(dev, 0x01, 0x0000); |
6822 | reg_w(dev, 0x00, 0x0010); | 6810 | reg_w(dev, 0x00, 0x0010); |
6823 | reg_w(dev, 0x01, 0x0001); | 6811 | reg_w(dev, 0x01, 0x0001); |
@@ -6964,7 +6952,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
6964 | int sensor; | 6952 | int sensor; |
6965 | __u8 bsensor; | 6953 | __u8 bsensor; |
6966 | int vga = 1; /* 1: vga, 0: sif */ | 6954 | int vga = 1; /* 1: vga, 0: sif */ |
6967 | static unsigned char gamma[SENSOR_MAX] = { | 6955 | static __u8 gamma[SENSOR_MAX] = { |
6968 | 5, /* SENSOR_CS2102 0 */ | 6956 | 5, /* SENSOR_CS2102 0 */ |
6969 | 5, /* SENSOR_CS2102K 1 */ | 6957 | 5, /* SENSOR_CS2102K 1 */ |
6970 | 4, /* SENSOR_GC0305 2 */ | 6958 | 4, /* SENSOR_GC0305 2 */ |
@@ -6976,16 +6964,16 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
6976 | 4, /* SENSOR_MC501CB 8 */ | 6964 | 4, /* SENSOR_MC501CB 8 */ |
6977 | 3, /* SENSOR_OV7620 9 */ | 6965 | 3, /* SENSOR_OV7620 9 */ |
6978 | 4, /* SENSOR_OV7630C 10 */ | 6966 | 4, /* SENSOR_OV7630C 10 */ |
6979 | 4, /* SENSOR_free 11 */ | 6967 | 4, /* SENSOR_PAS106 11 */ |
6980 | 4, /* SENSOR_PAS106 12 */ | 6968 | 4, /* SENSOR_PB0330 12 */ |
6981 | 4, /* SENSOR_PB0330 13 */ | 6969 | 4, /* SENSOR_PO2030 13 */ |
6982 | 4, /* SENSOR_PO2030 14 */ | 6970 | 4, /* SENSOR_TAS5130CK 14 */ |
6983 | 4, /* SENSOR_TAS5130CK 15 */ | 6971 | 4, /* SENSOR_TAS5130CXX 15 */ |
6984 | 4, /* SENSOR_TAS5130CXX 16 */ | 6972 | 3, /* SENSOR_TAS5130C_VF0250 16 */ |
6985 | 3, /* SENSOR_TAS5130C_VF0250 17 */ | ||
6986 | }; | 6973 | }; |
6987 | 6974 | ||
6988 | /* define some sensors from the vendor/product */ | 6975 | /* define some sensors from the vendor/product */ |
6976 | sd->sharpness = 2; | ||
6989 | switch (id->idVendor) { | 6977 | switch (id->idVendor) { |
6990 | case 0x041e: /* Creative */ | 6978 | case 0x041e: /* Creative */ |
6991 | switch (id->idProduct) { | 6979 | switch (id->idProduct) { |
@@ -7055,8 +7043,9 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7055 | sd->sensor = SENSOR_ICM105A; | 7043 | sd->sensor = SENSOR_ICM105A; |
7056 | break; | 7044 | break; |
7057 | case 0x0e: | 7045 | case 0x0e: |
7058 | PDEBUG(D_PROBE, "Find Sensor PAS202BCB"); | 7046 | PDEBUG(D_PROBE, "Find Sensor HDCS2020"); |
7059 | sd->sensor = SENSOR_HDCS2020; | 7047 | sd->sensor = SENSOR_HDCS2020; |
7048 | sd->sharpness = 1; | ||
7060 | break; | 7049 | break; |
7061 | case 0x0f: | 7050 | case 0x0f: |
7062 | PDEBUG(D_PROBE, "Find Sensor PAS106"); | 7051 | PDEBUG(D_PROBE, "Find Sensor PAS106"); |
@@ -7097,6 +7086,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7097 | case 0x2030: | 7086 | case 0x2030: |
7098 | PDEBUG(D_PROBE, "Find Sensor PO2030"); | 7087 | PDEBUG(D_PROBE, "Find Sensor PO2030"); |
7099 | sd->sensor = SENSOR_PO2030; | 7088 | sd->sensor = SENSOR_PO2030; |
7089 | sd->sharpness = 0; /* from win traces */ | ||
7100 | break; | 7090 | break; |
7101 | case 0x7620: | 7091 | case 0x7620: |
7102 | PDEBUG(D_PROBE, "Find Sensor OV7620"); | 7092 | PDEBUG(D_PROBE, "Find Sensor OV7620"); |
@@ -7134,13 +7124,13 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
7134 | sd->qindex = 1; | 7124 | sd->qindex = 1; |
7135 | sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; | 7125 | sd->brightness = sd_ctrls[SD_BRIGHTNESS].qctrl.default_value; |
7136 | sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; | 7126 | sd->contrast = sd_ctrls[SD_CONTRAST].qctrl.default_value; |
7137 | sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; | ||
7138 | sd->gamma = gamma[(int) sd->sensor]; | 7127 | sd->gamma = gamma[(int) sd->sensor]; |
7128 | sd->autogain = sd_ctrls[SD_AUTOGAIN].qctrl.default_value; | ||
7129 | sd->lightfreq = sd_ctrls[SD_FREQ].qctrl.default_value; | ||
7130 | sd->sharpness = sd_ctrls[SD_SHARPNESS].qctrl.default_value; | ||
7139 | 7131 | ||
7140 | /* switch the led off */ | 7132 | /* switch the led off */ |
7141 | /*fixme: other sensors? */ | 7133 | reg_w(gspca_dev->dev, 0x01, 0x0000); |
7142 | if (sensor == 0x06 || sensor == 0x11) | ||
7143 | reg_w(gspca_dev->dev, 0x01, 0x0000); | ||
7144 | return 0; | 7134 | return 0; |
7145 | } | 7135 | } |
7146 | 7136 | ||
@@ -7170,15 +7160,14 @@ static void sd_start(struct gspca_dev *gspca_dev) | |||
7170 | {MC501CB_InitialScale, MC501CB_Initial}, /* 9 */ | 7160 | {MC501CB_InitialScale, MC501CB_Initial}, /* 9 */ |
7171 | {OV7620_mode0, OV7620_mode1}, /* 9 */ | 7161 | {OV7620_mode0, OV7620_mode1}, /* 9 */ |
7172 | {ov7630c_InitialScale, ov7630c_Initial}, /* 10 */ | 7162 | {ov7630c_InitialScale, ov7630c_Initial}, /* 10 */ |
7173 | {0, 0}, /* 11 */ | 7163 | {pas106b_InitialScale, pas106b_Initial}, /* 11 */ |
7174 | {pas106b_InitialScale, pas106b_Initial}, /* 12 */ | 7164 | {pb0330xx_InitialScale, pb0330xx_Initial}, /* 12 */ |
7175 | {pb0330xx_InitialScale, pb0330xx_Initial}, /* 13 */ | ||
7176 | /* or {pb03303x_InitialScale, pb03303x_Initial}, */ | 7165 | /* or {pb03303x_InitialScale, pb03303x_Initial}, */ |
7177 | {PO2030_mode0, PO2030_mode1}, /* 14 */ | 7166 | {PO2030_mode0, PO2030_mode1}, /* 13 */ |
7178 | {tas5130CK_InitialScale, tas5130CK_Initial}, /* 15 */ | 7167 | {tas5130CK_InitialScale, tas5130CK_Initial}, /* 14 */ |
7179 | {tas5130cxx_InitialScale, tas5130cxx_Initial}, /* 16 */ | 7168 | {tas5130cxx_InitialScale, tas5130cxx_Initial}, /* 15 */ |
7180 | {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial}, | 7169 | {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial}, |
7181 | /* 17 */ | 7170 | /* 16 */ |
7182 | }; | 7171 | }; |
7183 | 7172 | ||
7184 | mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode; | 7173 | mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].mode; |
@@ -7324,7 +7313,7 @@ static void sd_close(struct gspca_dev *gspca_dev) | |||
7324 | 7313 | ||
7325 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, | 7314 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, |
7326 | struct gspca_frame *frame, | 7315 | struct gspca_frame *frame, |
7327 | unsigned char *data, | 7316 | __u8 *data, |
7328 | int len) | 7317 | int len) |
7329 | { | 7318 | { |
7330 | 7319 | ||
@@ -7401,6 +7390,16 @@ static int sd_getautogain(struct gspca_dev *gspca_dev, __s32 *val) | |||
7401 | return 0; | 7390 | return 0; |
7402 | } | 7391 | } |
7403 | 7392 | ||
7393 | static int sd_setgamma(struct gspca_dev *gspca_dev, __s32 val) | ||
7394 | { | ||
7395 | struct sd *sd = (struct sd *) gspca_dev; | ||
7396 | |||
7397 | sd->gamma = val; | ||
7398 | if (gspca_dev->streaming) | ||
7399 | setcontrast(gspca_dev); | ||
7400 | return 0; | ||
7401 | } | ||
7402 | |||
7404 | static int sd_getgamma(struct gspca_dev *gspca_dev, __s32 *val) | 7403 | static int sd_getgamma(struct gspca_dev *gspca_dev, __s32 *val) |
7405 | { | 7404 | { |
7406 | struct sd *sd = (struct sd *) gspca_dev; | 7405 | struct sd *sd = (struct sd *) gspca_dev; |
@@ -7409,6 +7408,63 @@ static int sd_getgamma(struct gspca_dev *gspca_dev, __s32 *val) | |||
7409 | return 0; | 7408 | return 0; |
7410 | } | 7409 | } |
7411 | 7410 | ||
7411 | static int sd_setfreq(struct gspca_dev *gspca_dev, __s32 val) | ||
7412 | { | ||
7413 | struct sd *sd = (struct sd *) gspca_dev; | ||
7414 | |||
7415 | sd->lightfreq = val; | ||
7416 | if (gspca_dev->streaming) | ||
7417 | setlightfreq(gspca_dev); | ||
7418 | return 0; | ||
7419 | } | ||
7420 | |||
7421 | static int sd_getfreq(struct gspca_dev *gspca_dev, __s32 *val) | ||
7422 | { | ||
7423 | struct sd *sd = (struct sd *) gspca_dev; | ||
7424 | |||
7425 | *val = sd->lightfreq; | ||
7426 | return 0; | ||
7427 | } | ||
7428 | |||
7429 | static int sd_setsharpness(struct gspca_dev *gspca_dev, __s32 val) | ||
7430 | { | ||
7431 | struct sd *sd = (struct sd *) gspca_dev; | ||
7432 | |||
7433 | sd->sharpness = val; | ||
7434 | if (gspca_dev->streaming) | ||
7435 | setsharpness(gspca_dev); | ||
7436 | return 0; | ||
7437 | } | ||
7438 | |||
7439 | static int sd_getsharpness(struct gspca_dev *gspca_dev, __s32 *val) | ||
7440 | { | ||
7441 | struct sd *sd = (struct sd *) gspca_dev; | ||
7442 | |||
7443 | *val = sd->sharpness; | ||
7444 | return 0; | ||
7445 | } | ||
7446 | |||
7447 | static int sd_querymenu(struct gspca_dev *gspca_dev, | ||
7448 | struct v4l2_querymenu *menu) | ||
7449 | { | ||
7450 | switch (menu->id) { | ||
7451 | case V4L2_CID_POWER_LINE_FREQUENCY: | ||
7452 | switch (menu->index) { | ||
7453 | case 0: /* V4L2_CID_POWER_LINE_FREQUENCY_DISABLED */ | ||
7454 | strcpy(menu->name, "NoFliker"); | ||
7455 | return 0; | ||
7456 | case 1: /* V4L2_CID_POWER_LINE_FREQUENCY_50HZ */ | ||
7457 | strcpy(menu->name, "50 Hz"); | ||
7458 | return 0; | ||
7459 | case 2: /* V4L2_CID_POWER_LINE_FREQUENCY_60HZ */ | ||
7460 | strcpy(menu->name, "60 Hz"); | ||
7461 | return 0; | ||
7462 | } | ||
7463 | break; | ||
7464 | } | ||
7465 | return -EINVAL; | ||
7466 | } | ||
7467 | |||
7412 | static struct sd_desc sd_desc = { | 7468 | static struct sd_desc sd_desc = { |
7413 | .name = MODULE_NAME, | 7469 | .name = MODULE_NAME, |
7414 | .ctrls = sd_ctrls, | 7470 | .ctrls = sd_ctrls, |
@@ -7420,6 +7476,7 @@ static struct sd_desc sd_desc = { | |||
7420 | .stop0 = sd_stop0, | 7476 | .stop0 = sd_stop0, |
7421 | .close = sd_close, | 7477 | .close = sd_close, |
7422 | .pkt_scan = sd_pkt_scan, | 7478 | .pkt_scan = sd_pkt_scan, |
7479 | .querymenu = sd_querymenu, | ||
7423 | }; | 7480 | }; |
7424 | 7481 | ||
7425 | #define DVNM(name) .driver_info = (kernel_ulong_t) name | 7482 | #define DVNM(name) .driver_info = (kernel_ulong_t) name |
@@ -7514,10 +7571,6 @@ static void __exit sd_mod_exit(void) | |||
7514 | module_init(sd_mod_init); | 7571 | module_init(sd_mod_init); |
7515 | module_exit(sd_mod_exit); | 7572 | module_exit(sd_mod_exit); |
7516 | 7573 | ||
7517 | module_param(lightfreq, int, 0644); | ||
7518 | MODULE_PARM_DESC(lightfreq, | ||
7519 | "Light frequency banding filter: 50, 60 Hz or" | ||
7520 | " 0 to NoFliker (default=50)"); | ||
7521 | module_param(force_sensor, int, 0644); | 7574 | module_param(force_sensor, int, 0644); |
7522 | MODULE_PARM_DESC(force_sensor, | 7575 | MODULE_PARM_DESC(force_sensor, |
7523 | "Force sensor. Only for experts!!!"); | 7576 | "Force sensor. Only for experts!!!"); |