summaryrefslogtreecommitdiffstats
path: root/drivers/media/usb/gspca/zc3xx-reg.h
blob: ab8f44a4f3d490a9131c169faef0e3f64d385319 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * zc030x registers
 *
 * Copyright (c) 2008 Mauro Carvalho Chehab <mchehab@kernel.org>
 *
 * The register aliases used here came from this driver:
 *	http://zc0302.sourceforge.net/zc0302.php
 */

/* 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 retrieving */
#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

/* 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

/* Dead pixels */
#define ZC3XX_R250_DEADPIXELSMODE      0x0250

/* EEPROM */
#define ZC3XX_R300_EEPROMCONFIG        0x0300
#define ZC3XX_R301_EEPROMACCESS        0x0301
#define ZC3XX_R302_EEPROMSTATUS        0x0302