aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2008-07-15 14:23:08 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-20 07:26:49 -0300
commit9a97a2abe44781a13cd2ffc95069a8fd2678da68 (patch)
treea6b19578e73b3294ca55531c7a7c12fe8e2c0edd
parent568788a771ee88cc6b5e311a207c09731a6e47f0 (diff)
V4L/DVB (8359): gspca: Adds register aliases for zc03xx registers
Thanks to http://zc0302.sourceforge.net/zc0302.php, we have some hints about what each zc3xx register means. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
-rw-r--r--drivers/media/video/gspca/zc3xx-reg.h261
-rw-r--r--drivers/media/video/gspca/zc3xx.c8167
2 files changed, 4354 insertions, 4074 deletions
diff --git a/drivers/media/video/gspca/zc3xx-reg.h b/drivers/media/video/gspca/zc3xx-reg.h
new file mode 100644
index 000000000000..f52e09c2cc19
--- /dev/null
+++ b/drivers/media/video/gspca/zc3xx-reg.h
@@ -0,0 +1,261 @@
+/*
+ * zc030x registers
+ *
+ * Copyright (c) 2008 Mauro Carvalho Chehab <mchehab@infradead.org>
+ *
+ * The register aliases used here came from this driver:
+ * http://zc0302.sourceforge.net/zc0302.php
+ *
+ * This code is placed under the terms of the GNU General Public License v2
+ */
+
+/* Define the register map */
+#define ZC3XX_R000_SYSTEMCONTROL 0x0000
+#define ZC3XX_R001_SYSTEMOPERATING 0x0001
+
+/* Picture size */
+#define ZC3XX_R002_CLOCKSELECT 0x0002
+#define ZC3XX_R003_FRAMEWIDTHHIGH 0x0003
+#define ZC3XX_R004_FRAMEWIDTHLOW 0x0004
+#define ZC3XX_R005_FRAMEHEIGHTHIGH 0x0005
+#define ZC3XX_R006_FRAMEHEIGHTLOW 0x0006
+
+/* JPEG control */
+#define ZC3XX_R008_CLOCKSETTING 0x0008
+
+/* Test mode */
+#define ZC3XX_R00B_TESTMODECONTROL 0x000b
+
+/* Frame retreiving */
+#define ZC3XX_R00C_LASTACQTIME 0x000c
+#define ZC3XX_R00D_MONITORRES 0x000d
+#define ZC3XX_R00E_TIMESTAMPHIGH 0x000e
+#define ZC3XX_R00F_TIMESTAMPLOW 0x000f
+#define ZC3XX_R018_FRAMELOST 0x0018
+#define ZC3XX_R019_AUTOADJUSTFPS 0x0019
+#define ZC3XX_R01A_LASTFRAMESTATE 0x001a
+#define ZC3XX_R025_DATACOUNTER 0x0025
+
+/* Stream and sensor specific */
+#define ZC3XX_R010_CMOSSENSORSELECT 0x0010
+#define ZC3XX_R011_VIDEOSTATUS 0x0011
+#define ZC3XX_R012_VIDEOCONTROLFUNC 0x0012
+
+/* Horizontal and vertical synchros */
+#define ZC3XX_R01D_HSYNC_0 0x001d
+#define ZC3XX_R01E_HSYNC_1 0x001e
+#define ZC3XX_R01F_HSYNC_2 0x001f
+#define ZC3XX_R020_HSYNC_3 0x0020
+
+/* Target picture size in byte */
+#define ZC3XX_R022_TARGETPICTSIZE_0 0x0022
+#define ZC3XX_R023_TARGETPICTSIZE_1 0x0023
+#define ZC3XX_R024_TARGETPICTSIZE_2 0x0024
+
+/* Audio registers */
+#define ZC3XX_R030_AUDIOADC 0x0030
+#define ZC3XX_R031_AUDIOSTREAMSTATUS 0x0031
+#define ZC3XX_R032_AUDIOSTATUS 0x0032
+
+/* Sensor interface */
+#define ZC3XX_R080_HBLANKHIGH 0x0080
+#define ZC3XX_R081_HBLANKLOW 0x0081
+#define ZC3XX_R082_RESETLEVELADDR 0x0082
+#define ZC3XX_R083_RGAINADDR 0x0083
+#define ZC3XX_R084_GGAINADDR 0x0084
+#define ZC3XX_R085_BGAINADDR 0x0085
+#define ZC3XX_R086_EXPTIMEHIGH 0x0086
+#define ZC3XX_R087_EXPTIMEMID 0x0087
+#define ZC3XX_R088_EXPTIMELOW 0x0088
+#define ZC3XX_R089_RESETBLACKHIGH 0x0089
+#define ZC3XX_R08A_RESETWHITEHIGH 0x008a
+#define ZC3XX_R08B_I2CDEVICEADDR 0x008b
+#define ZC3XX_R08C_I2CIDLEANDNACK 0x008c
+#define ZC3XX_R08D_COMPABILITYMODE 0x008d
+#define ZC3XX_R08E_COMPABILITYMODE2 0x008e
+
+/* I2C control */
+#define ZC3XX_R090_I2CCOMMAND 0x0090
+#define ZC3XX_R091_I2CSTATUS 0x0091
+#define ZC3XX_R092_I2CADDRESSSELECT 0x0092
+#define ZC3XX_R093_I2CSETVALUE 0x0093
+#define ZC3XX_R094_I2CWRITEACK 0x0094
+#define ZC3XX_R095_I2CREAD 0x0095
+#define ZC3XX_R096_I2CREADACK 0x0096
+
+/* Window inside the sensor array */
+#define ZC3XX_R097_WINYSTARTHIGH 0x0097
+#define ZC3XX_R098_WINYSTARTLOW 0x0098
+#define ZC3XX_R099_WINXSTARTHIGH 0x0099
+#define ZC3XX_R09A_WINXSTARTLOW 0x009a
+#define ZC3XX_R09B_WINHEIGHTHIGH 0x009b
+#define ZC3XX_R09C_WINHEIGHTLOW 0x009c
+#define ZC3XX_R09D_WINWIDTHHIGH 0x009d
+#define ZC3XX_R09E_WINWIDTHLOW 0x009e
+#define ZC3XX_R119_FIRSTYHIGH 0x0119
+#define ZC3XX_R11A_FIRSTYLOW 0x011a
+#define ZC3XX_R11B_FIRSTXHIGH 0x011b
+#define ZC3XX_R11C_FIRSTXLOW 0x011c
+
+/* Max sensor array size */
+#define ZC3XX_R09F_MAXXHIGH 0x009f
+#define ZC3XX_R0A0_MAXXLOW 0x00a0
+#define ZC3XX_R0A1_MAXYHIGH 0x00a1
+#define ZC3XX_R0A2_MAXYLOW 0x00a2
+#define ZC3XX_R0A3_EXPOSURETIMEHIGH 0x00a3
+#define ZC3XX_R0A4_EXPOSURETIMELOW 0x00a4
+#define ZC3XX_R0A5_EXPOSUREGAIN 0x00a5
+#define ZC3XX_R0A6_EXPOSUREBLACKLVL 0x00a6
+
+/* Other registers */
+#define ZC3XX_R100_OPERATIONMODE 0x0100
+#define ZC3XX_R101_SENSORCORRECTION 0x0101
+
+/* Gains */
+#define ZC3XX_R116_RGAIN 0x0116
+#define ZC3XX_R117_GGAIN 0x0117
+#define ZC3XX_R118_BGAIN 0x0118
+#define ZC3XX_R11D_GLOBALGAIN 0x011d
+#define ZC3XX_R1A8_DIGITALGAIN 0x01a8
+#define ZC3XX_R1A9_DIGITALLIMITDIFF 0x01a9
+#define ZC3XX_R1AA_DIGITALGAINSTEP 0x01aa
+
+/* Auto correction */
+#define ZC3XX_R180_AUTOCORRECTENABLE 0x0180
+#define ZC3XX_R181_WINXSTART 0x0181
+#define ZC3XX_R182_WINXWIDTH 0x0182
+#define ZC3XX_R183_WINXCENTER 0x0183
+#define ZC3XX_R184_WINYSTART 0x0184
+#define ZC3XX_R185_WINYWIDTH 0x0185
+#define ZC3XX_R186_WINYCENTER 0x0186
+
+/* Gain range */
+#define ZC3XX_R187_MAXGAIN 0x0187
+#define ZC3XX_R188_MINGAIN 0x0188
+
+/* Auto exposure and white balance */
+#define ZC3XX_R189_AWBSTATUS 0x0189
+#define ZC3XX_R18A_AWBFREEZE 0x018a
+#define ZC3XX_R18B_AESTATUS 0x018b
+#define ZC3XX_R18C_AEFREEZE 0x018c
+#define ZC3XX_R18F_AEUNFREEZE 0x018f
+#define ZC3XX_R190_EXPOSURELIMITHIGH 0x0190
+#define ZC3XX_R191_EXPOSURELIMITMID 0x0191
+#define ZC3XX_R192_EXPOSURELIMITLOW 0x0192
+#define ZC3XX_R195_ANTIFLICKERHIGH 0x0195
+#define ZC3XX_R196_ANTIFLICKERMID 0x0196
+#define ZC3XX_R197_ANTIFLICKERLOW 0x0197
+
+/* What is this ? */
+#define ZC3XX_R18D_YTARGET 0x018d
+#define ZC3XX_R18E_RESETLVL 0x018e
+
+/* Color */
+#define ZC3XX_R1A0_REDMEANAFTERAGC 0x01a0
+#define ZC3XX_R1A1_GREENMEANAFTERAGC 0x01a1
+#define ZC3XX_R1A2_BLUEMEANAFTERAGC 0x01a2
+#define ZC3XX_R1A3_REDMEANAFTERAWB 0x01a3
+#define ZC3XX_R1A4_GREENMEANAFTERAWB 0x01a4
+#define ZC3XX_R1A5_BLUEMEANAFTERAWB 0x01a5
+#define ZC3XX_R1A6_YMEANAFTERAE 0x01a6
+#define ZC3XX_R1A7_CALCGLOBALMEAN 0x01a7
+
+#define ZC3XX_R1A2_BLUEMEANAFTERAGC 0x01a2
+
+/* Matrixes */
+
+/* Color matrix is like :
+ R' = R * RGB00 + G * RGB01 + B * RGB02 + RGB03
+ G' = R * RGB10 + G * RGB11 + B * RGB22 + RGB13
+ B' = R * RGB20 + G * RGB21 + B * RGB12 + RGB23
+ */
+#define ZC3XX_R10A_RGB00 0x010a
+#define ZC3XX_R10B_RGB01 0x010b
+#define ZC3XX_R10C_RGB02 0x010c
+#define ZC3XX_R113_RGB03 0x0113
+#define ZC3XX_R10D_RGB10 0x010d
+#define ZC3XX_R10E_RGB11 0x010e
+#define ZC3XX_R10F_RGB12 0x010f
+#define ZC3XX_R114_RGB13 0x0114
+#define ZC3XX_R110_RGB20 0x0110
+#define ZC3XX_R111_RGB21 0x0111
+#define ZC3XX_R112_RGB22 0x0112
+#define ZC3XX_R115_RGB23 0x0115
+
+/* Gamma matrix */
+#define ZC3XX_R120_GAMMA00 0x0120
+#define ZC3XX_R121_GAMMA01 0x0121
+#define ZC3XX_R122_GAMMA02 0x0122
+#define ZC3XX_R123_GAMMA03 0x0123
+#define ZC3XX_R124_GAMMA04 0x0124
+#define ZC3XX_R125_GAMMA05 0x0125
+#define ZC3XX_R126_GAMMA06 0x0126
+#define ZC3XX_R127_GAMMA07 0x0127
+#define ZC3XX_R128_GAMMA08 0x0128
+#define ZC3XX_R129_GAMMA09 0x0129
+#define ZC3XX_R12A_GAMMA0A 0x012a
+#define ZC3XX_R12B_GAMMA0B 0x012b
+#define ZC3XX_R12C_GAMMA0C 0x012c
+#define ZC3XX_R12D_GAMMA0D 0x012d
+#define ZC3XX_R12E_GAMMA0E 0x012e
+#define ZC3XX_R12F_GAMMA0F 0x012f
+#define ZC3XX_R130_GAMMA10 0x0130
+#define ZC3XX_R131_GAMMA11 0x0131
+#define ZC3XX_R132_GAMMA12 0x0132
+#define ZC3XX_R133_GAMMA13 0x0133
+#define ZC3XX_R134_GAMMA14 0x0134
+#define ZC3XX_R135_GAMMA15 0x0135
+#define ZC3XX_R136_GAMMA16 0x0136
+#define ZC3XX_R137_GAMMA17 0x0137
+#define ZC3XX_R138_GAMMA18 0x0138
+#define ZC3XX_R139_GAMMA19 0x0139
+#define ZC3XX_R13A_GAMMA1A 0x013a
+#define ZC3XX_R13B_GAMMA1B 0x013b
+#define ZC3XX_R13C_GAMMA1C 0x013c
+#define ZC3XX_R13D_GAMMA1D 0x013d
+#define ZC3XX_R13E_GAMMA1E 0x013e
+#define ZC3XX_R13F_GAMMA1F 0x013f
+
+/* Luminance gamma */
+#define ZC3XX_R140_YGAMMA00 0x0140
+#define ZC3XX_R141_YGAMMA01 0x0141
+#define ZC3XX_R142_YGAMMA02 0x0142
+#define ZC3XX_R143_YGAMMA03 0x0143
+#define ZC3XX_R144_YGAMMA04 0x0144
+#define ZC3XX_R145_YGAMMA05 0x0145
+#define ZC3XX_R146_YGAMMA06 0x0146
+#define ZC3XX_R147_YGAMMA07 0x0147
+#define ZC3XX_R148_YGAMMA08 0x0148
+#define ZC3XX_R149_YGAMMA09 0x0149
+#define ZC3XX_R14A_YGAMMA0A 0x014a
+#define ZC3XX_R14B_YGAMMA0B 0x014b
+#define ZC3XX_R14C_YGAMMA0C 0x014c
+#define ZC3XX_R14D_YGAMMA0D 0x014d
+#define ZC3XX_R14E_YGAMMA0E 0x014e
+#define ZC3XX_R14F_YGAMMA0F 0x014f
+#define ZC3XX_R150_YGAMMA10 0x0150
+#define ZC3XX_R151_YGAMMA11 0x0151
+
+#define ZC3XX_R1C5_SHARPNESSMODE 0x01c5
+#define ZC3XX_R1C6_SHARPNESS00 0x01c6
+#define ZC3XX_R1C7_SHARPNESS01 0x01c7
+#define ZC3XX_R1C8_SHARPNESS02 0x01c8
+#define ZC3XX_R1C9_SHARPNESS03 0x01c9
+#define ZC3XX_R1CA_SHARPNESS04 0x01ca
+#define ZC3XX_R1CB_SHARPNESS05 0x01cb
+
+/* Synchronization */
+#define ZC3XX_R190_SYNC00LOW 0x0190
+#define ZC3XX_R191_SYNC00MID 0x0191
+#define ZC3XX_R192_SYNC00HIGH 0x0192
+#define ZC3XX_R195_SYNC01LOW 0x0195
+#define ZC3XX_R196_SYNC01MID 0x0196
+#define ZC3XX_R197_SYNC01HIGH 0x0197
+
+/* Dead pixels */
+#define ZC3XX_R250_DEADPIXELSMODE 0x0250
+
+/* EEPROM */
+#define ZC3XX_R300_EEPROMCONFIG 0x0300
+#define ZC3XX_R301_EEPROMACCESS 0x0301
+#define ZC3XX_R302_EEPROMSTATUS 0x0302
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c
index 548c4c8c3f33..b761b11c5c6a 100644
--- a/drivers/media/video/gspca/zc3xx.c
+++ b/drivers/media/video/gspca/zc3xx.c
@@ -35,6 +35,7 @@ MODULE_LICENSE("GPL");
static int force_sensor = -1;
#include "jpeg.h"
+#include "zc3xx-reg.h"
/* specific webcam descriptor */
struct sd {
@@ -209,30 +210,30 @@ struct usb_action {
static const struct usb_action cs2102_Initial[] = {
{0xa1, 0x01, 0x0008},
{0xa1, 0x01, 0x0008},
- {0xa0, 0x01, 0x0000},
- {0xa0, 0x10, 0x0002},
- {0xa0, 0x00, 0x0010},
- {0xa0, 0x01, 0x0001},
- {0xa0, 0x20, 0x0080},
- {0xa0, 0x21, 0x0081},
- {0xa0, 0x30, 0x0083},
- {0xa0, 0x31, 0x0084},
- {0xa0, 0x32, 0x0085},
- {0xa0, 0x23, 0x0086},
- {0xa0, 0x24, 0x0087},
- {0xa0, 0x25, 0x0088},
- {0xa0, 0xb3, 0x008b},
- {0xa0, 0x03, 0x0008}, /* 00 */
- {0xa0, 0x03, 0x0012},
- {0xa0, 0x01, 0x0012},
- {0xa0, 0x02, 0x0003},
- {0xa0, 0x80, 0x0004},
- {0xa0, 0x01, 0x0005},
- {0xa0, 0xe0, 0x0006},
- {0xa0, 0x00, 0x0098},
- {0xa0, 0x00, 0x009a},
- {0xa0, 0x00, 0x011a},
- {0xa0, 0x00, 0x011c},
+ {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
+ {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},
+ {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT},
+ {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},
+ {0xa0, 0x20, ZC3XX_R080_HBLANKHIGH},
+ {0xa0, 0x21, ZC3XX_R081_HBLANKLOW},
+ {0xa0, 0x30, ZC3XX_R083_RGAINADDR},
+ {0xa0, 0x31, ZC3XX_R084_GGAINADDR},
+ {0xa0, 0x32, ZC3XX_R085_BGAINADDR},
+ {0xa0, 0x23, ZC3XX_R086_EXPTIMEHIGH},
+ {0xa0, 0x24, ZC3XX_R087_EXPTIMEMID},
+ {0xa0, 0x25, ZC3XX_R088_EXPTIMELOW},
+ {0xa0, 0xb3, ZC3XX_R08B_I2CDEVICEADDR},
+ {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
+ {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
+ {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
+ {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
+ {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},
+ {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},
+ {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
+ {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
+ {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
{0xaa, 0x02, 0x0008},
{0xaa, 0x03, 0x0000},
{0xaa, 0x11, 0x0000},
@@ -245,124 +246,124 @@ static const struct usb_action cs2102_Initial[] = {
{0xaa, 0x30, 0x0030},
{0xaa, 0x31, 0x0030},
{0xaa, 0x32, 0x0030},
- {0xa0, 0x37, 0x0101},
- {0xa0, 0x00, 0x0019},
- {0xa0, 0x05, 0x0012},
- {0xa0, 0x0d, 0x0100},
- {0xa0, 0x06, 0x0189},
- {0xa0, 0x03, 0x01c5},
- {0xa0, 0x13, 0x01cb},
+ {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION},
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
+ {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
+ {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
+ {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
+ {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
{0xa0, 0x10, 0x01ae},
- {0xa0, 0x08, 0x0250},
- {0xa0, 0x08, 0x0301},
- {0xa0, 0x68, 0x018d},
+ {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
+ {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
+ {0xa0, 0x68, ZC3XX_R18D_YTARGET},
{0xa0, 0x00, 0x01ad},
{0xa1, 0x01, 0x0002},
{0xa1, 0x01, 0x0008},
- {0xa0, 0x03, 0x0008}, /* 00 */
- {0xa0, 0x08, 0x01c6}, /* sharpness+ */
+ {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
+ {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */
{0xa1, 0x01, 0x01c8},
{0xa1, 0x01, 0x01c9},
{0xa1, 0x01, 0x01ca},
- {0xa0, 0x0f, 0x01cb}, /* sharpness- */
- {0xa0, 0x24, 0x0120}, /* gamma 5 */
- {0xa0, 0x44, 0x0121},
- {0xa0, 0x64, 0x0122},
- {0xa0, 0x84, 0x0123},
- {0xa0, 0x9d, 0x0124},
- {0xa0, 0xb2, 0x0125},
- {0xa0, 0xc4, 0x0126},
- {0xa0, 0xd3, 0x0127},
- {0xa0, 0xe0, 0x0128},
- {0xa0, 0xeb, 0x0129},
- {0xa0, 0xf4, 0x012a},
- {0xa0, 0xfb, 0x012b},
- {0xa0, 0xff, 0x012c},
- {0xa0, 0xff, 0x012d},
- {0xa0, 0xff, 0x012e},
- {0xa0, 0xff, 0x012f},
- {0xa0, 0x18, 0x0130},
- {0xa0, 0x20, 0x0131},
- {0xa0, 0x20, 0x0132},
- {0xa0, 0x1c, 0x0133},
- {0xa0, 0x16, 0x0134},
- {0xa0, 0x13, 0x0135},
- {0xa0, 0x10, 0x0136},
- {0xa0, 0x0e, 0x0137},
- {0xa0, 0x0b, 0x0138},
- {0xa0, 0x09, 0x0139},
- {0xa0, 0x07, 0x013a},
- {0xa0, 0x06, 0x013b},
- {0xa0, 0x00, 0x013c},
- {0xa0, 0x00, 0x013d},
- {0xa0, 0x00, 0x013e},
- {0xa0, 0x01, 0x013f},
- {0xa0, 0x58, 0x010a}, /* matrix */
- {0xa0, 0xf4, 0x010b},
- {0xa0, 0xf4, 0x010c},
- {0xa0, 0xf4, 0x010d},
- {0xa0, 0x58, 0x010e},
- {0xa0, 0xf4, 0x010f},
- {0xa0, 0xf4, 0x0110},
- {0xa0, 0xf4, 0x0111},
- {0xa0, 0x58, 0x0112},
+ {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */
+ {0xa0, 0x24, ZC3XX_R120_GAMMA00}, /* gamma 5 */
+ {0xa0, 0x44, ZC3XX_R121_GAMMA01},
+ {0xa0, 0x64, ZC3XX_R122_GAMMA02},
+ {0xa0, 0x84, ZC3XX_R123_GAMMA03},
+ {0xa0, 0x9d, ZC3XX_R124_GAMMA04},
+ {0xa0, 0xb2, ZC3XX_R125_GAMMA05},
+ {0xa0, 0xc4, ZC3XX_R126_GAMMA06},
+ {0xa0, 0xd3, ZC3XX_R127_GAMMA07},
+ {0xa0, 0xe0, ZC3XX_R128_GAMMA08},
+ {0xa0, 0xeb, ZC3XX_R129_GAMMA09},
+ {0xa0, 0xf4, ZC3XX_R12A_GAMMA0A},
+ {0xa0, 0xfb, ZC3XX_R12B_GAMMA0B},
+ {0xa0, 0xff, ZC3XX_R12C_GAMMA0C},
+ {0xa0, 0xff, ZC3XX_R12D_GAMMA0D},
+ {0xa0, 0xff, ZC3XX_R12E_GAMMA0E},
+ {0xa0, 0xff, ZC3XX_R12F_GAMMA0F},
+ {0xa0, 0x18, ZC3XX_R130_GAMMA10},
+ {0xa0, 0x20, ZC3XX_R131_GAMMA11},
+ {0xa0, 0x20, ZC3XX_R132_GAMMA12},
+ {0xa0, 0x1c, ZC3XX_R133_GAMMA13},
+ {0xa0, 0x16, ZC3XX_R134_GAMMA14},
+ {0xa0, 0x13, ZC3XX_R135_GAMMA15},
+ {0xa0, 0x10, ZC3XX_R136_GAMMA16},
+ {0xa0, 0x0e, ZC3XX_R137_GAMMA17},
+ {0xa0, 0x0b, ZC3XX_R138_GAMMA18},
+ {0xa0, 0x09, ZC3XX_R139_GAMMA19},
+ {0xa0, 0x07, ZC3XX_R13A_GAMMA1A},
+ {0xa0, 0x06, ZC3XX_R13B_GAMMA1B},
+ {0xa0, 0x00, ZC3XX_R13C_GAMMA1C},
+ {0xa0, 0x00, ZC3XX_R13D_GAMMA1D},
+ {0xa0, 0x00, ZC3XX_R13E_GAMMA1E},
+ {0xa0, 0x01, ZC3XX_R13F_GAMMA1F},
+ {0xa0, 0x58, ZC3XX_R10A_RGB00}, /* matrix */
+ {0xa0, 0xf4, ZC3XX_R10B_RGB01},
+ {0xa0, 0xf4, ZC3XX_R10C_RGB02},
+ {0xa0, 0xf4, ZC3XX_R10D_RGB10},
+ {0xa0, 0x58, ZC3XX_R10E_RGB11},
+ {0xa0, 0xf4, ZC3XX_R10F_RGB12},
+ {0xa0, 0xf4, ZC3XX_R110_RGB20},
+ {0xa0, 0xf4, ZC3XX_R111_RGB21},
+ {0xa0, 0x58, ZC3XX_R112_RGB22},
{0xa1, 0x01, 0x0180},
- {0xa0, 0x00, 0x0180},
- {0xa0, 0x00, 0x0019},
+ {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
{0xaa, 0x23, 0x0001},
{0xaa, 0x24, 0x0055},
{0xaa, 0x25, 0x00cc},
{0xaa, 0x21, 0x003f},
- {0xa0, 0x02, 0x0190},
- {0xa0, 0xab, 0x0191},
- {0xa0, 0x98, 0x0192},
- {0xa0, 0x00, 0x0195},
- {0xa0, 0x30, 0x0196},
- {0xa0, 0xd4, 0x0197},
- {0xa0, 0x10, 0x018c},
- {0xa0, 0x20, 0x018f},
- {0xa0, 0x10, 0x01a9},
- {0xa0, 0x24, 0x01aa},
- {0xa0, 0x39, 0x001d},
- {0xa0, 0x70, 0x001e},
- {0xa0, 0xb0, 0x001f},
- {0xa0, 0xff, 0x0020},
- {0xa0, 0x40, 0x0180},
+ {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH},
+ {0xa0, 0xab, ZC3XX_R191_EXPOSURELIMITMID},
+ {0xa0, 0x98, ZC3XX_R192_EXPOSURELIMITLOW},
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
+ {0xa0, 0x30, ZC3XX_R196_ANTIFLICKERMID},
+ {0xa0, 0xd4, ZC3XX_R197_ANTIFLICKERLOW},
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},
+ {0xa0, 0x39, ZC3XX_R01D_HSYNC_0},
+ {0xa0, 0x70, ZC3XX_R01E_HSYNC_1},
+ {0xa0, 0xb0, ZC3XX_R01F_HSYNC_2},
+ {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
+ {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE},
{0xa1, 0x01, 0x0180},
- {0xa0, 0x42, 0x0180},
- {0xa0, 0x40, 0x0116},
- {0xa0, 0x40, 0x0117},
- {0xa0, 0x40, 0x0118},
+ {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
+ {0xa0, 0x40, ZC3XX_R116_RGAIN},
+ {0xa0, 0x40, ZC3XX_R117_GGAIN},
+ {0xa0, 0x40, ZC3XX_R118_BGAIN},
{}
};
static const struct usb_action cs2102_InitialScale[] = {
{0xa1, 0x01, 0x0008},
{0xa1, 0x01, 0x0008},
- {0xa0, 0x01, 0x0000},
- {0xa0, 0x00, 0x0002},
- {0xa0, 0x00, 0x0010},
- {0xa0, 0x01, 0x0001},
- {0xa0, 0x20, 0x0080},
- {0xa0, 0x21, 0x0081},
- {0xa0, 0x30, 0x0083},
- {0xa0, 0x31, 0x0084},
- {0xa0, 0x32, 0x0085},
- {0xa0, 0x23, 0x0086},
- {0xa0, 0x24, 0x0087},
- {0xa0, 0x25, 0x0088},
- {0xa0, 0xb3, 0x008b},
- {0xa0, 0x03, 0x0008}, /* 00 */
- {0xa0, 0x03, 0x0012},
- {0xa0, 0x01, 0x0012},
- {0xa0, 0x02, 0x0003},
- {0xa0, 0x80, 0x0004},
- {0xa0, 0x01, 0x0005},
- {0xa0, 0xe0, 0x0006},
- {0xa0, 0x00, 0x0098},
- {0xa0, 0x00, 0x009a},
- {0xa0, 0x00, 0x011a},
- {0xa0, 0x00, 0x011c},
+ {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
+ {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT},
+ {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT},
+ {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},
+ {0xa0, 0x20, ZC3XX_R080_HBLANKHIGH},
+ {0xa0, 0x21, ZC3XX_R081_HBLANKLOW},
+ {0xa0, 0x30, ZC3XX_R083_RGAINADDR},
+ {0xa0, 0x31, ZC3XX_R084_GGAINADDR},
+ {0xa0, 0x32, ZC3XX_R085_BGAINADDR},
+ {0xa0, 0x23, ZC3XX_R086_EXPTIMEHIGH},
+ {0xa0, 0x24, ZC3XX_R087_EXPTIMEMID},
+ {0xa0, 0x25, ZC3XX_R088_EXPTIMELOW},
+ {0xa0, 0xb3, ZC3XX_R08B_I2CDEVICEADDR},
+ {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
+ {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
+ {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
+ {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
+ {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},
+ {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},
+ {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
+ {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
+ {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
{0xaa, 0x02, 0x0008},
{0xaa, 0x03, 0x0000},
{0xaa, 0x11, 0x0001},
@@ -375,98 +376,98 @@ static const struct usb_action cs2102_InitialScale[] = {
{0xaa, 0x30, 0x0030},
{0xaa, 0x31, 0x0030},
{0xaa, 0x32, 0x0030},
- {0xa0, 0x77, 0x0101},
- {0xa0, 0x00, 0x0019},
- {0xa0, 0x05, 0x0012},
- {0xa0, 0x0d, 0x0100},
- {0xa0, 0x06, 0x0189},
- {0xa0, 0x03, 0x01c5},
- {0xa0, 0x13, 0x01cb},
+ {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION},
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
+ {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
+ {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
+ {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
+ {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
+ {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
{0xa0, 0x15, 0x01ae},
- {0xa0, 0x08, 0x0250},
- {0xa0, 0x08, 0x0301},
- {0xa0, 0x68, 0x018d},
+ {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
+ {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
+ {0xa0, 0x68, ZC3XX_R18D_YTARGET},
{0xa0, 0x00, 0x01ad},
{0xa1, 0x01, 0x0002},
{0xa1, 0x01, 0x0008},
- {0xa0, 0x03, 0x0008}, /* 00 */
- {0xa0, 0x08, 0x01c6}, /* sharpness+ */
+ {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
+ {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */
{0xa1, 0x01, 0x01c8},
{0xa1, 0x01, 0x01c9},
{0xa1, 0x01, 0x01ca},
- {0xa0, 0x0f, 0x01cb}, /* sharpness- */
- {0xa0, 0x24, 0x0120}, /* gamma 5 */
- {0xa0, 0x44, 0x0121},
- {0xa0, 0x64, 0x0122},
- {0xa0, 0x84, 0x0123},
- {0xa0, 0x9d, 0x0124},
- {0xa0, 0xb2, 0x0125},
- {0xa0, 0xc4, 0x0126},
- {0xa0, 0xd3, 0x0127},
- {0xa0, 0xe0, 0x0128},
- {0xa0, 0xeb, 0x0129},
- {0xa0, 0xf4, 0x012a},
- {0xa0, 0xfb, 0x012b},
- {0xa0, 0xff, 0x012c},
- {0xa0, 0xff, 0x012d},
- {0xa0, 0xff, 0x012e},
- {0xa0, 0xff, 0x012f},
- {0xa0, 0x18, 0x0130},
- {0xa0, 0x20, 0x0131},
- {0xa0, 0x20, 0x0132},
- {0xa0, 0x1c, 0x0133},
- {0xa0, 0x16, 0x0134},
- {0xa0, 0x13, 0x0135},
- {0xa0, 0x10, 0x0136},
- {0xa0, 0x0e, 0x0137},
- {0xa0, 0x0b, 0x0138},
- {0xa0, 0x09, 0x0139},
- {0xa0, 0x07, 0x013a},
- {0xa0, 0x06, 0x013b},
- {0xa0, 0x00, 0x013c},
- {0xa0, 0x00, 0x013d},
- {0xa0, 0x00, 0x013e},
- {0xa0, 0x01, 0x013f},
- {0xa0, 0x58, 0x010a}, /* matrix */
- {0xa0, 0xf4, 0x010b},
- {0xa0, 0xf4, 0x010c},
- {0xa0, 0xf4, 0x010d},
- {0xa0, 0x58, 0x010e},
- {0xa0, 0xf4, 0x010f},
- {0xa0, 0xf4, 0x0110},
- {0xa0, 0xf4, 0x0111},
- {0xa0, 0x58, 0x0112},
+ {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */
+ {0xa0, 0x24, ZC3XX_R120_GAMMA00}, /* gamma 5 */
+ {0xa0, 0x44, ZC3XX_R121_GAMMA01},
+ {0xa0, 0x64, ZC3XX_R122_GAMMA02},
+ {0xa0, 0x84, ZC3XX_R123_GAMMA03},
+ {0xa0, 0x9d, ZC3XX_R124_GAMMA04},
+ {0xa0, 0xb2, ZC3XX_R125_GAMMA05},
+ {0xa0, 0xc4, ZC3XX_R126_GAMMA06},
+ {0xa0, 0xd3, ZC3XX_R127_GAMMA07},
+ {0xa0, 0xe0, ZC3XX_R128_GAMMA08},
+ {0xa0, 0xeb, ZC3XX_R129_GAMMA09},
+ {0xa0, 0xf4, ZC3XX_R12A_GAMMA0A},
+ {0xa0, 0xfb, ZC3XX_R12B_GAMMA0B},
+ {0xa0, 0xff, ZC3XX_R12C_GAMMA0C},
+ {0xa0, 0xff, ZC3XX_R12D_GAMMA0D},
+ {0xa0, 0xff, ZC3XX_R12E_GAMMA0E},
+ {0xa0, 0xff, ZC3XX_R12F_GAMMA0F},
+ {0xa0, 0x18, ZC3XX_R130_GAMMA10},
+ {0xa0, 0x20, ZC3XX_R131_GAMMA11},
+ {0xa0, 0x20, ZC3XX_R132_GAMMA12},
+ {0xa0, 0x1c, ZC3XX_R133_GAMMA13},
+ {0xa0, 0x16, ZC3XX_R134_GAMMA14},
+ {0xa0, 0x13, ZC3XX_R135_GAMMA15},
+ {0xa0, 0x10, ZC3XX_R136_GAMMA16},
+ {0xa0, 0x0e, ZC3XX_R137_GAMMA17},
+ {0xa0, 0x0b, ZC3XX_R138_GAMMA18},
+ {0xa0, 0x09, ZC3XX_R139_GAMMA19},
+ {0xa0, 0x07, ZC3XX_R13A_GAMMA1A},
+ {0xa0, 0x06, ZC3XX_R13B_GAMMA1B},
+ {0xa0, 0x00, ZC3XX_R13C_GAMMA1C},
+ {0xa0, 0x00, ZC3XX_R13D_GAMMA1D},
+ {0xa0, 0x00, ZC3XX_R13E_GAMMA1E},
+ {0xa0, 0x01, ZC3XX_R13F_GAMMA1F},
+ {0xa0, 0x58, ZC3XX_R10A_RGB00}, /* matrix */
+ {0xa0, 0xf4, ZC3XX_R10B_RGB01},
+ {0xa0, 0xf4, ZC3XX_R10C_RGB02},
+ {0xa0, 0xf4, ZC3XX_R10D_RGB10},
+ {0xa0, 0x58, ZC3XX_R10E_RGB11},
+ {0xa0, 0xf4, ZC3XX_R10F_RGB12},
+ {0xa0, 0xf4, ZC3XX_R110_RGB20},
+ {0xa0, 0xf4, ZC3XX_R111_RGB21},
+ {0xa0, 0x58, ZC3XX_R112_RGB22},
{0xa1, 0x01, 0x0180},
- {0xa0, 0x00, 0x0180},
- {0xa0, 0x00, 0x0019},
+ {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
{0xaa, 0x23, 0x0000},
{0xaa, 0x24, 0x00aa},
{0xaa, 0x25, 0x00e6},
{0xaa, 0x21, 0x003f},
- {0xa0, 0x01, 0x0190},
- {0xa0, 0x55, 0x0191},
- {0xa0, 0xcc, 0x0192},
- {0xa0, 0x00, 0x0195},
- {0xa0, 0x18, 0x0196},
- {0xa0, 0x6a, 0x0197},
- {0xa0, 0x10, 0x018c},
- {0xa0, 0x20, 0x018f},
- {0xa0, 0x10, 0x01a9},
- {0xa0, 0x24, 0x01aa},
- {0xa0, 0x3f, 0x001d},
- {0xa0, 0xa5, 0x001e},
- {0xa0, 0xf0, 0x001f},
- {0xa0, 0xff, 0x0020},
- {0xa0, 0x40, 0x0180},
+ {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH},
+ {0xa0, 0x55, ZC3XX_R191_EXPOSURELIMITMID},
+ {0xa0, 0xcc, ZC3XX_R192_EXPOSURELIMITLOW},
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
+ {0xa0, 0x18, ZC3XX_R196_ANTIFLICKERMID},
+ {0xa0, 0x6a, ZC3XX_R197_ANTIFLICKERLOW},
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},
+ {0xa0, 0x3f, ZC3XX_R01D_HSYNC_0},
+ {0xa0, 0xa5, ZC3XX_R01E_HSYNC_1},
+ {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2},
+ {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
+ {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE},
{0xa1, 0x01, 0x0180},
- {0xa0, 0x42, 0x0180},
- {0xa0, 0x40, 0x0116},
- {0xa0, 0x40, 0x0117},
- {0xa0, 0x40, 0x0118},
+ {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
+ {0xa0, 0x40, ZC3XX_R116_RGAIN},
+ {0xa0, 0x40, ZC3XX_R117_GGAIN},
+ {0xa0, 0x40, ZC3XX_R118_BGAIN},
{}
};
static const struct usb_action cs2102_50HZ[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x008c}, /* 00,0f,8c,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x00ac}, /* 00,04,ac,aa */
@@ -475,23 +476,23 @@ static const struct usb_action cs2102_50HZ[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x00ac}, /* 00,1d,ac,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xf0, 0x0192}, /* 01,92,f0,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x42, 0x0197}, /* 01,97,42,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x10, 0x01a9}, /* 01,a9,10,cc */
- {0xa0, 0x24, 0x01aa}, /* 01,aa,24,cc */
- {0xa0, 0x8c, 0x001d}, /* 00,1d,8c,cc */
- {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */
- {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x42, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,42,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */
+ {0xa0, 0x8c, ZC3XX_R01D_HSYNC_0}, /* 00,1d,8c,cc */
+ {0xa0, 0xb0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,b0,cc */
+ {0xa0, 0xd0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,d0,cc */
{}
};
static const struct usb_action cs2102_50HZScale[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x0093}, /* 00,0f,93,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x00a1}, /* 00,04,a1,aa */
@@ -500,23 +501,23 @@ static const struct usb_action cs2102_50HZScale[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x00a1}, /* 00,1d,a1,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xf7, 0x0192}, /* 01,92,f7,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x83, 0x0197}, /* 01,97,83,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x10, 0x01a9}, /* 01,a9,10,cc */
- {0xa0, 0x24, 0x01aa}, /* 01,aa,24,cc */
- {0xa0, 0x93, 0x001d}, /* 00,1d,93,cc */
- {0xa0, 0xb0, 0x001e}, /* 00,1e,b0,cc */
- {0xa0, 0xd0, 0x001f}, /* 00,1f,d0,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xf7, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f7,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x83, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,83,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */
+ {0xa0, 0x93, ZC3XX_R01D_HSYNC_0}, /* 00,1d,93,cc */
+ {0xa0, 0xb0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,b0,cc */
+ {0xa0, 0xd0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,d0,cc */
{}
};
static const struct usb_action cs2102_60HZ[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x005d}, /* 00,0f,5d,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x00aa}, /* 00,04,aa,aa */
@@ -525,23 +526,23 @@ static const struct usb_action cs2102_60HZ[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x00aa}, /* 00,1d,aa,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xe4, 0x0192}, /* 01,92,e4,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x3a, 0x0197}, /* 01,97,3a,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x10, 0x01a9}, /* 01,a9,10,cc */
- {0xa0, 0x24, 0x01aa}, /* 01,aa,24,cc */
- {0xa0, 0x5d, 0x001d}, /* 00,1d,5d,cc */
- {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xe4, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,e4,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x3a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3a,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */
+ {0xa0, 0x5d, ZC3XX_R01D_HSYNC_0}, /* 00,1d,5d,cc */
+ {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */
{0xa0, 0xd0, 0x00c8}, /* 00,c8,d0,cc */
{}
};
static const struct usb_action cs2102_60HZScale[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x00b7}, /* 00,0f,b7,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x00be}, /* 00,04,be,aa */
@@ -550,23 +551,23 @@ static const struct usb_action cs2102_60HZScale[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x00be}, /* 00,1d,be,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xfc, 0x0192}, /* 01,92,fc,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x69, 0x0197}, /* 01,97,69,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x10, 0x01a9}, /* 01,a9,10,cc */
- {0xa0, 0x24, 0x01aa}, /* 01,aa,24,cc */
- {0xa0, 0xb7, 0x001d}, /* 00,1d,b7,cc */
- {0xa0, 0xd0, 0x001e}, /* 00,1e,d0,cc */
- {0xa0, 0xe8, 0x001f}, /* 00,1f,e8,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xfc, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,fc,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x69, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,69,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */
+ {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,24,cc */
+ {0xa0, 0xb7, ZC3XX_R01D_HSYNC_0}, /* 00,1d,b7,cc */
+ {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */
+ {0xa0, 0xe8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e8,cc */
{}
};
static const struct usb_action cs2102_NoFliker[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x0080}, /* 00,04,80,aa */
@@ -575,23 +576,23 @@ static const struct usb_action cs2102_NoFliker[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x0080}, /* 00,1d,80,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xf0, 0x0192}, /* 01,92,f0,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x10, 0x0197}, /* 01,97,10,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x00, 0x01a9}, /* 01,a9,00,cc */
- {0xa0, 0x00, 0x01aa}, /* 01,aa,00,cc */
- {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */
- {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */
- {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */
+ {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */
+ {0xa0, 0x59, ZC3XX_R01D_HSYNC_0}, /* 00,1d,59,cc */
+ {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */
+ {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */
{}
};
static const struct usb_action cs2102_NoFlikerScale[] = {
- {0xa0, 0x00, 0x0019}, /* 00,19,00,cc */
+ {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
{0xaa, 0x0f, 0x0059}, /* 00,0f,59,aa */
{0xaa, 0x03, 0x0005}, /* 00,03,05,aa */
{0xaa, 0x04, 0x0080}, /* 00,04,80,aa */
@@ -600,878 +601,878 @@ static const struct usb_action cs2102_NoFlikerScale[] = {
{0xaa, 0x1b, 0x0000}, /* 00,1b,00,aa */
{0xaa, 0x1c, 0x0005}, /* 00,1c,05,aa */
{0xaa, 0x1d, 0x0080}, /* 00,1d,80,aa */
- {0xa0, 0x00, 0x0190}, /* 01,90,00,cc */
- {0xa0, 0x3f, 0x0191}, /* 01,91,3f,cc */
- {0xa0, 0xf0, 0x0192}, /* 01,92,f0,cc */
- {0xa0, 0x00, 0x0195}, /* 01,95,00,cc */
- {0xa0, 0x00, 0x0196}, /* 01,96,00,cc */
- {0xa0, 0x10, 0x0197}, /* 01,97,10,cc */
- {0xa0, 0x10, 0x018c}, /* 01,8c,10,cc */
- {0xa0, 0x20, 0x018f}, /* 01,8f,20,cc */
- {0xa0, 0x00, 0x01a9}, /* 01,a9,00,cc */
- {0xa0, 0x00, 0x01aa}, /* 01,aa,00,cc */
- {0xa0, 0x59, 0x001d}, /* 00,1d,59,cc */
- {0xa0, 0x90, 0x001e}, /* 00,1e,90,cc */
- {0xa0, 0xc8, 0x001f}, /* 00,1f,c8,cc */
+ {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
+ {0xa0, 0x3f, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,3f,cc */
+ {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */
+ {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
+ {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
+ {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */
+ {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
+ {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
+ {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */
+ {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */
+ {0xa0, 0x59, ZC3XX_R01D_HSYNC_0}, /* 00,1d,59,cc */
+ {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */
+ {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */
{}
};
/* CS2102_KOCOM */
static const struct usb_action cs2102K_Initial[] = {
- {0xa0, 0x11, 0x0002},
- {0xa0, 0x03, 0x0008},
- {0xa0, 0x08, 0x0010},
- {0xa0, 0x02, 0x0003},
- {0xa0, 0x80, 0x0004},
- {0xa0, 0x01, 0x0005},
- {0xa0, 0xe0, 0x0006},
- {0xa0, 0x01, 0x0001},
- {0xa0, 0x03, 0x0012},
- {0xa0, 0x01, 0x0012},
- {0xa0, 0x00, 0x0098},
- {0xa0, 0x00, 0x009a},
- {0xa0, 0x00, 0x011a},
- {0xa0, 0x00, 0x011c},
- {0xa0, 0xe8, 0x009c},
- {0xa0, 0x88, 0x009e},
- {0xa0, 0x55, 0x008b},