aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/zc3xx.c
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2009-11-04 14:38:04 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 15:41:20 -0500
commit56205cc0dd703be70b4ea1138a7e774e058d79fa (patch)
tree36c8ebb1329e17c13d0ac89d7cc82f9af8bab8c4 /drivers/media/video/gspca/zc3xx.c
parent350d6407f84db58e2dfb5a5a5283982130746a41 (diff)
V4L/DVB (13323): gspca - zc3xx: Adjust the exchanges of sensors mi0360soc and pb0330.
- the pb03303x exchanges were the mi0360soc ones - add the new sensor mi0360soc - the new exchanges are taken from the info file of the ms-win driver of the webcams 0ac8:301b and 0ac8:303b (vm30x.inf) Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/zc3xx.c')
-rw-r--r--drivers/media/video/gspca/zc3xx.c823
1 files changed, 335 insertions, 488 deletions
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c
index e57f9dd68a4..11305079224 100644
--- a/drivers/media/video/gspca/zc3xx.c
+++ b/drivers/media/video/gspca/zc3xx.c
@@ -61,17 +61,18 @@ struct sd {
61#define SENSOR_HV7131C 6 61#define SENSOR_HV7131C 6
62#define SENSOR_ICM105A 7 62#define SENSOR_ICM105A 7
63#define SENSOR_MC501CB 8 63#define SENSOR_MC501CB 8
64#define SENSOR_OV7620 9 64#define SENSOR_MI0360SOC 9
65/*#define SENSOR_OV7648 9 - same values */ 65#define SENSOR_OV7620 10
66#define SENSOR_OV7630C 10 66/*#define SENSOR_OV7648 10 - same values */
67#define SENSOR_PAS106 11 67#define SENSOR_OV7630C 11
68#define SENSOR_PAS202B 12 68#define SENSOR_PAS106 12
69#define SENSOR_PB0330 13 69#define SENSOR_PAS202B 13
70#define SENSOR_PO2030 14 70#define SENSOR_PB0330 14 /* (MI0360) */
71#define SENSOR_TAS5130CK 15 71#define SENSOR_PO2030 15
72#define SENSOR_TAS5130CXX 16 72#define SENSOR_TAS5130CK 16
73#define SENSOR_TAS5130C_VF0250 17 73#define SENSOR_TAS5130CXX 17
74#define SENSOR_MAX 18 74#define SENSOR_TAS5130C_VF0250 18
75#define SENSOR_MAX 19
75 unsigned short chip_revision; 76 unsigned short chip_revision;
76 77
77 u8 *jpeg_hdr; 78 u8 *jpeg_hdr;
@@ -4235,170 +4236,80 @@ static const struct usb_action pas202b_NoFlikerScale[] = {
4235 {} 4236 {}
4236}; 4237};
4237 4238
4238static const struct usb_action pb03303x_Initial[] = { 4239/* mi0360soc and pb0330 from vm30x.inf for 0ac8:301b and 0ac8:303b 07/02/13 */
4240static const struct usb_action mi0360soc_Initial[] = { /* 640x480 */
4239 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, 4241 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
4240 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, 4242 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},
4241 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, 4243 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},
4242 {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, 4244 {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT},
4243 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, 4245 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
4244 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, 4246 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
4245 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, 4247 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
4246 {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, 4248 {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},
4247 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, /* 8b -> dc */ 4249 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR},
4248 {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, 4250 {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},
4249 {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, 4251 {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, /*jfm: was 03*/
4250 {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, 4252/* {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, */
4251 {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, 4253 {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},
4252 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, 4254 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
4253 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, 4255 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
4254 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, 4256 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
4255 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, 4257 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR},
4258 {0xdd, 0x00, 0x0200},
4256 {0xaa, 0x01, 0x0001}, 4259 {0xaa, 0x01, 0x0001},
4257 {0xaa, 0x06, 0x0000}, 4260 {0xaa, 0x06, 0x0000},
4258 {0xaa, 0x08, 0x0483}, 4261 {0xaa, 0x08, 0x0483},
4259 {0xaa, 0x01, 0x0004}, 4262 {0xaa, 0x01, 0x0004},
4260 {0xaa, 0x08, 0x0006}, 4263 {0xaa, 0x08, 0x0006},
4261 {0xaa, 0x02, 0x0011}, 4264 {0xaa, 0x02, 0x0011},
4262 {0xaa, 0x03, 0x01e7}, 4265 {0xaa, 0x03, 0x01e5}, /*jfm: was 01e7*/
4263 {0xaa, 0x04, 0x0287}, 4266 {0xaa, 0x04, 0x0285}, /*jfm: was 0287*/
4264 {0xaa, 0x07, 0x3002}, 4267 {0xaa, 0x07, 0x3002},
4265 {0xaa, 0x20, 0x1100}, 4268 {0xaa, 0x20, 0x5100}, /*jfm: was 1100*/
4266 {0xaa, 0x35, 0x0050}, 4269 {0xaa, 0x35, 0x507f}, /*jfm: was 0050*/
4267 {0xaa, 0x30, 0x0005}, 4270 {0xaa, 0x30, 0x0005},
4268 {0xaa, 0x31, 0x0000}, 4271 {0xaa, 0x31, 0x0000},
4269 {0xaa, 0x58, 0x0078}, 4272 {0xaa, 0x58, 0x0078},
4270 {0xaa, 0x62, 0x0411}, 4273 {0xaa, 0x62, 0x0411},
4271 {0xaa, 0x2b, 0x0028}, 4274 {0xaa, 0x2b, 0x0028},
4272 {0xaa, 0x2c, 0x0030}, 4275 {0xaa, 0x2c, 0x007f}, /*jfm: was 0030*/
4273 {0xaa, 0x2d, 0x0030}, 4276 {0xaa, 0x2d, 0x007f}, /*jfm: was 0030*/
4274 {0xaa, 0x2e, 0x0028}, 4277 {0xaa, 0x2e, 0x007f}, /*jfm: was 0030*/
4275 {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, 4278 {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID},
4276 {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, 4279 {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, /*jfm: was 37*/
4277 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4280 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4278 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, 4281 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
4279 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, 4282 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
4280 {0xa0, 0x00, 0x01ad}, 4283 {0xa0, 0x09, 0x01ad}, /*jfm: was 00*/
4281 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, 4284 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
4282 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, 4285 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
4283 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, 4286 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
4284 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, 4287 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
4285 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, 4288 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},
4286 {0xa0, 0x78, ZC3XX_R18D_YTARGET}, 4289 {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, /* jfm: was 78 */
4287 {0xa0, 0x61, ZC3XX_R116_RGAIN}, 4290 {0xa0, 0x61, ZC3XX_R116_RGAIN},
4288 {0xa0, 0x65, ZC3XX_R118_BGAIN}, 4291 {0xa0, 0x65, ZC3XX_R118_BGAIN},
4289
4290 {0xa1, 0x01, 0x0002},
4291 {0xa0, 0x09, 0x01ad},
4292 {0xa0, 0x15, 0x01ae},
4293 {0xa0, 0x0d, 0x003a},
4294 {0xa0, 0x02, 0x003b},
4295 {0xa0, 0x00, 0x0038},
4296 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4297 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4298 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4299 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4300 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4301 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4302 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4303 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4304 {0xa0, 0x50, ZC3XX_R112_RGB22},
4305
4306 {0xa1, 0x01, 0x0008},
4307 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},
4308 {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},
4309 {0xa1, 0x01, 0x01c8},
4310 {0xa1, 0x01, 0x01c9},
4311 {0xa1, 0x01, 0x01ca},
4312 {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */
4313 {0xa0, 0x13, ZC3XX_R120_GAMMA00}, /* gamma 4 */
4314 {0xa0, 0x38, ZC3XX_R121_GAMMA01},
4315 {0xa0, 0x59, ZC3XX_R122_GAMMA02},
4316 {0xa0, 0x79, ZC3XX_R123_GAMMA03},
4317 {0xa0, 0x92, ZC3XX_R124_GAMMA04},
4318 {0xa0, 0xa7, ZC3XX_R125_GAMMA05},
4319 {0xa0, 0xb9, ZC3XX_R126_GAMMA06},
4320 {0xa0, 0xc8, ZC3XX_R127_GAMMA07},
4321 {0xa0, 0xd4, ZC3XX_R128_GAMMA08},
4322 {0xa0, 0xdf, ZC3XX_R129_GAMMA09},
4323 {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A},
4324 {0xa0, 0xee, ZC3XX_R12B_GAMMA0B},
4325 {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C},
4326 {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D},
4327 {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E},
4328 {0xa0, 0xff, ZC3XX_R12F_GAMMA0F},
4329 {0xa0, 0x26, ZC3XX_R130_GAMMA10},
4330 {0xa0, 0x22, ZC3XX_R131_GAMMA11},
4331 {0xa0, 0x20, ZC3XX_R132_GAMMA12},
4332 {0xa0, 0x1c, ZC3XX_R133_GAMMA13},
4333 {0xa0, 0x16, ZC3XX_R134_GAMMA14},
4334 {0xa0, 0x13, ZC3XX_R135_GAMMA15},
4335 {0xa0, 0x10, ZC3XX_R136_GAMMA16},
4336 {0xa0, 0x0d, ZC3XX_R137_GAMMA17},
4337 {0xa0, 0x0b, ZC3XX_R138_GAMMA18},
4338 {0xa0, 0x09, ZC3XX_R139_GAMMA19},
4339 {0xa0, 0x07, ZC3XX_R13A_GAMMA1A},
4340 {0xa0, 0x06, ZC3XX_R13B_GAMMA1B},
4341 {0xa0, 0x05, ZC3XX_R13C_GAMMA1C},
4342 {0xa0, 0x04, ZC3XX_R13D_GAMMA1D},
4343 {0xa0, 0x03, ZC3XX_R13E_GAMMA1E},
4344 {0xa0, 0x02, ZC3XX_R13F_GAMMA1F},
4345 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4346 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4347 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4348 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4349 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4350 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4351 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4352 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4353 {0xa0, 0x50, ZC3XX_R112_RGB22},
4354
4355 {0xa1, 0x01, 0x0180},
4356 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4357 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4358 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4359 {0xaa, 0x05, 0x0009},
4360 {0xaa, 0x09, 0x0134},
4361 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4362 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4363 {0xa0, 0xec, ZC3XX_R192_EXPOSURELIMITLOW},
4364 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4365 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4366 {0xa0, 0x9c, ZC3XX_R197_ANTIFLICKERLOW},
4367 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4368 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4369 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4370 {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},
4371 {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0},
4372 {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1},
4373 {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2},
4374 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4375 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4376 {0xa0, 0x09, 0x01ad},
4377 {0xa0, 0x15, 0x01ae},
4378 {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE},
4379 {0xa1, 0x01, 0x0180},
4380 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4381 {} 4292 {}
4382}; 4293};
4383 4294static const struct usb_action mi0360soc_InitialScale[] = { /* 320x240 */
4384static const struct usb_action pb03303x_InitialScale[] = {
4385 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, 4295 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
4386 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, 4296 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},
4387 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, 4297 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},
4388 {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, 4298 {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},
4389 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, 4299 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
4390 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, 4300 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
4391 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, 4301 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
4392 {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, 4302 {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},
4393 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, /* 8b -> dc */ 4303 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR},
4394 {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, 4304 {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},
4395 {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, 4305 {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, /*jfm: was 03*/
4396 {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, 4306/* {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, */
4397 {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, 4307 {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},
4398 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, 4308 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
4399 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, 4309 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
4400 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, 4310 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
4401 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, 4311 {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR},
4312 {0xdd, 0x00, 0x0200},
4402 {0xaa, 0x01, 0x0001}, 4313 {0xaa, 0x01, 0x0001},
4403 {0xaa, 0x06, 0x0000}, 4314 {0xaa, 0x06, 0x0000},
4404 {0xaa, 0x08, 0x0483}, 4315 {0xaa, 0x08, 0x0483},
@@ -4408,111 +4319,111 @@ static const struct usb_action pb03303x_InitialScale[] = {
4408 {0xaa, 0x03, 0x01e7}, 4319 {0xaa, 0x03, 0x01e7},
4409 {0xaa, 0x04, 0x0287}, 4320 {0xaa, 0x04, 0x0287},
4410 {0xaa, 0x07, 0x3002}, 4321 {0xaa, 0x07, 0x3002},
4411 {0xaa, 0x20, 0x1100}, 4322 {0xaa, 0x20, 0x5100}, /*jfm: was 1100*/
4412 {0xaa, 0x35, 0x0050}, 4323 {0xaa, 0x35, 0x007f}, /*jfm: was 0050*/
4413 {0xaa, 0x30, 0x0005}, 4324 {0xaa, 0x30, 0x0005},
4414 {0xaa, 0x31, 0x0000}, 4325 {0xaa, 0x31, 0x0000},
4415 {0xaa, 0x58, 0x0078}, 4326 {0xaa, 0x58, 0x0078},
4416 {0xaa, 0x62, 0x0411}, 4327 {0xaa, 0x62, 0x0411},
4417 {0xaa, 0x2b, 0x0028}, 4328 {0xaa, 0x2b, 0x007f}, /*jfm: was 28*/
4418 {0xaa, 0x2c, 0x0030}, 4329 {0xaa, 0x2c, 0x007f}, /*jfm: was 30*/
4419 {0xaa, 0x2d, 0x0030}, 4330 {0xaa, 0x2d, 0x007f}, /*jfm: was 30*/
4420 {0xaa, 0x2e, 0x0028}, 4331 {0xaa, 0x2e, 0x007f}, /*jfm: was 28*/
4421 {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, 4332 {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID},
4422 {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, 4333 {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, /*jfm: was 37*/
4423 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4334 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4424 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, 4335 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
4425 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, 4336 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
4426 {0xa0, 0x00, 0x01ad}, 4337 {0xa0, 0x09, 0x01ad}, /*jfm: was 00*/
4427 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, 4338 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
4428 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, 4339 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
4429 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, 4340 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
4430 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, 4341 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
4431 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, 4342 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},
4432 {0xa0, 0x78, ZC3XX_R18D_YTARGET}, 4343 {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, /*jfm: was 78*/
4433 {0xa0, 0x61, ZC3XX_R116_RGAIN}, 4344 {0xa0, 0x61, ZC3XX_R116_RGAIN},
4434 {0xa0, 0x65, ZC3XX_R118_BGAIN}, 4345 {0xa0, 0x65, ZC3XX_R118_BGAIN},
4435 4346 {}
4436 {0xa1, 0x01, 0x0002}, 4347};
4437 4348static const struct usb_action mi360soc_AE50HZ[] = {
4438 {0xa0, 0x09, 0x01ad}, 4349 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4439 {0xa0, 0x15, 0x01ae}, 4350 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4440 4351 {0xbb, 0x00, 0x0562},
4441 {0xa0, 0x0d, 0x003a}, 4352 {0xbb, 0x01, 0x09aa},
4442 {0xa0, 0x02, 0x003b}, 4353 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4443 {0xa0, 0x00, 0x0038}, 4354 {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID},
4444 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ 4355 {0xa0, 0x9b, ZC3XX_R192_EXPOSURELIMITLOW},
4445 {0xa0, 0xf8, ZC3XX_R10B_RGB01}, 4356 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4446 {0xa0, 0xf8, ZC3XX_R10C_RGB02}, 4357 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4447 {0xa0, 0xf8, ZC3XX_R10D_RGB10}, 4358 {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW},
4448 {0xa0, 0x50, ZC3XX_R10E_RGB11}, 4359 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4449 {0xa0, 0xf8, ZC3XX_R10F_RGB12}, 4360 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4450 {0xa0, 0xf8, ZC3XX_R110_RGB20}, 4361 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4451 {0xa0, 0xf8, ZC3XX_R111_RGB21}, 4362 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4452 {0xa0, 0x50, ZC3XX_R112_RGB22}, 4363 {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},
4453 4364 {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},
4454 {0xa1, 0x01, 0x0008}, 4365 {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},
4455 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ 4366 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4456 {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ 4367 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4457 {0xa1, 0x01, 0x01c8}, 4368 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4458 {0xa1, 0x01, 0x01c9}, 4369 {}
4459 {0xa1, 0x01, 0x01ca}, 4370};
4460 {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ 4371static const struct usb_action mi360soc_AE50HZScale[] = {
4461 4372 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4462 {0xa0, 0x13, ZC3XX_R120_GAMMA00}, /* gamma 4 */ 4373 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4463 {0xa0, 0x38, ZC3XX_R121_GAMMA01}, 4374 {0xbb, 0x00, 0x0509},
4464 {0xa0, 0x59, ZC3XX_R122_GAMMA02}, 4375 {0xbb, 0x01, 0x0934},
4465 {0xa0, 0x79, ZC3XX_R123_GAMMA03}, 4376 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4466 {0xa0, 0x92, ZC3XX_R124_GAMMA04}, 4377 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4467 {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, 4378 {0xa0, 0xd2, ZC3XX_R192_EXPOSURELIMITLOW},
4468 {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, 4379 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4469 {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, 4380 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4470 {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, 4381 {0xa0, 0x9a, ZC3XX_R197_ANTIFLICKERLOW},
4471 {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, 4382 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4472 {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, 4383 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4473 {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, 4384 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4474 {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, 4385 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4475 {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, 4386 {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0},
4476 {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, 4387 {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1},
4477 {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, 4388 {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2},
4478 {0xa0, 0x26, ZC3XX_R130_GAMMA10}, 4389 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4479 {0xa0, 0x22, ZC3XX_R131_GAMMA11}, 4390 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4480 {0xa0, 0x20, ZC3XX_R132_GAMMA12}, 4391 {}
4481 {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, 4392};
4482 {0xa0, 0x16, ZC3XX_R134_GAMMA14}, 4393static const struct usb_action mi360soc_AE60HZ[] = {
4483 {0xa0, 0x13, ZC3XX_R135_GAMMA15},
4484 {0xa0, 0x10, ZC3XX_R136_GAMMA16},
4485 {0xa0, 0x0d, ZC3XX_R137_GAMMA17},
4486 {0xa0, 0x0b, ZC3XX_R138_GAMMA18},
4487 {0xa0, 0x09, ZC3XX_R139_GAMMA19},
4488 {0xa0, 0x07, ZC3XX_R13A_GAMMA1A},
4489 {0xa0, 0x06, ZC3XX_R13B_GAMMA1B},
4490 {0xa0, 0x05, ZC3XX_R13C_GAMMA1C},
4491 {0xa0, 0x04, ZC3XX_R13D_GAMMA1D},
4492 {0xa0, 0x03, ZC3XX_R13E_GAMMA1E},
4493 {0xa0, 0x02, ZC3XX_R13F_GAMMA1F},
4494 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4495 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4496 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4497 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4498 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4499 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4500 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4501 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4502 {0xa0, 0x50, ZC3XX_R112_RGB22},
4503
4504 {0xa1, 0x01, 0x0180},
4505 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, 4394 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4395 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4396 {0xbb, 0x00, 0x053d},
4397 {0xbb, 0x01, 0x096e},
4398 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4399 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4400 {0xa0, 0xdd, ZC3XX_R192_EXPOSURELIMITLOW},
4401 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4402 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4403 {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW},
4404 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4405 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4406 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4407 {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},
4408 {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},
4409 {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},
4410 {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},
4411 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4412 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4413 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4414 {}
4415};
4416static const struct usb_action mi360soc_AE60HZScale[] = {
4506 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, 4417 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4507 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, 4418 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4508 {0xaa, 0x05, 0x0009}, 4419 {0xbb, 0x00, 0x0509},
4509 {0xaa, 0x09, 0x0134}, 4420 {0xbb, 0x01, 0x0983},
4510 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, 4421 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4511 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, 4422 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4512 {0xa0, 0xec, ZC3XX_R192_EXPOSURELIMITLOW}, 4423 {0xa0, 0x8f, ZC3XX_R192_EXPOSURELIMITLOW},
4513 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, 4424 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4514 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, 4425 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4515 {0xa0, 0x9c, ZC3XX_R197_ANTIFLICKERLOW}, 4426 {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW},
4516 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, 4427 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4517 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, 4428 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4518 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, 4429 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
@@ -4522,20 +4433,60 @@ static const struct usb_action pb03303x_InitialScale[] = {
4522 {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, 4433 {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2},
4523 {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, 4434 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4524 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, 4435 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4525 {0xa0, 0x09, 0x01ad}, 4436 {}
4526 {0xa0, 0x15, 0x01ae}, 4437};
4527 {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, 4438static const struct usb_action mi360soc_AENoFliker[] = {
4528 {0xa1, 0x01, 0x0180}, 4439 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4440 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4441 {0xbb, 0x00, 0x0509},
4442 {0xbb, 0x01, 0x0960},
4443 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4444 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4445 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW},
4446 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4447 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4448 {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW},
4449 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4450 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4451 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},
4452 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},
4453 {0xa0, 0x09, ZC3XX_R01D_HSYNC_0},
4454 {0xa0, 0x40, ZC3XX_R01E_HSYNC_1},
4455 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4456 {0xa0, 0xe0, ZC3XX_R020_HSYNC_3},
4457 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4529 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, 4458 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4530 {} 4459 {}
4531}; 4460};
4532static const struct usb_action pb0330xx_Initial[] = { 4461static const struct usb_action mi360soc_AENoFlikerScale[] = {
4533 {0xa1, 0x01, 0x0008}, 4462 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4534 {0xa1, 0x01, 0x0008}, 4463 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4464 {0xbb, 0x00, 0x0534},
4465 {0xbb, 0x02, 0x0960},
4466 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4467 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4468 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW},
4469 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4470 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4471 {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW},
4472 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4473 {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE},
4474 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},
4475 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},
4476 {0xa0, 0x34, ZC3XX_R01D_HSYNC_0},
4477 {0xa0, 0x60, ZC3XX_R01E_HSYNC_1},
4478 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4479 {0xa0, 0xe0, ZC3XX_R020_HSYNC_3},
4480 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4481 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4482 {}
4483};
4484
4485static const struct usb_action pb0330_Initial[] = { /* 640x480 */
4535 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, 4486 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
4536 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ 4487 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
4537 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, 4488 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},
4538 {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, 4489 {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT},
4539 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, 4490 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
4540 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, 4491 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
4541 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, 4492 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
@@ -4547,11 +4498,12 @@ static const struct usb_action pb0330xx_Initial[] = {
4547 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, 4498 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
4548 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, 4499 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
4549 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, 4500 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
4501 {0xdd, 0x00, 0x0200},
4550 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4502 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4551 {0xaa, 0x01, 0x0006}, 4503 {0xaa, 0x01, 0x0006},
4552 {0xaa, 0x02, 0x0011}, 4504 {0xaa, 0x02, 0x0011},
4553 {0xaa, 0x03, 0x01e7}, 4505 {0xaa, 0x03, 0x01e5}, /*jfm: was 1e7*/
4554 {0xaa, 0x04, 0x0287}, 4506 {0xaa, 0x04, 0x0285}, /*jfm: was 0287*/
4555 {0xaa, 0x06, 0x0003}, 4507 {0xaa, 0x06, 0x0003},
4556 {0xaa, 0x07, 0x3002}, 4508 {0xaa, 0x07, 0x3002},
4557 {0xaa, 0x20, 0x1100}, 4509 {0xaa, 0x20, 0x1100},
@@ -4569,88 +4521,21 @@ static const struct usb_action pb0330xx_Initial[] = {
4569 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4521 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4570 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, 4522 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
4571 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, 4523 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
4572 {0xa0, 0x00, 0x01ad}, 4524 {0xa0, 0x09, 0x01ad}, /*jfm: was 00 */
4525 {0xa0, 0x15, 0x01ae},
4573 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, 4526 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
4574 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, 4527 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
4575 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, 4528 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
4576 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, 4529 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
4577 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, 4530 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},
4578 {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, 4531 {0xa0, 0x78, ZC3XX_R18D_YTARGET}, /*jfm: was 6c*/
4579 {0xa1, 0x01, 0x0002},
4580 {0xa0, 0x09, 0x01ad},
4581 {0xa0, 0x15, 0x01ae},
4582 {0xa0, 0x00, ZC3XX_R092_I2CADDRESSSELECT},
4583 {0xa0, 0x02, ZC3XX_R090_I2CCOMMAND},
4584 {0xa1, 0x01, 0x0091},
4585 {0xa1, 0x01, 0x0095},
4586 {0xa1, 0x01, 0x0096},
4587 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4588 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4589 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4590 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4591 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4592 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4593 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4594 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4595 {0xa0, 0x50, ZC3XX_R112_RGB22},
4596 {0xa1, 0x01, 0x0008},
4597 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */
4598 {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */
4599 {0xa1, 0x01, 0x01c8},
4600 {0xa1, 0x01, 0x01c9},
4601 {0xa1, 0x01, 0x01ca},
4602 {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */
4603
4604 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4605 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4606 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4607 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4608 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4609 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4610 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4611 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4612 {0xa0, 0x50, ZC3XX_R112_RGB22},
4613 {0xa1, 0x01, 0x0180},
4614 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4615 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4616 {0xaa, 0x05, 0x0066},
4617 {0xaa, 0x09, 0x02b2},
4618 {0xaa, 0x10, 0x0002},
4619
4620 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4621 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4622 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4623 {0xa0, 0x8c, ZC3XX_R192_EXPOSURELIMITLOW},
4624 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4625 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4626 {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW},
4627 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},
4628 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},
4629 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4630 {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},
4631 {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0},
4632 {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1},
4633 {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2},
4634 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4635 {0xa0, 0x09, 0x01ad},
4636 {0xa0, 0x15, 0x01ae},
4637 {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE},
4638 {0xa1, 0x01, 0x0180},
4639 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4640 {0xa1, 0x01, 0x0008},
4641 {0xa1, 0x01, 0x0007},
4642/* {0xa0, 0x30, 0x0007}, */
4643/* {0xa0, 0x00, 0x0007}, */
4644 {} 4532 {}
4645}; 4533};
4646 4534static const struct usb_action pb0330_InitialScale[] = { /* 320x240 */
4647static const struct usb_action pb0330xx_InitialScale[] = {
4648 {0xa1, 0x01, 0x0008},
4649 {0xa1, 0x01, 0x0008},
4650 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, 4535 {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},
4651 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */ 4536 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00 */
4652 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, 4537 {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},
4653 {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, /* 10 */ 4538 {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},
4654 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, 4539 {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},
4655 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, 4540 {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},
4656 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, 4541 {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},
@@ -4662,6 +4547,7 @@ static const struct usb_action pb0330xx_InitialScale[] = {
4662 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, 4547 {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},
4663 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, 4548 {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},
4664 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, 4549 {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},
4550 {0xdd, 0x00, 0x0200},
4665 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4551 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4666 {0xaa, 0x01, 0x0006}, 4552 {0xaa, 0x01, 0x0006},
4667 {0xaa, 0x02, 0x0011}, 4553 {0xaa, 0x02, 0x0011},
@@ -4684,53 +4570,43 @@ static const struct usb_action pb0330xx_InitialScale[] = {
4684 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, 4570 {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},
4685 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, 4571 {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},
4686 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, 4572 {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},
4687 {0xa0, 0x00, 0x01ad}, 4573 {0xa0, 0x09, 0x01ad},
4574 {0xa0, 0x15, 0x01ae},
4688 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, 4575 {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},
4689 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, 4576 {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},
4690 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, 4577 {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},
4691 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, 4578 {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},
4692 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, 4579 {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},
4693 {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, 4580 {0xa0, 0x78, ZC3XX_R18D_YTARGET}, /*jfm: was 6c*/
4694 {0xa1, 0x01, 0x0002}, 4581 {}
4695 {0xa0, 0x09, 0x01ad}, 4582};
4696 {0xa0, 0x15, 0x01ae}, 4583static const struct usb_action pb0330_50HZ[] = {
4697 {0xa0, 0x00, ZC3XX_R092_I2CADDRESSSELECT}, 4584 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4698 {0xa0, 0x02, ZC3XX_R090_I2CCOMMAND}, 4585 {0xbb, 0x00, 0x055c},
4699 {0xa1, 0x01, 0x0091}, 4586 {0xbb, 0x01, 0x09aa},
4700 {0xa1, 0x01, 0x0095}, 4587 {0xbb, 0x00, 0x1001},
4701 {0xa1, 0x01, 0x0096}, 4588 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4702 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */ 4589 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4703 {0xa0, 0xf8, ZC3XX_R10B_RGB01}, 4590 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4704 {0xa0, 0xf8, ZC3XX_R10C_RGB02}, 4591 {0xa0, 0xc4, ZC3XX_R192_EXPOSURELIMITLOW},
4705 {0xa0, 0xf8, ZC3XX_R10D_RGB10}, 4592 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4706 {0xa0, 0x50, ZC3XX_R10E_RGB11}, 4593 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4707 {0xa0, 0xf8, ZC3XX_R10F_RGB12}, 4594 {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW},
4708 {0xa0, 0xf8, ZC3XX_R110_RGB20}, 4595 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4709 {0xa0, 0xf8, ZC3XX_R111_RGB21}, 4596 {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE},
4710 {0xa0, 0x50, ZC3XX_R112_RGB22}, 4597 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4711 {0xa1, 0x01, 0x0008}, 4598 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4712 {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* clock ? */ 4599 {0xa0, 0x5c, ZC3XX_R01D_HSYNC_0},
4713 {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, /* sharpness+ */ 4600 {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},
4714 {0xa1, 0x01, 0x01c8}, 4601 {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},
4715 {0xa1, 0x01, 0x01c9}, 4602 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4716 {0xa1, 0x01, 0x01ca}, 4603 {}
4717 {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, /* sharpness- */ 4604};
4718 4605static const struct usb_action pb0330_50HZScale[] = {
4719 {0xa0, 0x50, ZC3XX_R10A_RGB00}, /* matrix */
4720 {0xa0, 0xf8, ZC3XX_R10B_RGB01},
4721 {0xa0, 0xf8, ZC3XX_R10C_RGB02},
4722 {0xa0, 0xf8, ZC3XX_R10D_RGB10},
4723 {0xa0, 0x50, ZC3XX_R10E_RGB11},
4724 {0xa0, 0xf8, ZC3XX_R10F_RGB12},
4725 {0xa0, 0xf8, ZC3XX_R110_RGB20},
4726 {0xa0, 0xf8, ZC3XX_R111_RGB21},
4727 {0xa0, 0x50, ZC3XX_R112_RGB22},
4728 {0xa1, 0x01, 0x0180},
4729 {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE},
4730 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, 4606 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4731 {0xaa, 0x05, 0x0066}, 4607 {0xbb, 0x00, 0x0566},
4732 {0xaa, 0x09, 0x02b2}, 4608 {0xbb, 0x02, 0x09b2},
4733 {0xaa, 0x10, 0x0002}, 4609 {0xbb, 0x00, 0x1002},
4734 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, 4610 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4735 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, 4611 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4736 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, 4612 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
@@ -4738,124 +4614,102 @@ static const struct usb_action pb0330xx_InitialScale[] = {
4738 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, 4614 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4739 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, 4615 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4740 {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW}, 4616 {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW},
4741 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, 4617 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4742 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, 4618 {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE},
4743 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, 4619 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4744 {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, 4620 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4745 {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, 4621 {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0},
4746 {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, 4622 {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1},
4747 {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, 4623 {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2},
4748 {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, 4624 {0xa0, 0xff, ZC3XX_R020_HSYNC_3},
4749 {0xa0, 0x09, 0x01ad},
4750 {0xa0, 0x15, 0x01ae},
4751 {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE},
4752 {0xa1, 0x01, 0x0180},
4753 {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},
4754 {0xa1, 0x01, 0x0008},
4755 {0xa1, 0x01, 0x0007},
4756/* {0xa0, 0x30, 0x0007}, */
4757/* {0xa0, 0x00, 0x0007}, */
4758 {}
4759};
4760static const struct usb_action pb0330_50HZ[] = {
4761 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
4762 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */
4763 {0xa0, 0xee, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,ee,cc */
4764 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
4765 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
4766 {0xa0, 0x46, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,46,cc */
4767 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
4768 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
4769 {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */
4770 {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */
4771 {0xa0, 0x68, ZC3XX_R01D_HSYNC_0}, /* 00,1d,68,cc */
4772 {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, /* 00,1e,90,cc */
4773 {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,c8,cc */
4774 {}
4775};
4776static const struct usb_action pb0330_50HZScale[] = {
4777 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */
4778 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */
4779 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */
4780 {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,a0,cc */
4781 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */
4782 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */
4783 {0xa0, 0x7a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7a,cc */
4784 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */
4785 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */
4786 {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */
4787 {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */
4788 {0xa0, 0xe5, ZC3XX_R01D_HSYNC_0}, /* 00,1d,e5,cc */
4789 {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,f0,cc */
4790 {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f8,cc */
4791 {} 4625 {}
4792}; 4626};
4793static const struct usb_action pb0330_60HZ[] = { 4627static const struct usb_action pb0330_60HZ[] = {
4794 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ 4628 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4795 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ 4629 {0xbb, 0x00, 0x0535},
4796 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ 4630 {0xbb, 0x01, 0x0974},
4797 {0xa0, 0xdd, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,dd,cc */ 4631 {0xbb, 0x00, 0x1001},
4798 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ 4632 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4799 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ 4633 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4800 {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3d,cc */ 4634 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4801 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ 4635 {0xa0, 0xfe, ZC3XX_R192_EXPOSURELIMITLOW},
4802 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ 4636 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4803 {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ 4637 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4804 {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ 4638 {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW},
4805 {0xa0, 0x43, ZC3XX_R01D_HSYNC_0}, /* 00,1d,43,cc */ 4639 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4806 {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, /* 00,1e,50,cc */ 4640 {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE},
4807 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ 4641 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4642 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4643 {0xa0, 0x35, ZC3XX_R01D_HSYNC_0},
4644 {0xa0, 0x50, ZC3XX_R01E_HSYNC_1},
4645 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4646 {0xa0, 0xd0, ZC3XX_R020_HSYNC_3},
4808 {} 4647 {}
4809}; 4648};
4810static const struct usb_action pb0330_60HZScale[] = { 4649static const struct usb_action pb0330_60HZScale[] = {
4811 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ 4650 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4812 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ 4651 {0xbb, 0x00, 0x0535},
4813 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ 4652 {0xbb, 0x02, 0x096c},
4814 {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,a0,cc */ 4653 {0xbb, 0x00, 0x1002},
4815 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ 4654 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4816 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ 4655 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4817 {0xa0, 0x7a, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7a,cc */ 4656 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4818 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ 4657 {0xa0, 0xc0, ZC3XX_R192_EXPOSURELIMITLOW},
4819 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ 4658 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4820 {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ 4659 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4821 {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,26,cc */ 4660 {0xa0, 0x7c, ZC3XX_R197_ANTIFLICKERLOW},
4822 {0xa0, 0x41, ZC3XX_R01D_HSYNC_0}, /* 00,1d,41,cc */ 4661 {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},
4823 {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, /* 00,1e,50,cc */ 4662 {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE},
4824 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ 4663 {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF},
4664 {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP},
4665 {0xa0, 0x35, ZC3XX_R01D_HSYNC_0},
4666 {0xa0, 0x50, ZC3XX_R01E_HSYNC_1},
4667 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4668 {0xa0, 0xd0, ZC3XX_R020_HSYNC_3},
4825 {} 4669 {}
4826}; 4670};
4827static const struct usb_action pb0330_NoFliker[] = { 4671static const struct usb_action pb0330_NoFliker[] = {
4828 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ 4672 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4829 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ 4673 {0xbb, 0x00, 0x0509},
4830 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ 4674 {0xbb, 0x02, 0x0940},
4831 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ 4675 {0xbb, 0x00, 0x1002},
4832 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ 4676 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4833 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ 4677 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4834 {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ 4678 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4835 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ 4679 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW},
4836 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ 4680 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4837 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ 4681 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4838 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ 4682 {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW},
4839 {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, /* 00,1d,09,cc */ 4683 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},
4840 {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, /* 00,1e,40,cc */ 4684 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},
4841 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ 4685 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},
4686 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},
4687 {0xa0, 0x09, ZC3XX_R01D_HSYNC_0},
4688 {0xa0, 0x40, ZC3XX_R01E_HSYNC_1},
4689 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4690 {0xa0, 0xe0, ZC3XX_R020_HSYNC_3},
4842 {} 4691 {}
4843}; 4692};
4844static const struct usb_action pb0330_NoFlikerScale[] = { 4693static const struct usb_action pb0330_NoFlikerScale[] = {
4845 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ 4694 {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},
4846 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ 4695 {0xbb, 0x00, 0x0535},
4847 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,07,cc */ 4696 {0xbb, 0x01, 0x0980},
4848 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,f0,cc */ 4697 {0xbb, 0x00, 0x1001},
4849 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ 4698 {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},
4850 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ 4699 {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},
4851 {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ 4700 {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID},
4852 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ 4701 {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW},
4853 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ 4702 {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},
4854 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ 4703 {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},
4855 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ 4704 {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW},
4856 {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, /* 00,1d,09,cc */ 4705 {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},
4857 {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, /* 00,1e,40,cc */ 4706 {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},
4858 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, /* 00,1f,90,cc */ 4707 {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},
4708 {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},
4709 {0xa0, 0x35, ZC3XX_R01D_HSYNC_0},
4710 {0xa0, 0x60, ZC3XX_R01E_HSYNC_1},
4711 {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},
4712 {0xa0, 0xe0, ZC3XX_R020_HSYNC_3},
4859 {} 4713 {}
4860}; 4714};
4861 4715
@@ -6131,15 +5985,16 @@ static void setmatrix(struct gspca_dev *gspca_dev)
6131 NULL, /* SENSOR_HV7131C 6 */ 5985 NULL, /* SENSOR_HV7131C 6 */
6132 NULL, /* SENSOR_ICM105A 7 */ 5986 NULL, /* SENSOR_ICM105A 7 */
6133 NULL, /* SENSOR_MC501CB 8 */ 5987 NULL, /* SENSOR_MC501CB 8 */
6134 ov7620_matrix, /* SENSOR_OV7620 9 */ 5988 gc0305_matrix, /* SENSOR_MI0360SOC 9 */
6135 NULL, /* SENSOR_OV7630C 10 */ 5989 ov7620_matrix, /* SENSOR_OV7620 10 */
6136 NULL, /* SENSOR_PAS106 11 */ 5990 NULL, /* SENSOR_OV7630C 11 */
6137 pas202b_matrix, /* SENSOR_PAS202B 12 */ 5991 NULL, /* SENSOR_PAS106 12 */
6138 NULL, /* SENSOR_PB0330 13 */ 5992 pas202b_matrix, /* SENSOR_PAS202B 13 */
6139 po2030_matrix, /* SENSOR_PO2030 14 */ 5993 gc0305_matrix, /* SENSOR_PB0330 14 */
6140 NULL, /* SENSOR_TAS5130CK 15 */ 5994 po2030_matrix, /* SENSOR_PO2030 15 */
6141 tas5130c_matrix, /* SENSOR_TAS5130CXX 16 */ 5995 NULL, /* SENSOR_TAS5130CK 16 */
6142 vf0250_matrix, /* SENSOR_TAS5130C_VF0250 17 */ 5996 tas5130c_matrix, /* SENSOR_TAS5130CXX 17 */
5997 vf0250_matrix, /* SENSOR_TAS5130C_VF0250 18 */
6143 }; 5998 };
6144 5999
6145 matrix = matrix_tb[sd->sensor]; 6000 matrix = matrix_tb[sd->sensor];
@@ -6379,39 +6234,43 @@ static int setlightfreq(struct gspca_dev *gspca_dev)
6379 {MC501CB_NoFliker, MC501CB_NoFlikerScale, 6234 {MC501CB_NoFliker, MC501CB_NoFlikerScale,
6380 MC501CB_50HZ, MC501CB_50HZScale, 6235 MC501CB_50HZ, MC501CB_50HZScale,
6381 MC501CB_60HZ, MC501CB_60HZScale}, 6236 MC501CB_60HZ, MC501CB_60HZScale},
6382/* SENSOR_OV7620 9 */ 6237/* SENSOR_MI0360SOC 9 */
6238 {mi360soc_AENoFlikerScale, mi360soc_AENoFliker,
6239 mi360soc_AE50HZScale, mi360soc_AE50HZ,
6240 mi360soc_AE60HZScale, mi360soc_AE60HZ},
6241/* SENSOR_OV7620 10 */
6383 {OV7620_NoFliker, OV7620_NoFliker, 6242 {OV7620_NoFliker, OV7620_NoFliker,
6384 OV7620_50HZ, OV7620_50HZ, 6243 OV7620_50HZ, OV7620_50HZ,
6385 OV7620_60HZ, OV7620_60HZ}, 6244 OV7620_60HZ, OV7620_60HZ},
6386/* SENSOR_OV7630C 10 */ 6245/* SENSOR_OV7630C 11 */
6387 {NULL, NULL, 6246 {NULL, NULL,
6388 NULL, NULL, 6247 NULL, NULL,
6389 NULL, NULL}, 6248 NULL, NULL},
6390/* SENSOR_PAS106 11 */ 6249/* SENSOR_PAS106 12 */
6391 {pas106b_NoFliker, pas106b_NoFliker, 6250 {pas106b_NoFliker, pas106b_NoFliker,
6392 pas106b_50HZ, pas106b_50HZ, 6251 pas106b_50HZ, pas106b_50HZ,
6393 pas106b_60HZ, pas106b_60HZ}, 6252 pas106b_60HZ, pas106b_60HZ},
6394/* SENSOR_PAS202B 12 */ 6253/* SENSOR_PAS202B 13 */
6395 {pas202b_NoFlikerScale, pas202b_NoFliker, 6254 {pas202b_NoFlikerScale, pas202b_NoFliker,
6396 pas202b_50HZScale, pas202b_50HZ, 6255 pas202b_50HZScale, pas202b_50HZ,
6397 pas202b_60HZScale, pas202b_60HZ}, 6256 pas202b_60HZScale, pas202b_60HZ},
6398/* SENSOR_PB0330 13 */ 6257/* SENSOR_PB0330 14 */
6399 {pb0330_NoFliker, pb0330_NoFlikerScale, 6258 {pb0330_NoFlikerScale, pb0330_NoFliker,
6400 pb0330_50HZ, pb0330_50HZScale, 6259 pb0330_50HZScale, pb0330_50HZ,
6401 pb0330_60HZ, pb0330_60HZScale}, 6260 pb0330_60HZScale, pb0330_60HZ},
6402/* SENSOR_PO2030 14 */ 6261/* SENSOR_PO2030 15 */
6403 {PO2030_NoFliker, PO2030_NoFliker, 6262 {PO2030_NoFliker, PO2030_NoFliker,
6404 PO2030_50HZ, PO2030_50HZ, 6263 PO2030_50HZ, PO2030_50HZ,
6405 PO2030_60HZ, PO2030_60HZ}, 6264 PO2030_60HZ, PO2030_60HZ},
6406/* SENSOR_TAS5130CK 15 */ 6265/* SENSOR_TAS5130CK 16 */
6407 {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker, 6266 {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker,
6408 tas5130cxx_50HZScale, tas5130cxx_50HZ, 6267 tas5130cxx_50HZScale, tas5130cxx_50HZ,
6409 tas5130cxx_60HZScale, tas5130cxx_60HZ}, 6268 tas5130cxx_60HZScale, tas5130cxx_60HZ},
6410/* SENSOR_TAS5130CXX 16 */ 6269/* SENSOR_TAS5130CXX 17 */
6411 {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker, 6270 {tas5130cxx_NoFlikerScale, tas5130cxx_NoFliker,
6412 tas5130cxx_50HZScale, tas5130cxx_50HZ, 6271 tas5130cxx_50HZScale, tas5130cxx_50HZ,
6413 tas5130cxx_60HZScale, tas5130cxx_60HZ}, 6272 tas5130cxx_60HZScale, tas5130cxx_60HZ},
6414/* SENSOR_TAS5130C_VF0250 17 */ 6273/* SENSOR_TAS5130C_VF0250 18 */
6415 {tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale, 6274 {tas5130c_vf0250_NoFliker, tas5130c_vf0250_NoFlikerScale,
6416 tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale, 6275 tas5130c_vf0250_50HZ, tas5130c_vf0250_50HZScale,
6417 tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale}, 6276 tas5130c_vf0250_60HZ, tas5130c_vf0250_60HZScale},
@@ -6468,6 +6327,7 @@ static void send_unknown(struct usb_device *dev, int sensor)
6468 case SENSOR_ADCM2700: 6327 case SENSOR_ADCM2700:
6469 case SENSOR_GC0305: 6328 case SENSOR_GC0305:
6470 case SENSOR_OV7620: 6329 case SENSOR_OV7620:
6330 case SENSOR_MI0360SOC:
6471 case SENSOR_PB0330: 6331 case SENSOR_PB0330:
6472 case SENSOR_PO2030: 6332 case SENSOR_PO2030:
6473 reg_w(dev, 0x0d, 0x003a); 6333 reg_w(dev, 0x0d, 0x003a);
@@ -6603,7 +6463,7 @@ struct sensor_by_chipset_revision {
6603}; 6463};
6604static const struct sensor_by_chipset_revision chipset_revision_sensor[] = { 6464static const struct sensor_by_chipset_revision chipset_revision_sensor[] = {
6605 {0xc000, 0x12}, /* TAS5130C */ 6465 {0xc000, 0x12}, /* TAS5130C */
6606 {0xc001, 0x13}, /* MI0360 */ 6466 {0xc001, 0x13}, /* MI0360SOC */
6607 {0xe001, 0x13}, 6467 {0xe001, 0x13},
6608 {0x8001, 0x13}, 6468 {0x8001, 0x13},
6609 {0x8000, 0x14}, /* CS2102K */ 6469 {0x8000, 0x14}, /* CS2102K */
@@ -6772,15 +6632,16 @@ static int sd_config(struct gspca_dev *gspca_dev,
6772 4, /* SENSOR_HV7131C 6 */ 6632 4, /* SENSOR_HV7131C 6 */
6773 4, /* SENSOR_ICM105A 7 */ 6633 4, /* SENSOR_ICM105A 7 */
6774 4, /* SENSOR_MC501CB 8 */ 6634 4, /* SENSOR_MC501CB 8 */
6775 3, /* SENSOR_OV7620 9 */ 6635 4, /* SENSOR_MI0360SOC 9 */
6776 4, /* SENSOR_OV7630C 10 */ 6636 3, /* SENSOR_OV7620 10 */
6777 4, /* SENSOR_PAS106 11 */ 6637 4, /* SENSOR_OV7630C 11 */
6778 4, /* SENSOR_PAS202B 12 */ 6638 4, /* SENSOR_PAS106 12 */
6779 4, /* SENSOR_PB0330 13 */ 6639 4, /* SENSOR_PAS202B 13 */
6780 4, /* SENSOR_PO2030 14 */ 6640 4, /* SENSOR_PB0330 14 */
6781 4, /* SENSOR_TAS5130CK 15 */ 6641 4, /* SENSOR_PO2030 15 */
6782 3, /* SENSOR_TAS5130CXX 16 */ 6642 4, /* SENSOR_TAS5130CK 16 */
6783 3, /* SENSOR_TAS5130C_VF0250 17 */ 6643 3, /* SENSOR_TAS5130CXX 17 */
6644 3, /* SENSOR_TAS5130C_VF0250 18 */
6784 }; 6645 };
6785 6646
6786 /* define some sensors from the vendor/product */ 6647 /* define some sensors from the vendor/product */
@@ -6851,9 +6712,9 @@ static int sd_config(struct gspca_dev *gspca_dev,
6851 break; 6712 break;
6852 case 0x13: 6713 case 0x13:
6853 PDEBUG(D_PROBE, 6714 PDEBUG(D_PROBE,
6854 "Find Sensor MI0360. Chip revision %x", 6715 "Find Sensor MI0360SOC. Chip revision %x",
6855 sd->chip_revision); 6716 sd->chip_revision);
6856 sd->sensor = SENSOR_PB0330; 6717 sd->sensor = SENSOR_MI0360SOC;
6857 break; 6718 break;
6858 case 0x14: 6719 case 0x14:
6859 PDEBUG(D_PROBE, 6720 PDEBUG(D_PROBE,
@@ -6967,17 +6828,17 @@ static int sd_start(struct gspca_dev *gspca_dev)
6967 {hv7131cxx_InitialScale, hv7131cxx_Initial}, /* 6 */ 6828 {hv7131cxx_InitialScale, hv7131cxx_Initial}, /* 6 */
6968 {icm105axx_InitialScale, icm105axx_Initial}, /* 7 */ 6829 {icm105axx_InitialScale, icm105axx_Initial}, /* 7 */
6969 {MC501CB_InitialScale, MC501CB_Initial}, /* 8 */ 6830 {MC501CB_InitialScale, MC501CB_Initial}, /* 8 */
6970 {OV7620_mode0, OV7620_mode1}, /* 9 */ 6831 {mi0360soc_Initial, mi0360soc_InitialScale}, /* 9 */
6971 {ov7630c_InitialScale, ov7630c_Initial}, /* 10 */ 6832 {OV7620_mode0, OV7620_mode1}, /* 10 */
6972 {pas106b_InitialScale, pas106b_Initial}, /* 11 */ 6833 {ov7630c_InitialScale, ov7630c_Initial}, /* 11 */
6973 {pas202b_Initial, pas202b_InitialScale}, /* 12 */ 6834 {pas106b_InitialScale, pas106b_Initial}, /* 12 */
6974 {pb0330xx_InitialScale, pb0330xx_Initial}, /* 13 */ 6835 {pas202b_Initial, pas202b_InitialScale}, /* 13 */
6975/* or {pb03303x_InitialScale, pb03303x_Initial}, */ 6836 {pb0330_Initial, pb0330_InitialScale}, /* 14 */
6976 {PO2030_mode0, PO2030_mode1}, /* 14 */ 6837 {PO2030_mode0, PO2030_mode1}, /* 15 */
6977 {tas5130CK_InitialScale, tas5130CK_Initial}, /* 15 */ 6838 {tas5130CK_InitialScale, tas5130CK_Initial}, /* 16 */
6978 {tas5130cxx_Initial, tas5130cxx_InitialScale}, /* 16 */ 6839 {tas5130cxx_Initial, tas5130cxx_InitialScale}, /* 17 */
6979 {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial}, 6840 {tas5130c_vf0250_InitialScale, tas5130c_vf0250_Initial},
6980 /* 17 */ 6841 /* 18 */
6981 }; 6842 };
6982 6843
6983 /* create the JPEG header */ 6844 /* create the JPEG header */
@@ -6997,19 +6858,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
6997 case SENSOR_PAS106: 6858 case SENSOR_PAS106:
6998 usb_exchange(gspca_dev, pas106b_Initial_com); 6859 usb_exchange(gspca_dev, pas106b_Initial_com);
6999 break; 6860 break;
7000 case SENSOR_PB0330:
7001 if (mode) {
7002 if (sd->chip_revision == 0xc001
7003 || sd->chip_revision == 0xe001
7004 || sd->chip_revision == 0x8001)
7005 zc3_init = pb03303x_Initial;
7006 } else {
7007 if (sd->chip_revision == 0xc001
7008 || sd->chip_revision == 0xe001
7009 || sd->chip_revision == 0x8001)
7010 zc3_init = pb03303x_InitialScale;
7011 }
7012 break;
7013 } 6861 }
7014 usb_exchange(gspca_dev, zc3_init); 6862 usb_exchange(gspca_dev, zc3_init);
7015 6863
@@ -7051,7 +6899,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
7051 switch (sd->sensor) { 6899 switch (sd->sensor) {
7052 case SENSOR_CS2102K: /* gamma set in xxx_Initial */ 6900 case SENSOR_CS2102K: /* gamma set in xxx_Initial */
7053 case SENSOR_HDCS2020b: 6901 case SENSOR_HDCS2020b:
7054 case SENSOR_PB0330: /* pb with chip_revision - see above */
7055 case SENSOR_OV7630C: 6902 case SENSOR_OV7630C:
7056 case SENSOR_TAS5130CK: 6903 case SENSOR_TAS5130CK:
7057 break; 6904 break;