| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1 | /* | 
| Jean-François Moine | 0b74e2c | 2012-02-27 08:26:05 -0300 | [diff] [blame] | 2 | * Z-Star/Vimicro zc301/zc302p/vc30x driver | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3 | * | 
| Jean-François Moine | 0b74e2c | 2012-02-27 08:26:05 -0300 | [diff] [blame] | 4 | * Copyright (C) 2009-2012 Jean-Francois Moine <http://moinejf.free.fr> | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5 | * Copyright (C) 2004 2005 2006 Michel Xhaard mxhaard@magic.fr | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6 | * | 
|  | 7 | * This program is free software; you can redistribute it and/or modify | 
|  | 8 | * it under the terms of the GNU General Public License as published by | 
|  | 9 | * the Free Software Foundation; either version 2 of the License, or | 
|  | 10 | * (at your option) any later version. | 
|  | 11 | * | 
|  | 12 | * This program is distributed in the hope that it will be useful, | 
|  | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 15 | * GNU General Public License for more details. | 
|  | 16 | * | 
|  | 17 | * You should have received a copy of the GNU General Public License | 
|  | 18 | * along with this program; if not, write to the Free Software | 
|  | 19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 20 | */ | 
|  | 21 |  | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 22 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 
|  | 23 |  | 
| Hans de Goede | 1a35102 | 2010-01-29 11:05:25 -0300 | [diff] [blame] | 24 | #include <linux/input.h> | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 25 | #include "gspca.h" | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 26 | #include "jpeg.h" | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 27 |  | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 28 | MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, " | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 29 | "Serge A. Suchkov <Serge.A.S@tochka.ru>"); | 
|  | 30 | MODULE_DESCRIPTION("GSPCA ZC03xx/VC3xx USB Camera Driver"); | 
|  | 31 | MODULE_LICENSE("GPL"); | 
|  | 32 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 33 | static int force_sensor = -1; | 
|  | 34 |  | 
| Hans de Goede | 83fb2e2 | 2012-05-06 09:28:24 -0300 | [diff] [blame] | 35 | #define REG08_DEF 3		/* default JPEG compression (75%) */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 36 | #include "zc3xx-reg.h" | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 37 |  | 
|  | 38 | /* specific webcam descriptor */ | 
|  | 39 | struct sd { | 
|  | 40 | struct gspca_dev gspca_dev;	/* !! must be the first item */ | 
|  | 41 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 42 | struct { /* gamma/brightness/contrast control cluster */ | 
|  | 43 | struct v4l2_ctrl *gamma; | 
|  | 44 | struct v4l2_ctrl *brightness; | 
|  | 45 | struct v4l2_ctrl *contrast; | 
|  | 46 | }; | 
|  | 47 | struct { /* autogain/exposure control cluster */ | 
|  | 48 | struct v4l2_ctrl *autogain; | 
|  | 49 | struct v4l2_ctrl *exposure; | 
|  | 50 | }; | 
|  | 51 | struct v4l2_ctrl *plfreq; | 
|  | 52 | struct v4l2_ctrl *sharpness; | 
|  | 53 | struct v4l2_ctrl *jpegqual; | 
| Jean-François Moine | 49fb5e6 | 2010-12-28 07:09:34 -0300 | [diff] [blame] | 54 |  | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 55 | struct work_struct work; | 
|  | 56 | struct workqueue_struct *work_thread; | 
|  | 57 |  | 
| Jean-François Moine | 30c73d4 | 2012-02-27 07:26:30 -0300 | [diff] [blame] | 58 | u8 reg08;		/* webcam compression quality */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 59 |  | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 60 | u8 bridge; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 61 | u8 sensor;		/* Type of image sensor chip */ | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 62 | u16 chip_revision; | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 63 |  | 
| Jean-François Moine | 9a731a3 | 2010-06-04 05:26:42 -0300 | [diff] [blame] | 64 | u8 jpeg_hdr[JPEG_HDR_SZ]; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 65 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 66 | enum bridges { | 
|  | 67 | BRIDGE_ZC301, | 
|  | 68 | BRIDGE_ZC303, | 
|  | 69 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 70 | enum sensors { | 
|  | 71 | SENSOR_ADCM2700, | 
|  | 72 | SENSOR_CS2102, | 
|  | 73 | SENSOR_CS2102K, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 74 | SENSOR_GC0303, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 75 | SENSOR_GC0305, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 76 | SENSOR_HDCS2020, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 77 | SENSOR_HV7131B, | 
|  | 78 | SENSOR_HV7131R, | 
|  | 79 | SENSOR_ICM105A, | 
|  | 80 | SENSOR_MC501CB, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 81 | SENSOR_MT9V111_1,	/* (mi360soc) zc301 */ | 
|  | 82 | SENSOR_MT9V111_3,	/* (mi360soc) zc303 */ | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 83 | SENSOR_OV7620,		/* OV7648 - same values */ | 
|  | 84 | SENSOR_OV7630C, | 
|  | 85 | SENSOR_PAS106, | 
|  | 86 | SENSOR_PAS202B, | 
|  | 87 | SENSOR_PB0330, | 
|  | 88 | SENSOR_PO2030, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 89 | SENSOR_TAS5130C, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 90 | SENSOR_MAX | 
|  | 91 | }; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 92 |  | 
| Jean-Francois Moine | cc611b8 | 2008-12-29 07:49:41 -0300 | [diff] [blame] | 93 | static const struct v4l2_pix_format vga_mode[] = { | 
| Jean-Francois Moine | c2446b3 | 2008-07-05 11:49:20 -0300 | [diff] [blame] | 94 | {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 95 | .bytesperline = 320, | 
|  | 96 | .sizeimage = 320 * 240 * 3 / 8 + 590, | 
|  | 97 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 98 | .priv = 1}, | 
|  | 99 | {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 100 | .bytesperline = 640, | 
|  | 101 | .sizeimage = 640 * 480 * 3 / 8 + 590, | 
|  | 102 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 103 | .priv = 0}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 104 | }; | 
|  | 105 |  | 
| Hans de Goede | 9919fe8 | 2010-01-13 07:12:28 -0300 | [diff] [blame] | 106 | static const struct v4l2_pix_format broken_vga_mode[] = { | 
|  | 107 | {320, 232, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 108 | .bytesperline = 320, | 
|  | 109 | .sizeimage = 320 * 232 * 4 / 8 + 590, | 
|  | 110 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 111 | .priv = 1}, | 
|  | 112 | {640, 472, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 113 | .bytesperline = 640, | 
|  | 114 | .sizeimage = 640 * 472 * 3 / 8 + 590, | 
|  | 115 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 116 | .priv = 0}, | 
|  | 117 | }; | 
|  | 118 |  | 
| Jean-Francois Moine | cc611b8 | 2008-12-29 07:49:41 -0300 | [diff] [blame] | 119 | static const struct v4l2_pix_format sif_mode[] = { | 
| Jean-Francois Moine | c2446b3 | 2008-07-05 11:49:20 -0300 | [diff] [blame] | 120 | {176, 144, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 121 | .bytesperline = 176, | 
|  | 122 | .sizeimage = 176 * 144 * 3 / 8 + 590, | 
|  | 123 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 124 | .priv = 1}, | 
|  | 125 | {352, 288, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, | 
|  | 126 | .bytesperline = 352, | 
|  | 127 | .sizeimage = 352 * 288 * 3 / 8 + 590, | 
|  | 128 | .colorspace = V4L2_COLORSPACE_JPEG, | 
|  | 129 | .priv = 0}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 130 | }; | 
|  | 131 |  | 
| Hans de Goede | 1b3bbcf | 2012-05-06 09:28:26 -0300 | [diff] [blame] | 132 | /* | 
|  | 133 | * Bridge reg08 bits 1-2 -> JPEG quality conversion table. Note the highest | 
|  | 134 | * quality setting is not usable as USB 1 does not have enough bandwidth. | 
|  | 135 | */ | 
|  | 136 | static u8 jpeg_qual[] = {50, 75, 87, /* 94 */}; | 
| Jean-François Moine | 30c73d4 | 2012-02-27 07:26:30 -0300 | [diff] [blame] | 137 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 138 | /* usb exchanges */ | 
|  | 139 | struct usb_action { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 140 | u8	req; | 
|  | 141 | u8	val; | 
|  | 142 | u16	idx; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 143 | }; | 
|  | 144 |  | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 145 | static const struct usb_action adcm2700_Initial[] = { | 
|  | 146 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc */ | 
|  | 147 | {0xa0, 0x04, ZC3XX_R002_CLOCKSELECT},		/* 00,02,04,cc */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 148 | {0xa0, 0x00, ZC3XX_R008_CLOCKSETTING},		/* 00,08,03,cc */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 149 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 150 | {0xa0, 0xd3, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,d3,cc */ | 
|  | 151 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 152 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc */ | 
|  | 153 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
|  | 154 | {0xa0, 0xd8, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,d8,cc */ | 
|  | 155 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 156 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 157 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 158 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc */ | 
|  | 159 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,00,cc */ | 
|  | 160 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,00,cc */ | 
|  | 161 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,00,cc */ | 
|  | 162 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,00,cc */ | 
|  | 163 | {0xa0, 0xde, ZC3XX_R09C_WINHEIGHTLOW},		/* 00,9c,de,cc */ | 
|  | 164 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,86,cc */ | 
|  | 165 | {0xbb, 0x00, 0x0400},				/* 04,00,00,bb */ | 
|  | 166 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 167 | {0xbb, 0x0f, 0x140f},				/* 14,0f,0f,bb */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 168 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,37,cc */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 169 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc */ | 
|  | 170 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},		/* 01,89,06,cc */ | 
|  | 171 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc */ | 
|  | 172 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc */ | 
|  | 173 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 174 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc */ | 
|  | 175 | {0xa0, 0x58, ZC3XX_R116_RGAIN},			/* 01,16,58,cc */ | 
|  | 176 | {0xa0, 0x5a, ZC3XX_R118_BGAIN},			/* 01,18,5a,cc */ | 
|  | 177 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,02,cc */ | 
|  | 178 | {0xa0, 0xd3, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,d3,cc */ | 
|  | 179 | {0xbb, 0x00, 0x0408},				/* 04,00,08,bb */ | 
|  | 180 | {0xdd, 0x00, 0x0200},				/* 00,02,00,dd */ | 
|  | 181 | {0xbb, 0x00, 0x0400},				/* 04,00,00,bb */ | 
|  | 182 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 183 | {0xbb, 0x0f, 0x140f},				/* 14,0f,0f,bb */ | 
|  | 184 | {0xbb, 0xe0, 0x0c2e},				/* 0c,e0,2e,bb */ | 
|  | 185 | {0xbb, 0x01, 0x2000},				/* 20,01,00,bb */ | 
|  | 186 | {0xbb, 0x96, 0x2400},				/* 24,96,00,bb */ | 
|  | 187 | {0xbb, 0x06, 0x1006},				/* 10,06,06,bb */ | 
|  | 188 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 189 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 190 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 191 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 192 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 193 | {0xbb, 0x5f, 0x2090},				/* 20,5f,90,bb */ | 
|  | 194 | {0xbb, 0x01, 0x8000},				/* 80,01,00,bb */ | 
|  | 195 | {0xbb, 0x09, 0x8400},				/* 84,09,00,bb */ | 
|  | 196 | {0xbb, 0x86, 0x0002},				/* 00,86,02,bb */ | 
|  | 197 | {0xbb, 0xe6, 0x0401},				/* 04,e6,01,bb */ | 
|  | 198 | {0xbb, 0x86, 0x0802},				/* 08,86,02,bb */ | 
|  | 199 | {0xbb, 0xe6, 0x0c01},				/* 0c,e6,01,bb */ | 
|  | 200 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 201 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 202 | {0xaa, 0xfe, 0x0000},				/* 00,fe,00,aa */ | 
|  | 203 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 204 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 205 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 206 | {0xaa, 0xfe, 0x0020},				/* 00,fe,20,aa */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 207 | /*mswin+*/ | 
|  | 208 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 209 | {0xaa, 0xfe, 0x0002}, | 
|  | 210 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 211 | {0xaa, 0xb4, 0xcd37}, | 
|  | 212 | {0xaa, 0xa4, 0x0004}, | 
|  | 213 | {0xaa, 0xa8, 0x0007}, | 
|  | 214 | {0xaa, 0xac, 0x0004}, | 
|  | 215 | /*mswin-*/ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 216 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 217 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 218 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 219 | {0xaa, 0xfe, 0x0000},				/* 00,fe,00,aa */ | 
|  | 220 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 221 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 222 | {0xbb, 0x04, 0x0400},				/* 04,04,00,bb */ | 
|  | 223 | {0xdd, 0x00, 0x0100},				/* 00,01,00,dd */ | 
|  | 224 | {0xbb, 0x01, 0x0400},				/* 04,01,00,bb */ | 
|  | 225 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 226 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 227 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 228 | {0xbb, 0x41, 0x2803},				/* 28,41,03,bb */ | 
|  | 229 | {0xbb, 0x40, 0x2c03},				/* 2c,40,03,bb */ | 
|  | 230 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 231 | {0xaa, 0xfe, 0x0010},				/* 00,fe,10,aa */ | 
|  | 232 | {} | 
|  | 233 | }; | 
|  | 234 | static const struct usb_action adcm2700_InitialScale[] = { | 
|  | 235 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc */ | 
|  | 236 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},		/* 00,02,10,cc */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 237 | {0xa0, 0x00, ZC3XX_R008_CLOCKSETTING},		/* 00,08,03,cc */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 238 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 239 | {0xa0, 0xd3, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,d3,cc */ | 
|  | 240 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 241 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc */ | 
|  | 242 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
|  | 243 | {0xa0, 0xd0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,d0,cc */ | 
|  | 244 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 245 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 246 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 247 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc */ | 
|  | 248 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,00,cc */ | 
|  | 249 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,00,cc */ | 
|  | 250 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,00,cc */ | 
|  | 251 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,00,cc */ | 
|  | 252 | {0xa0, 0xd8, ZC3XX_R09C_WINHEIGHTLOW},		/* 00,9c,d8,cc */ | 
|  | 253 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,88,cc */ | 
|  | 254 | {0xbb, 0x00, 0x0400},				/* 04,00,00,bb */ | 
|  | 255 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 256 | {0xbb, 0x0f, 0x140f},				/* 14,0f,0f,bb */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 257 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,37,cc */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 258 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc */ | 
|  | 259 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},		/* 01,89,06,cc */ | 
|  | 260 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc */ | 
|  | 261 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc */ | 
|  | 262 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 263 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc */ | 
|  | 264 | {0xa0, 0x58, ZC3XX_R116_RGAIN},			/* 01,16,58,cc */ | 
|  | 265 | {0xa0, 0x5a, ZC3XX_R118_BGAIN},			/* 01,18,5a,cc */ | 
|  | 266 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,02,cc */ | 
|  | 267 | {0xa0, 0xd3, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,d3,cc */ | 
|  | 268 | {0xbb, 0x00, 0x0408},				/* 04,00,08,bb */ | 
|  | 269 | {0xdd, 0x00, 0x0200},				/* 00,02,00,dd */ | 
|  | 270 | {0xbb, 0x00, 0x0400},				/* 04,00,00,bb */ | 
|  | 271 | {0xdd, 0x00, 0x0050},				/* 00,00,50,dd */ | 
|  | 272 | {0xbb, 0x0f, 0x140f},				/* 14,0f,0f,bb */ | 
|  | 273 | {0xbb, 0xe0, 0x0c2e},				/* 0c,e0,2e,bb */ | 
|  | 274 | {0xbb, 0x01, 0x2000},				/* 20,01,00,bb */ | 
|  | 275 | {0xbb, 0x96, 0x2400},				/* 24,96,00,bb */ | 
|  | 276 | {0xbb, 0x06, 0x1006},				/* 10,06,06,bb */ | 
|  | 277 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 278 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 279 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 280 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 281 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 282 | {0xbb, 0x5f, 0x2090},				/* 20,5f,90,bb */ | 
|  | 283 | {0xbb, 0x01, 0x8000},				/* 80,01,00,bb */ | 
|  | 284 | {0xbb, 0x09, 0x8400},				/* 84,09,00,bb */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 285 | {0xbb, 0x86, 0x0002},				/* 00,88,02,bb */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 286 | {0xbb, 0xe6, 0x0401},				/* 04,e6,01,bb */ | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 287 | {0xbb, 0x86, 0x0802},				/* 08,88,02,bb */ | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 288 | {0xbb, 0xe6, 0x0c01},				/* 0c,e6,01,bb */ | 
|  | 289 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 290 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 291 | {0xaa, 0xfe, 0x0000},				/* 00,fe,00,aa */ | 
|  | 292 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 293 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 294 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 295 | {0xaa, 0xfe, 0x0020},				/* 00,fe,20,aa */ | 
|  | 296 | /*******/ | 
|  | 297 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 298 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 299 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 300 | {0xaa, 0xfe, 0x0000},				/* 00,fe,00,aa */ | 
|  | 301 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 302 | {0xdd, 0x00, 0x0010},				/* 00,00,10,dd */ | 
|  | 303 | {0xbb, 0x04, 0x0400},				/* 04,04,00,bb */ | 
|  | 304 | {0xdd, 0x00, 0x0100},				/* 00,01,00,dd */ | 
|  | 305 | {0xbb, 0x01, 0x0400},				/* 04,01,00,bb */ | 
|  | 306 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 307 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 308 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 309 | {0xbb, 0x41, 0x2803},				/* 28,41,03,bb */ | 
|  | 310 | {0xbb, 0x40, 0x2c03},				/* 2c,40,03,bb */ | 
|  | 311 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 312 | {0xaa, 0xfe, 0x0010},				/* 00,fe,10,aa */ | 
|  | 313 | {} | 
|  | 314 | }; | 
|  | 315 | static const struct usb_action adcm2700_50HZ[] = { | 
|  | 316 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 317 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 318 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 319 | {0xbb, 0x05, 0x8400},				/* 84,05,00,bb */ | 
|  | 320 | {0xbb, 0xd0, 0xb007},				/* b0,d0,07,bb */ | 
|  | 321 | {0xbb, 0xa0, 0xb80f},				/* b8,a0,0f,bb */ | 
|  | 322 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 323 | {0xaa, 0xfe, 0x0010},				/* 00,fe,10,aa */ | 
|  | 324 | {0xaa, 0x26, 0x00d0},				/* 00,26,d0,aa */ | 
|  | 325 | {0xaa, 0x28, 0x0002},				/* 00,28,02,aa */ | 
|  | 326 | {} | 
|  | 327 | }; | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 328 | static const struct usb_action adcm2700_60HZ[] = { | 
|  | 329 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 330 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 331 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 332 | {0xbb, 0x07, 0x8400},				/* 84,07,00,bb */ | 
|  | 333 | {0xbb, 0x82, 0xb006},				/* b0,82,06,bb */ | 
|  | 334 | {0xbb, 0x04, 0xb80d},				/* b8,04,0d,bb */ | 
|  | 335 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 336 | {0xaa, 0xfe, 0x0010},				/* 00,fe,10,aa */ | 
|  | 337 | {0xaa, 0x26, 0x0057},				/* 00,26,57,aa */ | 
|  | 338 | {0xaa, 0x28, 0x0002},				/* 00,28,02,aa */ | 
|  | 339 | {} | 
|  | 340 | }; | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 341 | static const struct usb_action adcm2700_NoFliker[] = { | 
|  | 342 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 343 | {0xaa, 0xfe, 0x0002},				/* 00,fe,02,aa */ | 
|  | 344 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0a,cc */ | 
|  | 345 | {0xbb, 0x07, 0x8400},				/* 84,07,00,bb */ | 
|  | 346 | {0xbb, 0x05, 0xb000},				/* b0,05,00,bb */ | 
|  | 347 | {0xbb, 0xa0, 0xb801},				/* b8,a0,01,bb */ | 
|  | 348 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 349 | {0xaa, 0xfe, 0x0010},				/* 00,fe,10,aa */ | 
|  | 350 | {} | 
|  | 351 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 352 | static const struct usb_action cs2102_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 353 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 354 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 355 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 356 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 357 | {0xa0, 0x20, ZC3XX_R080_HBLANKHIGH}, | 
|  | 358 | {0xa0, 0x21, ZC3XX_R081_HBLANKLOW}, | 
|  | 359 | {0xa0, 0x30, ZC3XX_R083_RGAINADDR}, | 
|  | 360 | {0xa0, 0x31, ZC3XX_R084_GGAINADDR}, | 
|  | 361 | {0xa0, 0x32, ZC3XX_R085_BGAINADDR}, | 
|  | 362 | {0xa0, 0x23, ZC3XX_R086_EXPTIMEHIGH}, | 
|  | 363 | {0xa0, 0x24, ZC3XX_R087_EXPTIMEMID}, | 
|  | 364 | {0xa0, 0x25, ZC3XX_R088_EXPTIMELOW}, | 
|  | 365 | {0xa0, 0xb3, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 366 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 367 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 368 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 369 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 370 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 371 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 372 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 373 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 374 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 375 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 376 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 377 | {0xaa, 0x02, 0x0008}, | 
|  | 378 | {0xaa, 0x03, 0x0000}, | 
|  | 379 | {0xaa, 0x11, 0x0000}, | 
|  | 380 | {0xaa, 0x12, 0x0089}, | 
|  | 381 | {0xaa, 0x13, 0x0000}, | 
|  | 382 | {0xaa, 0x14, 0x00e9}, | 
|  | 383 | {0xaa, 0x20, 0x0000}, | 
|  | 384 | {0xaa, 0x22, 0x0000}, | 
|  | 385 | {0xaa, 0x0b, 0x0004}, | 
|  | 386 | {0xaa, 0x30, 0x0030}, | 
|  | 387 | {0xaa, 0x31, 0x0030}, | 
|  | 388 | {0xaa, 0x32, 0x0030}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 389 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 390 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 391 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 392 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 393 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 394 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 395 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 396 | {0xa0, 0x10, 0x01ae}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 397 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 398 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 399 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 400 | {0xa0, 0x00, 0x01ad}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 401 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 402 | }; | 
|  | 403 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 404 | static const struct usb_action cs2102_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 405 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 406 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 407 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 408 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 409 | {0xa0, 0x20, ZC3XX_R080_HBLANKHIGH}, | 
|  | 410 | {0xa0, 0x21, ZC3XX_R081_HBLANKLOW}, | 
|  | 411 | {0xa0, 0x30, ZC3XX_R083_RGAINADDR}, | 
|  | 412 | {0xa0, 0x31, ZC3XX_R084_GGAINADDR}, | 
|  | 413 | {0xa0, 0x32, ZC3XX_R085_BGAINADDR}, | 
|  | 414 | {0xa0, 0x23, ZC3XX_R086_EXPTIMEHIGH}, | 
|  | 415 | {0xa0, 0x24, ZC3XX_R087_EXPTIMEMID}, | 
|  | 416 | {0xa0, 0x25, ZC3XX_R088_EXPTIMELOW}, | 
|  | 417 | {0xa0, 0xb3, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 418 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 419 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 420 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 421 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 422 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 423 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 424 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 425 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 426 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 427 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 428 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 429 | {0xaa, 0x02, 0x0008}, | 
|  | 430 | {0xaa, 0x03, 0x0000}, | 
|  | 431 | {0xaa, 0x11, 0x0001}, | 
|  | 432 | {0xaa, 0x12, 0x0087}, | 
|  | 433 | {0xaa, 0x13, 0x0001}, | 
|  | 434 | {0xaa, 0x14, 0x00e7}, | 
|  | 435 | {0xaa, 0x20, 0x0000}, | 
|  | 436 | {0xaa, 0x22, 0x0000}, | 
|  | 437 | {0xaa, 0x0b, 0x0004}, | 
|  | 438 | {0xaa, 0x30, 0x0030}, | 
|  | 439 | {0xaa, 0x31, 0x0030}, | 
|  | 440 | {0xaa, 0x32, 0x0030}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 441 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 442 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 443 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 444 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 445 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 446 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 447 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 448 | {0xa0, 0x15, 0x01ae}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 449 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 450 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 451 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 452 | {0xa0, 0x00, 0x01ad}, | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 453 | {} | 
|  | 454 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 455 | static const struct usb_action cs2102_50HZScale[] = { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 456 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 457 | {0xaa, 0x23, 0x0001}, | 
|  | 458 | {0xaa, 0x24, 0x005f}, | 
|  | 459 | {0xaa, 0x25, 0x0090}, | 
|  | 460 | {0xaa, 0x21, 0x00dd}, | 
|  | 461 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 462 | {0xa0, 0xbf, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 463 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 464 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 465 | {0xa0, 0x3a, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 466 | {0xa0, 0x98, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 467 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 468 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 469 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 470 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 471 | {0xa0, 0xdd, ZC3XX_R01D_HSYNC_0}, | 
|  | 472 | {0xa0, 0xe4, ZC3XX_R01E_HSYNC_1}, | 
|  | 473 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, | 
|  | 474 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 475 | {} | 
|  | 476 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 477 | static const struct usb_action cs2102_50HZ[] = { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 478 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 479 | {0xaa, 0x23, 0x0000}, | 
|  | 480 | {0xaa, 0x24, 0x00af}, | 
|  | 481 | {0xaa, 0x25, 0x00c8}, | 
|  | 482 | {0xaa, 0x21, 0x0068}, | 
|  | 483 | {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 484 | {0xa0, 0x5f, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 485 | {0xa0, 0x90, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 486 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 487 | {0xa0, 0x1d, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 488 | {0xa0, 0x4c, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 489 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 490 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 491 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 492 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 493 | {0xa0, 0x68, ZC3XX_R01D_HSYNC_0}, | 
|  | 494 | {0xa0, 0xe3, ZC3XX_R01E_HSYNC_1}, | 
|  | 495 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, | 
|  | 496 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 497 | {} | 
|  | 498 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 499 | static const struct usb_action cs2102_60HZScale[] = { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 500 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 501 | {0xaa, 0x23, 0x0001}, | 
|  | 502 | {0xaa, 0x24, 0x0055}, | 
|  | 503 | {0xaa, 0x25, 0x00cc}, | 
|  | 504 | {0xaa, 0x21, 0x003f}, | 
|  | 505 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 506 | {0xa0, 0xab, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 507 | {0xa0, 0x98, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 508 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 509 | {0xa0, 0x30, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 510 | {0xa0, 0xd4, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 511 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 512 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 513 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 514 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 515 | {0xa0, 0x39, ZC3XX_R01D_HSYNC_0}, | 
|  | 516 | {0xa0, 0x70, ZC3XX_R01E_HSYNC_1}, | 
|  | 517 | {0xa0, 0xb0, ZC3XX_R01F_HSYNC_2}, | 
|  | 518 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 519 | {} | 
|  | 520 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 521 | static const struct usb_action cs2102_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 522 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 523 | {0xaa, 0x23, 0x0000}, | 
|  | 524 | {0xaa, 0x24, 0x00aa}, | 
|  | 525 | {0xaa, 0x25, 0x00e6}, | 
|  | 526 | {0xaa, 0x21, 0x003f}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 527 | {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 528 | {0xa0, 0x55, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 529 | {0xa0, 0xcc, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 530 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 531 | {0xa0, 0x18, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 532 | {0xa0, 0x6a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 533 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 534 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 535 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 536 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 537 | {0xa0, 0x3f, ZC3XX_R01D_HSYNC_0}, | 
|  | 538 | {0xa0, 0xa5, ZC3XX_R01E_HSYNC_1}, | 
|  | 539 | {0xa0, 0xf0, ZC3XX_R01F_HSYNC_2}, | 
|  | 540 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 541 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 542 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 543 | static const struct usb_action cs2102_NoFlikerScale[] = { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 544 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 545 | {0xaa, 0x23, 0x0001}, | 
|  | 546 | {0xaa, 0x24, 0x005f}, | 
|  | 547 | {0xaa, 0x25, 0x0000}, | 
|  | 548 | {0xaa, 0x21, 0x0001}, | 
|  | 549 | {0xa0, 0x02, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 550 | {0xa0, 0xbf, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 551 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 552 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 553 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 554 | {0xa0, 0x80, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 555 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 556 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 557 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 558 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 559 | {0xa0, 0x01, ZC3XX_R01D_HSYNC_0}, | 
|  | 560 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | 
|  | 561 | {0xa0, 0xa0, ZC3XX_R01F_HSYNC_2}, | 
|  | 562 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 563 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 564 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 565 | static const struct usb_action cs2102_NoFliker[] = { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 566 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 567 | {0xaa, 0x23, 0x0000}, | 
|  | 568 | {0xaa, 0x24, 0x00af}, | 
|  | 569 | {0xaa, 0x25, 0x0080}, | 
|  | 570 | {0xaa, 0x21, 0x0001}, | 
|  | 571 | {0xa0, 0x01, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 572 | {0xa0, 0x5f, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 573 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 574 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 575 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 576 | {0xa0, 0x80, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 577 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 578 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 579 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 580 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 581 | {0xa0, 0x01, ZC3XX_R01D_HSYNC_0}, | 
|  | 582 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | 
|  | 583 | {0xa0, 0xa0, ZC3XX_R01F_HSYNC_2}, | 
|  | 584 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 585 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 586 | }; | 
|  | 587 |  | 
|  | 588 | /* CS2102_KOCOM */ | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 589 | static const struct usb_action cs2102K_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 590 | {0xa0, 0x11, ZC3XX_R002_CLOCKSELECT}, | 
|  | 591 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 592 | {0xa0, 0x08, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 593 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 594 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 595 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 596 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 597 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 598 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 599 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 600 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 601 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 602 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 603 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 604 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 605 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 606 | {0xa0, 0x55, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 607 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 608 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 609 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 610 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 611 | {0xa0, 0x0a, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 612 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 613 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 614 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 615 | {0xa0, 0x0b, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 616 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 617 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 618 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 619 | {0xa0, 0x0c, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 620 | {0xa0, 0x7c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 621 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 622 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 623 | {0xa0, 0x0d, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 624 | {0xa0, 0xa3, ZC3XX_R093_I2CSETVALUE}, | 
|  | 625 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 626 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 627 | {0xa0, 0x03, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 628 | {0xa0, 0xfb, ZC3XX_R093_I2CSETVALUE}, | 
|  | 629 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 630 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 631 | {0xa0, 0x05, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 632 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 633 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 634 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 635 | {0xa0, 0x06, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 636 | {0xa0, 0x03, ZC3XX_R093_I2CSETVALUE}, | 
|  | 637 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 638 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 639 | {0xa0, 0x09, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 640 | {0xa0, 0x08, ZC3XX_R093_I2CSETVALUE}, | 
|  | 641 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 642 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 643 | {0xa0, 0x0e, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 644 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 645 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 646 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 647 | {0xa0, 0x0f, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 648 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 649 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 650 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 651 | {0xa0, 0x10, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 652 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 653 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 654 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 655 | {0xa0, 0x11, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 656 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 657 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 658 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 659 | {0xa0, 0x12, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 660 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 661 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 662 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 663 | {0xa0, 0x15, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 664 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 665 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 666 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 667 | {0xa0, 0x16, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 668 | {0xa0, 0x0c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 669 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 670 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 671 | {0xa0, 0x17, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 672 | {0xa0, 0x0c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 673 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 674 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 675 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 676 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 677 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 678 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 679 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 680 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 681 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 
|  | 682 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 683 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 684 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 685 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 686 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID}, | 
|  | 687 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW}, | 
|  | 688 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 689 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 690 | {0xa0, 0x00, 0x01ad}, | 
|  | 691 | {0xa0, 0x01, 0x01b1}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 692 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 693 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 694 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 695 | {0xa0, 0x4c, ZC3XX_R118_BGAIN}, | 
|  | 696 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 697 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
|  | 698 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 699 | {0xa0, 0x13, ZC3XX_R120_GAMMA00},	/* gamma 4 */ | 
|  | 700 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | 
|  | 701 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | 
|  | 702 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | 
|  | 703 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | 
|  | 704 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | 
|  | 705 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | 
|  | 706 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | 
|  | 707 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | 
|  | 708 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | 
|  | 709 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | 
|  | 710 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | 
|  | 711 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | 
|  | 712 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | 
|  | 713 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | 
|  | 714 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 715 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | 
|  | 716 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | 
|  | 717 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 
|  | 718 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 
|  | 719 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 
|  | 720 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 
|  | 721 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 
|  | 722 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | 
|  | 723 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 
|  | 724 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 
|  | 725 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 
|  | 726 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 
|  | 727 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | 
|  | 728 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | 
|  | 729 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | 
|  | 730 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | 
|  | 731 | {0xa0, 0x58, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 732 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | 
|  | 733 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 734 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | 
|  | 735 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | 
|  | 736 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | 
|  | 737 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | 
|  | 738 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | 
|  | 739 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | 
|  | 740 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 741 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 742 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 743 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 744 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 745 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 746 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 747 | {0xa0, 0x22, ZC3XX_R093_I2CSETVALUE}, | 
|  | 748 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 749 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 750 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 751 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 752 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 753 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 754 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 755 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 756 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 757 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 758 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 759 | {0xa0, 0x22, ZC3XX_R093_I2CSETVALUE}, | 
|  | 760 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 761 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 762 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 763 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 764 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 765 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 766 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | 
|  | 767 | {0xa0, 0x22, ZC3XX_R0A4_EXPOSURETIMELOW}, | 
|  | 768 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 769 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 770 | {0xa0, 0xee, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 771 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 772 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 773 | {0xa0, 0x3a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 774 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 775 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 776 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 777 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 778 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, | 
|  | 779 | {0xa0, 0x0f, ZC3XX_R01E_HSYNC_1}, | 
|  | 780 | {0xa0, 0x19, ZC3XX_R01F_HSYNC_2}, | 
|  | 781 | {0xa0, 0x1f, ZC3XX_R020_HSYNC_3}, | 
|  | 782 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 783 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 784 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 785 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 786 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 787 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 788 | {0xa0, 0x4c, ZC3XX_R118_BGAIN}, | 
|  | 789 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 790 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 791 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 792 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 793 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 794 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 795 | {0xa0, 0x5c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 796 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 797 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 798 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 799 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 800 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 801 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 802 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 803 | {0xa0, 0x5c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 804 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 805 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 806 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 807 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 808 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 809 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 810 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 811 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 812 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 813 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 814 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 815 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 816 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 817 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 818 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 819 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 820 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 821 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 822 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 823 | {0xa0, 0x96, ZC3XX_R093_I2CSETVALUE}, | 
|  | 824 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 825 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 826 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 827 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 828 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 829 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 830 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 831 | {0xa0, 0x96, ZC3XX_R093_I2CSETVALUE}, | 
|  | 832 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 833 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 834 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 835 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 836 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 837 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 838 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 839 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 840 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 841 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 842 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 843 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 844 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 845 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 846 | }; | 
|  | 847 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 848 | static const struct usb_action cs2102K_Initial[] = { | 
| Jean-Francois Moine | f1ee8e8 | 2009-01-20 08:14:17 -0300 | [diff] [blame] | 849 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 850 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 851 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 852 | {0xa0, 0x08, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 853 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 854 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 855 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 856 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 857 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 858 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 859 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 860 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 861 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 862 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 863 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 864 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 865 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | f1ee8e8 | 2009-01-20 08:14:17 -0300 | [diff] [blame] | 866 | /*fixme: next sequence = i2c exchanges*/ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 867 | {0xa0, 0x55, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 868 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 869 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 870 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 871 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 872 | {0xa0, 0x0a, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 873 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 874 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 875 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 876 | {0xa0, 0x0b, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 877 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 878 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 879 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 880 | {0xa0, 0x0c, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 881 | {0xa0, 0x7b, ZC3XX_R093_I2CSETVALUE}, | 
|  | 882 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 883 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 884 | {0xa0, 0x0d, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 885 | {0xa0, 0xa3, ZC3XX_R093_I2CSETVALUE}, | 
|  | 886 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 887 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 888 | {0xa0, 0x03, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 889 | {0xa0, 0xfb, ZC3XX_R093_I2CSETVALUE}, | 
|  | 890 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 891 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 892 | {0xa0, 0x05, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 893 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 894 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 895 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 896 | {0xa0, 0x06, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 897 | {0xa0, 0x03, ZC3XX_R093_I2CSETVALUE}, | 
|  | 898 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 899 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 900 | {0xa0, 0x09, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 901 | {0xa0, 0x08, ZC3XX_R093_I2CSETVALUE}, | 
|  | 902 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 903 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 904 | {0xa0, 0x0e, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 905 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 906 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 907 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 908 | {0xa0, 0x0f, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 909 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 910 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 911 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 912 | {0xa0, 0x10, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 913 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 914 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 915 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 916 | {0xa0, 0x11, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 917 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 918 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 919 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 920 | {0xa0, 0x12, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 921 | {0xa0, 0x18, ZC3XX_R093_I2CSETVALUE}, | 
|  | 922 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 923 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 924 | {0xa0, 0x15, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 925 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 926 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 927 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 928 | {0xa0, 0x16, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 929 | {0xa0, 0x0c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 930 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 931 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 932 | {0xa0, 0x17, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 933 | {0xa0, 0x0c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 934 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 935 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 936 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 937 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 938 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 939 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 940 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 941 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 942 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 
|  | 943 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 944 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 945 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 946 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 947 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID}, | 
|  | 948 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW}, | 
|  | 949 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 950 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 951 | {0xa0, 0x00, 0x01ad}, | 
|  | 952 | {0xa0, 0x01, 0x01b1}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 953 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 954 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 955 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 956 | {0xa0, 0x4c, ZC3XX_R118_BGAIN}, | 
|  | 957 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 958 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
|  | 959 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 960 | {0xa0, 0x13, ZC3XX_R120_GAMMA00},	/* gamma 4 */ | 
|  | 961 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | 
|  | 962 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | 
|  | 963 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | 
|  | 964 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | 
|  | 965 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | 
|  | 966 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | 
|  | 967 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | 
|  | 968 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | 
|  | 969 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | 
|  | 970 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | 
|  | 971 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | 
|  | 972 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | 
|  | 973 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | 
|  | 974 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | 
|  | 975 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 976 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | 
|  | 977 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | 
|  | 978 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 
|  | 979 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 
|  | 980 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 
|  | 981 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 
|  | 982 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 
|  | 983 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | 
|  | 984 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 
|  | 985 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 
|  | 986 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 
|  | 987 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 
|  | 988 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | 
|  | 989 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | 
|  | 990 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | 
|  | 991 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | 
|  | 992 | {0xa0, 0x58, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 993 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | 
|  | 994 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 995 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | 
|  | 996 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | 
|  | 997 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | 
|  | 998 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | 
|  | 999 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | 
|  | 1000 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | 
|  | 1001 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1002 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 1003 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1004 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1005 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1006 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1007 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1008 | {0xa0, 0x22, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1009 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1010 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1011 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1012 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1013 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1014 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1015 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1016 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1017 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1018 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1019 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1020 | {0xa0, 0x22, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1021 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1022 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1023 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1024 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1025 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1026 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1027 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | 
|  | 1028 | {0xa0, 0x22, ZC3XX_R0A4_EXPOSURETIMELOW}, | 
|  | 1029 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 1030 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 1031 | {0xa0, 0xee, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 1032 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 1033 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 1034 | {0xa0, 0x3a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 1035 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 1036 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 1037 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 1038 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 1039 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, | 
|  | 1040 | {0xa0, 0x0f, ZC3XX_R01E_HSYNC_1}, | 
|  | 1041 | {0xa0, 0x19, ZC3XX_R01F_HSYNC_2}, | 
|  | 1042 | {0xa0, 0x1f, ZC3XX_R020_HSYNC_3}, | 
|  | 1043 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 1044 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 1045 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1046 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1047 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 1048 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 1049 | {0xa0, 0x4c, ZC3XX_R118_BGAIN}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1050 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1051 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1052 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1053 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1054 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1055 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1056 | {0xa0, 0x5c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1057 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1058 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1059 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1060 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1061 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1062 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1063 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1064 | {0xa0, 0x5c, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1065 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1066 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1067 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1068 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1069 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1070 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1071 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1072 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1073 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1074 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1075 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1076 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1077 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1078 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1079 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1080 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1081 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1082 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1083 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1084 | {0xa0, 0x96, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1085 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1086 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1087 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1088 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1089 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1090 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1091 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1092 | {0xa0, 0x96, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1093 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1094 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1095 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1096 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1097 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1098 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1099 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1100 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1101 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1102 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1103 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1104 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1105 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
| Jean-Francois Moine | f1ee8e8 | 2009-01-20 08:14:17 -0300 | [diff] [blame] | 1106 | /*fixme:what does the next sequence?*/ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1107 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1108 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1109 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1110 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1111 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1112 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1113 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1114 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1115 | {0xa0, 0xd0, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1116 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1117 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1118 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1119 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1120 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1121 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1122 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1123 | {0xa0, 0xd0, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1124 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1125 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1126 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1127 | {0xa0, 0x01, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1128 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1129 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1130 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1131 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1132 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1133 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1134 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1135 | {0xa0, 0x02, ZC3XX_R008_CLOCKSETTING}, | 
|  | 1136 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1137 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1138 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1139 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1140 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1141 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1142 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1143 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1144 | {0xa0, 0x0a, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1145 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1146 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1147 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1148 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1149 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1150 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1151 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1152 | {0xa0, 0x0a, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1153 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1154 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1155 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1156 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1157 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1158 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1159 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1160 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1161 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1162 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1163 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1164 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1165 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1166 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1167 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1168 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1169 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1170 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1171 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1172 | {0xa0, 0x44, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1173 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1174 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1175 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1176 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1177 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1178 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1179 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1180 | {0xa0, 0x44, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1181 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1182 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1183 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1184 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1185 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1186 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1187 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1188 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1189 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1190 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1191 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1192 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1193 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1194 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1195 | {0xa0, 0x20, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1196 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1197 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1198 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1199 | {0xa0, 0x21, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1200 | {0xa0, 0x7e, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1201 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1202 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1203 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1204 | {0xa0, 0x00, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1205 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1206 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1207 | {0xa0, 0x13, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1208 | {0xa0, 0x7e, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1209 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1210 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1211 | {0xa0, 0x14, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1212 | {0xa0, 0x02, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1213 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1214 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1215 | {0xa0, 0x18, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 1216 | {0xa0, 0x04, ZC3XX_R093_I2CSETVALUE}, | 
|  | 1217 | {0xa0, 0x00, ZC3XX_R094_I2CWRITEACK}, | 
|  | 1218 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
|  | 1219 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1220 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1221 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 1222 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1223 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1224 | }; | 
|  | 1225 |  | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 1226 | static const struct usb_action gc0305_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1227 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},	/* 00,00,01,cc */ | 
|  | 1228 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00,08,03,cc */ | 
|  | 1229 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 1230 | {0xa0, 0x04, ZC3XX_R002_CLOCKSELECT},	/* 00,02,04,cc */ | 
|  | 1231 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 1232 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},	/* 00,04,80,cc */ | 
|  | 1233 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
|  | 1234 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,e0,cc */ | 
|  | 1235 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 1236 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 1237 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 1238 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},	/* 00,98,00,cc */ | 
|  | 1239 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},	/* 00,9a,00,cc */ | 
|  | 1240 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},	/* 01,1a,00,cc */ | 
|  | 1241 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},	/* 01,1c,00,cc */ | 
|  | 1242 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW},	/* 00,9c,e6,cc */ | 
|  | 1243 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW},	/* 00,9e,86,cc */ | 
|  | 1244 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},	/* 00,8b,98,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1245 | {0xaa, 0x13, 0x0002},	/* 00,13,02,aa */ | 
|  | 1246 | {0xaa, 0x15, 0x0003},	/* 00,15,03,aa */ | 
|  | 1247 | {0xaa, 0x01, 0x0000},	/* 00,01,00,aa */ | 
|  | 1248 | {0xaa, 0x02, 0x0000},	/* 00,02,00,aa */ | 
|  | 1249 | {0xaa, 0x1a, 0x0000},	/* 00,1a,00,aa */ | 
|  | 1250 | {0xaa, 0x1c, 0x0017},	/* 00,1c,17,aa */ | 
|  | 1251 | {0xaa, 0x1d, 0x0080},	/* 00,1d,80,aa */ | 
|  | 1252 | {0xaa, 0x1f, 0x0008},	/* 00,1f,08,aa */ | 
|  | 1253 | {0xaa, 0x21, 0x0012},	/* 00,21,12,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1254 | {0xa0, 0x82, ZC3XX_R086_EXPTIMEHIGH},	/* 00,86,82,cc */ | 
|  | 1255 | {0xa0, 0x83, ZC3XX_R087_EXPTIMEMID},	/* 00,87,83,cc */ | 
|  | 1256 | {0xa0, 0x84, ZC3XX_R088_EXPTIMELOW},	/* 00,88,84,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1257 | {0xaa, 0x05, 0x0000},	/* 00,05,00,aa */ | 
|  | 1258 | {0xaa, 0x0a, 0x0000},	/* 00,0a,00,aa */ | 
|  | 1259 | {0xaa, 0x0b, 0x00b0},	/* 00,0b,b0,aa */ | 
|  | 1260 | {0xaa, 0x0c, 0x0000},	/* 00,0c,00,aa */ | 
|  | 1261 | {0xaa, 0x0d, 0x00b0},	/* 00,0d,b0,aa */ | 
|  | 1262 | {0xaa, 0x0e, 0x0000},	/* 00,0e,00,aa */ | 
|  | 1263 | {0xaa, 0x0f, 0x00b0},	/* 00,0f,b0,aa */ | 
|  | 1264 | {0xaa, 0x10, 0x0000},	/* 00,10,00,aa */ | 
|  | 1265 | {0xaa, 0x11, 0x00b0},	/* 00,11,b0,aa */ | 
|  | 1266 | {0xaa, 0x16, 0x0001},	/* 00,16,01,aa */ | 
|  | 1267 | {0xaa, 0x17, 0x00e6},	/* 00,17,e6,aa */ | 
|  | 1268 | {0xaa, 0x18, 0x0002},	/* 00,18,02,aa */ | 
|  | 1269 | {0xaa, 0x19, 0x0086},	/* 00,19,86,aa */ | 
|  | 1270 | {0xaa, 0x20, 0x0000},	/* 00,20,00,aa */ | 
|  | 1271 | {0xaa, 0x1b, 0x0020},	/* 00,1b,20,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1272 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,b7,cc */ | 
|  | 1273 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc */ | 
|  | 1274 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},	/* 01,00,0d,cc */ | 
|  | 1275 | {0xa0, 0x76, ZC3XX_R189_AWBSTATUS},	/* 01,89,76,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1276 | {0xa0, 0x09, 0x01ad},	/* 01,ad,09,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1277 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},	/* 01,c5,03,cc */ | 
|  | 1278 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},	/* 01,cb,13,cc */ | 
|  | 1279 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 1280 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},	/* 03,01,08,cc */ | 
|  | 1281 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},	/* 01,a8,60,cc */ | 
|  | 1282 | {0xa0, 0x85, ZC3XX_R18D_YTARGET},	/* 01,8d,85,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1283 | {0xa0, 0x00, 0x011e},	/* 01,1e,00,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1284 | {0xa0, 0x52, ZC3XX_R116_RGAIN},	/* 01,16,52,cc */ | 
|  | 1285 | {0xa0, 0x40, ZC3XX_R117_GGAIN},	/* 01,17,40,cc */ | 
|  | 1286 | {0xa0, 0x52, ZC3XX_R118_BGAIN},	/* 01,18,52,cc */ | 
|  | 1287 | {0xa0, 0x03, ZC3XX_R113_RGB03},	/* 01,13,03,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1288 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1289 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 1290 | static const struct usb_action gc0305_InitialScale[] = { /* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1291 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},	/* 00,00,01,cc */ | 
|  | 1292 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00,08,03,cc */ | 
|  | 1293 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc */ | 
|  | 1294 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},	/* 00,02,10,cc */ | 
|  | 1295 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 1296 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},	/* 00,04,80,cc */ | 
|  | 1297 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
|  | 1298 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,e0,cc */ | 
|  | 1299 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 1300 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 1301 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 1302 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},	/* 00,98,00,cc */ | 
|  | 1303 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},	/* 00,9a,00,cc */ | 
|  | 1304 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},	/* 01,1a,00,cc */ | 
|  | 1305 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},	/* 01,1c,00,cc */ | 
|  | 1306 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW},	/* 00,9c,e8,cc */ | 
|  | 1307 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},	/* 00,9e,88,cc */ | 
|  | 1308 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},	/* 00,8b,98,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1309 | {0xaa, 0x13, 0x0000},	/* 00,13,00,aa */ | 
|  | 1310 | {0xaa, 0x15, 0x0001},	/* 00,15,01,aa */ | 
|  | 1311 | {0xaa, 0x01, 0x0000},	/* 00,01,00,aa */ | 
|  | 1312 | {0xaa, 0x02, 0x0000},	/* 00,02,00,aa */ | 
|  | 1313 | {0xaa, 0x1a, 0x0000},	/* 00,1a,00,aa */ | 
|  | 1314 | {0xaa, 0x1c, 0x0017},	/* 00,1c,17,aa */ | 
|  | 1315 | {0xaa, 0x1d, 0x0080},	/* 00,1d,80,aa */ | 
|  | 1316 | {0xaa, 0x1f, 0x0008},	/* 00,1f,08,aa */ | 
|  | 1317 | {0xaa, 0x21, 0x0012},	/* 00,21,12,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1318 | {0xa0, 0x82, ZC3XX_R086_EXPTIMEHIGH},	/* 00,86,82,cc */ | 
|  | 1319 | {0xa0, 0x83, ZC3XX_R087_EXPTIMEMID},	/* 00,87,83,cc */ | 
|  | 1320 | {0xa0, 0x84, ZC3XX_R088_EXPTIMELOW},	/* 00,88,84,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1321 | {0xaa, 0x05, 0x0000},	/* 00,05,00,aa */ | 
|  | 1322 | {0xaa, 0x0a, 0x0000},	/* 00,0a,00,aa */ | 
|  | 1323 | {0xaa, 0x0b, 0x00b0},	/* 00,0b,b0,aa */ | 
|  | 1324 | {0xaa, 0x0c, 0x0000},	/* 00,0c,00,aa */ | 
|  | 1325 | {0xaa, 0x0d, 0x00b0},	/* 00,0d,b0,aa */ | 
|  | 1326 | {0xaa, 0x0e, 0x0000},	/* 00,0e,00,aa */ | 
|  | 1327 | {0xaa, 0x0f, 0x00b0},	/* 00,0f,b0,aa */ | 
|  | 1328 | {0xaa, 0x10, 0x0000},	/* 00,10,00,aa */ | 
|  | 1329 | {0xaa, 0x11, 0x00b0},	/* 00,11,b0,aa */ | 
|  | 1330 | {0xaa, 0x16, 0x0001},	/* 00,16,01,aa */ | 
|  | 1331 | {0xaa, 0x17, 0x00e8},	/* 00,17,e8,aa */ | 
|  | 1332 | {0xaa, 0x18, 0x0002},	/* 00,18,02,aa */ | 
|  | 1333 | {0xaa, 0x19, 0x0088},	/* 00,19,88,aa */ | 
|  | 1334 | {0xaa, 0x20, 0x0000},	/* 00,20,00,aa */ | 
|  | 1335 | {0xaa, 0x1b, 0x0020},	/* 00,1b,20,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1336 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,b7,cc */ | 
|  | 1337 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc */ | 
|  | 1338 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},	/* 01,00,0d,cc */ | 
|  | 1339 | {0xa0, 0x76, ZC3XX_R189_AWBSTATUS},	/* 01,89,76,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1340 | {0xa0, 0x09, 0x01ad},	/* 01,ad,09,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1341 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},	/* 01,c5,03,cc */ | 
|  | 1342 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},	/* 01,cb,13,cc */ | 
|  | 1343 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 1344 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},	/* 03,01,08,cc */ | 
|  | 1345 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN},	/* 01,a8,60,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1346 | {0xa0, 0x00, 0x011e},	/* 01,1e,00,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1347 | {0xa0, 0x52, ZC3XX_R116_RGAIN},	/* 01,16,52,cc */ | 
|  | 1348 | {0xa0, 0x40, ZC3XX_R117_GGAIN},	/* 01,17,40,cc */ | 
|  | 1349 | {0xa0, 0x52, ZC3XX_R118_BGAIN},	/* 01,18,52,cc */ | 
|  | 1350 | {0xa0, 0x03, ZC3XX_R113_RGB03},	/* 01,13,03,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1351 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1352 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 1353 | static const struct usb_action gc0305_50HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1354 | {0xaa, 0x82, 0x0000},	/* 00,82,00,aa */ | 
|  | 1355 | {0xaa, 0x83, 0x0002},	/* 00,83,02,aa */ | 
|  | 1356 | {0xaa, 0x84, 0x0038},	/* 00,84,38,aa */	/* win: 00,84,ec */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1357 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
|  | 1358 | {0xa0, 0x0b, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,0b,cc */ | 
|  | 1359 | {0xa0, 0x18, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,18,cc */ | 
|  | 1360 | /* win: 01,92,10 */ | 
|  | 1361 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1362 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 1363 | {0xa0, 0x8e, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,8e,cc */ | 
|  | 1364 | /* win: 01,97,ec */ | 
|  | 1365 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},	/* 01,8c,0e,cc */ | 
|  | 1366 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,15,cc */ | 
|  | 1367 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,10,cc */ | 
|  | 1368 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1369 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},	/* 00,1d,62,cc */ | 
|  | 1370 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},	/* 00,1e,90,cc */ | 
|  | 1371 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},	/* 00,1f,c8,cc */ | 
|  | 1372 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},	/* 00,20,ff,cc */ | 
|  | 1373 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},	/* 01,1d,60,cc */ | 
|  | 1374 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc */ | 
|  | 1375 | /*	{0xa0, 0x85, ZC3XX_R18D_YTARGET},	 * 01,8d,85,cc * | 
|  | 1376 | * if 640x480 */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1377 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1378 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 1379 | static const struct usb_action gc0305_60HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1380 | {0xaa, 0x82, 0x0000},	/* 00,82,00,aa */ | 
|  | 1381 | {0xaa, 0x83, 0x0000},	/* 00,83,00,aa */ | 
|  | 1382 | {0xaa, 0x84, 0x00ec},	/* 00,84,ec,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1383 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
|  | 1384 | {0xa0, 0x0b, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,0b,cc */ | 
|  | 1385 | {0xa0, 0x10, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,10,cc */ | 
|  | 1386 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1387 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 1388 | {0xa0, 0xec, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,ec,cc */ | 
|  | 1389 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},	/* 01,8c,0e,cc */ | 
|  | 1390 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,15,cc */ | 
|  | 1391 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,10,cc */ | 
|  | 1392 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1393 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},	/* 00,1d,62,cc */ | 
|  | 1394 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},	/* 00,1e,90,cc */ | 
|  | 1395 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},	/* 00,1f,c8,cc */ | 
|  | 1396 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},	/* 00,20,ff,cc */ | 
|  | 1397 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},	/* 01,1d,60,cc */ | 
|  | 1398 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc */ | 
|  | 1399 | {0xa0, 0x80, ZC3XX_R18D_YTARGET},	/* 01,8d,80,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1400 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1401 | }; | 
|  | 1402 |  | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 1403 | static const struct usb_action gc0305_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1404 | {0xa0, 0x0c, ZC3XX_R100_OPERATIONMODE},	/* 01,00,0c,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1405 | {0xaa, 0x82, 0x0000},	/* 00,82,00,aa */ | 
|  | 1406 | {0xaa, 0x83, 0x0000},	/* 00,83,00,aa */ | 
|  | 1407 | {0xaa, 0x84, 0x0020},	/* 00,84,20,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1408 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
|  | 1409 | {0xa0, 0x00, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,00,cc */ | 
|  | 1410 | {0xa0, 0x48, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,48,cc */ | 
|  | 1411 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1412 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 1413 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,10,cc */ | 
|  | 1414 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},	/* 01,8c,0e,cc */ | 
|  | 1415 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,15,cc */ | 
|  | 1416 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},	/* 00,1d,62,cc */ | 
|  | 1417 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},	/* 00,1e,90,cc */ | 
|  | 1418 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},	/* 00,1f,c8,cc */ | 
|  | 1419 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},	/* 00,20,ff,cc */ | 
|  | 1420 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN},	/* 01,1d,60,cc */ | 
|  | 1421 | {0xa0, 0x03, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,03,cc */ | 
|  | 1422 | {0xa0, 0x80, ZC3XX_R18D_YTARGET},	/* 01,8d,80,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1423 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1424 | }; | 
|  | 1425 |  | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 1426 | static const struct usb_action hdcs2020_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1427 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 1428 | {0xa0, 0x11, ZC3XX_R002_CLOCKSELECT}, | 
|  | 1429 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* qtable 0x05 */ | 
|  | 1430 | {0xa0, 0x08, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 1431 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 1432 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 1433 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 1434 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 1435 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 1436 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1437 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1438 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 1439 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 1440 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 1441 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 1442 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 1443 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1444 | {0xaa, 0x1c, 0x0000}, | 
|  | 1445 | {0xaa, 0x0a, 0x0001}, | 
|  | 1446 | {0xaa, 0x0b, 0x0006}, | 
|  | 1447 | {0xaa, 0x0c, 0x007b}, | 
|  | 1448 | {0xaa, 0x0d, 0x00a7}, | 
|  | 1449 | {0xaa, 0x03, 0x00fb}, | 
|  | 1450 | {0xaa, 0x05, 0x0000}, | 
|  | 1451 | {0xaa, 0x06, 0x0003}, | 
|  | 1452 | {0xaa, 0x09, 0x0008}, | 
|  | 1453 |  | 
|  | 1454 | {0xaa, 0x0f, 0x0018},	/* set sensor gain */ | 
|  | 1455 | {0xaa, 0x10, 0x0018}, | 
|  | 1456 | {0xaa, 0x11, 0x0018}, | 
|  | 1457 | {0xaa, 0x12, 0x0018}, | 
|  | 1458 |  | 
|  | 1459 | {0xaa, 0x15, 0x004e}, | 
|  | 1460 | {0xaa, 0x1c, 0x0004}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1461 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 1462 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1463 | {0xa0, 0x70, ZC3XX_R18D_YTARGET}, | 
|  | 1464 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 1465 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 1466 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 1467 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 1468 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 1469 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1470 | {0xa1, 0x01, 0x0002}, | 
|  | 1471 | {0xa1, 0x01, 0x0008}, | 
|  | 1472 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1473 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1474 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 1475 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 1476 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1477 | {0xa1, 0x01, 0x0008}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1478 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 1479 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1480 | {0xa1, 0x01, 0x01c8}, | 
|  | 1481 | {0xa1, 0x01, 0x01c9}, | 
|  | 1482 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1483 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 1484 | {0xa0, 0x13, ZC3XX_R120_GAMMA00},	/* gamma 4 */ | 
|  | 1485 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | 
|  | 1486 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | 
|  | 1487 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | 
|  | 1488 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | 
|  | 1489 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | 
|  | 1490 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | 
|  | 1491 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | 
|  | 1492 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | 
|  | 1493 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | 
|  | 1494 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | 
|  | 1495 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | 
|  | 1496 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | 
|  | 1497 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | 
|  | 1498 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | 
|  | 1499 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 1500 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | 
|  | 1501 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | 
|  | 1502 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 
|  | 1503 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 
|  | 1504 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 
|  | 1505 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 
|  | 1506 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 
|  | 1507 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | 
|  | 1508 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 
|  | 1509 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 
|  | 1510 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 
|  | 1511 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 
|  | 1512 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | 
|  | 1513 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | 
|  | 1514 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | 
|  | 1515 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1516 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1517 | {0xa0, 0x66, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 1518 | {0xa0, 0xed, ZC3XX_R10B_RGB01}, | 
|  | 1519 | {0xa0, 0xed, ZC3XX_R10C_RGB02}, | 
|  | 1520 | {0xa0, 0xed, ZC3XX_R10D_RGB10}, | 
|  | 1521 | {0xa0, 0x66, ZC3XX_R10E_RGB11}, | 
|  | 1522 | {0xa0, 0xed, ZC3XX_R10F_RGB12}, | 
|  | 1523 | {0xa0, 0xed, ZC3XX_R110_RGB20}, | 
|  | 1524 | {0xa0, 0xed, ZC3XX_R111_RGB21}, | 
|  | 1525 | {0xa0, 0x66, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1526 |  | 
|  | 1527 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1528 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1529 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1530 | {0xaa, 0x13, 0x0031}, | 
|  | 1531 | {0xaa, 0x14, 0x0001}, | 
|  | 1532 | {0xaa, 0x0e, 0x0004}, | 
|  | 1533 | {0xaa, 0x19, 0x00cd}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1534 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 1535 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 1536 | {0xa0, 0x62, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 1537 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 1538 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 1539 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 1540 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 1541 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1542 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1543 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 0x14 */ | 
|  | 1544 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 1545 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, | 
|  | 1546 | {0xa0, 0x18, ZC3XX_R01E_HSYNC_1}, | 
|  | 1547 | {0xa0, 0x2c, ZC3XX_R01F_HSYNC_2}, | 
|  | 1548 | {0xa0, 0x41, ZC3XX_R020_HSYNC_3}, | 
|  | 1549 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 1550 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1551 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1552 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1553 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 1554 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 1555 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1556 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1557 | }; | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 1558 | static const struct usb_action hdcs2020_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1559 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 1560 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 1561 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 1562 | {0xa0, 0x08, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 1563 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 1564 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 1565 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 1566 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 1567 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 1568 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1569 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1570 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 1571 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 1572 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 1573 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 1574 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 1575 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1576 | {0xaa, 0x1c, 0x0000}, | 
|  | 1577 | {0xaa, 0x0a, 0x0001}, | 
|  | 1578 | {0xaa, 0x0b, 0x0006}, | 
|  | 1579 | {0xaa, 0x0c, 0x007a}, | 
|  | 1580 | {0xaa, 0x0d, 0x00a7}, | 
|  | 1581 | {0xaa, 0x03, 0x00fb}, | 
|  | 1582 | {0xaa, 0x05, 0x0000}, | 
|  | 1583 | {0xaa, 0x06, 0x0003}, | 
|  | 1584 | {0xaa, 0x09, 0x0008}, | 
|  | 1585 | {0xaa, 0x0f, 0x0018},	/* original setting */ | 
|  | 1586 | {0xaa, 0x10, 0x0018}, | 
|  | 1587 | {0xaa, 0x11, 0x0018}, | 
|  | 1588 | {0xaa, 0x12, 0x0018}, | 
|  | 1589 | {0xaa, 0x15, 0x004e}, | 
|  | 1590 | {0xaa, 0x1c, 0x0004}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1591 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 1592 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1593 | {0xa0, 0x70, ZC3XX_R18D_YTARGET}, | 
|  | 1594 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 1595 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 1596 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 1597 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 1598 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 1599 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1600 | {0xa1, 0x01, 0x0002}, | 
|  | 1601 | {0xa1, 0x01, 0x0008}, | 
|  | 1602 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1603 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1604 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 1605 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 1606 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1607 | {0xa1, 0x01, 0x0008}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1608 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 1609 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1610 | {0xa1, 0x01, 0x01c8}, | 
|  | 1611 | {0xa1, 0x01, 0x01c9}, | 
|  | 1612 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1613 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 1614 | {0xa0, 0x13, ZC3XX_R120_GAMMA00},	/* gamma 4 */ | 
|  | 1615 | {0xa0, 0x38, ZC3XX_R121_GAMMA01}, | 
|  | 1616 | {0xa0, 0x59, ZC3XX_R122_GAMMA02}, | 
|  | 1617 | {0xa0, 0x79, ZC3XX_R123_GAMMA03}, | 
|  | 1618 | {0xa0, 0x92, ZC3XX_R124_GAMMA04}, | 
|  | 1619 | {0xa0, 0xa7, ZC3XX_R125_GAMMA05}, | 
|  | 1620 | {0xa0, 0xb9, ZC3XX_R126_GAMMA06}, | 
|  | 1621 | {0xa0, 0xc8, ZC3XX_R127_GAMMA07}, | 
|  | 1622 | {0xa0, 0xd4, ZC3XX_R128_GAMMA08}, | 
|  | 1623 | {0xa0, 0xdf, ZC3XX_R129_GAMMA09}, | 
|  | 1624 | {0xa0, 0xe7, ZC3XX_R12A_GAMMA0A}, | 
|  | 1625 | {0xa0, 0xee, ZC3XX_R12B_GAMMA0B}, | 
|  | 1626 | {0xa0, 0xf4, ZC3XX_R12C_GAMMA0C}, | 
|  | 1627 | {0xa0, 0xf9, ZC3XX_R12D_GAMMA0D}, | 
|  | 1628 | {0xa0, 0xfc, ZC3XX_R12E_GAMMA0E}, | 
|  | 1629 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 1630 | {0xa0, 0x26, ZC3XX_R130_GAMMA10}, | 
|  | 1631 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | 
|  | 1632 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 
|  | 1633 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 
|  | 1634 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 
|  | 1635 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 
|  | 1636 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 
|  | 1637 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | 
|  | 1638 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 
|  | 1639 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 
|  | 1640 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 
|  | 1641 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 
|  | 1642 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | 
|  | 1643 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | 
|  | 1644 | {0xa0, 0x03, ZC3XX_R13E_GAMMA1E}, | 
|  | 1645 | {0xa0, 0x02, ZC3XX_R13F_GAMMA1F}, | 
|  | 1646 | {0xa0, 0x66, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 1647 | {0xa0, 0xed, ZC3XX_R10B_RGB01}, | 
|  | 1648 | {0xa0, 0xed, ZC3XX_R10C_RGB02}, | 
|  | 1649 | {0xa0, 0xed, ZC3XX_R10D_RGB10}, | 
|  | 1650 | {0xa0, 0x66, ZC3XX_R10E_RGB11}, | 
|  | 1651 | {0xa0, 0xed, ZC3XX_R10F_RGB12}, | 
|  | 1652 | {0xa0, 0xed, ZC3XX_R110_RGB20}, | 
|  | 1653 | {0xa0, 0xed, ZC3XX_R111_RGB21}, | 
|  | 1654 | {0xa0, 0x66, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1655 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1656 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1657 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1658 | /**** set exposure ***/ | 
|  | 1659 | {0xaa, 0x13, 0x0031}, | 
|  | 1660 | {0xaa, 0x14, 0x0001}, | 
|  | 1661 | {0xaa, 0x0e, 0x0004}, | 
|  | 1662 | {0xaa, 0x19, 0x00cd}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1663 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 1664 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 1665 | {0xa0, 0x62, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 1666 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 1667 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 1668 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 1669 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 1670 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 1671 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 1672 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 1673 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, | 
|  | 1674 | {0xa0, 0x18, ZC3XX_R01E_HSYNC_1}, | 
|  | 1675 | {0xa0, 0x2c, ZC3XX_R01F_HSYNC_2}, | 
|  | 1676 | {0xa0, 0x41, ZC3XX_R020_HSYNC_3}, | 
|  | 1677 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 1678 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1679 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1680 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 1681 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 1682 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 1683 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1684 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1685 | }; | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 1686 | static const struct usb_action hdcs2020_50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1687 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 1688 | {0xaa, 0x13, 0x0018},			/* 00,13,18,aa */ | 
|  | 1689 | {0xaa, 0x14, 0x0001},			/* 00,14,01,aa */ | 
|  | 1690 | {0xaa, 0x0e, 0x0005},			/* 00,0e,05,aa */ | 
|  | 1691 | {0xaa, 0x19, 0x001f},			/* 00,19,1f,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1692 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 1693 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,02,cc */ | 
|  | 1694 | {0xa0, 0x76, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,76,cc */ | 
|  | 1695 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 1696 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 1697 | {0xa0, 0x46, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,46,cc */ | 
|  | 1698 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 1699 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 1700 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 
|  | 1701 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,28,cc */ | 
|  | 1702 | {0xa0, 0x05, ZC3XX_R01D_HSYNC_0}, /* 00,1d,05,cc */ | 
|  | 1703 | {0xa0, 0x1a, ZC3XX_R01E_HSYNC_1}, /* 00,1e,1a,cc */ | 
|  | 1704 | {0xa0, 0x2f, ZC3XX_R01F_HSYNC_2}, /* 00,1f,2f,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1705 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1706 | }; | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 1707 | static const struct usb_action hdcs2020_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1708 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 1709 | {0xaa, 0x13, 0x0031},			/* 00,13,31,aa */ | 
|  | 1710 | {0xaa, 0x14, 0x0001},			/* 00,14,01,aa */ | 
|  | 1711 | {0xaa, 0x0e, 0x0004},			/* 00,0e,04,aa */ | 
|  | 1712 | {0xaa, 0x19, 0x00cd},			/* 00,19,cd,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1713 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 1714 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,02,cc */ | 
|  | 1715 | {0xa0, 0x62, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,62,cc */ | 
|  | 1716 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 1717 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 1718 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3d,cc */ | 
|  | 1719 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 1720 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 1721 | {0xa0, 0x0c, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,0c,cc */ | 
|  | 1722 | {0xa0, 0x28, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,28,cc */ | 
|  | 1723 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, /* 00,1d,04,cc */ | 
|  | 1724 | {0xa0, 0x18, ZC3XX_R01E_HSYNC_1}, /* 00,1e,18,cc */ | 
|  | 1725 | {0xa0, 0x2c, ZC3XX_R01F_HSYNC_2}, /* 00,1f,2c,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1726 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1727 | }; | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 1728 | static const struct usb_action hdcs2020_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1729 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 1730 | {0xaa, 0x13, 0x0010},			/* 00,13,10,aa */ | 
|  | 1731 | {0xaa, 0x14, 0x0001},			/* 00,14,01,aa */ | 
|  | 1732 | {0xaa, 0x0e, 0x0004},			/* 00,0e,04,aa */ | 
|  | 1733 | {0xaa, 0x19, 0x0000},			/* 00,19,00,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1734 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 1735 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,02,cc */ | 
|  | 1736 | {0xa0, 0x70, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,70,cc */ | 
|  | 1737 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 1738 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 1739 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 
|  | 1740 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 1741 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 1742 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
|  | 1743 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 
|  | 1744 | {0xa0, 0x04, ZC3XX_R01D_HSYNC_0}, /* 00,1d,04,cc */ | 
|  | 1745 | {0xa0, 0x17, ZC3XX_R01E_HSYNC_1}, /* 00,1e,17,cc */ | 
|  | 1746 | {0xa0, 0x2a, ZC3XX_R01F_HSYNC_2}, /* 00,1f,2a,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1747 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1748 | }; | 
|  | 1749 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 1750 | static const struct usb_action hv7131b_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1751 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 1752 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 1753 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 1754 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 1755 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 1756 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 1757 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1758 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1759 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 1760 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 1761 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 1762 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 1763 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 1764 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 1765 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 1766 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1767 | {0xaa, 0x30, 0x002d}, | 
|  | 1768 | {0xaa, 0x01, 0x0005}, | 
|  | 1769 | {0xaa, 0x11, 0x0000}, | 
|  | 1770 | {0xaa, 0x13, 0x0001},	/* {0xaa, 0x13, 0x0000}, */ | 
|  | 1771 | {0xaa, 0x14, 0x0001}, | 
|  | 1772 | {0xaa, 0x15, 0x00e8}, | 
|  | 1773 | {0xaa, 0x16, 0x0002}, | 
| Jean-Francois Moine | c9ff1b6 | 2008-11-06 15:29:47 -0300 | [diff] [blame] | 1774 | {0xaa, 0x17, 0x0086},		/* 00,17,88,aa */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1775 | {0xaa, 0x31, 0x0038}, | 
|  | 1776 | {0xaa, 0x32, 0x0038}, | 
|  | 1777 | {0xaa, 0x33, 0x0038}, | 
|  | 1778 | {0xaa, 0x5b, 0x0001}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1779 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 1780 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1781 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 1782 | {0xa0, 0x68, ZC3XX_R18D_YTARGET}, | 
|  | 1783 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1784 | {0xa0, 0x00, 0x01ad}, | 
|  | 1785 | {0xa0, 0xc0, 0x019b}, | 
|  | 1786 | {0xa0, 0xa0, 0x019c}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1787 | {0xa0, 0x02, ZC3XX_R188_MINGAIN}, | 
|  | 1788 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 1789 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 1790 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 1791 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 1792 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | c9ff1b6 | 2008-11-06 15:29:47 -0300 | [diff] [blame] | 1793 | {0xaa, 0x02, 0x0090},			/* 00,02,80,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1794 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1795 | }; | 
|  | 1796 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 1797 | static const struct usb_action hv7131b_Initial[] = {	/* 640x480*/ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1798 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 1799 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 1800 | {0xa0, 0x00, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 1801 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 1802 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 1803 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 1804 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1805 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1806 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 1807 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 1808 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 1809 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 1810 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 1811 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 1812 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 1813 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1814 | {0xaa, 0x30, 0x002d}, | 
|  | 1815 | {0xaa, 0x01, 0x0005}, | 
|  | 1816 | {0xaa, 0x11, 0x0001}, | 
|  | 1817 | {0xaa, 0x13, 0x0000},	/* {0xaa, 0x13, 0x0001}; */ | 
|  | 1818 | {0xaa, 0x14, 0x0001}, | 
|  | 1819 | {0xaa, 0x15, 0x00e6}, | 
|  | 1820 | {0xaa, 0x16, 0x0002}, | 
|  | 1821 | {0xaa, 0x17, 0x0086}, | 
|  | 1822 | {0xaa, 0x31, 0x0038}, | 
|  | 1823 | {0xaa, 0x32, 0x0038}, | 
|  | 1824 | {0xaa, 0x33, 0x0038}, | 
|  | 1825 | {0xaa, 0x5b, 0x0001}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1826 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 1827 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 1828 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 1829 | {0xa0, 0x70, ZC3XX_R18D_YTARGET}, | 
|  | 1830 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1831 | {0xa0, 0x00, 0x01ad}, | 
|  | 1832 | {0xa0, 0xc0, 0x019b}, | 
|  | 1833 | {0xa0, 0xa0, 0x019c}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1834 | {0xa0, 0x02, ZC3XX_R188_MINGAIN}, | 
|  | 1835 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 1836 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 1837 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 1838 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 1839 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1840 | {0xaa, 0x02, 0x0090},	/* {0xaa, 0x02, 0x0080}, */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1841 | {} | 
|  | 1842 | }; | 
|  | 1843 | static const struct usb_action hv7131b_50HZ[] = {	/* 640x480*/ | 
|  | 1844 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1845 | {0xaa, 0x25, 0x0007},			/* 00,25,07,aa */ | 
|  | 1846 | {0xaa, 0x26, 0x0053},			/* 00,26,53,aa */ | 
|  | 1847 | {0xaa, 0x27, 0x0000},			/* 00,27,00,aa */ | 
|  | 1848 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1849 | {0xaa, 0x21, 0x0050},			/* 00,21,50,aa */ | 
|  | 1850 | {0xaa, 0x22, 0x001b},			/* 00,22,1b,aa */ | 
|  | 1851 | {0xaa, 0x23, 0x00fc},			/* 00,23,fc,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1852 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1853 | {0xa0, 0x9b, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,9b,cc */ | 
|  | 1854 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,80,cc */ | 
|  | 1855 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1856 | {0xa0, 0xea, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,ea,cc */ | 
|  | 1857 | {0xa0, 0x60, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,60,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1858 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE},	/* 01,8c,0c,cc */ | 
|  | 1859 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,18,cc */ | 
|  | 1860 | {0xa0, 0x18, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,18,cc */ | 
|  | 1861 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1862 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1863 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1},	/* 00,1e,50,cc */ | 
|  | 1864 | {0xa0, 0x1b, ZC3XX_R01F_HSYNC_2},	/* 00,1f,1b,cc */ | 
|  | 1865 | {0xa0, 0xfc, ZC3XX_R020_HSYNC_3},	/* 00,20,fc,cc */ | 
|  | 1866 | {} | 
|  | 1867 | }; | 
|  | 1868 | static const struct usb_action hv7131b_50HZScale[] = {	/* 320x240 */ | 
|  | 1869 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1870 | {0xaa, 0x25, 0x0007},			/* 00,25,07,aa */ | 
|  | 1871 | {0xaa, 0x26, 0x0053},			/* 00,26,53,aa */ | 
|  | 1872 | {0xaa, 0x27, 0x0000},			/* 00,27,00,aa */ | 
|  | 1873 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1874 | {0xaa, 0x21, 0x0050},			/* 00,21,50,aa */ | 
|  | 1875 | {0xaa, 0x22, 0x0012},			/* 00,22,12,aa */ | 
|  | 1876 | {0xaa, 0x23, 0x0080},			/* 00,23,80,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1877 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1878 | {0xa0, 0x9b, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,9b,cc */ | 
|  | 1879 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,80,cc */ | 
|  | 1880 | {0xa0, 0x01, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,01,cc */ | 
|  | 1881 | {0xa0, 0xd4, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,d4,cc */ | 
|  | 1882 | {0xa0, 0xc0, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,c0,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1883 | {0xa0, 0x07, ZC3XX_R18C_AEFREEZE},	/* 01,8c,07,cc */ | 
|  | 1884 | {0xa0, 0x0f, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,0f,cc */ | 
|  | 1885 | {0xa0, 0x18, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,18,cc */ | 
|  | 1886 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1887 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1888 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1},	/* 00,1e,50,cc */ | 
|  | 1889 | {0xa0, 0x12, ZC3XX_R01F_HSYNC_2},	/* 00,1f,12,cc */ | 
|  | 1890 | {0xa0, 0x80, ZC3XX_R020_HSYNC_3},	/* 00,20,80,cc */ | 
|  | 1891 | {} | 
|  | 1892 | }; | 
|  | 1893 | static const struct usb_action hv7131b_60HZ[] = {	/* 640x480*/ | 
|  | 1894 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1895 | {0xaa, 0x25, 0x0007},			/* 00,25,07,aa */ | 
|  | 1896 | {0xaa, 0x26, 0x00a1},			/* 00,26,a1,aa */ | 
|  | 1897 | {0xaa, 0x27, 0x0020},			/* 00,27,20,aa */ | 
|  | 1898 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1899 | {0xaa, 0x21, 0x0040},			/* 00,21,40,aa */ | 
|  | 1900 | {0xaa, 0x22, 0x0013},			/* 00,22,13,aa */ | 
|  | 1901 | {0xaa, 0x23, 0x004c},			/* 00,23,4c,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1902 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1903 | {0xa0, 0x4d, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,4d,cc */ | 
|  | 1904 | {0xa0, 0x60, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,60,cc */ | 
|  | 1905 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1906 | {0xa0, 0xc3, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,c3,cc */ | 
|  | 1907 | {0xa0, 0x50, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,50,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1908 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE},	/* 01,8c,0c,cc */ | 
|  | 1909 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,18,cc */ | 
|  | 1910 | {0xa0, 0x18, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,18,cc */ | 
|  | 1911 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1912 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1913 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1},	/* 00,1e,40,cc */ | 
|  | 1914 | {0xa0, 0x13, ZC3XX_R01F_HSYNC_2},	/* 00,1f,13,cc */ | 
|  | 1915 | {0xa0, 0x4c, ZC3XX_R020_HSYNC_3},	/* 00,20,4c,cc */ | 
|  | 1916 | {} | 
|  | 1917 | }; | 
|  | 1918 | static const struct usb_action hv7131b_60HZScale[] = {	/* 320x240 */ | 
|  | 1919 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1920 | {0xaa, 0x25, 0x0007},			/* 00,25,07,aa */ | 
|  | 1921 | {0xaa, 0x26, 0x00a1},			/* 00,26,a1,aa */ | 
|  | 1922 | {0xaa, 0x27, 0x0020},			/* 00,27,20,aa */ | 
|  | 1923 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1924 | {0xaa, 0x21, 0x00a0},			/* 00,21,a0,aa */ | 
|  | 1925 | {0xaa, 0x22, 0x0016},			/* 00,22,16,aa */ | 
|  | 1926 | {0xaa, 0x23, 0x0040},			/* 00,23,40,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1927 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1928 | {0xa0, 0x4d, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,4d,cc */ | 
|  | 1929 | {0xa0, 0x60, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,60,cc */ | 
|  | 1930 | {0xa0, 0x01, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,01,cc */ | 
|  | 1931 | {0xa0, 0x86, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,86,cc */ | 
|  | 1932 | {0xa0, 0xa0, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,a0,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1933 | {0xa0, 0x07, ZC3XX_R18C_AEFREEZE},	/* 01,8c,07,cc */ | 
|  | 1934 | {0xa0, 0x0f, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,0f,cc */ | 
|  | 1935 | {0xa0, 0x18, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,18,cc */ | 
|  | 1936 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 1937 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1938 | {0xa0, 0xa0, ZC3XX_R01E_HSYNC_1},	/* 00,1e,a0,cc */ | 
|  | 1939 | {0xa0, 0x16, ZC3XX_R01F_HSYNC_2},	/* 00,1f,16,cc */ | 
|  | 1940 | {0xa0, 0x40, ZC3XX_R020_HSYNC_3},	/* 00,20,40,cc */ | 
|  | 1941 | {} | 
|  | 1942 | }; | 
|  | 1943 | static const struct usb_action hv7131b_NoFliker[] = {	/* 640x480*/ | 
|  | 1944 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1945 | {0xaa, 0x25, 0x0003},			/* 00,25,03,aa */ | 
|  | 1946 | {0xaa, 0x26, 0x0000},			/* 00,26,00,aa */ | 
|  | 1947 | {0xaa, 0x27, 0x0000},			/* 00,27,00,aa */ | 
|  | 1948 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1949 | {0xaa, 0x21, 0x0010},			/* 00,21,10,aa */ | 
|  | 1950 | {0xaa, 0x22, 0x0000},			/* 00,22,00,aa */ | 
|  | 1951 | {0xaa, 0x23, 0x0003},			/* 00,23,03,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1952 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1953 | {0xa0, 0xf8, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,f8,cc */ | 
|  | 1954 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,00,cc */ | 
|  | 1955 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1956 | {0xa0, 0x02, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,02,cc */ | 
|  | 1957 | {0xa0, 0x00, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,00,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1958 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},	/* 01,8c,10,cc */ | 
|  | 1959 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,20,cc */ | 
|  | 1960 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,00,cc */ | 
|  | 1961 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,00,cc */ | 
|  | 1962 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1963 | {0xa0, 0x10, ZC3XX_R01E_HSYNC_1},	/* 00,1e,10,cc */ | 
|  | 1964 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2},	/* 00,1f,00,cc */ | 
|  | 1965 | {0xa0, 0x03, ZC3XX_R020_HSYNC_3},	/* 00,20,03,cc */ | 
|  | 1966 | {} | 
|  | 1967 | }; | 
|  | 1968 | static const struct usb_action hv7131b_NoFlikerScale[] = { /* 320x240 */ | 
|  | 1969 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},	/* 00,19,00,cc */ | 
|  | 1970 | {0xaa, 0x25, 0x0003},			/* 00,25,03,aa */ | 
|  | 1971 | {0xaa, 0x26, 0x0000},			/* 00,26,00,aa */ | 
|  | 1972 | {0xaa, 0x27, 0x0000},			/* 00,27,00,aa */ | 
|  | 1973 | {0xaa, 0x20, 0x0000},			/* 00,20,00,aa */ | 
|  | 1974 | {0xaa, 0x21, 0x00a0},			/* 00,21,a0,aa */ | 
|  | 1975 | {0xaa, 0x22, 0x0016},			/* 00,22,16,aa */ | 
|  | 1976 | {0xaa, 0x23, 0x0040},			/* 00,23,40,aa */ | 
| Jean-Francois Moine | f4f4ef7 | 2008-12-08 06:25:40 -0300 | [diff] [blame] | 1977 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,2f,cc */ | 
|  | 1978 | {0xa0, 0xf8, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,f8,cc */ | 
|  | 1979 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,00,cc */ | 
|  | 1980 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 1981 | {0xa0, 0x02, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,02,cc */ | 
|  | 1982 | {0xa0, 0x00, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,00,cc */ | 
| Jean-Francois Moine | 13563f4 | 2008-11-06 15:35:21 -0300 | [diff] [blame] | 1983 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},	/* 01,8c,10,cc */ | 
|  | 1984 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,20,cc */ | 
|  | 1985 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,00,cc */ | 
|  | 1986 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,00,cc */ | 
|  | 1987 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0},	/* 00,1d,00,cc */ | 
|  | 1988 | {0xa0, 0xa0, ZC3XX_R01E_HSYNC_1},	/* 00,1e,a0,cc */ | 
|  | 1989 | {0xa0, 0x16, ZC3XX_R01F_HSYNC_2},	/* 00,1f,16,cc */ | 
|  | 1990 | {0xa0, 0x40, ZC3XX_R020_HSYNC_3},	/* 00,20,40,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 1991 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 1992 | }; | 
|  | 1993 |  | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 1994 | /* from lPEPI264v.inf (hv7131b!) */ | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 1995 | static const struct usb_action hv7131r_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 1996 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 1997 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 1998 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 1999 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 2000 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 2001 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2002 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2003 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2004 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 2005 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 2006 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 2007 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 2008 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 2009 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 2010 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, | 
|  | 2011 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 2012 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
|  | 2013 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 2014 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 2015 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2016 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2017 | {0xdd, 0x00, 0x0200}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2018 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2019 | {0xaa, 0x01, 0x000c}, | 
|  | 2020 | {0xaa, 0x11, 0x0000}, | 
|  | 2021 | {0xaa, 0x13, 0x0000}, | 
|  | 2022 | {0xaa, 0x14, 0x0001}, | 
|  | 2023 | {0xaa, 0x15, 0x00e8}, | 
|  | 2024 | {0xaa, 0x16, 0x0002}, | 
|  | 2025 | {0xaa, 0x17, 0x0088}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2026 | {0xaa, 0x30, 0x000b}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2027 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2028 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2029 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2030 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2031 | {0xa0, 0x00, 0x01ad}, | 
|  | 2032 | {0xa0, 0xc0, 0x019b}, | 
|  | 2033 | {0xa0, 0xa0, 0x019c}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2034 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 2035 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 2036 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 2037 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 2038 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2039 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2040 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2041 | static const struct usb_action hv7131r_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2042 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2043 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2044 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 2045 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 2046 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 2047 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2048 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2049 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2050 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 2051 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 2052 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2053 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2054 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 2055 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 2056 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2057 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2058 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2059 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2060 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 2061 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2062 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2063 | {0xdd, 0x00, 0x0200}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2064 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2065 | {0xaa, 0x01, 0x000c}, | 
|  | 2066 | {0xaa, 0x11, 0x0000}, | 
|  | 2067 | {0xaa, 0x13, 0x0000}, | 
|  | 2068 | {0xaa, 0x14, 0x0001}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2069 | {0xaa, 0x15, 0x00e6}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2070 | {0xaa, 0x16, 0x0002}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2071 | {0xaa, 0x17, 0x0086}, | 
|  | 2072 | {0xaa, 0x30, 0x000b}, | 
|  | 2073 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2074 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2075 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2076 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2077 | {0xa0, 0x00, 0x01ad}, | 
|  | 2078 | {0xa0, 0xc0, 0x019b}, | 
|  | 2079 | {0xa0, 0xa0, 0x019c}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2080 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 2081 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 2082 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 2083 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 2084 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2085 | {} | 
|  | 2086 | }; | 
|  | 2087 | static const struct usb_action hv7131r_50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2088 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2089 | {0xa0, 0x06, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2090 | {0xa0, 0x68, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2091 | {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2092 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2093 | {0xa0, 0xea, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2094 | {0xa0, 0x60, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2095 | {0xa0, 0x18, ZC3XX_R18C_AEFREEZE}, | 
|  | 2096 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2097 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2098 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2099 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2100 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2101 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2102 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
|  | 2103 | {} | 
|  | 2104 | }; | 
|  | 2105 | static const struct usb_action hv7131r_50HZScale[] = { | 
|  | 2106 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2107 | {0xa0, 0x0c, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2108 | {0xa0, 0xd1, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2109 | {0xa0, 0x40, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2110 | {0xa0, 0x01, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2111 | {0xa0, 0xd4, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2112 | {0xa0, 0xc0, ZC3XX_R197_ANTIFLICKERLOW}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2113 | {0xa0, 0x18, ZC3XX_R18C_AEFREEZE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2114 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2115 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 2116 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2117 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2118 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2119 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2120 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
|  | 2121 | {} | 
|  | 2122 | }; | 
|  | 2123 | static const struct usb_action hv7131r_60HZ[] = { | 
|  | 2124 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2125 | {0xa0, 0x06, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2126 | {0xa0, 0x1a, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2127 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2128 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2129 | {0xa0, 0xc3, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2130 | {0xa0, 0x50, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2131 | {0xa0, 0x18, ZC3XX_R18C_AEFREEZE}, | 
|  | 2132 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2133 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2134 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2135 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2136 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2137 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2138 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
|  | 2139 | {} | 
|  | 2140 | }; | 
|  | 2141 | static const struct usb_action hv7131r_60HZScale[] = { | 
|  | 2142 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2143 | {0xa0, 0x0c, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2144 | {0xa0, 0x35, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2145 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2146 | {0xa0, 0x01, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2147 | {0xa0, 0x86, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2148 | {0xa0, 0xa0, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2149 | {0xa0, 0x18, ZC3XX_R18C_AEFREEZE}, | 
|  | 2150 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2151 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2152 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2153 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2154 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2155 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2156 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
|  | 2157 | {} | 
|  | 2158 | }; | 
|  | 2159 | static const struct usb_action hv7131r_NoFliker[] = { | 
|  | 2160 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2161 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2162 | {0xa0, 0xf8, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2163 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2164 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2165 | {0xa0, 0x02, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2166 | {0xa0, 0x58, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2167 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 2168 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2169 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2170 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2171 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2172 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2173 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2174 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
|  | 2175 | {} | 
|  | 2176 | }; | 
|  | 2177 | static const struct usb_action hv7131r_NoFlikerScale[] = { | 
|  | 2178 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 2179 | {0xa0, 0x2f, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2180 | {0xa0, 0xf8, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2181 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2182 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2183 | {0xa0, 0x04, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2184 | {0xa0, 0xb0, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2185 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 2186 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2187 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2188 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2189 | {0xa0, 0x00, ZC3XX_R01D_HSYNC_0}, | 
|  | 2190 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, | 
|  | 2191 | {0xa0, 0x00, ZC3XX_R01F_HSYNC_2}, | 
|  | 2192 | {0xa0, 0x08, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2193 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2194 | }; | 
|  | 2195 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2196 | static const struct usb_action icm105a_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2197 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 2198 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 2199 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 2200 | {0xa0, 0x0c, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 2201 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 2202 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 2203 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 2204 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 2205 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 2206 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2207 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2208 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 2209 | {0xa0, 0x00, ZC3XX_R097_WINYSTARTHIGH}, | 
|  | 2210 | {0xa0, 0x01, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 2211 | {0xa0, 0x00, ZC3XX_R099_WINXSTARTHIGH}, | 
|  | 2212 | {0xa0, 0x01, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 2213 | {0xa0, 0x01, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 2214 | {0xa0, 0x01, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 2215 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, | 
|  | 2216 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 2217 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
|  | 2218 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 2219 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 2220 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 2221 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 2222 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 2223 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2224 | {0xaa, 0x01, 0x0010}, | 
|  | 2225 | {0xaa, 0x03, 0x0000}, | 
|  | 2226 | {0xaa, 0x04, 0x0001}, | 
|  | 2227 | {0xaa, 0x05, 0x0020}, | 
|  | 2228 | {0xaa, 0x06, 0x0001}, | 
|  | 2229 | {0xaa, 0x08, 0x0000}, | 
|  | 2230 | {0xaa, 0x03, 0x0001}, | 
|  | 2231 | {0xaa, 0x04, 0x0011}, | 
|  | 2232 | {0xaa, 0x05, 0x00a0}, | 
|  | 2233 | {0xaa, 0x06, 0x0001}, | 
|  | 2234 | {0xaa, 0x08, 0x0000}, | 
|  | 2235 | {0xaa, 0x03, 0x0002}, | 
|  | 2236 | {0xaa, 0x04, 0x0013}, | 
|  | 2237 | {0xaa, 0x05, 0x0020}, | 
|  | 2238 | {0xaa, 0x06, 0x0001}, | 
|  | 2239 | {0xaa, 0x08, 0x0000}, | 
|  | 2240 | {0xaa, 0x03, 0x0003}, | 
|  | 2241 | {0xaa, 0x04, 0x0015}, | 
|  | 2242 | {0xaa, 0x05, 0x0020}, | 
|  | 2243 | {0xaa, 0x06, 0x0005}, | 
|  | 2244 | {0xaa, 0x08, 0x0000}, | 
|  | 2245 | {0xaa, 0x03, 0x0004}, | 
|  | 2246 | {0xaa, 0x04, 0x0017}, | 
|  | 2247 | {0xaa, 0x05, 0x0020}, | 
|  | 2248 | {0xaa, 0x06, 0x000d}, | 
|  | 2249 | {0xaa, 0x08, 0x0000}, | 
|  | 2250 | {0xaa, 0x03, 0x0005}, | 
|  | 2251 | {0xaa, 0x04, 0x0019}, | 
|  | 2252 | {0xaa, 0x05, 0x0020}, | 
|  | 2253 | {0xaa, 0x06, 0x0005}, | 
|  | 2254 | {0xaa, 0x08, 0x0000}, | 
|  | 2255 | {0xaa, 0x03, 0x0006}, | 
|  | 2256 | {0xaa, 0x04, 0x0017}, | 
|  | 2257 | {0xaa, 0x05, 0x0026}, | 
|  | 2258 | {0xaa, 0x06, 0x0005}, | 
|  | 2259 | {0xaa, 0x08, 0x0000}, | 
|  | 2260 | {0xaa, 0x03, 0x0007}, | 
|  | 2261 | {0xaa, 0x04, 0x0019}, | 
|  | 2262 | {0xaa, 0x05, 0x0022}, | 
|  | 2263 | {0xaa, 0x06, 0x0005}, | 
|  | 2264 | {0xaa, 0x08, 0x0000}, | 
|  | 2265 | {0xaa, 0x03, 0x0008}, | 
|  | 2266 | {0xaa, 0x04, 0x0021}, | 
|  | 2267 | {0xaa, 0x05, 0x00aa}, | 
|  | 2268 | {0xaa, 0x06, 0x0005}, | 
|  | 2269 | {0xaa, 0x08, 0x0000}, | 
|  | 2270 | {0xaa, 0x03, 0x0009}, | 
|  | 2271 | {0xaa, 0x04, 0x0023}, | 
|  | 2272 | {0xaa, 0x05, 0x00aa}, | 
|  | 2273 | {0xaa, 0x06, 0x000d}, | 
|  | 2274 | {0xaa, 0x08, 0x0000}, | 
|  | 2275 | {0xaa, 0x03, 0x000a}, | 
|  | 2276 | {0xaa, 0x04, 0x0025}, | 
|  | 2277 | {0xaa, 0x05, 0x00aa}, | 
|  | 2278 | {0xaa, 0x06, 0x0005}, | 
|  | 2279 | {0xaa, 0x08, 0x0000}, | 
|  | 2280 | {0xaa, 0x03, 0x000b}, | 
|  | 2281 | {0xaa, 0x04, 0x00ec}, | 
|  | 2282 | {0xaa, 0x05, 0x002e}, | 
|  | 2283 | {0xaa, 0x06, 0x0005}, | 
|  | 2284 | {0xaa, 0x08, 0x0000}, | 
|  | 2285 | {0xaa, 0x03, 0x000c}, | 
|  | 2286 | {0xaa, 0x04, 0x00fa}, | 
|  | 2287 | {0xaa, 0x05, 0x002a}, | 
|  | 2288 | {0xaa, 0x06, 0x0005}, | 
|  | 2289 | {0xaa, 0x08, 0x0000}, | 
|  | 2290 | {0xaa, 0x07, 0x000d}, | 
|  | 2291 | {0xaa, 0x01, 0x0005}, | 
|  | 2292 | {0xaa, 0x94, 0x0002}, | 
|  | 2293 | {0xaa, 0x90, 0x0000}, | 
|  | 2294 | {0xaa, 0x91, 0x001f}, | 
|  | 2295 | {0xaa, 0x10, 0x0064}, | 
|  | 2296 | {0xaa, 0x9b, 0x00f0}, | 
|  | 2297 | {0xaa, 0x9c, 0x0002}, | 
|  | 2298 | {0xaa, 0x14, 0x001a}, | 
|  | 2299 | {0xaa, 0x20, 0x0080}, | 
|  | 2300 | {0xaa, 0x22, 0x0080}, | 
|  | 2301 | {0xaa, 0x24, 0x0080}, | 
|  | 2302 | {0xaa, 0x26, 0x0080}, | 
|  | 2303 | {0xaa, 0x00, 0x0084}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2304 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 2305 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2306 | {0xaa, 0xa8, 0x00c0}, | 
|  | 2307 | {0xa1, 0x01, 0x0002}, | 
|  | 2308 | {0xa1, 0x01, 0x0008}, | 
|  | 2309 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2310 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2311 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 2312 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 2313 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2314 | {0xa1, 0x01, 0x0008}, | 
|  | 2315 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2316 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 2317 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2318 | {0xa1, 0x01, 0x01c8}, | 
|  | 2319 | {0xa1, 0x01, 0x01c9}, | 
|  | 2320 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2321 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 2322 | {0xa0, 0x52, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 2323 | {0xa0, 0xf7, ZC3XX_R10B_RGB01}, | 
|  | 2324 | {0xa0, 0xf7, ZC3XX_R10C_RGB02}, | 
|  | 2325 | {0xa0, 0xf7, ZC3XX_R10D_RGB10}, | 
|  | 2326 | {0xa0, 0x52, ZC3XX_R10E_RGB11}, | 
|  | 2327 | {0xa0, 0xf7, ZC3XX_R10F_RGB12}, | 
|  | 2328 | {0xa0, 0xf7, ZC3XX_R110_RGB20}, | 
|  | 2329 | {0xa0, 0xf7, ZC3XX_R111_RGB21}, | 
|  | 2330 | {0xa0, 0x52, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2331 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2332 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2333 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2334 | {0xaa, 0x0d, 0x0003}, | 
|  | 2335 | {0xaa, 0x0c, 0x008c}, | 
|  | 2336 | {0xaa, 0x0e, 0x0095}, | 
|  | 2337 | {0xaa, 0x0f, 0x0002}, | 
|  | 2338 | {0xaa, 0x1c, 0x0094}, | 
|  | 2339 | {0xaa, 0x1d, 0x0002}, | 
|  | 2340 | {0xaa, 0x20, 0x0080}, | 
|  | 2341 | {0xaa, 0x22, 0x0080}, | 
|  | 2342 | {0xaa, 0x24, 0x0080}, | 
|  | 2343 | {0xaa, 0x26, 0x0080}, | 
|  | 2344 | {0xaa, 0x00, 0x0084}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2345 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | 
|  | 2346 | {0xa0, 0x94, ZC3XX_R0A4_EXPOSURETIMELOW}, | 
|  | 2347 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2348 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2349 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2350 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2351 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2352 | {0xa0, 0x84, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2353 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 2354 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2355 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2356 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2357 | {0xa0, 0xe3, ZC3XX_R01D_HSYNC_0}, | 
|  | 2358 | {0xa0, 0xec, ZC3XX_R01E_HSYNC_1}, | 
|  | 2359 | {0xa0, 0xf5, ZC3XX_R01F_HSYNC_2}, | 
|  | 2360 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 2361 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 2362 | {0xa0, 0xc0, ZC3XX_R1A8_DIGITALGAIN}, | 
|  | 2363 | {0xa0, 0xc0, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 2364 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2365 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2366 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2367 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 2368 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 2369 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2370 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2371 | }; | 
|  | 2372 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2373 | static const struct usb_action icm105a_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2374 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 2375 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 2376 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 2377 | {0xa0, 0x0c, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 2378 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 2379 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 2380 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 2381 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 2382 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 2383 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2384 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 2385 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 2386 | {0xa0, 0x00, ZC3XX_R097_WINYSTARTHIGH}, | 
|  | 2387 | {0xa0, 0x02, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 2388 | {0xa0, 0x00, ZC3XX_R099_WINXSTARTHIGH}, | 
|  | 2389 | {0xa0, 0x02, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 2390 | {0xa0, 0x02, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 2391 | {0xa0, 0x02, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 2392 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, | 
|  | 2393 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 2394 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
|  | 2395 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 2396 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 2397 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 2398 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 2399 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 2400 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2401 | {0xaa, 0x01, 0x0010}, | 
|  | 2402 | {0xaa, 0x03, 0x0000}, | 
|  | 2403 | {0xaa, 0x04, 0x0001}, | 
|  | 2404 | {0xaa, 0x05, 0x0020}, | 
|  | 2405 | {0xaa, 0x06, 0x0001}, | 
|  | 2406 | {0xaa, 0x08, 0x0000}, | 
|  | 2407 | {0xaa, 0x03, 0x0001}, | 
|  | 2408 | {0xaa, 0x04, 0x0011}, | 
|  | 2409 | {0xaa, 0x05, 0x00a0}, | 
|  | 2410 | {0xaa, 0x06, 0x0001}, | 
|  | 2411 | {0xaa, 0x08, 0x0000}, | 
|  | 2412 | {0xaa, 0x03, 0x0002}, | 
|  | 2413 | {0xaa, 0x04, 0x0013}, | 
|  | 2414 | {0xaa, 0x05, 0x0020}, | 
|  | 2415 | {0xaa, 0x06, 0x0001}, | 
|  | 2416 | {0xaa, 0x08, 0x0000}, | 
|  | 2417 | {0xaa, 0x03, 0x0003}, | 
|  | 2418 | {0xaa, 0x04, 0x0015}, | 
|  | 2419 | {0xaa, 0x05, 0x0020}, | 
|  | 2420 | {0xaa, 0x06, 0x0005}, | 
|  | 2421 | {0xaa, 0x08, 0x0000}, | 
|  | 2422 | {0xaa, 0x03, 0x0004}, | 
|  | 2423 | {0xaa, 0x04, 0x0017}, | 
|  | 2424 | {0xaa, 0x05, 0x0020}, | 
|  | 2425 | {0xaa, 0x06, 0x000d}, | 
|  | 2426 | {0xaa, 0x08, 0x0000}, | 
|  | 2427 | {0xaa, 0x03, 0x0005}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2428 | {0xa0, 0x04, ZC3XX_R092_I2CADDRESSSELECT}, | 
|  | 2429 | {0xa0, 0x19, ZC3XX_R093_I2CSETVALUE}, | 
|  | 2430 | {0xa0, 0x01, ZC3XX_R090_I2CCOMMAND}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2431 | {0xa1, 0x01, 0x0091}, | 
|  | 2432 | {0xaa, 0x05, 0x0020}, | 
|  | 2433 | {0xaa, 0x06, 0x0005}, | 
|  | 2434 | {0xaa, 0x08, 0x0000}, | 
|  | 2435 | {0xaa, 0x03, 0x0006}, | 
|  | 2436 | {0xaa, 0x04, 0x0017}, | 
|  | 2437 | {0xaa, 0x05, 0x0026}, | 
|  | 2438 | {0xaa, 0x06, 0x0005}, | 
|  | 2439 | {0xaa, 0x08, 0x0000}, | 
|  | 2440 | {0xaa, 0x03, 0x0007}, | 
|  | 2441 | {0xaa, 0x04, 0x0019}, | 
|  | 2442 | {0xaa, 0x05, 0x0022}, | 
|  | 2443 | {0xaa, 0x06, 0x0005}, | 
|  | 2444 | {0xaa, 0x08, 0x0000}, | 
|  | 2445 | {0xaa, 0x03, 0x0008}, | 
|  | 2446 | {0xaa, 0x04, 0x0021}, | 
|  | 2447 | {0xaa, 0x05, 0x00aa}, | 
|  | 2448 | {0xaa, 0x06, 0x0005}, | 
|  | 2449 | {0xaa, 0x08, 0x0000}, | 
|  | 2450 | {0xaa, 0x03, 0x0009}, | 
|  | 2451 | {0xaa, 0x04, 0x0023}, | 
|  | 2452 | {0xaa, 0x05, 0x00aa}, | 
|  | 2453 | {0xaa, 0x06, 0x000d}, | 
|  | 2454 | {0xaa, 0x08, 0x0000}, | 
|  | 2455 | {0xaa, 0x03, 0x000a}, | 
|  | 2456 | {0xaa, 0x04, 0x0025}, | 
|  | 2457 | {0xaa, 0x05, 0x00aa}, | 
|  | 2458 | {0xaa, 0x06, 0x0005}, | 
|  | 2459 | {0xaa, 0x08, 0x0000}, | 
|  | 2460 | {0xaa, 0x03, 0x000b}, | 
|  | 2461 | {0xaa, 0x04, 0x00ec}, | 
|  | 2462 | {0xaa, 0x05, 0x002e}, | 
|  | 2463 | {0xaa, 0x06, 0x0005}, | 
|  | 2464 | {0xaa, 0x08, 0x0000}, | 
|  | 2465 | {0xaa, 0x03, 0x000c}, | 
|  | 2466 | {0xaa, 0x04, 0x00fa}, | 
|  | 2467 | {0xaa, 0x05, 0x002a}, | 
|  | 2468 | {0xaa, 0x06, 0x0005}, | 
|  | 2469 | {0xaa, 0x08, 0x0000}, | 
|  | 2470 | {0xaa, 0x07, 0x000d}, | 
|  | 2471 | {0xaa, 0x01, 0x0005}, | 
|  | 2472 | {0xaa, 0x94, 0x0002}, | 
|  | 2473 | {0xaa, 0x90, 0x0000}, | 
|  | 2474 | {0xaa, 0x91, 0x0010}, | 
|  | 2475 | {0xaa, 0x10, 0x0064}, | 
|  | 2476 | {0xaa, 0x9b, 0x00f0}, | 
|  | 2477 | {0xaa, 0x9c, 0x0002}, | 
|  | 2478 | {0xaa, 0x14, 0x001a}, | 
|  | 2479 | {0xaa, 0x20, 0x0080}, | 
|  | 2480 | {0xaa, 0x22, 0x0080}, | 
|  | 2481 | {0xaa, 0x24, 0x0080}, | 
|  | 2482 | {0xaa, 0x26, 0x0080}, | 
|  | 2483 | {0xaa, 0x00, 0x0084}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2484 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 2485 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2486 | {0xaa, 0xa8, 0x0080}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2487 | {0xa0, 0x78, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2488 | {0xa1, 0x01, 0x0002}, | 
|  | 2489 | {0xa1, 0x01, 0x0008}, | 
|  | 2490 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2491 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2492 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 2493 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 2494 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2495 | {0xa1, 0x01, 0x0008}, | 
|  | 2496 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2497 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 2498 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2499 | {0xa1, 0x01, 0x01c8}, | 
|  | 2500 | {0xa1, 0x01, 0x01c9}, | 
|  | 2501 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2502 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2503 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2504 | {0xa0, 0x52, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 2505 | {0xa0, 0xf7, ZC3XX_R10B_RGB01}, | 
|  | 2506 | {0xa0, 0xf7, ZC3XX_R10C_RGB02}, | 
|  | 2507 | {0xa0, 0xf7, ZC3XX_R10D_RGB10}, | 
|  | 2508 | {0xa0, 0x52, ZC3XX_R10E_RGB11}, | 
|  | 2509 | {0xa0, 0xf7, ZC3XX_R10F_RGB12}, | 
|  | 2510 | {0xa0, 0xf7, ZC3XX_R110_RGB20}, | 
|  | 2511 | {0xa0, 0xf7, ZC3XX_R111_RGB21}, | 
|  | 2512 | {0xa0, 0x52, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2513 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2514 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2515 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2516 | {0xaa, 0x0d, 0x0003}, | 
|  | 2517 | {0xaa, 0x0c, 0x0020}, | 
|  | 2518 | {0xaa, 0x0e, 0x000e}, | 
|  | 2519 | {0xaa, 0x0f, 0x0002}, | 
|  | 2520 | {0xaa, 0x1c, 0x000d}, | 
|  | 2521 | {0xaa, 0x1d, 0x0002}, | 
|  | 2522 | {0xaa, 0x20, 0x0080}, | 
|  | 2523 | {0xaa, 0x22, 0x0080}, | 
|  | 2524 | {0xaa, 0x24, 0x0080}, | 
|  | 2525 | {0xaa, 0x26, 0x0080}, | 
|  | 2526 | {0xaa, 0x00, 0x0084}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2527 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, | 
|  | 2528 | {0xa0, 0x0d, ZC3XX_R0A4_EXPOSURETIMELOW}, | 
|  | 2529 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 2530 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 2531 | {0xa0, 0x1a, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 2532 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 2533 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 2534 | {0xa0, 0x4b, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 2535 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 2536 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 2537 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 2538 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 2539 | {0xa0, 0xc8, ZC3XX_R01D_HSYNC_0}, | 
|  | 2540 | {0xa0, 0xd8, ZC3XX_R01E_HSYNC_1}, | 
|  | 2541 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, | 
|  | 2542 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 2543 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
|  | 2544 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2545 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2546 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 2547 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 2548 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 2549 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2550 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2551 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2552 | static const struct usb_action icm105a_50HZScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2553 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2554 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2555 | {0xaa, 0x0c, 0x0020}, /* 00,0c,20,aa */ | 
|  | 2556 | {0xaa, 0x0e, 0x000e}, /* 00,0e,0e,aa */ | 
|  | 2557 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2558 | {0xaa, 0x1c, 0x000d}, /* 00,1c,0d,aa */ | 
|  | 2559 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2560 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2561 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2562 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2563 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2564 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2565 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2566 | {0xa0, 0x0d, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,0d,cc */ | 
|  | 2567 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2568 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2569 | {0xa0, 0x1a, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,1a,cc */ | 
|  | 2570 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2571 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2572 | {0xa0, 0x4b, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,4b,cc */ | 
|  | 2573 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2574 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2575 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 2576 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,12,cc */ | 
|  | 2577 | {0xa0, 0xc8, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c8,cc */ | 
|  | 2578 | {0xa0, 0xd8, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d8,cc */ | 
|  | 2579 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, /* 00,1f,ea,cc */ | 
|  | 2580 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2581 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2582 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2583 | static const struct usb_action icm105a_50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2584 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2585 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2586 | {0xaa, 0x0c, 0x008c}, /* 00,0c,8c,aa */ | 
|  | 2587 | {0xaa, 0x0e, 0x0095}, /* 00,0e,95,aa */ | 
|  | 2588 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2589 | {0xaa, 0x1c, 0x0094}, /* 00,1c,94,aa */ | 
|  | 2590 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2591 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2592 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2593 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2594 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2595 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2596 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2597 | {0xa0, 0x94, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,94,cc */ | 
|  | 2598 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2599 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2600 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,20,cc */ | 
|  | 2601 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2602 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2603 | {0xa0, 0x84, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,84,cc */ | 
|  | 2604 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2605 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2606 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 2607 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,12,cc */ | 
|  | 2608 | {0xa0, 0xe3, ZC3XX_R01D_HSYNC_0}, /* 00,1d,e3,cc */ | 
|  | 2609 | {0xa0, 0xec, ZC3XX_R01E_HSYNC_1}, /* 00,1e,ec,cc */ | 
|  | 2610 | {0xa0, 0xf5, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f5,cc */ | 
|  | 2611 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 2612 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, /* 01,a7,00,cc */ | 
|  | 2613 | {0xa0, 0xc0, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,c0,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2614 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2615 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2616 | static const struct usb_action icm105a_60HZScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2617 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2618 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2619 | {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ | 
|  | 2620 | {0xaa, 0x0e, 0x000d}, /* 00,0e,0d,aa */ | 
|  | 2621 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2622 | {0xaa, 0x1c, 0x0008}, /* 00,1c,08,aa */ | 
|  | 2623 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2624 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2625 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2626 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2627 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2628 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2629 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2630 | {0xa0, 0x08, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,08,cc */ | 
|  | 2631 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2632 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2633 | {0xa0, 0x10, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,10,cc */ | 
|  | 2634 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2635 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2636 | {0xa0, 0x41, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,41,cc */ | 
|  | 2637 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2638 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2639 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 2640 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,12,cc */ | 
|  | 2641 | {0xa0, 0xc1, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c1,cc */ | 
|  | 2642 | {0xa0, 0xd4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d4,cc */ | 
|  | 2643 | {0xa0, 0xe8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e8,cc */ | 
|  | 2644 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2645 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2646 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2647 | static const struct usb_action icm105a_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2648 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2649 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2650 | {0xaa, 0x0c, 0x0008}, /* 00,0c,08,aa */ | 
|  | 2651 | {0xaa, 0x0e, 0x0086}, /* 00,0e,86,aa */ | 
|  | 2652 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2653 | {0xaa, 0x1c, 0x0085}, /* 00,1c,85,aa */ | 
|  | 2654 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2655 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2656 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2657 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2658 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2659 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2660 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2661 | {0xa0, 0x85, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,85,cc */ | 
|  | 2662 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2663 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2664 | {0xa0, 0x08, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,08,cc */ | 
|  | 2665 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2666 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2667 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,81,cc */ | 
|  | 2668 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2669 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2670 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 2671 | {0xa0, 0x12, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,12,cc */ | 
|  | 2672 | {0xa0, 0xc2, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c2,cc */ | 
|  | 2673 | {0xa0, 0xd6, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d6,cc */ | 
|  | 2674 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, /* 00,1f,ea,cc */ | 
|  | 2675 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 2676 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, /* 01,a7,00,cc */ | 
|  | 2677 | {0xa0, 0xc0, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,c0,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2678 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2679 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2680 | static const struct usb_action icm105a_NoFlikerScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2681 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2682 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2683 | {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ | 
|  | 2684 | {0xaa, 0x0e, 0x000d}, /* 00,0e,0d,aa */ | 
|  | 2685 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2686 | {0xaa, 0x1c, 0x0000}, /* 00,1c,00,aa */ | 
|  | 2687 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2688 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2689 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2690 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2691 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2692 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2693 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2694 | {0xa0, 0x00, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,00,cc */ | 
|  | 2695 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2696 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2697 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,20,cc */ | 
|  | 2698 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2699 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2700 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 
|  | 2701 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2702 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2703 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
|  | 2704 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 
|  | 2705 | {0xa0, 0xc1, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c1,cc */ | 
|  | 2706 | {0xa0, 0xd4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d4,cc */ | 
|  | 2707 | {0xa0, 0xe8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e8,cc */ | 
|  | 2708 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2709 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2710 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2711 | static const struct usb_action icm105a_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2712 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2713 | {0xaa, 0x0d, 0x0003}, /* 00,0d,03,aa */ | 
|  | 2714 | {0xaa, 0x0c, 0x0004}, /* 00,0c,04,aa */ | 
|  | 2715 | {0xaa, 0x0e, 0x0081}, /* 00,0e,81,aa */ | 
|  | 2716 | {0xaa, 0x0f, 0x0002}, /* 00,0f,02,aa */ | 
|  | 2717 | {0xaa, 0x1c, 0x0080}, /* 00,1c,80,aa */ | 
|  | 2718 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 2719 | {0xaa, 0x20, 0x0080}, /* 00,20,80,aa */ | 
|  | 2720 | {0xaa, 0x22, 0x0080}, /* 00,22,80,aa */ | 
|  | 2721 | {0xaa, 0x24, 0x0080}, /* 00,24,80,aa */ | 
|  | 2722 | {0xaa, 0x26, 0x0080}, /* 00,26,80,aa */ | 
|  | 2723 | {0xaa, 0x00, 0x0084}, /* 00,00,84,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2724 | {0xa0, 0x02, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,02,cc */ | 
|  | 2725 | {0xa0, 0x80, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,80,cc */ | 
|  | 2726 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 2727 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 2728 | {0xa0, 0x20, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,20,cc */ | 
|  | 2729 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 2730 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 2731 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 
|  | 2732 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, /* 01,8c,10,cc */ | 
|  | 2733 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,20,cc */ | 
|  | 2734 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
|  | 2735 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 
|  | 2736 | {0xa0, 0xc1, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c1,cc */ | 
|  | 2737 | {0xa0, 0xd4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d4,cc */ | 
|  | 2738 | {0xa0, 0xe8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e8,cc */ | 
|  | 2739 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 2740 | {0xa0, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN}, /* 01,a7,00,cc */ | 
|  | 2741 | {0xa0, 0xc0, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,c0,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2742 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2743 | }; | 
|  | 2744 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 2745 | static const struct usb_action mc501cb_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2746 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 2747 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, /* 00,02,00,cc */ | 
|  | 2748 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,01,cc */ | 
|  | 2749 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 2750 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00,08,03,cc */ | 
|  | 2751 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 2752 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 2753 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 2754 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 2755 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 2756 | {0xa0, 0xd8, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,d8,cc */ | 
|  | 2757 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, /* 00,98,00,cc */ | 
|  | 2758 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, /* 00,9a,00,cc */ | 
|  | 2759 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, /* 01,1a,00,cc */ | 
|  | 2760 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, /* 01,1c,00,cc */ | 
|  | 2761 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, /* 00,9b,01,cc */ | 
|  | 2762 | {0xa0, 0xde, ZC3XX_R09C_WINHEIGHTLOW}, /* 00,9c,de,cc */ | 
|  | 2763 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, /* 00,9d,02,cc */ | 
|  | 2764 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, /* 00,9e,86,cc */ | 
|  | 2765 | {0xa0, 0x33, ZC3XX_R086_EXPTIMEHIGH}, /* 00,86,33,cc */ | 
|  | 2766 | {0xa0, 0x34, ZC3XX_R087_EXPTIMEMID}, /* 00,87,34,cc */ | 
|  | 2767 | {0xa0, 0x35, ZC3XX_R088_EXPTIMELOW}, /* 00,88,35,cc */ | 
|  | 2768 | {0xa0, 0xb0, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,b0,cc */ | 
|  | 2769 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2770 | {0xaa, 0x01, 0x0001}, /* 00,01,01,aa */ | 
|  | 2771 | {0xaa, 0x01, 0x0003}, /* 00,01,03,aa */ | 
|  | 2772 | {0xaa, 0x01, 0x0001}, /* 00,01,01,aa */ | 
|  | 2773 | {0xaa, 0x03, 0x0000}, /* 00,03,00,aa */ | 
|  | 2774 | {0xaa, 0x10, 0x0000}, /* 00,10,00,aa */ | 
|  | 2775 | {0xaa, 0x11, 0x0080}, /* 00,11,80,aa */ | 
|  | 2776 | {0xaa, 0x12, 0x0000}, /* 00,12,00,aa */ | 
|  | 2777 | {0xaa, 0x13, 0x0000}, /* 00,13,00,aa */ | 
|  | 2778 | {0xaa, 0x14, 0x0000}, /* 00,14,00,aa */ | 
|  | 2779 | {0xaa, 0x15, 0x0000}, /* 00,15,00,aa */ | 
|  | 2780 | {0xaa, 0x16, 0x0000}, /* 00,16,00,aa */ | 
|  | 2781 | {0xaa, 0x17, 0x0001}, /* 00,17,01,aa */ | 
|  | 2782 | {0xaa, 0x18, 0x00de}, /* 00,18,de,aa */ | 
|  | 2783 | {0xaa, 0x19, 0x0002}, /* 00,19,02,aa */ | 
|  | 2784 | {0xaa, 0x1a, 0x0086}, /* 00,1a,86,aa */ | 
|  | 2785 | {0xaa, 0x20, 0x00a8}, /* 00,20,a8,aa */ | 
|  | 2786 | {0xaa, 0x22, 0x0000}, /* 00,22,00,aa */ | 
|  | 2787 | {0xaa, 0x23, 0x0000}, /* 00,23,00,aa */ | 
|  | 2788 | {0xaa, 0x24, 0x0000}, /* 00,24,00,aa */ | 
|  | 2789 | {0xaa, 0x40, 0x0033}, /* 00,40,33,aa */ | 
|  | 2790 | {0xaa, 0x41, 0x0077}, /* 00,41,77,aa */ | 
|  | 2791 | {0xaa, 0x42, 0x0053}, /* 00,42,53,aa */ | 
|  | 2792 | {0xaa, 0x43, 0x00b0}, /* 00,43,b0,aa */ | 
|  | 2793 | {0xaa, 0x4b, 0x0001}, /* 00,4b,01,aa */ | 
|  | 2794 | {0xaa, 0x72, 0x0020}, /* 00,72,20,aa */ | 
|  | 2795 | {0xaa, 0x73, 0x0000}, /* 00,73,00,aa */ | 
|  | 2796 | {0xaa, 0x80, 0x0000}, /* 00,80,00,aa */ | 
|  | 2797 | {0xaa, 0x85, 0x0050}, /* 00,85,50,aa */ | 
|  | 2798 | {0xaa, 0x91, 0x0070}, /* 00,91,70,aa */ | 
|  | 2799 | {0xaa, 0x92, 0x0072}, /* 00,92,72,aa */ | 
|  | 2800 | {0xaa, 0x03, 0x0001}, /* 00,03,01,aa */ | 
|  | 2801 | {0xaa, 0x10, 0x00a0}, /* 00,10,a0,aa */ | 
|  | 2802 | {0xaa, 0x11, 0x0001}, /* 00,11,01,aa */ | 
|  | 2803 | {0xaa, 0x30, 0x0000}, /* 00,30,00,aa */ | 
|  | 2804 | {0xaa, 0x60, 0x0000}, /* 00,60,00,aa */ | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 2805 | {0xaa, 0xa0, 0x001a}, /* 00,a0,1a,aa */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2806 | {0xaa, 0xa1, 0x0000}, /* 00,a1,00,aa */ | 
|  | 2807 | {0xaa, 0xa2, 0x003f}, /* 00,a2,3f,aa */ | 
|  | 2808 | {0xaa, 0xa3, 0x0028}, /* 00,a3,28,aa */ | 
|  | 2809 | {0xaa, 0xa4, 0x0010}, /* 00,a4,10,aa */ | 
|  | 2810 | {0xaa, 0xa5, 0x0020}, /* 00,a5,20,aa */ | 
|  | 2811 | {0xaa, 0xb1, 0x0044}, /* 00,b1,44,aa */ | 
|  | 2812 | {0xaa, 0xd0, 0x0001}, /* 00,d0,01,aa */ | 
|  | 2813 | {0xaa, 0xd1, 0x0085}, /* 00,d1,85,aa */ | 
|  | 2814 | {0xaa, 0xd2, 0x0080}, /* 00,d2,80,aa */ | 
|  | 2815 | {0xaa, 0xd3, 0x0080}, /* 00,d3,80,aa */ | 
|  | 2816 | {0xaa, 0xd4, 0x0080}, /* 00,d4,80,aa */ | 
|  | 2817 | {0xaa, 0xd5, 0x0080}, /* 00,d5,80,aa */ | 
|  | 2818 | {0xaa, 0xc0, 0x00c3}, /* 00,c0,c3,aa */ | 
|  | 2819 | {0xaa, 0xc2, 0x0044}, /* 00,c2,44,aa */ | 
|  | 2820 | {0xaa, 0xc4, 0x0040}, /* 00,c4,40,aa */ | 
|  | 2821 | {0xaa, 0xc5, 0x0020}, /* 00,c5,20,aa */ | 
|  | 2822 | {0xaa, 0xc6, 0x0008}, /* 00,c6,08,aa */ | 
|  | 2823 | {0xaa, 0x03, 0x0004}, /* 00,03,04,aa */ | 
|  | 2824 | {0xaa, 0x10, 0x0000}, /* 00,10,00,aa */ | 
|  | 2825 | {0xaa, 0x40, 0x0030}, /* 00,40,30,aa */ | 
|  | 2826 | {0xaa, 0x41, 0x0020}, /* 00,41,20,aa */ | 
|  | 2827 | {0xaa, 0x42, 0x002d}, /* 00,42,2d,aa */ | 
|  | 2828 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2829 | {0xaa, 0x1c, 0x0050}, /* 00,1C,50,aa */ | 
|  | 2830 | {0xaa, 0x11, 0x0081}, /* 00,11,81,aa */ | 
|  | 2831 | {0xaa, 0x3b, 0x001d}, /* 00,3b,1D,aa */ | 
|  | 2832 | {0xaa, 0x3c, 0x004c}, /* 00,3c,4C,aa */ | 
|  | 2833 | {0xaa, 0x3d, 0x0018}, /* 00,3d,18,aa */ | 
|  | 2834 | {0xaa, 0x3e, 0x006a}, /* 00,3e,6A,aa */ | 
|  | 2835 | {0xaa, 0x01, 0x0000}, /* 00,01,00,aa */ | 
|  | 2836 | {0xaa, 0x52, 0x00ff}, /* 00,52,FF,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2837 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
|  | 2838 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 2839 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,37,cc */ | 
|  | 2840 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, /* 01,89,06,cc */ | 
|  | 2841 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 2842 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, /* 01,cb,13,cc */ | 
|  | 2843 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 2844 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, /* 03,01,08,cc */ | 
|  | 2845 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,02,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2846 | {0xaa, 0x03, 0x0002}, /* 00,03,02,aa */ | 
|  | 2847 | {0xaa, 0x51, 0x0027}, /* 00,51,27,aa */ | 
|  | 2848 | {0xaa, 0x52, 0x0020}, /* 00,52,20,aa */ | 
|  | 2849 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2850 | {0xaa, 0x50, 0x0010}, /* 00,50,10,aa */ | 
|  | 2851 | {0xaa, 0x51, 0x0010}, /* 00,51,10,aa */ | 
|  | 2852 | {0xaa, 0x54, 0x0010}, /* 00,54,10,aa */ | 
|  | 2853 | {0xaa, 0x55, 0x0010}, /* 00,55,10,aa */ | 
|  | 2854 | {0xa0, 0xf0, 0x0199}, /* 01,99,F0,cc */ | 
|  | 2855 | {0xa0, 0x80, 0x019a}, /* 01,9A,80,cc */ | 
|  | 2856 |  | 
|  | 2857 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2858 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 2859 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ | 
|  | 2860 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ | 
|  | 2861 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2862 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2863 | }; | 
|  | 2864 |  | 
| Jean-François Moine | 780e312 | 2010-10-19 04:29:10 -0300 | [diff] [blame] | 2865 | static const struct usb_action mc501cb_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2866 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 2867 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, /* 00,02,10,cc */ | 
|  | 2868 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,01,cc */ | 
|  | 2869 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 2870 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00,08,03,cc */ | 
|  | 2871 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 2872 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 2873 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 2874 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 2875 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 2876 | {0xa0, 0xd0, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,d0,cc */ | 
|  | 2877 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, /* 00,98,00,cc */ | 
|  | 2878 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, /* 00,9a,00,cc */ | 
|  | 2879 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, /* 01,1a,00,cc */ | 
|  | 2880 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, /* 01,1c,00,cc */ | 
|  | 2881 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH}, /* 00,9b,01,cc */ | 
|  | 2882 | {0xa0, 0xd8, ZC3XX_R09C_WINHEIGHTLOW}, /* 00,9c,d8,cc */ | 
|  | 2883 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, /* 00,9d,02,cc */ | 
|  | 2884 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, /* 00,9e,88,cc */ | 
|  | 2885 | {0xa0, 0x33, ZC3XX_R086_EXPTIMEHIGH}, /* 00,86,33,cc */ | 
|  | 2886 | {0xa0, 0x34, ZC3XX_R087_EXPTIMEMID}, /* 00,87,34,cc */ | 
|  | 2887 | {0xa0, 0x35, ZC3XX_R088_EXPTIMELOW}, /* 00,88,35,cc */ | 
|  | 2888 | {0xa0, 0xb0, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,b0,cc */ | 
|  | 2889 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2890 | {0xaa, 0x01, 0x0001}, /* 00,01,01,aa */ | 
|  | 2891 | {0xaa, 0x01, 0x0003}, /* 00,01,03,aa */ | 
|  | 2892 | {0xaa, 0x01, 0x0001}, /* 00,01,01,aa */ | 
|  | 2893 | {0xaa, 0x03, 0x0000}, /* 00,03,00,aa */ | 
|  | 2894 | {0xaa, 0x10, 0x0000}, /* 00,10,00,aa */ | 
|  | 2895 | {0xaa, 0x11, 0x0080}, /* 00,11,80,aa */ | 
|  | 2896 | {0xaa, 0x12, 0x0000}, /* 00,12,00,aa */ | 
|  | 2897 | {0xaa, 0x13, 0x0000}, /* 00,13,00,aa */ | 
|  | 2898 | {0xaa, 0x14, 0x0000}, /* 00,14,00,aa */ | 
|  | 2899 | {0xaa, 0x15, 0x0000}, /* 00,15,00,aa */ | 
|  | 2900 | {0xaa, 0x16, 0x0000}, /* 00,16,00,aa */ | 
|  | 2901 | {0xaa, 0x17, 0x0001}, /* 00,17,01,aa */ | 
|  | 2902 | {0xaa, 0x18, 0x00d8}, /* 00,18,d8,aa */ | 
|  | 2903 | {0xaa, 0x19, 0x0002}, /* 00,19,02,aa */ | 
|  | 2904 | {0xaa, 0x1a, 0x0088}, /* 00,1a,88,aa */ | 
|  | 2905 | {0xaa, 0x20, 0x00a8}, /* 00,20,a8,aa */ | 
|  | 2906 | {0xaa, 0x22, 0x0000}, /* 00,22,00,aa */ | 
|  | 2907 | {0xaa, 0x23, 0x0000}, /* 00,23,00,aa */ | 
|  | 2908 | {0xaa, 0x24, 0x0000}, /* 00,24,00,aa */ | 
|  | 2909 | {0xaa, 0x40, 0x0033}, /* 00,40,33,aa */ | 
|  | 2910 | {0xaa, 0x41, 0x0077}, /* 00,41,77,aa */ | 
|  | 2911 | {0xaa, 0x42, 0x0053}, /* 00,42,53,aa */ | 
|  | 2912 | {0xaa, 0x43, 0x00b0}, /* 00,43,b0,aa */ | 
|  | 2913 | {0xaa, 0x4b, 0x0001}, /* 00,4b,01,aa */ | 
|  | 2914 | {0xaa, 0x72, 0x0020}, /* 00,72,20,aa */ | 
|  | 2915 | {0xaa, 0x73, 0x0000}, /* 00,73,00,aa */ | 
|  | 2916 | {0xaa, 0x80, 0x0000}, /* 00,80,00,aa */ | 
|  | 2917 | {0xaa, 0x85, 0x0050}, /* 00,85,50,aa */ | 
|  | 2918 | {0xaa, 0x91, 0x0070}, /* 00,91,70,aa */ | 
|  | 2919 | {0xaa, 0x92, 0x0072}, /* 00,92,72,aa */ | 
|  | 2920 | {0xaa, 0x03, 0x0001}, /* 00,03,01,aa */ | 
|  | 2921 | {0xaa, 0x10, 0x00a0}, /* 00,10,a0,aa */ | 
|  | 2922 | {0xaa, 0x11, 0x0001}, /* 00,11,01,aa */ | 
|  | 2923 | {0xaa, 0x30, 0x0000}, /* 00,30,00,aa */ | 
|  | 2924 | {0xaa, 0x60, 0x0000}, /* 00,60,00,aa */ | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 2925 | {0xaa, 0xa0, 0x001a}, /* 00,a0,1a,aa */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2926 | {0xaa, 0xa1, 0x0000}, /* 00,a1,00,aa */ | 
|  | 2927 | {0xaa, 0xa2, 0x003f}, /* 00,a2,3f,aa */ | 
|  | 2928 | {0xaa, 0xa3, 0x0028}, /* 00,a3,28,aa */ | 
|  | 2929 | {0xaa, 0xa4, 0x0010}, /* 00,a4,10,aa */ | 
|  | 2930 | {0xaa, 0xa5, 0x0020}, /* 00,a5,20,aa */ | 
|  | 2931 | {0xaa, 0xb1, 0x0044}, /* 00,b1,44,aa */ | 
|  | 2932 | {0xaa, 0xd0, 0x0001}, /* 00,d0,01,aa */ | 
|  | 2933 | {0xaa, 0xd1, 0x0085}, /* 00,d1,85,aa */ | 
|  | 2934 | {0xaa, 0xd2, 0x0080}, /* 00,d2,80,aa */ | 
|  | 2935 | {0xaa, 0xd3, 0x0080}, /* 00,d3,80,aa */ | 
|  | 2936 | {0xaa, 0xd4, 0x0080}, /* 00,d4,80,aa */ | 
|  | 2937 | {0xaa, 0xd5, 0x0080}, /* 00,d5,80,aa */ | 
|  | 2938 | {0xaa, 0xc0, 0x00c3}, /* 00,c0,c3,aa */ | 
|  | 2939 | {0xaa, 0xc2, 0x0044}, /* 00,c2,44,aa */ | 
|  | 2940 | {0xaa, 0xc4, 0x0040}, /* 00,c4,40,aa */ | 
|  | 2941 | {0xaa, 0xc5, 0x0020}, /* 00,c5,20,aa */ | 
|  | 2942 | {0xaa, 0xc6, 0x0008}, /* 00,c6,08,aa */ | 
|  | 2943 | {0xaa, 0x03, 0x0004}, /* 00,03,04,aa */ | 
|  | 2944 | {0xaa, 0x10, 0x0000}, /* 00,10,00,aa */ | 
|  | 2945 | {0xaa, 0x40, 0x0030}, /* 00,40,30,aa */ | 
|  | 2946 | {0xaa, 0x41, 0x0020}, /* 00,41,20,aa */ | 
|  | 2947 | {0xaa, 0x42, 0x002d}, /* 00,42,2d,aa */ | 
|  | 2948 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2949 | {0xaa, 0x1c, 0x0050}, /* 00,1c,50,aa */ | 
|  | 2950 | {0xaa, 0x11, 0x0081}, /* 00,11,81,aa */ | 
|  | 2951 | {0xaa, 0x3b, 0x003a}, /* 00,3b,3A,aa */ | 
|  | 2952 | {0xaa, 0x3c, 0x0098}, /* 00,3c,98,aa */ | 
|  | 2953 | {0xaa, 0x3d, 0x0030}, /* 00,3d,30,aa */ | 
|  | 2954 | {0xaa, 0x3e, 0x00d4}, /* 00,3E,D4,aa */ | 
|  | 2955 | {0xaa, 0x01, 0x0000}, /* 00,01,00,aa */ | 
|  | 2956 | {0xaa, 0x52, 0x00ff}, /* 00,52,FF,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 2957 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
|  | 2958 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 2959 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,37,cc */ | 
|  | 2960 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, /* 01,89,06,cc */ | 
|  | 2961 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 2962 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, /* 01,cb,13,cc */ | 
|  | 2963 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 2964 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, /* 03,01,08,cc */ | 
|  | 2965 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,02,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2966 | {0xaa, 0x03, 0x0002}, /* 00,03,02,aa */ | 
|  | 2967 | {0xaa, 0x51, 0x004e}, /* 00,51,4E,aa */ | 
|  | 2968 | {0xaa, 0x52, 0x0041}, /* 00,52,41,aa */ | 
|  | 2969 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2970 | {0xaa, 0x50, 0x0010}, /* 00,50,10,aa */ | 
|  | 2971 | {0xaa, 0x51, 0x0010}, /* 00,51,10,aa */ | 
|  | 2972 | {0xaa, 0x54, 0x0010}, /* 00,54,10,aa */ | 
|  | 2973 | {0xaa, 0x55, 0x0010}, /* 00,55,10,aa */ | 
|  | 2974 | {0xa0, 0xf0, 0x0199}, /* 01,99,F0,cc */ | 
|  | 2975 | {0xa0, 0x80, 0x019a}, /* 01,9A,80,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2976 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2977 | }; | 
|  | 2978 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 2979 | static const struct usb_action mc501cb_50HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2980 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2981 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 2982 | {0xaa, 0x36, 0x001d}, /* 00,36,1D,aa */ | 
|  | 2983 | {0xaa, 0x37, 0x004c}, /* 00,37,4C,aa */ | 
|  | 2984 | {0xaa, 0x3b, 0x001d}, /* 00,3B,1D,aa */ | 
|  | 2985 | {0xaa, 0x3c, 0x004c}, /* 00,3C,4C,aa */ | 
|  | 2986 | {0xaa, 0x3d, 0x001d}, /* 00,3D,1D,aa */ | 
|  | 2987 | {0xaa, 0x3e, 0x004c}, /* 00,3E,4C,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 2988 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2989 | }; | 
|  | 2990 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 2991 | static const struct usb_action mc501cb_50HZScale[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 2992 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 2993 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 2994 | {0xaa, 0x36, 0x003a}, /* 00,36,3A,aa */ | 
|  | 2995 | {0xaa, 0x37, 0x0098}, /* 00,37,98,aa */ | 
|  | 2996 | {0xaa, 0x3b, 0x003a}, /* 00,3B,3A,aa */ | 
|  | 2997 | {0xaa, 0x3c, 0x0098}, /* 00,3C,98,aa */ | 
|  | 2998 | {0xaa, 0x3d, 0x003a}, /* 00,3D,3A,aa */ | 
|  | 2999 | {0xaa, 0x3e, 0x0098}, /* 00,3E,98,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3000 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3001 | }; | 
|  | 3002 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 3003 | static const struct usb_action mc501cb_60HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3004 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 3005 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 3006 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ | 
|  | 3007 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ | 
|  | 3008 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ | 
|  | 3009 | {0xaa, 0x3e, 0x006a}, /* 00,3E,6A,aa */ | 
|  | 3010 | {0xaa, 0x3b, 0x0018}, /* 00,3B,18,aa */ | 
|  | 3011 | {0xaa, 0x3c, 0x006a}, /* 00,3C,6A,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3012 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3013 | }; | 
|  | 3014 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 3015 | static const struct usb_action mc501cb_60HZScale[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3016 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 3017 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 3018 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ | 
|  | 3019 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ | 
|  | 3020 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ | 
|  | 3021 | {0xaa, 0x3e, 0x00d4}, /* 00,3E,D4,aa */ | 
|  | 3022 | {0xaa, 0x3b, 0x0030}, /* 00,3B,30,aa */ | 
|  | 3023 | {0xaa, 0x3c, 0x00d4}, /* 00,3C,D4,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3024 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3025 | }; | 
|  | 3026 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 3027 | static const struct usb_action mc501cb_NoFliker[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3028 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 3029 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 3030 | {0xaa, 0x36, 0x0018}, /* 00,36,18,aa */ | 
|  | 3031 | {0xaa, 0x37, 0x006a}, /* 00,37,6A,aa */ | 
|  | 3032 | {0xaa, 0x3d, 0x0018}, /* 00,3D,18,aa */ | 
|  | 3033 | {0xaa, 0x3e, 0x006a}, /* 00,3E,6A,aa */ | 
|  | 3034 | {0xaa, 0x3b, 0x0018}, /* 00,3B,18,aa */ | 
|  | 3035 | {0xaa, 0x3c, 0x006a}, /* 00,3C,6A,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3036 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3037 | }; | 
|  | 3038 |  | 
| Jean-François Moine | da75191 | 2011-04-19 14:51:15 -0300 | [diff] [blame] | 3039 | static const struct usb_action mc501cb_NoFlikerScale[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3040 | {0xaa, 0x03, 0x0003}, /* 00,03,03,aa */ | 
|  | 3041 | {0xaa, 0x10, 0x00fc}, /* 00,10,fc,aa */ | 
|  | 3042 | {0xaa, 0x36, 0x0030}, /* 00,36,30,aa */ | 
|  | 3043 | {0xaa, 0x37, 0x00d4}, /* 00,37,D4,aa */ | 
|  | 3044 | {0xaa, 0x3d, 0x0030}, /* 00,3D,30,aa */ | 
|  | 3045 | {0xaa, 0x3e, 0x00d4}, /* 00,3E,D4,aa */ | 
|  | 3046 | {0xaa, 0x3b, 0x0030}, /* 00,3B,30,aa */ | 
|  | 3047 | {0xaa, 0x3c, 0x00d4}, /* 00,3C,D4,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3048 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3049 | }; | 
|  | 3050 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3051 | /* from zs211.inf */ | 
|  | 3052 | static const struct usb_action ov7620_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3053 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 3054 | {0xa0, 0x40, ZC3XX_R002_CLOCKSELECT}, /* 00,02,40,cc */ | 
|  | 3055 | {0xa0, 0x00, ZC3XX_R008_CLOCKSETTING}, /* 00,08,00,cc */ | 
|  | 3056 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 3057 | {0xa0, 0x06, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,06,cc */ | 
|  | 3058 | {0xa0, 0x02, ZC3XX_R083_RGAINADDR}, /* 00,83,02,cc */ | 
|  | 3059 | {0xa0, 0x01, ZC3XX_R085_BGAINADDR}, /* 00,85,01,cc */ | 
|  | 3060 | {0xa0, 0x80, ZC3XX_R086_EXPTIMEHIGH}, /* 00,86,80,cc */ | 
|  | 3061 | {0xa0, 0x81, ZC3XX_R087_EXPTIMEMID}, /* 00,87,81,cc */ | 
|  | 3062 | {0xa0, 0x10, ZC3XX_R088_EXPTIMELOW}, /* 00,88,10,cc */ | 
|  | 3063 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,a1,cc */ | 
|  | 3064 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, /* 00,8d,08,cc */ | 
|  | 3065 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 3066 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 3067 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 3068 | {0xa0, 0xd8, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,d8,cc */ | 
|  | 3069 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,03,cc */ | 
|  | 3070 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 3071 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, /* 00,98,00,cc */ | 
|  | 3072 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, /* 00,9a,00,cc */ | 
|  | 3073 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, /* 01,1a,00,cc */ | 
|  | 3074 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, /* 01,1c,00,cc */ | 
|  | 3075 | {0xa0, 0xde, ZC3XX_R09C_WINHEIGHTLOW}, /* 00,9c,de,cc */ | 
|  | 3076 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, /* 00,9e,86,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3077 | {0xaa, 0x12, 0x0088}, /* 00,12,88,aa */ | 
|  | 3078 | {0xaa, 0x12, 0x0048}, /* 00,12,48,aa */ | 
|  | 3079 | {0xaa, 0x75, 0x008a}, /* 00,75,8a,aa */ | 
|  | 3080 | {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ | 
|  | 3081 | {0xaa, 0x04, 0x0000}, /* 00,04,00,aa */ | 
|  | 3082 | {0xaa, 0x05, 0x0000}, /* 00,05,00,aa */ | 
|  | 3083 | {0xaa, 0x14, 0x0000}, /* 00,14,00,aa */ | 
|  | 3084 | {0xaa, 0x15, 0x0004}, /* 00,15,04,aa */ | 
|  | 3085 | {0xaa, 0x17, 0x0018}, /* 00,17,18,aa */ | 
|  | 3086 | {0xaa, 0x18, 0x00ba}, /* 00,18,ba,aa */ | 
|  | 3087 | {0xaa, 0x19, 0x0002}, /* 00,19,02,aa */ | 
|  | 3088 | {0xaa, 0x1a, 0x00f1}, /* 00,1a,f1,aa */ | 
|  | 3089 | {0xaa, 0x20, 0x0040}, /* 00,20,40,aa */ | 
|  | 3090 | {0xaa, 0x24, 0x0088}, /* 00,24,88,aa */ | 
|  | 3091 | {0xaa, 0x25, 0x0078}, /* 00,25,78,aa */ | 
|  | 3092 | {0xaa, 0x27, 0x00f6}, /* 00,27,f6,aa */ | 
|  | 3093 | {0xaa, 0x28, 0x00a0}, /* 00,28,a0,aa */ | 
|  | 3094 | {0xaa, 0x21, 0x0000}, /* 00,21,00,aa */ | 
|  | 3095 | {0xaa, 0x2a, 0x0083}, /* 00,2a,83,aa */ | 
|  | 3096 | {0xaa, 0x2b, 0x0096}, /* 00,2b,96,aa */ | 
|  | 3097 | {0xaa, 0x2d, 0x0005}, /* 00,2d,05,aa */ | 
|  | 3098 | {0xaa, 0x74, 0x0020}, /* 00,74,20,aa */ | 
|  | 3099 | {0xaa, 0x61, 0x0068}, /* 00,61,68,aa */ | 
|  | 3100 | {0xaa, 0x64, 0x0088}, /* 00,64,88,aa */ | 
|  | 3101 | {0xaa, 0x00, 0x0000}, /* 00,00,00,aa */ | 
|  | 3102 | {0xaa, 0x06, 0x0080}, /* 00,06,80,aa */ | 
|  | 3103 | {0xaa, 0x01, 0x0090}, /* 00,01,90,aa */ | 
|  | 3104 | {0xaa, 0x02, 0x0030}, /* 00,02,30,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3105 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,77,cc */ | 
|  | 3106 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 3107 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 3108 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, /* 01,89,06,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3109 | {0xa0, 0x00, 0x01ad}, /* 01,ad,00,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3110 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 3111 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, /* 01,cb,13,cc */ | 
|  | 3112 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 3113 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, /* 03,01,08,cc */ | 
|  | 3114 | {0xa0, 0x68, ZC3XX_R116_RGAIN}, /* 01,16,68,cc */ | 
|  | 3115 | {0xa0, 0x52, ZC3XX_R118_BGAIN}, /* 01,18,52,cc */ | 
|  | 3116 | {0xa0, 0x40, ZC3XX_R11D_GLOBALGAIN}, /* 01,1d,40,cc */ | 
|  | 3117 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,02,cc */ | 
|  | 3118 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,50,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3119 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3120 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3121 | static const struct usb_action ov7620_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3122 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 3123 | {0xa0, 0x50, ZC3XX_R002_CLOCKSELECT},	/* 00,02,50,cc */ | 
|  | 3124 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00,08,00,cc */ | 
|  | 3125 | /* mx change? */ | 
|  | 3126 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 3127 | {0xa0, 0x06, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,06,cc */ | 
|  | 3128 | {0xa0, 0x02, ZC3XX_R083_RGAINADDR},	/* 00,83,02,cc */ | 
|  | 3129 | {0xa0, 0x01, ZC3XX_R085_BGAINADDR},	/* 00,85,01,cc */ | 
|  | 3130 | {0xa0, 0x80, ZC3XX_R086_EXPTIMEHIGH},	/* 00,86,80,cc */ | 
|  | 3131 | {0xa0, 0x81, ZC3XX_R087_EXPTIMEMID},	/* 00,87,81,cc */ | 
|  | 3132 | {0xa0, 0x10, ZC3XX_R088_EXPTIMELOW},	/* 00,88,10,cc */ | 
|  | 3133 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,a1,cc */ | 
|  | 3134 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, /* 00,8d,08,cc */ | 
|  | 3135 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 3136 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 3137 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 3138 | {0xa0, 0xd0, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,d0,cc */ | 
|  | 3139 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,03,cc */ | 
|  | 3140 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 3141 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},	/* 00,98,00,cc */ | 
|  | 3142 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},	/* 00,9a,00,cc */ | 
|  | 3143 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},	/* 01,1a,00,cc */ | 
|  | 3144 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},	/* 01,1c,00,cc */ | 
|  | 3145 | {0xa0, 0xd6, ZC3XX_R09C_WINHEIGHTLOW},	/* 00,9c,d6,cc */ | 
|  | 3146 | /* OV7648 00,9c,d8,cc */ | 
|  | 3147 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},	/* 00,9e,88,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3148 | {0xaa, 0x12, 0x0088}, /* 00,12,88,aa */ | 
|  | 3149 | {0xaa, 0x12, 0x0048}, /* 00,12,48,aa */ | 
|  | 3150 | {0xaa, 0x75, 0x008a}, /* 00,75,8a,aa */ | 
|  | 3151 | {0xaa, 0x13, 0x00a3}, /* 00,13,a3,aa */ | 
|  | 3152 | {0xaa, 0x04, 0x0000}, /* 00,04,00,aa */ | 
|  | 3153 | {0xaa, 0x05, 0x0000}, /* 00,05,00,aa */ | 
|  | 3154 | {0xaa, 0x14, 0x0000}, /* 00,14,00,aa */ | 
|  | 3155 | {0xaa, 0x15, 0x0004}, /* 00,15,04,aa */ | 
|  | 3156 | {0xaa, 0x24, 0x0088}, /* 00,24,88,aa */ | 
|  | 3157 | {0xaa, 0x25, 0x0078}, /* 00,25,78,aa */ | 
|  | 3158 | {0xaa, 0x17, 0x0018}, /* 00,17,18,aa */ | 
|  | 3159 | {0xaa, 0x18, 0x00ba}, /* 00,18,ba,aa */ | 
|  | 3160 | {0xaa, 0x19, 0x0002}, /* 00,19,02,aa */ | 
|  | 3161 | {0xaa, 0x1a, 0x00f2}, /* 00,1a,f2,aa */ | 
|  | 3162 | {0xaa, 0x20, 0x0040}, /* 00,20,40,aa */ | 
|  | 3163 | {0xaa, 0x27, 0x00f6}, /* 00,27,f6,aa */ | 
|  | 3164 | {0xaa, 0x28, 0x00a0}, /* 00,28,a0,aa */ | 
|  | 3165 | {0xaa, 0x21, 0x0000}, /* 00,21,00,aa */ | 
|  | 3166 | {0xaa, 0x2a, 0x0083}, /* 00,2a,83,aa */ | 
|  | 3167 | {0xaa, 0x2b, 0x0096}, /* 00,2b,96,aa */ | 
|  | 3168 | {0xaa, 0x2d, 0x0005}, /* 00,2d,05,aa */ | 
|  | 3169 | {0xaa, 0x74, 0x0020}, /* 00,74,20,aa */ | 
|  | 3170 | {0xaa, 0x61, 0x0068}, /* 00,61,68,aa */ | 
|  | 3171 | {0xaa, 0x64, 0x0088}, /* 00,64,88,aa */ | 
|  | 3172 | {0xaa, 0x00, 0x0000}, /* 00,00,00,aa */ | 
|  | 3173 | {0xaa, 0x06, 0x0080}, /* 00,06,80,aa */ | 
|  | 3174 | {0xaa, 0x01, 0x0090}, /* 00,01,90,aa */ | 
|  | 3175 | {0xaa, 0x02, 0x0030}, /* 00,02,30,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3176 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,77,cc */ | 
|  | 3177 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 3178 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 3179 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},	/* 01,89,06,cc */ | 
|  | 3180 | {0xa0, 0x00, 0x01ad},			/* 01,ad,00,cc */ | 
|  | 3181 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 3182 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},	/* 01,cb,13,cc */ | 
|  | 3183 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 3184 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},	/* 03,01,08,cc */ | 
|  | 3185 | {0xa0, 0x68, ZC3XX_R116_RGAIN},		/* 01,16,68,cc */ | 
|  | 3186 | {0xa0, 0x52, ZC3XX_R118_BGAIN},		/* 01,18,52,cc */ | 
|  | 3187 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN},	/* 01,1d,50,cc */ | 
|  | 3188 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,02,cc */ | 
|  | 3189 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN},	/* 01,a8,50,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3190 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3191 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3192 | static const struct usb_action ov7620_50HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3193 | {0xaa, 0x13, 0x00a3},	/* 00,13,a3,aa */ | 
|  | 3194 | {0xdd, 0x00, 0x0100},	/* 00,01,00,dd */ | 
|  | 3195 | {0xaa, 0x2b, 0x0096},	/* 00,2b,96,aa */ | 
|  | 3196 | {0xaa, 0x75, 0x008a},	/* 00,75,8a,aa */ | 
|  | 3197 | {0xaa, 0x2d, 0x0005},	/* 00,2d,05,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3198 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
|  | 3199 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,04,cc */ | 
|  | 3200 | {0xa0, 0x18, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,18,cc */ | 
|  | 3201 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 3202 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 3203 | {0xa0, 0x83, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,83,cc */ | 
|  | 3204 | {0xaa, 0x10, 0x0082},				/* 00,10,82,aa */ | 
|  | 3205 | {0xaa, 0x76, 0x0003},				/* 00,76,03,aa */ | 
|  | 3206 | /*	{0xa0, 0x40, ZC3XX_R002_CLOCKSELECT},		 * 00,02,40,cc | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 3207 | * if mode0 (640x480) */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3208 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3209 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3210 | static const struct usb_action ov7620_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3211 | {0xaa, 0x13, 0x00a3},			/* 00,13,a3,aa */ | 
|  | 3212 | /* (bug in zs211.inf) */ | 
|  | 3213 | {0xdd, 0x00, 0x0100},			/* 00,01,00,dd */ | 
|  | 3214 | {0xaa, 0x2b, 0x0000},			/* 00,2b,00,aa */ | 
|  | 3215 | {0xaa, 0x75, 0x008a},			/* 00,75,8a,aa */ | 
|  | 3216 | {0xaa, 0x2d, 0x0005},			/* 00,2d,05,aa */ | 
|  | 3217 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 3218 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 3219 | {0xa0, 0x18, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,18,cc */ | 
|  | 3220 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 3221 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 3222 | {0xa0, 0x83, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,83,cc */ | 
|  | 3223 | {0xaa, 0x10, 0x0020},			/* 00,10,20,aa */ | 
|  | 3224 | {0xaa, 0x76, 0x0003},			/* 00,76,03,aa */ | 
|  | 3225 | /*	{0xa0, 0x40, ZC3XX_R002_CLOCKSELECT},	 * 00,02,40,cc | 
|  | 3226 | * if mode0 (640x480) */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3227 | /* ?? in gspca v1, it was | 
|  | 3228 | {0xa0, 0x00, 0x0039},  * 00,00,00,dd * | 
|  | 3229 | {0xa1, 0x01, 0x0037},		*/ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3230 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3231 | }; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3232 | static const struct usb_action ov7620_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3233 | {0xaa, 0x13, 0x00a3},			/* 00,13,a3,aa */ | 
|  | 3234 | /* (bug in zs211.inf) */ | 
|  | 3235 | {0xdd, 0x00, 0x0100},			/* 00,01,00,dd */ | 
|  | 3236 | {0xaa, 0x2b, 0x0000},			/* 00,2b,00,aa */ | 
|  | 3237 | {0xaa, 0x75, 0x008e},			/* 00,75,8e,aa */ | 
|  | 3238 | {0xaa, 0x2d, 0x0001},			/* 00,2d,01,aa */ | 
|  | 3239 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 3240 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,04,cc */ | 
|  | 3241 | {0xa0, 0x18, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,18,cc */ | 
|  | 3242 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 3243 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 3244 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,01,cc */ | 
|  | 3245 | /*	{0xa0, 0x44, ZC3XX_R002_CLOCKSELECT},	 * 00,02,44,cc | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 3246 | * if mode1 (320x240) */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3247 | /* ?? was | 
|  | 3248 | {0xa0, 0x00, 0x0039},  * 00,00,00,dd * | 
|  | 3249 | {0xa1, 0x01, 0x0037},		*/ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3250 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3251 | }; | 
|  | 3252 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3253 | static const struct usb_action ov7630c_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3254 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 3255 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 3256 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 3257 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 3258 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3259 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 3260 | {0xa0, 0x06, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 3261 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 3262 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, | 
|  | 3263 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 3264 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 3265 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 3266 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 3267 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3268 | {0xaa, 0x12, 0x0080}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3269 | {0xa0, 0x02, ZC3XX_R083_RGAINADDR}, | 
|  | 3270 | {0xa0, 0x01, ZC3XX_R085_BGAINADDR}, | 
|  | 3271 | {0xa0, 0x90, ZC3XX_R086_EXPTIMEHIGH}, | 
|  | 3272 | {0xa0, 0x91, ZC3XX_R087_EXPTIMEMID}, | 
|  | 3273 | {0xa0, 0x10, ZC3XX_R088_EXPTIMELOW}, | 
|  | 3274 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 3275 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 3276 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 3277 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 3278 | {0xa0, 0xd8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 3279 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3280 | {0xaa, 0x12, 0x0069}, | 
|  | 3281 | {0xaa, 0x04, 0x0020}, | 
|  | 3282 | {0xaa, 0x06, 0x0050}, | 
|  | 3283 | {0xaa, 0x13, 0x0083}, | 
|  | 3284 | {0xaa, 0x14, 0x0000}, | 
|  | 3285 | {0xaa, 0x15, 0x0024}, | 
|  | 3286 | {0xaa, 0x17, 0x0018}, | 
|  | 3287 | {0xaa, 0x18, 0x00ba}, | 
|  | 3288 | {0xaa, 0x19, 0x0002}, | 
|  | 3289 | {0xaa, 0x1a, 0x00f6}, | 
|  | 3290 | {0xaa, 0x1b, 0x0002}, | 
|  | 3291 | {0xaa, 0x20, 0x00c2}, | 
|  | 3292 | {0xaa, 0x24, 0x0060}, | 
|  | 3293 | {0xaa, 0x25, 0x0040}, | 
|  | 3294 | {0xaa, 0x26, 0x0030}, | 
|  | 3295 | {0xaa, 0x27, 0x00ea}, | 
|  | 3296 | {0xaa, 0x28, 0x00a0}, | 
|  | 3297 | {0xaa, 0x21, 0x0000}, | 
|  | 3298 | {0xaa, 0x2a, 0x0081}, | 
|  | 3299 | {0xaa, 0x2b, 0x0096}, | 
|  | 3300 | {0xaa, 0x2d, 0x0094}, | 
|  | 3301 | {0xaa, 0x2f, 0x003d}, | 
|  | 3302 | {0xaa, 0x30, 0x0024}, | 
|  | 3303 | {0xaa, 0x60, 0x0000}, | 
|  | 3304 | {0xaa, 0x61, 0x0040}, | 
|  | 3305 | {0xaa, 0x68, 0x007c}, | 
|  | 3306 | {0xaa, 0x6f, 0x0015}, | 
|  | 3307 | {0xaa, 0x75, 0x0088}, | 
|  | 3308 | {0xaa, 0x77, 0x00b5}, | 
|  | 3309 | {0xaa, 0x01, 0x0060}, | 
|  | 3310 | {0xaa, 0x02, 0x0060}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3311 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 3312 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 3313 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 3314 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 3315 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3316 | {0xa0, 0x00, 0x01ad}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3317 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 3318 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 3319 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 3320 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 3321 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 3322 | {0xa0, 0x46, ZC3XX_R118_BGAIN}, | 
|  | 3323 | {0xa0, 0x04, ZC3XX_R113_RGB03}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3324 | /* 0x10, */ | 
|  | 3325 | {0xa1, 0x01, 0x0002}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3326 | {0xa0, 0x50, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3327 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | 
|  | 3328 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | 
|  | 3329 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | 
|  | 3330 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | 
|  | 3331 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | 
|  | 3332 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | 
|  | 3333 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | 
|  | 3334 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3335 | {0xa1, 0x01, 0x0008}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3336 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 3337 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3338 | {0xa1, 0x01, 0x01c8}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3339 | {0xa1, 0x01, 0x01c9}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3340 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3341 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 3342 | {0xa0, 0x01, ZC3XX_R120_GAMMA00},	/* gamma 2 ?*/ | 
|  | 3343 | {0xa0, 0x0c, ZC3XX_R121_GAMMA01}, | 
|  | 3344 | {0xa0, 0x1f, ZC3XX_R122_GAMMA02}, | 
|  | 3345 | {0xa0, 0x3a, ZC3XX_R123_GAMMA03}, | 
|  | 3346 | {0xa0, 0x53, ZC3XX_R124_GAMMA04}, | 
|  | 3347 | {0xa0, 0x6d, ZC3XX_R125_GAMMA05}, | 
|  | 3348 | {0xa0, 0x85, ZC3XX_R126_GAMMA06}, | 
|  | 3349 | {0xa0, 0x9c, ZC3XX_R127_GAMMA07}, | 
|  | 3350 | {0xa0, 0xb0, ZC3XX_R128_GAMMA08}, | 
|  | 3351 | {0xa0, 0xc2, ZC3XX_R129_GAMMA09}, | 
|  | 3352 | {0xa0, 0xd1, ZC3XX_R12A_GAMMA0A}, | 
|  | 3353 | {0xa0, 0xde, ZC3XX_R12B_GAMMA0B}, | 
|  | 3354 | {0xa0, 0xe9, ZC3XX_R12C_GAMMA0C}, | 
|  | 3355 | {0xa0, 0xf2, ZC3XX_R12D_GAMMA0D}, | 
|  | 3356 | {0xa0, 0xf9, ZC3XX_R12E_GAMMA0E}, | 
|  | 3357 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 3358 | {0xa0, 0x05, ZC3XX_R130_GAMMA10}, | 
|  | 3359 | {0xa0, 0x0f, ZC3XX_R131_GAMMA11}, | 
|  | 3360 | {0xa0, 0x16, ZC3XX_R132_GAMMA12}, | 
|  | 3361 | {0xa0, 0x1a, ZC3XX_R133_GAMMA13}, | 
|  | 3362 | {0xa0, 0x19, ZC3XX_R134_GAMMA14}, | 
|  | 3363 | {0xa0, 0x19, ZC3XX_R135_GAMMA15}, | 
|  | 3364 | {0xa0, 0x17, ZC3XX_R136_GAMMA16}, | 
|  | 3365 | {0xa0, 0x15, ZC3XX_R137_GAMMA17}, | 
|  | 3366 | {0xa0, 0x12, ZC3XX_R138_GAMMA18}, | 
|  | 3367 | {0xa0, 0x10, ZC3XX_R139_GAMMA19}, | 
|  | 3368 | {0xa0, 0x0e, ZC3XX_R13A_GAMMA1A}, | 
|  | 3369 | {0xa0, 0x0b, ZC3XX_R13B_GAMMA1B}, | 
|  | 3370 | {0xa0, 0x09, ZC3XX_R13C_GAMMA1C}, | 
|  | 3371 | {0xa0, 0x08, ZC3XX_R13D_GAMMA1D}, | 
|  | 3372 | {0xa0, 0x06, ZC3XX_R13E_GAMMA1E}, | 
|  | 3373 | {0xa0, 0x03, ZC3XX_R13F_GAMMA1F}, | 
|  | 3374 | {0xa0, 0x50, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3375 | {0xa0, 0xf8, ZC3XX_R10B_RGB01}, | 
|  | 3376 | {0xa0, 0xf8, ZC3XX_R10C_RGB02}, | 
|  | 3377 | {0xa0, 0xf8, ZC3XX_R10D_RGB10}, | 
|  | 3378 | {0xa0, 0x50, ZC3XX_R10E_RGB11}, | 
|  | 3379 | {0xa0, 0xf8, ZC3XX_R10F_RGB12}, | 
|  | 3380 | {0xa0, 0xf8, ZC3XX_R110_RGB20}, | 
|  | 3381 | {0xa0, 0xf8, ZC3XX_R111_RGB21}, | 
|  | 3382 | {0xa0, 0x50, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3383 |  | 
|  | 3384 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3385 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3386 | {0xaa, 0x10, 0x001b}, | 
|  | 3387 | {0xaa, 0x76, 0x0002}, | 
|  | 3388 | {0xaa, 0x2a, 0x0081}, | 
|  | 3389 | {0xaa, 0x2b, 0x0000}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3390 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 3391 | {0xa0, 0x01, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 3392 | {0xa0, 0xb8, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 3393 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 3394 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 3395 | {0xa0, 0x37, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 3396 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 3397 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 3398 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 3399 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 3400 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 3401 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 3402 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3403 | {0xaa, 0x13, 0x0083},	/* 40 */ | 
|  | 3404 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3405 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3406 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3407 | }; | 
|  | 3408 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3409 | static const struct usb_action ov7630c_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3410 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 3411 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 3412 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3413 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 3414 | {0xa0, 0x06, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 3415 | {0xa0, 0xa1, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 3416 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, | 
|  | 3417 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 3418 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 3419 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 3420 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 3421 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3422 |  | 
|  | 3423 | {0xaa, 0x12, 0x0080}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3424 | {0xa0, 0x02, ZC3XX_R083_RGAINADDR}, | 
|  | 3425 | {0xa0, 0x01, ZC3XX_R085_BGAINADDR}, | 
|  | 3426 | {0xa0, 0x90, ZC3XX_R086_EXPTIMEHIGH}, | 
|  | 3427 | {0xa0, 0x91, ZC3XX_R087_EXPTIMEMID}, | 
|  | 3428 | {0xa0, 0x10, ZC3XX_R088_EXPTIMELOW}, | 
|  | 3429 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 3430 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 3431 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 3432 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 3433 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 3434 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3435 | {0xaa, 0x12, 0x0069},	/* i2c */ | 
|  | 3436 | {0xaa, 0x04, 0x0020}, | 
|  | 3437 | {0xaa, 0x06, 0x0050}, | 
|  | 3438 | {0xaa, 0x13, 0x00c3}, | 
|  | 3439 | {0xaa, 0x14, 0x0000}, | 
|  | 3440 | {0xaa, 0x15, 0x0024}, | 
|  | 3441 | {0xaa, 0x19, 0x0003}, | 
|  | 3442 | {0xaa, 0x1a, 0x00f6}, | 
|  | 3443 | {0xaa, 0x1b, 0x0002}, | 
|  | 3444 | {0xaa, 0x20, 0x00c2}, | 
|  | 3445 | {0xaa, 0x24, 0x0060}, | 
|  | 3446 | {0xaa, 0x25, 0x0040}, | 
|  | 3447 | {0xaa, 0x26, 0x0030}, | 
|  | 3448 | {0xaa, 0x27, 0x00ea}, | 
|  | 3449 | {0xaa, 0x28, 0x00a0}, | 
|  | 3450 | {0xaa, 0x21, 0x0000}, | 
|  | 3451 | {0xaa, 0x2a, 0x0081}, | 
|  | 3452 | {0xaa, 0x2b, 0x0096}, | 
|  | 3453 | {0xaa, 0x2d, 0x0084}, | 
|  | 3454 | {0xaa, 0x2f, 0x003d}, | 
|  | 3455 | {0xaa, 0x30, 0x0024}, | 
|  | 3456 | {0xaa, 0x60, 0x0000}, | 
|  | 3457 | {0xaa, 0x61, 0x0040}, | 
|  | 3458 | {0xaa, 0x68, 0x007c}, | 
|  | 3459 | {0xaa, 0x6f, 0x0015}, | 
|  | 3460 | {0xaa, 0x75, 0x0088}, | 
|  | 3461 | {0xaa, 0x77, 0x00b5}, | 
|  | 3462 | {0xaa, 0x01, 0x0060}, | 
|  | 3463 | {0xaa, 0x02, 0x0060}, | 
|  | 3464 | {0xaa, 0x17, 0x0018}, | 
|  | 3465 | {0xaa, 0x18, 0x00ba}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3466 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 3467 | {0xa0, 0x77, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 3468 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 3469 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 3470 | {0xa0, 0x04, ZC3XX_R1A7_CALCGLOBALMEAN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3471 | {0xa0, 0x00, 0x01ad}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3472 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 3473 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 3474 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 3475 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 3476 | {0xa0, 0x60, ZC3XX_R116_RGAIN}, | 
|  | 3477 | {0xa0, 0x46, ZC3XX_R118_BGAIN}, | 
|  | 3478 | {0xa0, 0x04, ZC3XX_R113_RGB03}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3479 |  | 
|  | 3480 | {0xa1, 0x01, 0x0002}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3481 | {0xa0, 0x4e, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3482 | {0xa0, 0xfe, ZC3XX_R10B_RGB01}, | 
|  | 3483 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 3484 | {0xa0, 0xf7, ZC3XX_R10D_RGB10}, | 
|  | 3485 | {0xa0, 0x4d, ZC3XX_R10E_RGB11}, | 
|  | 3486 | {0xa0, 0xfc, ZC3XX_R10F_RGB12}, | 
|  | 3487 | {0xa0, 0x00, ZC3XX_R110_RGB20}, | 
|  | 3488 | {0xa0, 0xf6, ZC3XX_R111_RGB21}, | 
|  | 3489 | {0xa0, 0x4a, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3490 |  | 
|  | 3491 | {0xa1, 0x01, 0x0008}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3492 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* clock ? */ | 
|  | 3493 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00},	/* sharpness+ */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3494 | {0xa1, 0x01, 0x01c8}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3495 | {0xa1, 0x01, 0x01c9}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3496 | {0xa1, 0x01, 0x01ca}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3497 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05},	/* sharpness- */ | 
|  | 3498 | {0xa0, 0x16, ZC3XX_R120_GAMMA00},	/* gamma ~4 */ | 
|  | 3499 | {0xa0, 0x3a, ZC3XX_R121_GAMMA01}, | 
|  | 3500 | {0xa0, 0x5b, ZC3XX_R122_GAMMA02}, | 
|  | 3501 | {0xa0, 0x7c, ZC3XX_R123_GAMMA03}, | 
|  | 3502 | {0xa0, 0x94, ZC3XX_R124_GAMMA04}, | 
|  | 3503 | {0xa0, 0xa9, ZC3XX_R125_GAMMA05}, | 
|  | 3504 | {0xa0, 0xbb, ZC3XX_R126_GAMMA06}, | 
|  | 3505 | {0xa0, 0xca, ZC3XX_R127_GAMMA07}, | 
|  | 3506 | {0xa0, 0xd7, ZC3XX_R128_GAMMA08}, | 
|  | 3507 | {0xa0, 0xe1, ZC3XX_R129_GAMMA09}, | 
|  | 3508 | {0xa0, 0xea, ZC3XX_R12A_GAMMA0A}, | 
|  | 3509 | {0xa0, 0xf1, ZC3XX_R12B_GAMMA0B}, | 
|  | 3510 | {0xa0, 0xf7, ZC3XX_R12C_GAMMA0C}, | 
|  | 3511 | {0xa0, 0xfc, ZC3XX_R12D_GAMMA0D}, | 
|  | 3512 | {0xa0, 0xff, ZC3XX_R12E_GAMMA0E}, | 
|  | 3513 | {0xa0, 0xff, ZC3XX_R12F_GAMMA0F}, | 
|  | 3514 | {0xa0, 0x20, ZC3XX_R130_GAMMA10}, | 
|  | 3515 | {0xa0, 0x22, ZC3XX_R131_GAMMA11}, | 
|  | 3516 | {0xa0, 0x20, ZC3XX_R132_GAMMA12}, | 
|  | 3517 | {0xa0, 0x1c, ZC3XX_R133_GAMMA13}, | 
|  | 3518 | {0xa0, 0x16, ZC3XX_R134_GAMMA14}, | 
|  | 3519 | {0xa0, 0x13, ZC3XX_R135_GAMMA15}, | 
|  | 3520 | {0xa0, 0x10, ZC3XX_R136_GAMMA16}, | 
|  | 3521 | {0xa0, 0x0d, ZC3XX_R137_GAMMA17}, | 
|  | 3522 | {0xa0, 0x0b, ZC3XX_R138_GAMMA18}, | 
|  | 3523 | {0xa0, 0x09, ZC3XX_R139_GAMMA19}, | 
|  | 3524 | {0xa0, 0x07, ZC3XX_R13A_GAMMA1A}, | 
|  | 3525 | {0xa0, 0x06, ZC3XX_R13B_GAMMA1B}, | 
|  | 3526 | {0xa0, 0x05, ZC3XX_R13C_GAMMA1C}, | 
|  | 3527 | {0xa0, 0x04, ZC3XX_R13D_GAMMA1D}, | 
|  | 3528 | {0xa0, 0x00, ZC3XX_R13E_GAMMA1E}, | 
|  | 3529 | {0xa0, 0x01, ZC3XX_R13F_GAMMA1F}, | 
|  | 3530 | {0xa0, 0x4e, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3531 | {0xa0, 0xfe, ZC3XX_R10B_RGB01}, | 
|  | 3532 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 3533 | {0xa0, 0xf7, ZC3XX_R10D_RGB10}, | 
|  | 3534 | {0xa0, 0x4d, ZC3XX_R10E_RGB11}, | 
|  | 3535 | {0xa0, 0xfc, ZC3XX_R10F_RGB12}, | 
|  | 3536 | {0xa0, 0x00, ZC3XX_R110_RGB20}, | 
|  | 3537 | {0xa0, 0xf6, ZC3XX_R111_RGB21}, | 
|  | 3538 | {0xa0, 0x4a, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3539 |  | 
|  | 3540 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3541 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3542 | {0xaa, 0x10, 0x000d}, | 
|  | 3543 | {0xaa, 0x76, 0x0002}, | 
|  | 3544 | {0xaa, 0x2a, 0x0081}, | 
|  | 3545 | {0xaa, 0x2b, 0x0000}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3546 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 3547 | {0xa0, 0x00, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 3548 | {0xa0, 0xd8, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 3549 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 3550 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 3551 | {0xa0, 0x1b, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 3552 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 3553 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 3554 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 3555 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 3556 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 3557 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 3558 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3559 | {0xaa, 0x13, 0x00c3}, | 
|  | 3560 |  | 
|  | 3561 | {0xa1, 0x01, 0x0180}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3562 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3563 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3564 | }; | 
|  | 3565 |  | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 3566 | static const struct usb_action pas106b_Initial_com[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3567 | /* Sream and Sensor specific */ | 
|  | 3568 | {0xa1, 0x01, 0x0010},	/* CMOSSensorSelect */ | 
|  | 3569 | /* System */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3570 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},	/* SystemControl */ | 
|  | 3571 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},	/* SystemControl */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3572 | /* Picture size */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3573 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT},	/* ClockSelect */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3574 | {0xa0, 0x03, 0x003a}, | 
|  | 3575 | {0xa0, 0x0c, 0x003b}, | 
|  | 3576 | {0xa0, 0x04, 0x0038}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3577 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3578 | }; | 
|  | 3579 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3580 | static const struct usb_action pas106b_InitialScale[] = {	/* 176x144 */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3581 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3582 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3583 | /* Sream and Sensor specific */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3584 | {0xa0, 0x0f, ZC3XX_R010_CMOSSENSORSELECT}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3585 | /* Picture size */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3586 | {0xa0, 0x00, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 3587 | {0xa0, 0xb0, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 3588 | {0xa0, 0x00, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 3589 | {0xa0, 0x90, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3590 | /* System */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3591 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3592 | /* Sream and Sensor specific */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3593 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 3594 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3595 | /* Sensor Interface */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3596 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3597 | /* Window inside sensor array */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3598 | {0xa0, 0x03, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 3599 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 3600 | {0xa0, 0x03, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 3601 | {0xa0, 0x28, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 3602 | {0xa0, 0x68, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3603 | /* Init the sensor */ | 
|  | 3604 | {0xaa, 0x02, 0x0004}, | 
|  | 3605 | {0xaa, 0x08, 0x0000}, | 
|  | 3606 | {0xaa, 0x09, 0x0005}, | 
|  | 3607 | {0xaa, 0x0a, 0x0002}, | 
|  | 3608 | {0xaa, 0x0b, 0x0002}, | 
|  | 3609 | {0xaa, 0x0c, 0x0005}, | 
|  | 3610 | {0xaa, 0x0d, 0x0000}, | 
|  | 3611 | {0xaa, 0x0e, 0x0002}, | 
|  | 3612 | {0xaa, 0x14, 0x0081}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 3613 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3614 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3615 | /* Frame retreiving */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3616 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3617 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3618 | {0xa0, 0xa0, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3619 | /* Unknown */ | 
|  | 3620 | {0xa0, 0x00, 0x01ad}, | 
|  | 3621 | /* Sharpness */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3622 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 3623 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 3624 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3625 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3626 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3627 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3628 | /*Dead pixels */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3629 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3630 | /* EEPROM */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3631 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3632 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3633 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3634 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, | 
|  | 3635 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3636 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3637 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3638 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3639 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3640 | /*Dead pixels */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3641 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3642 | /* EEPROM */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3643 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3644 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3645 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3646 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, | 
|  | 3647 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3648 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3649 | {0xa0, 0x58, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3650 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | 
|  | 3651 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 3652 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | 
|  | 3653 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | 
|  | 3654 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | 
|  | 3655 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | 
|  | 3656 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | 
|  | 3657 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3658 | /* Auto correction */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3659 | {0xa0, 0x03, ZC3XX_R181_WINXSTART}, | 
|  | 3660 | {0xa0, 0x08, ZC3XX_R182_WINXWIDTH}, | 
|  | 3661 | {0xa0, 0x16, ZC3XX_R183_WINXCENTER}, | 
|  | 3662 | {0xa0, 0x03, ZC3XX_R184_WINYSTART}, | 
|  | 3663 | {0xa0, 0x05, ZC3XX_R185_WINYWIDTH}, | 
|  | 3664 | {0xa0, 0x14, ZC3XX_R186_WINYCENTER}, | 
|  | 3665 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3666 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3667 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 3668 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 3669 | {0xa0, 0xb1, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 3670 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 3671 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 3672 | {0xa0, 0x87, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 3673 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 3674 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3675 | /* sensor on */ | 
|  | 3676 | {0xaa, 0x07, 0x00b1}, | 
|  | 3677 | {0xaa, 0x05, 0x0003}, | 
|  | 3678 | {0xaa, 0x04, 0x0001}, | 
|  | 3679 | {0xaa, 0x03, 0x003b}, | 
|  | 3680 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3681 | {0xa0, 0x20, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 3682 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 3683 | {0xa0, 0xa0, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 3684 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3685 | /* Auto correction */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3686 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3687 | {0xa1, 0x01, 0x0180},				/* AutoCorrectEnable */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3688 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3689 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3690 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 3691 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 3692 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3693 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3694 | }; | 
|  | 3695 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 3696 | static const struct usb_action pas106b_Initial[] = {	/* 352x288 */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3697 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3698 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3699 | /* Sream and Sensor specific */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3700 | {0xa0, 0x0f, ZC3XX_R010_CMOSSENSORSELECT}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3701 | /* Picture size */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3702 | {0xa0, 0x01, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 3703 | {0xa0, 0x60, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 3704 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 3705 | {0xa0, 0x20, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3706 | /* System */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3707 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3708 | /* Sream and Sensor specific */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3709 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 3710 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3711 | /* Sensor Interface */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3712 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3713 | /* Window inside sensor array */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3714 | {0xa0, 0x03, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 3715 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 3716 | {0xa0, 0x03, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 3717 | {0xa0, 0x28, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 3718 | {0xa0, 0x68, ZC3XX_R09E_WINWIDTHLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3719 | /* Init the sensor */ | 
|  | 3720 | {0xaa, 0x02, 0x0004}, | 
|  | 3721 | {0xaa, 0x08, 0x0000}, | 
|  | 3722 | {0xaa, 0x09, 0x0005}, | 
|  | 3723 | {0xaa, 0x0a, 0x0002}, | 
|  | 3724 | {0xaa, 0x0b, 0x0002}, | 
|  | 3725 | {0xaa, 0x0c, 0x0005}, | 
|  | 3726 | {0xaa, 0x0d, 0x0000}, | 
|  | 3727 | {0xaa, 0x0e, 0x0002}, | 
|  | 3728 | {0xaa, 0x14, 0x0081}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 3729 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3730 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3731 | /* Frame retreiving */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3732 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3733 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3734 | {0xa0, 0xa0, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3735 | /* Unknown */ | 
|  | 3736 | {0xa0, 0x00, 0x01ad}, | 
|  | 3737 | /* Sharpness */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3738 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 3739 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 3740 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3741 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3742 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3743 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 3744 | {0xa0, 0x80, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3745 | /*Dead pixels */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3746 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3747 | /* EEPROM */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3748 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3749 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3750 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3751 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, | 
|  | 3752 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3753 | /* Other registers */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3754 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3755 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3756 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3757 | /*Dead pixels */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3758 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3759 | /* EEPROM */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3760 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3761 | /* JPEG control */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3762 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 3763 | {0xa0, 0x08, ZC3XX_R1C6_SHARPNESS00}, | 
|  | 3764 | {0xa0, 0x0f, ZC3XX_R1CB_SHARPNESS05}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3765 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3766 | {0xa0, 0x58, ZC3XX_R10A_RGB00},	/* matrix */ | 
|  | 3767 | {0xa0, 0xf4, ZC3XX_R10B_RGB01}, | 
|  | 3768 | {0xa0, 0xf4, ZC3XX_R10C_RGB02}, | 
|  | 3769 | {0xa0, 0xf4, ZC3XX_R10D_RGB10}, | 
|  | 3770 | {0xa0, 0x58, ZC3XX_R10E_RGB11}, | 
|  | 3771 | {0xa0, 0xf4, ZC3XX_R10F_RGB12}, | 
|  | 3772 | {0xa0, 0xf4, ZC3XX_R110_RGB20}, | 
|  | 3773 | {0xa0, 0xf4, ZC3XX_R111_RGB21}, | 
|  | 3774 | {0xa0, 0x58, ZC3XX_R112_RGB22}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3775 | /* Auto correction */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3776 | {0xa0, 0x03, ZC3XX_R181_WINXSTART}, | 
|  | 3777 | {0xa0, 0x08, ZC3XX_R182_WINXWIDTH}, | 
|  | 3778 | {0xa0, 0x16, ZC3XX_R183_WINXCENTER}, | 
|  | 3779 | {0xa0, 0x03, ZC3XX_R184_WINYSTART}, | 
|  | 3780 | {0xa0, 0x05, ZC3XX_R185_WINYWIDTH}, | 
|  | 3781 | {0xa0, 0x14, ZC3XX_R186_WINYCENTER}, | 
|  | 3782 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3783 |  | 
|  | 3784 | /* Auto exposure and white balance */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3785 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 3786 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 3787 | {0xa0, 0xb1, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3788 |  | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3789 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 3790 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 3791 | {0xa0, 0x87, ZC3XX_R197_ANTIFLICKERLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3792 |  | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3793 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 3794 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3795 | /* sensor on */ | 
|  | 3796 | {0xaa, 0x07, 0x00b1}, | 
|  | 3797 | {0xaa, 0x05, 0x0003}, | 
|  | 3798 | {0xaa, 0x04, 0x0001}, | 
|  | 3799 | {0xaa, 0x03, 0x003b}, | 
|  | 3800 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3801 | {0xa0, 0x20, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 3802 | {0xa0, 0x26, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3803 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3804 | /* Auto correction */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3805 | {0xa0, 0x40, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3806 | {0xa1, 0x01, 0x0180},				/* AutoCorrectEnable */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3807 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3808 | /* Gains */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 3809 | {0xa0, 0x40, ZC3XX_R116_RGAIN}, | 
|  | 3810 | {0xa0, 0x40, ZC3XX_R117_GGAIN}, | 
|  | 3811 | {0xa0, 0x40, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3812 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3813 | {0xa0, 0x00, 0x0007},			/* AutoCorrectEnable */ | 
|  | 3814 | {0xa0, 0xff, ZC3XX_R018_FRAMELOST},	/* Frame adjust */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3815 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3816 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 3817 | static const struct usb_action pas106b_50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3818 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 3819 | {0xa0, 0x06, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,06,cc */ | 
|  | 3820 | {0xa0, 0x54, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,54,cc */ | 
|  | 3821 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 3822 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 3823 | {0xa0, 0x87, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,87,cc */ | 
|  | 3824 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},	/* 01,8c,10,cc */ | 
|  | 3825 | {0xa0, 0x30, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,30,cc */ | 
|  | 3826 | {0xaa, 0x03, 0x0021},			/* 00,03,21,aa */ | 
|  | 3827 | {0xaa, 0x04, 0x000c},			/* 00,04,0c,aa */ | 
|  | 3828 | {0xaa, 0x05, 0x0002},			/* 00,05,02,aa */ | 
|  | 3829 | {0xaa, 0x07, 0x001c},			/* 00,07,1c,aa */ | 
|  | 3830 | {0xa0, 0x04, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,04,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3831 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3832 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 3833 | static const struct usb_action pas106b_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3834 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 3835 | {0xa0, 0x06, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,06,cc */ | 
|  | 3836 | {0xa0, 0x2e, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,2e,cc */ | 
|  | 3837 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 3838 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 3839 | {0xa0, 0x71, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,71,cc */ | 
|  | 3840 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},	/* 01,8c,10,cc */ | 
|  | 3841 | {0xa0, 0x30, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,30,cc */ | 
|  | 3842 | {0xaa, 0x03, 0x001c},			/* 00,03,1c,aa */ | 
|  | 3843 | {0xaa, 0x04, 0x0004},			/* 00,04,04,aa */ | 
|  | 3844 | {0xaa, 0x05, 0x0001},			/* 00,05,01,aa */ | 
|  | 3845 | {0xaa, 0x07, 0x00c4},			/* 00,07,c4,aa */ | 
|  | 3846 | {0xa0, 0x04, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,04,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3847 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3848 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 3849 | static const struct usb_action pas106b_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 3850 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
|  | 3851 | {0xa0, 0x06, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,06,cc */ | 
|  | 3852 | {0xa0, 0x50, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,50,cc */ | 
|  | 3853 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 3854 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 3855 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,10,cc */ | 
|  | 3856 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},	/* 01,8c,10,cc */ | 
|  | 3857 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},	/* 01,8f,20,cc */ | 
|  | 3858 | {0xaa, 0x03, 0x0013},			/* 00,03,13,aa */ | 
|  | 3859 | {0xaa, 0x04, 0x0000},			/* 00,04,00,aa */ | 
|  | 3860 | {0xaa, 0x05, 0x0001},			/* 00,05,01,aa */ | 
|  | 3861 | {0xaa, 0x07, 0x0030},			/* 00,07,30,aa */ | 
|  | 3862 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 3863 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 3864 | }; | 
|  | 3865 |  | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3866 | /* from lvWIMv.inf 046d:08a2/:08aa 2007/06/03 */ | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3867 | static const struct usb_action pas202b_Initial[] = {	/* 640x480 */ | 
|  | 3868 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3869 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3870 | {0xa0, 0x0e, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0e,cc */ | 
|  | 3871 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT},		/* 00,02,00,cc */ | 
|  | 3872 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 3873 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc */ | 
|  | 3874 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
|  | 3875 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,e0,cc */ | 
|  | 3876 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 3877 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 3878 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 3879 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE},	/* 00,8d,08,cc */ | 
|  | 3880 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,00,cc */ | 
|  | 3881 | {0xa0, 0x03, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,03,cc */ | 
|  | 3882 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,00,cc */ | 
|  | 3883 | {0xa0, 0x03, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,03,cc */ | 
|  | 3884 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH},		/* 00,9b,01,cc */ | 
|  | 3885 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW},		/* 00,9c,e6,cc */ | 
|  | 3886 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH},		/* 00,9d,02,cc */ | 
|  | 3887 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,86,cc */ | 
|  | 3888 | {0xaa, 0x02, 0x0002},			/* 00,02,04,aa --> 02 */ | 
|  | 3889 | {0xaa, 0x07, 0x0006},				/* 00,07,06,aa */ | 
|  | 3890 | {0xaa, 0x08, 0x0002},				/* 00,08,02,aa */ | 
|  | 3891 | {0xaa, 0x09, 0x0006},				/* 00,09,06,aa */ | 
|  | 3892 | {0xaa, 0x0a, 0x0001},				/* 00,0a,01,aa */ | 
|  | 3893 | {0xaa, 0x0b, 0x0001},				/* 00,0b,01,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3894 | {0xaa, 0x0c, 0x0006}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3895 | {0xaa, 0x0d, 0x0000},				/* 00,0d,00,aa */ | 
|  | 3896 | {0xaa, 0x10, 0x0000},				/* 00,10,00,aa */ | 
|  | 3897 | {0xaa, 0x12, 0x0005},				/* 00,12,05,aa */ | 
|  | 3898 | {0xaa, 0x13, 0x0063},				/* 00,13,63,aa */ | 
|  | 3899 | {0xaa, 0x15, 0x0070},				/* 00,15,70,aa */ | 
|  | 3900 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,b7,cc */ | 
|  | 3901 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc */ | 
|  | 3902 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},		/* 01,89,06,cc */ | 
|  | 3903 | {0xa0, 0x00, 0x01ad},				/* 01,ad,00,cc */ | 
|  | 3904 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc */ | 
|  | 3905 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc */ | 
|  | 3906 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 3907 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc */ | 
|  | 3908 | {0xa0, 0x70, ZC3XX_R18D_YTARGET},		/* 01,8d,70,cc */ | 
|  | 3909 | {} | 
|  | 3910 | }; | 
|  | 3911 | static const struct usb_action pas202b_InitialScale[] = {	/* 320x240 */ | 
|  | 3912 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3913 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3914 | {0xa0, 0x0e, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,0e,cc */ | 
|  | 3915 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT},		/* 00,02,10,cc */ | 
|  | 3916 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc */ | 
|  | 3917 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc */ | 
|  | 3918 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3919 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3920 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc */ | 
|  | 3921 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc */ | 
|  | 3922 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc */ | 
|  | 3923 | {0xa0, 0x08, ZC3XX_R08D_COMPABILITYMODE},	/* 00,8d,08,cc */ | 
|  | 3924 | {0xa0, 0x08, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,08,cc */ | 
|  | 3925 | {0xa0, 0x02, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,02,cc */ | 
|  | 3926 | {0xa0, 0x08, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,08,cc */ | 
|  | 3927 | {0xa0, 0x02, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,02,cc */ | 
|  | 3928 | {0xa0, 0x01, ZC3XX_R09B_WINHEIGHTHIGH},		/* 00,9b,01,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3929 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3930 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH},		/* 00,9d,02,cc */ | 
|  | 3931 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,88,cc */ | 
|  | 3932 | {0xaa, 0x02, 0x0002},				/* 00,02,02,aa */ | 
|  | 3933 | {0xaa, 0x07, 0x0006},				/* 00,07,06,aa */ | 
|  | 3934 | {0xaa, 0x08, 0x0002},				/* 00,08,02,aa */ | 
|  | 3935 | {0xaa, 0x09, 0x0006},				/* 00,09,06,aa */ | 
|  | 3936 | {0xaa, 0x0a, 0x0001},				/* 00,0a,01,aa */ | 
|  | 3937 | {0xaa, 0x0b, 0x0001},				/* 00,0b,01,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3938 | {0xaa, 0x0c, 0x0006}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3939 | {0xaa, 0x0d, 0x0000},				/* 00,0d,00,aa */ | 
|  | 3940 | {0xaa, 0x10, 0x0000},				/* 00,10,00,aa */ | 
|  | 3941 | {0xaa, 0x12, 0x0005},				/* 00,12,05,aa */ | 
|  | 3942 | {0xaa, 0x13, 0x0063},				/* 00,13,63,aa */ | 
|  | 3943 | {0xaa, 0x15, 0x0070},				/* 00,15,70,aa */ | 
|  | 3944 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,37,cc */ | 
|  | 3945 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc */ | 
|  | 3946 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS},		/* 01,89,06,cc */ | 
|  | 3947 | {0xa0, 0x00, 0x01ad},				/* 01,ad,00,cc */ | 
|  | 3948 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc */ | 
|  | 3949 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc */ | 
|  | 3950 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc */ | 
|  | 3951 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc */ | 
|  | 3952 | {0xa0, 0x70, ZC3XX_R18D_YTARGET},		/* 01,8d,70,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3953 | {0xa0, 0xff, ZC3XX_R097_WINYSTARTHIGH}, | 
|  | 3954 | {0xa0, 0xfe, ZC3XX_R098_WINYSTARTLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3955 | {} | 
|  | 3956 | }; | 
|  | 3957 | static const struct usb_action pas202b_50HZ[] = { | 
|  | 3958 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 3959 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 3960 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
|  | 3961 | {0xaa, 0x20, 0x0002},				/* 00,20,02,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3962 | {0xaa, 0x21, 0x001b}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3963 | {0xaa, 0x03, 0x0044},				/* 00,03,44,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3964 | {0xaa, 0x04, 0x0008}, | 
|  | 3965 | {0xaa, 0x05, 0x001b}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3966 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 3967 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3968 | {0xa0, 0x1c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3969 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 3970 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3971 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 3972 | {0xa0, 0x1b, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3973 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 3974 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 3975 | {0xa0, 0x4d, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,4d,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3976 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 3977 | {0xa0, 0x1b, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3978 | {0xa0, 0x44, ZC3XX_R01D_HSYNC_0},		/* 00,1d,44,cc */ | 
|  | 3979 | {0xa0, 0x6f, ZC3XX_R01E_HSYNC_1},		/* 00,1e,6f,cc */ | 
|  | 3980 | {0xa0, 0xad, ZC3XX_R01F_HSYNC_2},		/* 00,1f,ad,cc */ | 
|  | 3981 | {0xa0, 0xeb, ZC3XX_R020_HSYNC_3},		/* 00,20,eb,cc */ | 
|  | 3982 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 3983 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 3984 | {} | 
|  | 3985 | }; | 
|  | 3986 | static const struct usb_action pas202b_50HZScale[] = { | 
|  | 3987 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 3988 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 3989 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3990 | {0xaa, 0x20, 0x0004}, | 
|  | 3991 | {0xaa, 0x21, 0x003d}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3992 | {0xaa, 0x03, 0x0041},				/* 00,03,41,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3993 | {0xaa, 0x04, 0x0010}, | 
|  | 3994 | {0xaa, 0x05, 0x003d}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3995 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 3996 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 3997 | {0xa0, 0x1c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 3998 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 3999 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4000 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4001 | {0xa0, 0x3d, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4002 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 4003 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 4004 | {0xa0, 0x9b, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,9b,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4005 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4006 | {0xa0, 0x1b, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4007 | {0xa0, 0x41, ZC3XX_R01D_HSYNC_0},		/* 00,1d,41,cc */ | 
|  | 4008 | {0xa0, 0x6f, ZC3XX_R01E_HSYNC_1},		/* 00,1e,6f,cc */ | 
|  | 4009 | {0xa0, 0xad, ZC3XX_R01F_HSYNC_2},		/* 00,1f,ad,cc */ | 
|  | 4010 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc */ | 
|  | 4011 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 4012 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 4013 | {} | 
|  | 4014 | }; | 
|  | 4015 | static const struct usb_action pas202b_60HZ[] = { | 
|  | 4016 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 4017 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 4018 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
|  | 4019 | {0xaa, 0x20, 0x0002},				/* 00,20,02,aa */ | 
|  | 4020 | {0xaa, 0x21, 0x0000},				/* 00,21,00,aa */ | 
|  | 4021 | {0xaa, 0x03, 0x0045},				/* 00,03,45,aa */ | 
|  | 4022 | {0xaa, 0x04, 0x0008},				/* 00,04,08,aa */ | 
|  | 4023 | {0xaa, 0x05, 0x0000},				/* 00,05,00,aa */ | 
|  | 4024 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 4025 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4026 | {0xa0, 0x1c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4027 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 4028 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4029 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4030 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4031 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 4032 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 4033 | {0xa0, 0x40, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,40,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4034 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4035 | {0xa0, 0x1b, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4036 | {0xa0, 0x45, ZC3XX_R01D_HSYNC_0},		/* 00,1d,45,cc */ | 
|  | 4037 | {0xa0, 0x8e, ZC3XX_R01E_HSYNC_1},		/* 00,1e,8e,cc */ | 
|  | 4038 | {0xa0, 0xc1, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c1,cc */ | 
|  | 4039 | {0xa0, 0xf5, ZC3XX_R020_HSYNC_3},		/* 00,20,f5,cc */ | 
|  | 4040 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 4041 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 4042 | {} | 
|  | 4043 | }; | 
|  | 4044 | static const struct usb_action pas202b_60HZScale[] = { | 
|  | 4045 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 4046 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 4047 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4048 | {0xaa, 0x20, 0x0004}, | 
|  | 4049 | {0xaa, 0x21, 0x0008}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4050 | {0xaa, 0x03, 0x0042},				/* 00,03,42,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4051 | {0xaa, 0x04, 0x0010}, | 
|  | 4052 | {0xaa, 0x05, 0x0008}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4053 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 4054 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4055 | {0xa0, 0x1c, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4056 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc */ | 
|  | 4057 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4058 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4059 | {0xa0, 0x08, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4060 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 4061 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 4062 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,81,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4063 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4064 | {0xa0, 0x1b, ZC3XX_R18F_AEUNFREEZE}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4065 | {0xa0, 0x42, ZC3XX_R01D_HSYNC_0},		/* 00,1d,42,cc */ | 
|  | 4066 | {0xa0, 0x6f, ZC3XX_R01E_HSYNC_1},		/* 00,1e,6f,cc */ | 
|  | 4067 | {0xa0, 0xaf, ZC3XX_R01F_HSYNC_2},		/* 00,1f,af,cc */ | 
|  | 4068 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc */ | 
|  | 4069 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 4070 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 4071 | {} | 
|  | 4072 | }; | 
|  | 4073 | static const struct usb_action pas202b_NoFliker[] = { | 
|  | 4074 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 4075 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 4076 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
|  | 4077 | {0xaa, 0x20, 0x0002},				/* 00,20,02,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4078 | {0xaa, 0x21, 0x0006}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4079 | {0xaa, 0x03, 0x0040},				/* 00,03,40,aa */ | 
|  | 4080 | {0xaa, 0x04, 0x0008},				/* 00,04,08,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4081 | {0xaa, 0x05, 0x0006}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4082 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 4083 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
|  | 4084 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4085 | {0xa0, 0x02, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4086 | {0xa0, 0x06, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4087 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 4088 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4089 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4090 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},		/* 01,8c,10,cc */ | 
|  | 4091 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,20,cc */ | 
|  | 4092 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4093 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4094 | {0xa0, 0x40, ZC3XX_R01D_HSYNC_0},		/* 00,1d,40,cc */ | 
|  | 4095 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1},		/* 00,1e,60,cc */ | 
|  | 4096 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},		/* 00,1f,90,cc */ | 
|  | 4097 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc */ | 
|  | 4098 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 4099 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 4100 | {} | 
|  | 4101 | }; | 
|  | 4102 | static const struct usb_action pas202b_NoFlikerScale[] = { | 
|  | 4103 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS},		/* 00,19,00,cc */ | 
|  | 4104 | {0xa0, 0x20, ZC3XX_R087_EXPTIMEMID},		/* 00,87,20,cc */ | 
|  | 4105 | {0xa0, 0x21, ZC3XX_R088_EXPTIMELOW},		/* 00,88,21,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4106 | {0xaa, 0x20, 0x0004}, | 
|  | 4107 | {0xaa, 0x21, 0x000c}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4108 | {0xaa, 0x03, 0x0040},				/* 00,03,40,aa */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4109 | {0xaa, 0x04, 0x0010}, | 
|  | 4110 | {0xaa, 0x05, 0x000c}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4111 | {0xaa, 0x0e, 0x0001},				/* 00,0e,01,aa */ | 
|  | 4112 | {0xaa, 0x0f, 0x0000},				/* 00,0f,00,aa */ | 
|  | 4113 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4114 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4115 | {0xa0, 0x0c, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4116 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc */ | 
|  | 4117 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc */ | 
|  | 4118 | {0xa0, 0x02, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,02,cc */ | 
|  | 4119 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE},		/* 01,8c,10,cc */ | 
|  | 4120 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,20,cc */ | 
|  | 4121 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,00,cc */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 4122 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 4123 | {0xa0, 0x40, ZC3XX_R01D_HSYNC_0},		/* 00,1d,40,cc */ | 
|  | 4124 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1},		/* 00,1e,60,cc */ | 
|  | 4125 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2},		/* 00,1f,90,cc */ | 
|  | 4126 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc */ | 
|  | 4127 | {0xa0, 0x0f, ZC3XX_R087_EXPTIMEMID},		/* 00,87,0f,cc */ | 
|  | 4128 | {0xa0, 0x0e, ZC3XX_R088_EXPTIMELOW},		/* 00,88,0e,cc */ | 
|  | 4129 | {} | 
|  | 4130 | }; | 
|  | 4131 |  | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4132 | /* mt9v111 (mi0360soc) and pb0330 from vm30x.inf 0ac8:301b 07/02/13 */ | 
|  | 4133 | static const struct usb_action mt9v111_1_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4134 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4135 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 4136 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 4137 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 4138 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4139 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4140 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4141 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4142 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4143 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4144 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4145 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4146 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4147 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4148 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 4149 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4150 | {0xdd, 0x00, 0x0200}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4151 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4152 | {0xaa, 0x01, 0x0001}, | 
|  | 4153 | {0xaa, 0x06, 0x0000}, | 
|  | 4154 | {0xaa, 0x08, 0x0483}, | 
|  | 4155 | {0xaa, 0x01, 0x0004}, | 
|  | 4156 | {0xaa, 0x08, 0x0006}, | 
|  | 4157 | {0xaa, 0x02, 0x0011}, | 
|  | 4158 | {0xaa, 0x03, 0x01e5},			/*jfm: was 01e7*/ | 
|  | 4159 | {0xaa, 0x04, 0x0285},			/*jfm: was 0287*/ | 
|  | 4160 | {0xaa, 0x07, 0x3002}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4161 | {0xaa, 0x20, 0x5100}, | 
|  | 4162 | {0xaa, 0x35, 0x507f}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4163 | {0xaa, 0x30, 0x0005}, | 
|  | 4164 | {0xaa, 0x31, 0x0000}, | 
|  | 4165 | {0xaa, 0x58, 0x0078}, | 
|  | 4166 | {0xaa, 0x62, 0x0411}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4167 | {0xaa, 0x2b, 0x007f}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4168 | {0xaa, 0x2c, 0x007f},			/*jfm: was 0030*/ | 
|  | 4169 | {0xaa, 0x2d, 0x007f},			/*jfm: was 0030*/ | 
|  | 4170 | {0xaa, 0x2e, 0x007f},			/*jfm: was 0030*/ | 
|  | 4171 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4172 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4173 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4174 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4175 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 4176 | {0xa0, 0x09, 0x01ad},			/*jfm: was 00*/ | 
|  | 4177 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4178 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4179 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4180 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4181 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4182 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4183 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 
|  | 4184 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 
|  | 4185 | {} | 
|  | 4186 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4187 | static const struct usb_action mt9v111_1_InitialScale[] = {	/* 320x240 */ | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4188 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4189 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 4190 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 4191 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 4192 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4193 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4194 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4195 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 4196 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4197 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4198 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4199 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4200 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4201 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4202 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 4203 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4204 | {0xdd, 0x00, 0x0200}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4205 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4206 | {0xaa, 0x01, 0x0001}, | 
|  | 4207 | {0xaa, 0x06, 0x0000}, | 
|  | 4208 | {0xaa, 0x08, 0x0483}, | 
|  | 4209 | {0xaa, 0x01, 0x0004}, | 
|  | 4210 | {0xaa, 0x08, 0x0006}, | 
|  | 4211 | {0xaa, 0x02, 0x0011}, | 
|  | 4212 | {0xaa, 0x03, 0x01e7}, | 
|  | 4213 | {0xaa, 0x04, 0x0287}, | 
|  | 4214 | {0xaa, 0x07, 0x3002}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4215 | {0xaa, 0x20, 0x5100}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4216 | {0xaa, 0x35, 0x007f},			/*jfm: was 0050*/ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4217 | {0xaa, 0x30, 0x0005}, | 
|  | 4218 | {0xaa, 0x31, 0x0000}, | 
|  | 4219 | {0xaa, 0x58, 0x0078}, | 
|  | 4220 | {0xaa, 0x62, 0x0411}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4221 | {0xaa, 0x2b, 0x007f},			/*jfm: was 28*/ | 
|  | 4222 | {0xaa, 0x2c, 0x007f},			/*jfm: was 30*/ | 
|  | 4223 | {0xaa, 0x2d, 0x007f},			/*jfm: was 30*/ | 
|  | 4224 | {0xaa, 0x2e, 0x007f},			/*jfm: was 28*/ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4225 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4226 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4227 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4228 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4229 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4230 | {0xa0, 0x09, 0x01ad},			/*jfm: was 00*/ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4231 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4232 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4233 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4234 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4235 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4236 | {0xa0, 0x6c, ZC3XX_R18D_YTARGET}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4237 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 
|  | 4238 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4239 | {} | 
|  | 4240 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4241 | static const struct usb_action mt9v111_1_AE50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4242 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4243 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4244 | {0xbb, 0x00, 0x0562}, | 
|  | 4245 | {0xbb, 0x01, 0x09aa}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4246 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4247 | {0xa0, 0x03, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4248 | {0xa0, 0x9b, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4249 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4250 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4251 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4252 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4253 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4254 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4255 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4256 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0}, | 
|  | 4257 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | 
|  | 4258 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, | 
|  | 4259 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4260 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4261 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4262 | {} | 
|  | 4263 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4264 | static const struct usb_action mt9v111_1_AE50HZScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4265 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4266 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4267 | {0xbb, 0x00, 0x0509}, | 
|  | 4268 | {0xbb, 0x01, 0x0934}, | 
|  | 4269 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4270 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4271 | {0xa0, 0xd2, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4272 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4273 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4274 | {0xa0, 0x9a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4275 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4276 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4277 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4278 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4279 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4280 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4281 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4282 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4283 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4284 | {} | 
|  | 4285 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4286 | static const struct usb_action mt9v111_1_AE60HZ[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4287 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4288 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4289 | {0xaa, 0x05, 0x003d}, | 
|  | 4290 | {0xaa, 0x09, 0x016e}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4291 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4292 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4293 | {0xa0, 0xdd, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4294 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4295 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4296 | {0xa0, 0x3d, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4297 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4298 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4299 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4300 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4301 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0}, | 
|  | 4302 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | 
|  | 4303 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, | 
|  | 4304 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4305 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4306 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4307 | {} | 
|  | 4308 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4309 | static const struct usb_action mt9v111_1_AE60HZScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4310 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4311 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4312 | {0xbb, 0x00, 0x0509}, | 
|  | 4313 | {0xbb, 0x01, 0x0983}, | 
|  | 4314 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4315 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4316 | {0xa0, 0x8f, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4317 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4318 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4319 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4320 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4321 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4322 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4323 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4324 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4325 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4326 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4327 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4328 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4329 | {} | 
|  | 4330 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4331 | static const struct usb_action mt9v111_1_AENoFliker[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4332 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4333 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4334 | {0xbb, 0x00, 0x0509}, | 
|  | 4335 | {0xbb, 0x01, 0x0960}, | 
|  | 4336 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4337 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4338 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4339 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4340 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4341 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4342 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4343 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4344 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4345 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4346 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, | 
|  | 4347 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | 
|  | 4348 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4349 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
|  | 4350 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4351 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4352 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4353 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4354 | static const struct usb_action mt9v111_1_AENoFlikerScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4355 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4356 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4357 | {0xbb, 0x00, 0x0534}, | 
|  | 4358 | {0xbb, 0x02, 0x0960}, | 
|  | 4359 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4360 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4361 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4362 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4363 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4364 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4365 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4366 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4367 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4368 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4369 | {0xa0, 0x34, ZC3XX_R01D_HSYNC_0}, | 
|  | 4370 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | 
|  | 4371 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4372 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
|  | 4373 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4374 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4375 | {} | 
|  | 4376 | }; | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4377 | /* from usbvm303.inf 0ac8:303b 07/03/25 (3 - tas5130c) */ | 
|  | 4378 | static const struct usb_action mt9v111_3_Initial[] = { | 
|  | 4379 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4380 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 4381 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
| Jean-François Moine | d581bcd | 2010-10-29 08:01:01 -0300 | [diff] [blame] | 4382 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 4383 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4384 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4385 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4386 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 4387 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4388 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 4389 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4390 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4391 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4392 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4393 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 4394 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4395 | {0xdd, 0x00, 0x0200}, | 
|  | 4396 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4397 | {0xaa, 0x01, 0x0001},		/* select IFP/SOC registers */ | 
|  | 4398 | {0xaa, 0x06, 0x0000},		/* operating mode control */ | 
|  | 4399 | {0xaa, 0x08, 0x0483},		/* output format control */ | 
|  | 4400 | /* H red first, V red or blue first, | 
|  | 4401 | * raw Bayer, auto flicker */ | 
|  | 4402 | {0xaa, 0x01, 0x0004},		/* select sensor core registers */ | 
|  | 4403 | {0xaa, 0x08, 0x0006},		/* row start */ | 
|  | 4404 | {0xaa, 0x02, 0x0011},		/* column start */ | 
|  | 4405 | {0xaa, 0x03, 0x01e5},		/* window height - 1 */ | 
|  | 4406 | {0xaa, 0x04, 0x0285},		/* window width - 1 */ | 
|  | 4407 | {0xaa, 0x07, 0x3002},		/* output control */ | 
|  | 4408 | {0xaa, 0x20, 0x1100},		/* read mode: bits 8 & 12 (?) */ | 
|  | 4409 | {0xaa, 0x35, 0x007f},		/* global gain */ | 
|  | 4410 | {0xaa, 0x30, 0x0005}, | 
|  | 4411 | {0xaa, 0x31, 0x0000}, | 
|  | 4412 | {0xaa, 0x58, 0x0078}, | 
|  | 4413 | {0xaa, 0x62, 0x0411}, | 
|  | 4414 | {0xaa, 0x2b, 0x007f},		/* green1 gain */ | 
|  | 4415 | {0xaa, 0x2c, 0x007f},		/* blue gain */ | 
|  | 4416 | {0xaa, 0x2d, 0x007f},		/* red gain */ | 
|  | 4417 | {0xaa, 0x2e, 0x007f},		/* green2 gain */ | 
|  | 4418 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
|  | 4419 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 4420 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4421 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4422 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 4423 | {0xa0, 0x00, 0x01ad}, | 
|  | 4424 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4425 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4426 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4427 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4428 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
|  | 4429 | {0xa0, 0x80, ZC3XX_R18D_YTARGET}, | 
|  | 4430 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 
|  | 4431 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 
|  | 4432 | {} | 
|  | 4433 | }; | 
|  | 4434 | static const struct usb_action mt9v111_3_InitialScale[] = { | 
|  | 4435 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4436 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 4437 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 4438 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 4439 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4440 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4441 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4442 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 4443 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4444 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 4445 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4446 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4447 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4448 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4449 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 4450 | {0xa0, 0xdc, ZC3XX_R08B_I2CDEVICEADDR}, | 
|  | 4451 | {0xdd, 0x00, 0x0200}, | 
|  | 4452 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4453 | {0xaa, 0x01, 0x0001}, | 
|  | 4454 | {0xaa, 0x06, 0x0000}, | 
|  | 4455 | {0xaa, 0x08, 0x0483}, | 
|  | 4456 | {0xaa, 0x01, 0x0004}, | 
|  | 4457 | {0xaa, 0x08, 0x0006}, | 
|  | 4458 | {0xaa, 0x02, 0x0011}, | 
|  | 4459 | {0xaa, 0x03, 0x01e7}, | 
|  | 4460 | {0xaa, 0x04, 0x0287}, | 
|  | 4461 | {0xaa, 0x07, 0x3002}, | 
|  | 4462 | {0xaa, 0x20, 0x1100}, | 
|  | 4463 | {0xaa, 0x35, 0x007f}, | 
|  | 4464 | {0xaa, 0x30, 0x0005}, | 
|  | 4465 | {0xaa, 0x31, 0x0000}, | 
|  | 4466 | {0xaa, 0x58, 0x0078}, | 
|  | 4467 | {0xaa, 0x62, 0x0411}, | 
|  | 4468 | {0xaa, 0x2b, 0x007f}, | 
|  | 4469 | {0xaa, 0x2c, 0x007f}, | 
|  | 4470 | {0xaa, 0x2d, 0x007f}, | 
|  | 4471 | {0xaa, 0x2e, 0x007f}, | 
|  | 4472 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
|  | 4473 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 4474 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4475 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4476 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 4477 | {0xa0, 0x00, 0x01ad}, | 
|  | 4478 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4479 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4480 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4481 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4482 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
|  | 4483 | {0xa0, 0x80, ZC3XX_R18D_YTARGET}, | 
|  | 4484 | {0xa0, 0x61, ZC3XX_R116_RGAIN}, | 
|  | 4485 | {0xa0, 0x65, ZC3XX_R118_BGAIN}, | 
|  | 4486 | {} | 
|  | 4487 | }; | 
|  | 4488 | static const struct usb_action mt9v111_3_AE50HZ[] = { | 
|  | 4489 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4490 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4491 | {0xaa, 0x05, 0x0009},		/* horizontal blanking */ | 
|  | 4492 | {0xaa, 0x09, 0x01ce},		/* shutter width */ | 
|  | 4493 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4494 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4495 | {0xa0, 0xd2, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4496 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4497 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4498 | {0xa0, 0x9a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4499 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4500 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4501 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4502 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4503 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4504 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4505 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4506 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4507 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4508 | {} | 
|  | 4509 | }; | 
|  | 4510 | static const struct usb_action mt9v111_3_AE50HZScale[] = { | 
|  | 4511 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4512 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4513 | {0xaa, 0x05, 0x0009}, | 
|  | 4514 | {0xaa, 0x09, 0x01ce}, | 
|  | 4515 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4516 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4517 | {0xa0, 0xd2, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4518 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4519 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4520 | {0xa0, 0x9a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4521 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4522 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4523 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4524 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4525 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4526 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4527 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4528 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4529 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4530 | {} | 
|  | 4531 | }; | 
|  | 4532 | static const struct usb_action mt9v111_3_AE60HZ[] = { | 
|  | 4533 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4534 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4535 | {0xaa, 0x05, 0x0009}, | 
|  | 4536 | {0xaa, 0x09, 0x0083}, | 
|  | 4537 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4538 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4539 | {0xa0, 0x8f, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4540 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4541 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4542 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4543 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4544 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4545 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4546 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4547 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4548 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4549 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4550 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4551 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4552 | {} | 
|  | 4553 | }; | 
|  | 4554 | static const struct usb_action mt9v111_3_AE60HZScale[] = { | 
|  | 4555 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4556 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4557 | {0xaa, 0x05, 0x0009}, | 
|  | 4558 | {0xaa, 0x09, 0x0083}, | 
|  | 4559 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4560 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4561 | {0xa0, 0x8f, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4562 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4563 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4564 | {0xa0, 0x81, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4565 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4566 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4567 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4568 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4569 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4570 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, | 
|  | 4571 | {0xa0, 0xf9, ZC3XX_R01F_HSYNC_2}, | 
|  | 4572 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
|  | 4573 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4574 | {} | 
|  | 4575 | }; | 
|  | 4576 | static const struct usb_action mt9v111_3_AENoFliker[] = { | 
|  | 4577 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4578 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4579 | {0xaa, 0x05, 0x0034}, | 
|  | 4580 | {0xaa, 0x09, 0x0260}, | 
|  | 4581 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4582 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4583 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4584 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4585 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4586 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4587 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4588 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4589 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4590 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4591 | {0xa0, 0x34, ZC3XX_R01D_HSYNC_0}, | 
|  | 4592 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | 
|  | 4593 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4594 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
|  | 4595 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4596 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4597 | {} | 
|  | 4598 | }; | 
|  | 4599 | static const struct usb_action mt9v111_3_AENoFlikerScale[] = { | 
|  | 4600 | {0xa0, 0x00, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4601 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4602 | {0xaa, 0x05, 0x0034}, | 
|  | 4603 | {0xaa, 0x09, 0x0260}, | 
|  | 4604 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4605 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4606 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4607 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4608 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4609 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4610 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4611 | {0xa0, 0x1c, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4612 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4613 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4614 | {0xa0, 0x34, ZC3XX_R01D_HSYNC_0}, | 
|  | 4615 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | 
|  | 4616 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4617 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
|  | 4618 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4619 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, | 
|  | 4620 | {} | 
|  | 4621 | }; | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4622 |  | 
|  | 4623 | static const struct usb_action pb0330_Initial[] = {	/* 640x480 */ | 
|  | 4624 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4625 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 4626 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 4627 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
|  | 4628 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4629 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4630 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4631 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 4632 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 4633 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4634 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4635 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4636 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4637 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4638 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 4639 | {0xdd, 0x00, 0x0200}, | 
|  | 4640 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4641 | {0xaa, 0x01, 0x0006}, | 
|  | 4642 | {0xaa, 0x02, 0x0011}, | 
|  | 4643 | {0xaa, 0x03, 0x01e5},			/*jfm: was 1e7*/ | 
|  | 4644 | {0xaa, 0x04, 0x0285},			/*jfm: was 0287*/ | 
|  | 4645 | {0xaa, 0x06, 0x0003}, | 
|  | 4646 | {0xaa, 0x07, 0x3002}, | 
|  | 4647 | {0xaa, 0x20, 0x1100}, | 
|  | 4648 | {0xaa, 0x2f, 0xf7b0}, | 
|  | 4649 | {0xaa, 0x30, 0x0005}, | 
|  | 4650 | {0xaa, 0x31, 0x0000}, | 
|  | 4651 | {0xaa, 0x34, 0x0100}, | 
|  | 4652 | {0xaa, 0x35, 0x0060}, | 
|  | 4653 | {0xaa, 0x3d, 0x068f}, | 
|  | 4654 | {0xaa, 0x40, 0x01e0}, | 
|  | 4655 | {0xaa, 0x58, 0x0078}, | 
|  | 4656 | {0xaa, 0x62, 0x0411}, | 
|  | 4657 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
|  | 4658 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 4659 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4660 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4661 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
|  | 4662 | {0xa0, 0x09, 0x01ad},			/*jfm: was 00 */ | 
|  | 4663 | {0xa0, 0x15, 0x01ae}, | 
|  | 4664 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4665 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4666 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4667 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4668 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
|  | 4669 | {0xa0, 0x78, ZC3XX_R18D_YTARGET},	/*jfm: was 6c*/ | 
|  | 4670 | {} | 
|  | 4671 | }; | 
|  | 4672 | static const struct usb_action pb0330_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4673 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 4674 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING},	/* 00 */ | 
|  | 4675 | {0xa0, 0x0a, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 4676 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
|  | 4677 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 4678 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 4679 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 4680 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 4681 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 4682 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4683 | {0xa0, 0x07, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4684 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 4685 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 4686 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 4687 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4688 | {0xdd, 0x00, 0x0200}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4689 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4690 | {0xaa, 0x01, 0x0006}, | 
|  | 4691 | {0xaa, 0x02, 0x0011}, | 
|  | 4692 | {0xaa, 0x03, 0x01e7}, | 
|  | 4693 | {0xaa, 0x04, 0x0287}, | 
|  | 4694 | {0xaa, 0x06, 0x0003}, | 
|  | 4695 | {0xaa, 0x07, 0x3002}, | 
|  | 4696 | {0xaa, 0x20, 0x1100}, | 
|  | 4697 | {0xaa, 0x2f, 0xf7b0}, | 
|  | 4698 | {0xaa, 0x30, 0x0005}, | 
|  | 4699 | {0xaa, 0x31, 0x0000}, | 
|  | 4700 | {0xaa, 0x34, 0x0100}, | 
|  | 4701 | {0xaa, 0x35, 0x0060}, | 
|  | 4702 | {0xaa, 0x3d, 0x068f}, | 
|  | 4703 | {0xaa, 0x40, 0x01e0}, | 
|  | 4704 | {0xaa, 0x58, 0x0078}, | 
|  | 4705 | {0xaa, 0x62, 0x0411}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4706 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID}, | 
|  | 4707 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 4708 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 4709 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 4710 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4711 | {0xa0, 0x09, 0x01ad}, | 
|  | 4712 | {0xa0, 0x15, 0x01ae}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4713 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 4714 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 4715 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 4716 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
|  | 4717 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4718 | {0xa0, 0x78, ZC3XX_R18D_YTARGET},	/*jfm: was 6c*/ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4719 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4720 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4721 | static const struct usb_action pb0330_50HZ[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4722 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4723 | {0xbb, 0x00, 0x055c}, | 
|  | 4724 | {0xbb, 0x01, 0x09aa}, | 
|  | 4725 | {0xbb, 0x00, 0x1001}, | 
|  | 4726 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4727 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4728 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4729 | {0xa0, 0xc4, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4730 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4731 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4732 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4733 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4734 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4735 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4736 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4737 | {0xa0, 0x5c, ZC3XX_R01D_HSYNC_0}, | 
|  | 4738 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1}, | 
|  | 4739 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2}, | 
|  | 4740 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4741 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4742 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4743 | static const struct usb_action pb0330_50HZScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4744 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4745 | {0xbb, 0x00, 0x0566}, | 
|  | 4746 | {0xbb, 0x02, 0x09b2}, | 
|  | 4747 | {0xbb, 0x00, 0x1002}, | 
|  | 4748 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4749 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4750 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4751 | {0xa0, 0x8c, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4752 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4753 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4754 | {0xa0, 0x8a, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4755 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4756 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4757 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4758 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4759 | {0xa0, 0xd7, ZC3XX_R01D_HSYNC_0}, | 
|  | 4760 | {0xa0, 0xf0, ZC3XX_R01E_HSYNC_1}, | 
|  | 4761 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, | 
|  | 4762 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4763 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4764 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4765 | static const struct usb_action pb0330_60HZ[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4766 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4767 | {0xbb, 0x00, 0x0535}, | 
|  | 4768 | {0xbb, 0x01, 0x0974}, | 
|  | 4769 | {0xbb, 0x00, 0x1001}, | 
|  | 4770 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4771 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4772 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4773 | {0xa0, 0xfe, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4774 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4775 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4776 | {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4777 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4778 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4779 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4780 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4781 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | 
|  | 4782 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, | 
|  | 4783 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4784 | {0xa0, 0xd0, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4785 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4786 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4787 | static const struct usb_action pb0330_60HZScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4788 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4789 | {0xbb, 0x00, 0x0535}, | 
|  | 4790 | {0xbb, 0x02, 0x096c}, | 
|  | 4791 | {0xbb, 0x00, 0x1002}, | 
|  | 4792 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4793 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4794 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4795 | {0xa0, 0xc0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4796 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4797 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4798 | {0xa0, 0x7c, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4799 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE}, | 
|  | 4800 | {0xa0, 0x1a, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4801 | {0xa0, 0x14, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4802 | {0xa0, 0x66, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4803 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | 
|  | 4804 | {0xa0, 0x50, ZC3XX_R01E_HSYNC_1}, | 
|  | 4805 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4806 | {0xa0, 0xd0, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4807 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4808 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4809 | static const struct usb_action pb0330_NoFliker[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4810 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4811 | {0xbb, 0x00, 0x0509}, | 
|  | 4812 | {0xbb, 0x02, 0x0940}, | 
|  | 4813 | {0xbb, 0x00, 0x1002}, | 
|  | 4814 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4815 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4816 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4817 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4818 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4819 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4820 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4821 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 4822 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4823 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4824 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4825 | {0xa0, 0x09, ZC3XX_R01D_HSYNC_0}, | 
|  | 4826 | {0xa0, 0x40, ZC3XX_R01E_HSYNC_1}, | 
|  | 4827 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4828 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4829 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4830 | }; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 4831 | static const struct usb_action pb0330_NoFlikerScale[] = { | 
| Jean-Francois Moine | 56205cc | 2009-11-04 16:38:04 -0300 | [diff] [blame] | 4832 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, | 
|  | 4833 | {0xbb, 0x00, 0x0535}, | 
|  | 4834 | {0xbb, 0x01, 0x0980}, | 
|  | 4835 | {0xbb, 0x00, 0x1001}, | 
|  | 4836 | {0xa0, 0x60, ZC3XX_R11D_GLOBALGAIN}, | 
|  | 4837 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, | 
|  | 4838 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 4839 | {0xa0, 0xf0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 4840 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 4841 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 4842 | {0xa0, 0x01, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 4843 | {0xa0, 0x10, ZC3XX_R18C_AEFREEZE}, | 
|  | 4844 | {0xa0, 0x20, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 4845 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 4846 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
|  | 4847 | {0xa0, 0x35, ZC3XX_R01D_HSYNC_0}, | 
|  | 4848 | {0xa0, 0x60, ZC3XX_R01E_HSYNC_1}, | 
|  | 4849 | {0xa0, 0x90, ZC3XX_R01F_HSYNC_2}, | 
|  | 4850 | {0xa0, 0xe0, ZC3XX_R020_HSYNC_3}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4851 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4852 | }; | 
|  | 4853 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 4854 | /* from oem9.inf */ | 
|  | 4855 | static const struct usb_action po2030_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4856 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 4857 | {0xa0, 0x04, ZC3XX_R002_CLOCKSELECT},	/* 00,02,04,cc */ | 
|  | 4858 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,01,cc */ | 
|  | 4859 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 4860 | {0xa0, 0x04, ZC3XX_R080_HBLANKHIGH}, /* 00,80,04,cc */ | 
|  | 4861 | {0xa0, 0x05, ZC3XX_R081_HBLANKLOW}, /* 00,81,05,cc */ | 
|  | 4862 | {0xa0, 0x16, ZC3XX_R083_RGAINADDR}, /* 00,83,16,cc */ | 
|  | 4863 | {0xa0, 0x18, ZC3XX_R085_BGAINADDR}, /* 00,85,18,cc */ | 
|  | 4864 | {0xa0, 0x1a, ZC3XX_R086_EXPTIMEHIGH}, /* 00,86,1a,cc */ | 
|  | 4865 | {0xa0, 0x1b, ZC3XX_R087_EXPTIMEMID}, /* 00,87,1b,cc */ | 
|  | 4866 | {0xa0, 0x1c, ZC3XX_R088_EXPTIMELOW}, /* 00,88,1c,cc */ | 
|  | 4867 | {0xa0, 0xee, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,ee,cc */ | 
|  | 4868 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00,08,03,cc */ | 
|  | 4869 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,03,cc */ | 
|  | 4870 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 4871 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 4872 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 4873 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 4874 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,e0,cc */ | 
|  | 4875 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,42,cc */ | 
|  | 4876 | {0xaa, 0x8d, 0x0008},			/* 00,8d,08,aa */ | 
|  | 4877 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},	/* 00,98,00,cc */ | 
|  | 4878 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},	/* 00,9a,00,cc */ | 
|  | 4879 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},	/* 01,1a,00,cc */ | 
|  | 4880 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},	/* 01,1c,00,cc */ | 
|  | 4881 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW},	/* 00,9c,e6,cc */ | 
|  | 4882 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW},	/* 00,9e,86,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4883 | {0xaa, 0x09, 0x00ce}, /* 00,09,ce,aa */ | 
|  | 4884 | {0xaa, 0x0b, 0x0005}, /* 00,0b,05,aa */ | 
|  | 4885 | {0xaa, 0x0d, 0x0054}, /* 00,0d,54,aa */ | 
|  | 4886 | {0xaa, 0x0f, 0x00eb}, /* 00,0f,eb,aa */ | 
|  | 4887 | {0xaa, 0x87, 0x0000}, /* 00,87,00,aa */ | 
|  | 4888 | {0xaa, 0x88, 0x0004}, /* 00,88,04,aa */ | 
|  | 4889 | {0xaa, 0x89, 0x0000}, /* 00,89,00,aa */ | 
|  | 4890 | {0xaa, 0x8a, 0x0005}, /* 00,8a,05,aa */ | 
|  | 4891 | {0xaa, 0x13, 0x0003}, /* 00,13,03,aa */ | 
|  | 4892 | {0xaa, 0x16, 0x0040}, /* 00,16,40,aa */ | 
|  | 4893 | {0xaa, 0x18, 0x0040}, /* 00,18,40,aa */ | 
|  | 4894 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 4895 | {0xaa, 0x29, 0x00e8}, /* 00,29,e8,aa */ | 
|  | 4896 | {0xaa, 0x45, 0x0045}, /* 00,45,45,aa */ | 
|  | 4897 | {0xaa, 0x50, 0x00ed}, /* 00,50,ed,aa */ | 
|  | 4898 | {0xaa, 0x51, 0x0025}, /* 00,51,25,aa */ | 
|  | 4899 | {0xaa, 0x52, 0x0042}, /* 00,52,42,aa */ | 
|  | 4900 | {0xaa, 0x53, 0x002f}, /* 00,53,2f,aa */ | 
|  | 4901 | {0xaa, 0x79, 0x0025}, /* 00,79,25,aa */ | 
|  | 4902 | {0xaa, 0x7b, 0x0000}, /* 00,7b,00,aa */ | 
|  | 4903 | {0xaa, 0x7e, 0x0025}, /* 00,7e,25,aa */ | 
|  | 4904 | {0xaa, 0x7f, 0x0025}, /* 00,7f,25,aa */ | 
|  | 4905 | {0xaa, 0x21, 0x0000}, /* 00,21,00,aa */ | 
|  | 4906 | {0xaa, 0x33, 0x0036}, /* 00,33,36,aa */ | 
|  | 4907 | {0xaa, 0x36, 0x0060}, /* 00,36,60,aa */ | 
|  | 4908 | {0xaa, 0x37, 0x0008}, /* 00,37,08,aa */ | 
|  | 4909 | {0xaa, 0x3b, 0x0031}, /* 00,3b,31,aa */ | 
|  | 4910 | {0xaa, 0x44, 0x000f}, /* 00,44,0f,aa */ | 
|  | 4911 | {0xaa, 0x58, 0x0002}, /* 00,58,02,aa */ | 
|  | 4912 | {0xaa, 0x66, 0x00c0}, /* 00,66,c0,aa */ | 
|  | 4913 | {0xaa, 0x67, 0x0044}, /* 00,67,44,aa */ | 
|  | 4914 | {0xaa, 0x6b, 0x00a0}, /* 00,6b,a0,aa */ | 
|  | 4915 | {0xaa, 0x6c, 0x0054}, /* 00,6c,54,aa */ | 
|  | 4916 | {0xaa, 0xd6, 0x0007}, /* 00,d6,07,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4917 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,f7,cc */ | 
|  | 4918 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 4919 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 4920 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, /* 01,89,06,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4921 | {0xa0, 0x00, 0x01ad}, /* 01,ad,00,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4922 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 4923 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, /* 01,cb,13,cc */ | 
|  | 4924 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 4925 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, /* 03,01,08,cc */ | 
|  | 4926 | {0xa0, 0x7a, ZC3XX_R116_RGAIN}, /* 01,16,7a,cc */ | 
|  | 4927 | {0xa0, 0x4a, ZC3XX_R118_BGAIN}, /* 01,18,4a,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 4928 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4929 | }; | 
|  | 4930 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 4931 | /* from oem9.inf */ | 
|  | 4932 | static const struct usb_action po2030_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4933 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, /* 00,00,01,cc */ | 
|  | 4934 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, /* 00,02,10,cc */ | 
|  | 4935 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT}, /* 00,10,01,cc */ | 
|  | 4936 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, /* 00,01,01,cc */ | 
|  | 4937 | {0xa0, 0x04, ZC3XX_R080_HBLANKHIGH}, /* 00,80,04,cc */ | 
|  | 4938 | {0xa0, 0x05, ZC3XX_R081_HBLANKLOW}, /* 00,81,05,cc */ | 
|  | 4939 | {0xa0, 0x16, ZC3XX_R083_RGAINADDR}, /* 00,83,16,cc */ | 
|  | 4940 | {0xa0, 0x18, ZC3XX_R085_BGAINADDR}, /* 00,85,18,cc */ | 
|  | 4941 | {0xa0, 0x1a, ZC3XX_R086_EXPTIMEHIGH}, /* 00,86,1a,cc */ | 
|  | 4942 | {0xa0, 0x1b, ZC3XX_R087_EXPTIMEMID}, /* 00,87,1b,cc */ | 
|  | 4943 | {0xa0, 0x1c, ZC3XX_R088_EXPTIMELOW}, /* 00,88,1c,cc */ | 
|  | 4944 | {0xa0, 0xee, ZC3XX_R08B_I2CDEVICEADDR}, /* 00,8b,ee,cc */ | 
|  | 4945 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, /* 00,08,03,cc */ | 
|  | 4946 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,03,cc */ | 
|  | 4947 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,01,cc */ | 
|  | 4948 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, /* 00,03,02,cc */ | 
|  | 4949 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, /* 00,04,80,cc */ | 
|  | 4950 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, /* 00,05,01,cc */ | 
|  | 4951 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, /* 00,06,e0,cc */ | 
|  | 4952 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,42,cc */ | 
|  | 4953 | {0xaa, 0x8d, 0x0008},			/* 00,8d,08,aa */ | 
|  | 4954 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW}, /* 00,98,00,cc */ | 
|  | 4955 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW}, /* 00,9a,00,cc */ | 
|  | 4956 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW}, /* 01,1a,00,cc */ | 
|  | 4957 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW}, /* 01,1c,00,cc */ | 
|  | 4958 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, /* 00,9c,e8,cc */ | 
|  | 4959 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, /* 00,9e,88,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4960 | {0xaa, 0x09, 0x00cc}, /* 00,09,cc,aa */ | 
|  | 4961 | {0xaa, 0x0b, 0x0005}, /* 00,0b,05,aa */ | 
|  | 4962 | {0xaa, 0x0d, 0x0058}, /* 00,0d,58,aa */ | 
|  | 4963 | {0xaa, 0x0f, 0x00ed}, /* 00,0f,ed,aa */ | 
|  | 4964 | {0xaa, 0x87, 0x0000}, /* 00,87,00,aa */ | 
|  | 4965 | {0xaa, 0x88, 0x0004}, /* 00,88,04,aa */ | 
|  | 4966 | {0xaa, 0x89, 0x0000}, /* 00,89,00,aa */ | 
|  | 4967 | {0xaa, 0x8a, 0x0005}, /* 00,8a,05,aa */ | 
|  | 4968 | {0xaa, 0x13, 0x0003}, /* 00,13,03,aa */ | 
|  | 4969 | {0xaa, 0x16, 0x0040}, /* 00,16,40,aa */ | 
|  | 4970 | {0xaa, 0x18, 0x0040}, /* 00,18,40,aa */ | 
|  | 4971 | {0xaa, 0x1d, 0x0002}, /* 00,1d,02,aa */ | 
|  | 4972 | {0xaa, 0x29, 0x00e8}, /* 00,29,e8,aa */ | 
|  | 4973 | {0xaa, 0x45, 0x0045}, /* 00,45,45,aa */ | 
|  | 4974 | {0xaa, 0x50, 0x00ed}, /* 00,50,ed,aa */ | 
|  | 4975 | {0xaa, 0x51, 0x0025}, /* 00,51,25,aa */ | 
|  | 4976 | {0xaa, 0x52, 0x0042}, /* 00,52,42,aa */ | 
|  | 4977 | {0xaa, 0x53, 0x002f}, /* 00,53,2f,aa */ | 
|  | 4978 | {0xaa, 0x79, 0x0025}, /* 00,79,25,aa */ | 
|  | 4979 | {0xaa, 0x7b, 0x0000}, /* 00,7b,00,aa */ | 
|  | 4980 | {0xaa, 0x7e, 0x0025}, /* 00,7e,25,aa */ | 
|  | 4981 | {0xaa, 0x7f, 0x0025}, /* 00,7f,25,aa */ | 
|  | 4982 | {0xaa, 0x21, 0x0000}, /* 00,21,00,aa */ | 
|  | 4983 | {0xaa, 0x33, 0x0036}, /* 00,33,36,aa */ | 
|  | 4984 | {0xaa, 0x36, 0x0060}, /* 00,36,60,aa */ | 
|  | 4985 | {0xaa, 0x37, 0x0008}, /* 00,37,08,aa */ | 
|  | 4986 | {0xaa, 0x3b, 0x0031}, /* 00,3b,31,aa */ | 
|  | 4987 | {0xaa, 0x44, 0x000f}, /* 00,44,0f,aa */ | 
|  | 4988 | {0xaa, 0x58, 0x0002}, /* 00,58,02,aa */ | 
|  | 4989 | {0xaa, 0x66, 0x00c0}, /* 00,66,c0,aa */ | 
|  | 4990 | {0xaa, 0x67, 0x0044}, /* 00,67,44,aa */ | 
|  | 4991 | {0xaa, 0x6b, 0x00a0}, /* 00,6b,a0,aa */ | 
|  | 4992 | {0xaa, 0x6c, 0x0054}, /* 00,6c,54,aa */ | 
|  | 4993 | {0xaa, 0xd6, 0x0007}, /* 00,d6,07,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4994 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, /* 01,01,f7,cc */ | 
|  | 4995 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, /* 00,12,05,cc */ | 
|  | 4996 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, /* 01,00,0d,cc */ | 
|  | 4997 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, /* 01,89,06,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 4998 | {0xa0, 0x00, 0x01ad}, /* 01,ad,00,cc */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 4999 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, /* 01,c5,03,cc */ | 
|  | 5000 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, /* 01,cb,13,cc */ | 
|  | 5001 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, /* 02,50,08,cc */ | 
|  | 5002 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, /* 03,01,08,cc */ | 
|  | 5003 | {0xa0, 0x7a, ZC3XX_R116_RGAIN}, /* 01,16,7a,cc */ | 
|  | 5004 | {0xa0, 0x4a, ZC3XX_R118_BGAIN}, /* 01,18,4a,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5005 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5006 | }; | 
|  | 5007 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5008 | static const struct usb_action po2030_50HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5009 | {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */ | 
|  | 5010 | {0xaa, 0x1a, 0x0001}, /* 00,1a,01,aa */ | 
|  | 5011 | {0xaa, 0x1b, 0x000a}, /* 00,1b,0a,aa */ | 
|  | 5012 | {0xaa, 0x1c, 0x00b0}, /* 00,1c,b0,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5013 | {0xa0, 0x05, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,05,cc */ | 
|  | 5014 | {0xa0, 0x35, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,35,cc */ | 
|  | 5015 | {0xa0, 0x70, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,70,cc */ | 
|  | 5016 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5017 | {0xa0, 0x85, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,85,cc */ | 
|  | 5018 | {0xa0, 0x58, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,58,cc */ | 
|  | 5019 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, /* 01,8c,0c,cc */ | 
|  | 5020 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,18,cc */ | 
|  | 5021 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,60,cc */ | 
|  | 5022 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 5023 | {0xa0, 0x22, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,22,cc */ | 
|  | 5024 | {0xa0, 0x88, ZC3XX_R18D_YTARGET}, /* 01,8d,88,cc */ | 
|  | 5025 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN}, /* 01,1d,58,cc */ | 
|  | 5026 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,42,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5027 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5028 | }; | 
|  | 5029 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5030 | static const struct usb_action po2030_60HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5031 | {0xaa, 0x8d, 0x0008}, /* 00,8d,08,aa */ | 
|  | 5032 | {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */ | 
|  | 5033 | {0xaa, 0x1b, 0x00de}, /* 00,1b,de,aa */ | 
|  | 5034 | {0xaa, 0x1c, 0x0040}, /* 00,1c,40,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5035 | {0xa0, 0x08, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,08,cc */ | 
|  | 5036 | {0xa0, 0xae, ZC3XX_R191_EXPOSURELIMITMID}, /* 01,91,ae,cc */ | 
|  | 5037 | {0xa0, 0x80, ZC3XX_R192_EXPOSURELIMITLOW}, /* 01,92,80,cc */ | 
|  | 5038 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5039 | {0xa0, 0x6f, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,6f,cc */ | 
|  | 5040 | {0xa0, 0x20, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,20,cc */ | 
|  | 5041 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, /* 01,8c,0c,cc */ | 
|  | 5042 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, /* 01,8f,18,cc */ | 
|  | 5043 | {0xa0, 0x60, ZC3XX_R1A8_DIGITALGAIN}, /* 01,a8,60,cc */ | 
|  | 5044 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,10,cc */ | 
|  | 5045 | {0xa0, 0x22, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,22,cc */ | 
|  | 5046 | {0xa0, 0x88, ZC3XX_R18D_YTARGET},		/* 01,8d,88,cc */ | 
|  | 5047 | /* win: 01,8d,80 */ | 
|  | 5048 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc */ | 
|  | 5049 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5050 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5051 | }; | 
|  | 5052 |  | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5053 | static const struct usb_action po2030_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5054 | {0xa0, 0x02, ZC3XX_R180_AUTOCORRECTENABLE}, /* 01,80,02,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5055 | {0xaa, 0x8d, 0x000d}, /* 00,8d,0d,aa */ | 
|  | 5056 | {0xaa, 0x1a, 0x0000}, /* 00,1a,00,aa */ | 
|  | 5057 | {0xaa, 0x1b, 0x0002}, /* 00,1b,02,aa */ | 
|  | 5058 | {0xaa, 0x1c, 0x0078}, /* 00,1c,78,aa */ | 
|  | 5059 | {0xaa, 0x46, 0x0000}, /* 00,46,00,aa */ | 
|  | 5060 | {0xaa, 0x15, 0x0000}, /* 00,15,00,aa */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5061 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5062 | }; | 
|  | 5063 |  | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5064 | static const struct usb_action tas5130c_InitialScale[] = {	/* 320x240 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5065 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 5066 | {0xa0, 0x50, ZC3XX_R002_CLOCKSELECT}, | 
|  | 5067 | {0xa0, 0x03, ZC3XX_R008_CLOCKSETTING}, | 
|  | 5068 | {0xa0, 0x02, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 5069 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5070 | {0xa0, 0x00, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5071 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 5072 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5073 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5074 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 5075 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 5076 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 5077 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5078 |  | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5079 | {0xa0, 0x04, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 5080 | {0xa0, 0x0f, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 5081 | {0xa0, 0x04, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 5082 | {0xa0, 0x0f, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 5083 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 5084 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
|  | 5085 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 5086 | {0xa0, 0x06, ZC3XX_R08D_COMPABILITYMODE}, | 
|  | 5087 | {0xa0, 0xf7, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 5088 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 5089 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 5090 | {0xa0, 0x70, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5091 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5092 | {0xa0, 0x00, 0x01ad}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5093 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 5094 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 5095 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 5096 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 5097 | {0xa0, 0x07, ZC3XX_R0A5_EXPOSUREGAIN}, | 
|  | 5098 | {0xa0, 0x02, ZC3XX_R0A6_EXPOSUREBLACKLVL}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5099 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5100 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5101 | static const struct usb_action tas5130c_Initial[] = {	/* 640x480 */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5102 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL}, | 
|  | 5103 | {0xa0, 0x40, ZC3XX_R002_CLOCKSELECT}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 5104 | {0xa0, 0x00, ZC3XX_R008_CLOCKSETTING}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5105 | {0xa0, 0x02, ZC3XX_R010_CMOSSENSORSELECT}, | 
|  | 5106 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5107 | {0xa0, 0x00, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5108 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
|  | 5109 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING}, | 
|  | 5110 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5111 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH}, | 
|  | 5112 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW}, | 
|  | 5113 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH}, | 
|  | 5114 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW}, | 
|  | 5115 | {0xa0, 0x05, ZC3XX_R098_WINYSTARTLOW}, | 
|  | 5116 | {0xa0, 0x0f, ZC3XX_R09A_WINXSTARTLOW}, | 
|  | 5117 | {0xa0, 0x05, ZC3XX_R11A_FIRSTYLOW}, | 
|  | 5118 | {0xa0, 0x0f, ZC3XX_R11C_FIRSTXLOW}, | 
|  | 5119 | {0xa0, 0xe6, ZC3XX_R09C_WINHEIGHTLOW}, | 
|  | 5120 | {0xa0, 0x02, ZC3XX_R09D_WINWIDTHHIGH}, | 
|  | 5121 | {0xa0, 0x86, ZC3XX_R09E_WINWIDTHLOW}, | 
|  | 5122 | {0xa0, 0x06, ZC3XX_R08D_COMPABILITYMODE}, | 
|  | 5123 | {0xa0, 0x37, ZC3XX_R101_SENSORCORRECTION}, | 
|  | 5124 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE}, | 
|  | 5125 | {0xa0, 0x06, ZC3XX_R189_AWBSTATUS}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 5126 | {0xa0, 0x70, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5127 | {0xa0, 0x50, ZC3XX_R1A8_DIGITALGAIN}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5128 | {0xa0, 0x00, 0x01ad}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5129 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE}, | 
|  | 5130 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05}, | 
|  | 5131 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE}, | 
|  | 5132 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 5133 | {0xa0, 0x07, ZC3XX_R0A5_EXPOSUREGAIN}, | 
|  | 5134 | {0xa0, 0x02, ZC3XX_R0A6_EXPOSUREBLACKLVL}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5135 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5136 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5137 | static const struct usb_action tas5130c_50HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5138 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5139 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5140 | {0xaa, 0xa4, 0x0063}, /* 00,a4,63,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5141 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5142 | {0xa0, 0x63, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,63,cc */ | 
|  | 5143 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5144 | {0xa0, 0x04, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5145 | {0xa0, 0xfe, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5146 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5147 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 5148 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,47,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5149 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5150 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 5151 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 5152 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5153 | {0xa0, 0xd3, ZC3XX_R01D_HSYNC_0}, /* 00,1d,d3,cc */ | 
|  | 5154 | {0xa0, 0xda, ZC3XX_R01E_HSYNC_1}, /* 00,1e,da,cc */ | 
|  | 5155 | {0xa0, 0xea, ZC3XX_R01F_HSYNC_2}, /* 00,1f,ea,cc */ | 
|  | 5156 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5157 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5158 | {0xa0, 0x4c, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5159 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5160 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5161 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5162 | static const struct usb_action tas5130c_50HZScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5163 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5164 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5165 | {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5166 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5167 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ | 
|  | 5168 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5169 | {0xa0, 0x07, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5170 | {0xa0, 0xd0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5171 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5172 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 5173 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5174 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5175 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 5176 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 5177 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5178 | {0xa0, 0xf0, ZC3XX_R01D_HSYNC_0}, /* 00,1d,f0,cc */ | 
|  | 5179 | {0xa0, 0xf4, ZC3XX_R01E_HSYNC_1}, /* 00,1e,f4,cc */ | 
|  | 5180 | {0xa0, 0xf8, ZC3XX_R01F_HSYNC_2}, /* 00,1f,f8,cc */ | 
|  | 5181 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5182 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5183 | {0xa0, 0xc0, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5184 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5185 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5186 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5187 | static const struct usb_action tas5130c_60HZ[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5188 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5189 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5190 | {0xaa, 0xa4, 0x0036}, /* 00,a4,36,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5191 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5192 | {0xa0, 0x36, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,36,cc */ | 
|  | 5193 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5194 | {0xa0, 0x05, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5195 | {0xa0, 0x54, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5196 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5197 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 5198 | {0xa0, 0x3e, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,3e,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5199 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5200 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 5201 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 5202 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5203 | {0xa0, 0xca, ZC3XX_R01D_HSYNC_0}, /* 00,1d,ca,cc */ | 
|  | 5204 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 
|  | 5205 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 
|  | 5206 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5207 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5208 | {0xa0, 0x28, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5209 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5210 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5211 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5212 | static const struct usb_action tas5130c_60HZScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5213 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5214 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5215 | {0xaa, 0xa4, 0x0077}, /* 00,a4,77,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5216 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5217 | {0xa0, 0x77, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,77,cc */ | 
|  | 5218 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5219 | {0xa0, 0x09, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5220 | {0xa0, 0x47, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5221 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, /* 01,95,00,cc */ | 
|  | 5222 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, /* 01,96,00,cc */ | 
|  | 5223 | {0xa0, 0x7d, ZC3XX_R197_ANTIFLICKERLOW}, /* 01,97,7d,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5224 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5225 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
|  | 5226 | {0xa0, 0x08, ZC3XX_R1A9_DIGITALLIMITDIFF}, | 
|  | 5227 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5228 | {0xa0, 0xc8, ZC3XX_R01D_HSYNC_0}, /* 00,1d,c8,cc */ | 
|  | 5229 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 
|  | 5230 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 
|  | 5231 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5232 | {0xa0, 0x03, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,03,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5233 | {0xa0, 0x20, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5234 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5235 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5236 | }; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5237 | static const struct usb_action tas5130c_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5238 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5239 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5240 | {0xaa, 0xa4, 0x0040}, /* 00,a4,40,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5241 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5242 | {0xa0, 0x40, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,40,cc */ | 
|  | 5243 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5244 | {0xa0, 0x05, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5245 | {0xa0, 0xa0, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 5246 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 5247 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 5248 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 5249 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5250 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5251 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
|  | 5252 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 
|  | 5253 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ | 
|  | 5254 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 
|  | 5255 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 
|  | 5256 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5257 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5258 | {0xa0, 0xf0, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5259 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5260 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5261 | }; | 
|  | 5262 |  | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5263 | static const struct usb_action tas5130c_NoFlikerScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5264 | {0xa0, 0x00, ZC3XX_R019_AUTOADJUSTFPS}, /* 00,19,00,cc */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5265 | {0xaa, 0xa3, 0x0001}, /* 00,a3,01,aa */ | 
|  | 5266 | {0xaa, 0xa4, 0x0090}, /* 00,a4,90,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5267 | {0xa0, 0x01, ZC3XX_R0A3_EXPOSURETIMEHIGH}, /* 00,a3,01,cc */ | 
|  | 5268 | {0xa0, 0x90, ZC3XX_R0A4_EXPOSURETIMELOW}, /* 00,a4,90,cc */ | 
|  | 5269 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH}, /* 01,90,00,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5270 | {0xa0, 0x0a, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5271 | {0xa0, 0x00, ZC3XX_R192_EXPOSURELIMITLOW}, | 
|  | 5272 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH}, | 
|  | 5273 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID}, | 
|  | 5274 | {0xa0, 0x04, ZC3XX_R197_ANTIFLICKERLOW}, | 
|  | 5275 | {0xa0, 0x0c, ZC3XX_R18C_AEFREEZE}, | 
|  | 5276 | {0xa0, 0x18, ZC3XX_R18F_AEUNFREEZE}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5277 | {0xa0, 0x00, ZC3XX_R1A9_DIGITALLIMITDIFF}, /* 01,a9,00,cc */ | 
|  | 5278 | {0xa0, 0x00, ZC3XX_R1AA_DIGITALGAINSTEP}, /* 01,aa,00,cc */ | 
|  | 5279 | {0xa0, 0xbc, ZC3XX_R01D_HSYNC_0}, /* 00,1d,bc,cc */ | 
|  | 5280 | {0xa0, 0xd0, ZC3XX_R01E_HSYNC_1}, /* 00,1e,d0,cc */ | 
|  | 5281 | {0xa0, 0xe0, ZC3XX_R01F_HSYNC_2}, /* 00,1f,e0,cc */ | 
|  | 5282 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3}, /* 00,20,ff,cc */ | 
|  | 5283 | {0xa0, 0x02, ZC3XX_R09F_MAXXHIGH}, /* 00,9f,02,cc */ | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5284 | {0xa0, 0xf0, ZC3XX_R0A0_MAXXLOW}, | 
|  | 5285 | {0xa0, 0x50, ZC3XX_R11D_GLOBALGAIN}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5286 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5287 | }; | 
|  | 5288 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5289 | /* from usbvm305.inf 0ac8:305b 07/06/15 (3 - tas5130c) */ | 
|  | 5290 | static const struct usb_action gc0303_Initial[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5291 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc, */ | 
|  | 5292 | {0xa0, 0x02, ZC3XX_R008_CLOCKSETTING},		/* 00,08,02,cc, */ | 
|  | 5293 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5294 | {0xa0, 0x00, ZC3XX_R002_CLOCKSELECT}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5295 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc, */ | 
|  | 5296 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc, */ | 
|  | 5297 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc, */ | 
|  | 5298 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,e0,cc, */ | 
|  | 5299 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,98,cc, */ | 
|  | 5300 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc, */ | 
|  | 5301 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc, */ | 
|  | 5302 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc, */ | 
|  | 5303 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,00,cc, */ | 
|  | 5304 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,00,cc, */ | 
|  | 5305 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,00,cc, */ | 
|  | 5306 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,00,cc, */ | 
|  | 5307 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW},		/* 00,9c,e6,cc, | 
|  | 5308 | * 6<->8 */ | 
|  | 5309 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,86,cc, | 
|  | 5310 | * 6<->8 */ | 
|  | 5311 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID},		/* 00,87,10,cc, */ | 
|  | 5312 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,98,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5313 | {0xaa, 0x01, 0x0000}, | 
|  | 5314 | {0xaa, 0x1a, 0x0000},		/* 00,1a,00,aa, */ | 
|  | 5315 | {0xaa, 0x1c, 0x0017},		/* 00,1c,17,aa, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5316 | {0xaa, 0x1b, 0x0000}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5317 | {0xa0, 0x82, ZC3XX_R086_EXPTIMEHIGH},		/* 00,86,82,cc, */ | 
|  | 5318 | {0xa0, 0x83, ZC3XX_R087_EXPTIMEMID},		/* 00,87,83,cc, */ | 
|  | 5319 | {0xa0, 0x84, ZC3XX_R088_EXPTIMELOW},		/* 00,88,84,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5320 | {0xaa, 0x05, 0x0010},		/* 00,05,10,aa, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5321 | {0xaa, 0x0a, 0x0002}, | 
|  | 5322 | {0xaa, 0x0b, 0x0000}, | 
|  | 5323 | {0xaa, 0x0c, 0x0002}, | 
|  | 5324 | {0xaa, 0x0d, 0x0000}, | 
|  | 5325 | {0xaa, 0x0e, 0x0002}, | 
|  | 5326 | {0xaa, 0x0f, 0x0000}, | 
|  | 5327 | {0xaa, 0x10, 0x0002}, | 
|  | 5328 | {0xaa, 0x11, 0x0000}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5329 | {0xaa, 0x16, 0x0001},		/* 00,16,01,aa, */ | 
|  | 5330 | {0xaa, 0x17, 0x00e8},		/* 00,17,e6,aa, (e6 -> e8) */ | 
|  | 5331 | {0xaa, 0x18, 0x0002},		/* 00,18,02,aa, */ | 
|  | 5332 | {0xaa, 0x19, 0x0088},		/* 00,19,86,aa, */ | 
|  | 5333 | {0xaa, 0x20, 0x0020},		/* 00,20,20,aa, */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5334 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,b7,cc, */ | 
|  | 5335 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc, */ | 
|  | 5336 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc, */ | 
|  | 5337 | {0xa0, 0x76, ZC3XX_R189_AWBSTATUS},		/* 01,89,76,cc, */ | 
|  | 5338 | {0xa0, 0x09, 0x01ad},				/* 01,ad,09,cc, */ | 
|  | 5339 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc, */ | 
|  | 5340 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc, */ | 
|  | 5341 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc, */ | 
|  | 5342 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5343 | {0xa0, 0x58, ZC3XX_R1A8_DIGITALGAIN}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5344 | {0xa0, 0x61, ZC3XX_R116_RGAIN},			/* 01,16,61,cc, */ | 
|  | 5345 | {0xa0, 0x65, ZC3XX_R118_BGAIN},			/* 01,18,65,cc */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5346 | {0xaa, 0x1b, 0x0000}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5347 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5348 | }; | 
|  | 5349 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5350 | static const struct usb_action gc0303_InitialScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5351 | {0xa0, 0x01, ZC3XX_R000_SYSTEMCONTROL},		/* 00,00,01,cc, */ | 
|  | 5352 | {0xa0, 0x02, ZC3XX_R008_CLOCKSETTING},		/* 00,08,02,cc, */ | 
|  | 5353 | {0xa0, 0x01, ZC3XX_R010_CMOSSENSORSELECT},	/* 00,10,01,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5354 | {0xa0, 0x10, ZC3XX_R002_CLOCKSELECT}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5355 | {0xa0, 0x02, ZC3XX_R003_FRAMEWIDTHHIGH},	/* 00,03,02,cc, */ | 
|  | 5356 | {0xa0, 0x80, ZC3XX_R004_FRAMEWIDTHLOW},		/* 00,04,80,cc, */ | 
|  | 5357 | {0xa0, 0x01, ZC3XX_R005_FRAMEHEIGHTHIGH},	/* 00,05,01,cc, */ | 
|  | 5358 | {0xa0, 0xe0, ZC3XX_R006_FRAMEHEIGHTLOW},	/* 00,06,e0,cc, */ | 
|  | 5359 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,98,cc, */ | 
|  | 5360 | {0xa0, 0x01, ZC3XX_R001_SYSTEMOPERATING},	/* 00,01,01,cc, */ | 
|  | 5361 | {0xa0, 0x03, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,03,cc, */ | 
|  | 5362 | {0xa0, 0x01, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,01,cc, */ | 
|  | 5363 | {0xa0, 0x00, ZC3XX_R098_WINYSTARTLOW},		/* 00,98,00,cc, */ | 
|  | 5364 | {0xa0, 0x00, ZC3XX_R09A_WINXSTARTLOW},		/* 00,9a,00,cc, */ | 
|  | 5365 | {0xa0, 0x00, ZC3XX_R11A_FIRSTYLOW},		/* 01,1a,00,cc, */ | 
|  | 5366 | {0xa0, 0x00, ZC3XX_R11C_FIRSTXLOW},		/* 01,1c,00,cc, */ | 
|  | 5367 | {0xa0, 0xe8, ZC3XX_R09C_WINHEIGHTLOW},		/* 00,9c,e8,cc, | 
|  | 5368 | * 8<->6 */ | 
|  | 5369 | {0xa0, 0x88, ZC3XX_R09E_WINWIDTHLOW},		/* 00,9e,88,cc, | 
|  | 5370 | * 8<->6 */ | 
|  | 5371 | {0xa0, 0x10, ZC3XX_R087_EXPTIMEMID},		/* 00,87,10,cc, */ | 
|  | 5372 | {0xa0, 0x98, ZC3XX_R08B_I2CDEVICEADDR},		/* 00,8b,98,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5373 | {0xaa, 0x01, 0x0000}, | 
|  | 5374 | {0xaa, 0x1a, 0x0000},		/* 00,1a,00,aa, */ | 
|  | 5375 | {0xaa, 0x1c, 0x0017},		/* 00,1c,17,aa, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5376 | {0xaa, 0x1b, 0x0000}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5377 | {0xa0, 0x82, ZC3XX_R086_EXPTIMEHIGH},	/* 00,86,82,cc, */ | 
|  | 5378 | {0xa0, 0x83, ZC3XX_R087_EXPTIMEMID},	/* 00,87,83,cc, */ | 
|  | 5379 | {0xa0, 0x84, ZC3XX_R088_EXPTIMELOW},	/* 00,88,84,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5380 | {0xaa, 0x05, 0x0010},		/* 00,05,10,aa, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5381 | {0xaa, 0x0a, 0x0001}, | 
|  | 5382 | {0xaa, 0x0b, 0x0000}, | 
|  | 5383 | {0xaa, 0x0c, 0x0001}, | 
|  | 5384 | {0xaa, 0x0d, 0x0000}, | 
|  | 5385 | {0xaa, 0x0e, 0x0001}, | 
|  | 5386 | {0xaa, 0x0f, 0x0000}, | 
|  | 5387 | {0xaa, 0x10, 0x0001}, | 
|  | 5388 | {0xaa, 0x11, 0x0000}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5389 | {0xaa, 0x16, 0x0001},		/* 00,16,01,aa, */ | 
|  | 5390 | {0xaa, 0x17, 0x00e8},		/* 00,17,e6,aa (e6 -> e8) */ | 
|  | 5391 | {0xaa, 0x18, 0x0002},		/* 00,18,02,aa, */ | 
|  | 5392 | {0xaa, 0x19, 0x0088},		/* 00,19,88,aa, */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5393 | {0xa0, 0xb7, ZC3XX_R101_SENSORCORRECTION},	/* 01,01,b7,cc, */ | 
|  | 5394 | {0xa0, 0x05, ZC3XX_R012_VIDEOCONTROLFUNC},	/* 00,12,05,cc, */ | 
|  | 5395 | {0xa0, 0x0d, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0d,cc, */ | 
|  | 5396 | {0xa0, 0x76, ZC3XX_R189_AWBSTATUS},		/* 01,89,76,cc, */ | 
|  | 5397 | {0xa0, 0x09, 0x01ad},				/* 01,ad,09,cc, */ | 
|  | 5398 | {0xa0, 0x03, ZC3XX_R1C5_SHARPNESSMODE},		/* 01,c5,03,cc, */ | 
|  | 5399 | {0xa0, 0x13, ZC3XX_R1CB_SHARPNESS05},		/* 01,cb,13,cc, */ | 
|  | 5400 | {0xa0, 0x08, ZC3XX_R250_DEADPIXELSMODE},	/* 02,50,08,cc, */ | 
|  | 5401 | {0xa0, 0x08, ZC3XX_R301_EEPROMACCESS},		/* 03,01,08,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5402 | {0xa0, 0x58, ZC3XX_R1A8_DIGITALGAIN}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5403 | {0xa0, 0x61, ZC3XX_R116_RGAIN},		/* 01,16,61,cc, */ | 
|  | 5404 | {0xa0, 0x65, ZC3XX_R118_BGAIN},		/* 01,18,65,cc */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5405 | {0xaa, 0x1b, 0x0000}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5406 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5407 | }; | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5408 | static const struct usb_action gc0303_50HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5409 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
|  | 5410 | {0xaa, 0x83, 0x0001},		/* 00,83,01,aa */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5411 | {0xaa, 0x84, 0x0063}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5412 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc, */ | 
|  | 5413 | {0xa0, 0x06, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,0d,cc, */ | 
|  | 5414 | {0xa0, 0xa8, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,50,cc, */ | 
|  | 5415 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc, */ | 
|  | 5416 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5417 | {0xa0, 0x47, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,47,cc, */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5418 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,8c,0e,cc, */ | 
|  | 5419 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,15,cc, */ | 
|  | 5420 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,10,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5421 | {0xa0, 0x48, ZC3XX_R1AA_DIGITALGAINSTEP}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5422 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,1d,62,cc, */ | 
|  | 5423 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,1e,90,cc, */ | 
|  | 5424 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c8,cc, */ | 
|  | 5425 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc, */ | 
|  | 5426 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc, */ | 
|  | 5427 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5428 | {0xa0, 0x7f, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5429 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5430 | }; | 
|  | 5431 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5432 | static const struct usb_action gc0303_50HZScale[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5433 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
|  | 5434 | {0xaa, 0x83, 0x0003},		/* 00,83,03,aa */ | 
|  | 5435 | {0xaa, 0x84, 0x0054},		/* 00,84,54,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5436 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc, */ | 
|  | 5437 | {0xa0, 0x0d, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,0d,cc, */ | 
|  | 5438 | {0xa0, 0x50, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,50,cc, */ | 
|  | 5439 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc, */ | 
|  | 5440 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc, */ | 
|  | 5441 | {0xa0, 0x8e, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,8e,cc, */ | 
|  | 5442 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,8c,0e,cc, */ | 
|  | 5443 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,15,cc, */ | 
|  | 5444 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,10,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5445 | {0xa0, 0x48, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc, */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5446 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,1d,62,cc, */ | 
|  | 5447 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,1e,90,cc, */ | 
|  | 5448 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c8,cc, */ | 
|  | 5449 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc, */ | 
|  | 5450 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc, */ | 
|  | 5451 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5452 | {0xa0, 0x7f, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5453 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5454 | }; | 
|  | 5455 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5456 | static const struct usb_action gc0303_60HZ[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5457 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5458 | {0xaa, 0x83, 0x0000}, | 
|  | 5459 | {0xaa, 0x84, 0x003b}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5460 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc, */ | 
|  | 5461 | {0xa0, 0x05, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,91,05,cc, */ | 
|  | 5462 | {0xa0, 0x88, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,92,88,cc, */ | 
|  | 5463 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc, */ | 
|  | 5464 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc, */ | 
|  | 5465 | {0xa0, 0x3b, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,3b,cc, */ | 
|  | 5466 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,8c,0e,cc, */ | 
|  | 5467 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,15,cc, */ | 
|  | 5468 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,a9,10,cc, */ | 
|  | 5469 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,aa,24,cc, */ | 
|  | 5470 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,1d,62,cc, */ | 
|  | 5471 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,1e,90,cc, */ | 
|  | 5472 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c8,cc, */ | 
|  | 5473 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc, */ | 
|  | 5474 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc, */ | 
|  | 5475 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5476 | {0xa0, 0x80, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5477 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5478 | }; | 
|  | 5479 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5480 | static const struct usb_action gc0303_60HZScale[] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5481 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5482 | {0xaa, 0x83, 0x0000}, | 
|  | 5483 | {0xaa, 0x84, 0x0076}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5484 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc, */ | 
|  | 5485 | {0xa0, 0x0b, ZC3XX_R191_EXPOSURELIMITMID},	/* 01,1,0b,cc, */ | 
|  | 5486 | {0xa0, 0x10, ZC3XX_R192_EXPOSURELIMITLOW},	/* 01,2,10,cc, */ | 
|  | 5487 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,5,00,cc, */ | 
|  | 5488 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,6,00,cc, */ | 
|  | 5489 | {0xa0, 0x76, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,7,76,cc, */ | 
|  | 5490 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,c,0e,cc, */ | 
|  | 5491 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,f,15,cc, */ | 
|  | 5492 | {0xa0, 0x10, ZC3XX_R1A9_DIGITALLIMITDIFF},	/* 01,9,10,cc, */ | 
|  | 5493 | {0xa0, 0x24, ZC3XX_R1AA_DIGITALGAINSTEP},	/* 01,a,24,cc, */ | 
|  | 5494 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,d,62,cc, */ | 
|  | 5495 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,e,90,cc, */ | 
|  | 5496 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,f,c8,cc, */ | 
|  | 5497 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,0,ff,cc, */ | 
|  | 5498 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,d,58,cc, */ | 
|  | 5499 | {0xa0, 0x42, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,42,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5500 | {0xa0, 0x80, ZC3XX_R18D_YTARGET}, | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5501 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5502 | }; | 
|  | 5503 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5504 | static const struct usb_action gc0303_NoFliker[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5505 | {0xa0, 0x0c, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0c,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5506 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
|  | 5507 | {0xaa, 0x83, 0x0000},		/* 00,83,00,aa */ | 
|  | 5508 | {0xaa, 0x84, 0x0020},		/* 00,84,20,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5509 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,0,00,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5510 | {0xa0, 0x00, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5511 | {0xa0, 0x48, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5512 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc, */ | 
|  | 5513 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc, */ | 
|  | 5514 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,10,cc, */ | 
|  | 5515 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,8c,0e,cc, */ | 
|  | 5516 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,15,cc, */ | 
|  | 5517 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,1d,62,cc, */ | 
|  | 5518 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,1e,90,cc, */ | 
|  | 5519 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c8,cc, */ | 
|  | 5520 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc, */ | 
|  | 5521 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc, */ | 
|  | 5522 | {0xa0, 0x03, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,03,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5523 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5524 | }; | 
|  | 5525 |  | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5526 | static const struct usb_action gc0303_NoFlikerScale[] = { | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5527 | {0xa0, 0x0c, ZC3XX_R100_OPERATIONMODE},		/* 01,00,0c,cc, */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5528 | {0xaa, 0x82, 0x0000},		/* 00,82,00,aa */ | 
|  | 5529 | {0xaa, 0x83, 0x0000},		/* 00,83,00,aa */ | 
|  | 5530 | {0xaa, 0x84, 0x0020},		/* 00,84,20,aa */ | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5531 | {0xa0, 0x00, ZC3XX_R190_EXPOSURELIMITHIGH},	/* 01,90,00,cc, */ | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5532 | {0xa0, 0x00, ZC3XX_R191_EXPOSURELIMITMID}, | 
|  | 5533 | {0xa0, 0x48, ZC3XX_R192_EXPOSURELIMITLOW}, | 
| Mauro Carvalho Chehab | 9a97a2a | 2008-07-15 14:23:08 -0300 | [diff] [blame] | 5534 | {0xa0, 0x00, ZC3XX_R195_ANTIFLICKERHIGH},	/* 01,95,00,cc, */ | 
|  | 5535 | {0xa0, 0x00, ZC3XX_R196_ANTIFLICKERMID},	/* 01,96,00,cc, */ | 
|  | 5536 | {0xa0, 0x10, ZC3XX_R197_ANTIFLICKERLOW},	/* 01,97,10,cc, */ | 
|  | 5537 | {0xa0, 0x0e, ZC3XX_R18C_AEFREEZE},		/* 01,8c,0e,cc, */ | 
|  | 5538 | {0xa0, 0x15, ZC3XX_R18F_AEUNFREEZE},		/* 01,8f,15,cc, */ | 
|  | 5539 | {0xa0, 0x62, ZC3XX_R01D_HSYNC_0},		/* 00,1d,62,cc, */ | 
|  | 5540 | {0xa0, 0x90, ZC3XX_R01E_HSYNC_1},		/* 00,1e,90,cc, */ | 
|  | 5541 | {0xa0, 0xc8, ZC3XX_R01F_HSYNC_2},		/* 00,1f,c8,cc, */ | 
|  | 5542 | {0xa0, 0xff, ZC3XX_R020_HSYNC_3},		/* 00,20,ff,cc, */ | 
|  | 5543 | {0xa0, 0x58, ZC3XX_R11D_GLOBALGAIN},		/* 01,1d,58,cc, */ | 
|  | 5544 | {0xa0, 0x03, ZC3XX_R180_AUTOCORRECTENABLE},	/* 01,80,03,cc */ | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5545 | {} | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5546 | }; | 
|  | 5547 |  | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5548 | static u8 reg_r(struct gspca_dev *gspca_dev, | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5549 | u16 index) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5550 | { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5551 | int ret; | 
|  | 5552 |  | 
|  | 5553 | if (gspca_dev->usb_err < 0) | 
|  | 5554 | return 0; | 
|  | 5555 | ret = usb_control_msg(gspca_dev->dev, | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5556 | usb_rcvctrlpipe(gspca_dev->dev, 0), | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5557 | 0xa1, | 
|  | 5558 | USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, | 
|  | 5559 | 0x01,			/* value */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5560 | index, gspca_dev->usb_buf, 1, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5561 | 500); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5562 | if (ret < 0) { | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5563 | pr_err("reg_r err %d\n", ret); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5564 | gspca_dev->usb_err = ret; | 
|  | 5565 | return 0; | 
|  | 5566 | } | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5567 | return gspca_dev->usb_buf[0]; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5568 | } | 
|  | 5569 |  | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5570 | static void reg_w(struct gspca_dev *gspca_dev, | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5571 | u8 value, | 
|  | 5572 | u16 index) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5573 | { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5574 | int ret; | 
|  | 5575 |  | 
|  | 5576 | if (gspca_dev->usb_err < 0) | 
|  | 5577 | return; | 
|  | 5578 | ret = usb_control_msg(gspca_dev->dev, | 
|  | 5579 | usb_sndctrlpipe(gspca_dev->dev, 0), | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5580 | 0xa0, | 
|  | 5581 | USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, | 
|  | 5582 | value, index, NULL, 0, | 
|  | 5583 | 500); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5584 | if (ret < 0) { | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 5585 | pr_err("reg_w_i err %d\n", ret); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5586 | gspca_dev->usb_err = ret; | 
|  | 5587 | } | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5588 | } | 
|  | 5589 |  | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5590 | static u16 i2c_read(struct gspca_dev *gspca_dev, | 
|  | 5591 | u8 reg) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5592 | { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5593 | u8 retbyte; | 
|  | 5594 | u16 retval; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5595 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5596 | if (gspca_dev->usb_err < 0) | 
|  | 5597 | return 0; | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5598 | reg_w(gspca_dev, reg, 0x0092); | 
|  | 5599 | reg_w(gspca_dev, 0x02, 0x0090);			/* <- read command */ | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 5600 | msleep(20); | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5601 | retbyte = reg_r(gspca_dev, 0x0091);		/* read status */ | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 5602 | if (retbyte != 0x00) | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 5603 | pr_err("i2c_r status error %02x\n", retbyte); | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5604 | retval = reg_r(gspca_dev, 0x0095);		/* read Lowbyte */ | 
|  | 5605 | retval |= reg_r(gspca_dev, 0x0096) << 8;	/* read Hightbyte */ | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 5606 | return retval; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5607 | } | 
|  | 5608 |  | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5609 | static u8 i2c_write(struct gspca_dev *gspca_dev, | 
|  | 5610 | u8 reg, | 
|  | 5611 | u8 valL, | 
|  | 5612 | u8 valH) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5613 | { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5614 | u8 retbyte; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5615 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5616 | if (gspca_dev->usb_err < 0) | 
|  | 5617 | return 0; | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5618 | reg_w(gspca_dev, reg, 0x92); | 
|  | 5619 | reg_w(gspca_dev, valL, 0x93); | 
|  | 5620 | reg_w(gspca_dev, valH, 0x94); | 
|  | 5621 | reg_w(gspca_dev, 0x01, 0x90);		/* <- write command */ | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 5622 | msleep(1); | 
| Jean-François Moine | 1b3b212 | 2012-02-27 07:51:09 -0300 | [diff] [blame] | 5623 | retbyte = reg_r(gspca_dev, 0x0091);		/* read status */ | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 5624 | if (retbyte != 0x00) | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 5625 | pr_err("i2c_w status error %02x\n", retbyte); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5626 | return retbyte; | 
|  | 5627 | } | 
|  | 5628 |  | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5629 | static void usb_exchange(struct gspca_dev *gspca_dev, | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 5630 | const struct usb_action *action) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5631 | { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5632 | while (action->req) { | 
|  | 5633 | switch (action->req) { | 
|  | 5634 | case 0xa0:	/* write register */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5635 | reg_w(gspca_dev, action->val, action->idx); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5636 | break; | 
|  | 5637 | case 0xa1:	/* read status */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5638 | reg_r(gspca_dev, action->idx); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5639 | break; | 
|  | 5640 | case 0xaa: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5641 | i2c_write(gspca_dev, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5642 | action->val,			/* reg */ | 
|  | 5643 | action->idx & 0xff,		/* valL */ | 
|  | 5644 | action->idx >> 8);		/* valH */ | 
|  | 5645 | break; | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 5646 | case 0xbb: | 
|  | 5647 | i2c_write(gspca_dev, | 
|  | 5648 | action->idx >> 8,		/* reg */ | 
|  | 5649 | action->idx & 0xff,		/* valL */ | 
|  | 5650 | action->val);			/* valH */ | 
|  | 5651 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5652 | default: | 
|  | 5653 | /*		case 0xdd:	 * delay */ | 
| Jean-François Moine | 7c45f2c | 2011-01-24 15:15:34 -0300 | [diff] [blame] | 5654 | msleep(action->idx); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5655 | break; | 
|  | 5656 | } | 
|  | 5657 | action++; | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 5658 | msleep(1); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5659 | } | 
|  | 5660 | } | 
|  | 5661 |  | 
|  | 5662 | static void setmatrix(struct gspca_dev *gspca_dev) | 
|  | 5663 | { | 
|  | 5664 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 5665 | int i; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5666 | const u8 *matrix; | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 5667 | static const u8 adcm2700_matrix[9] = | 
| Jean-Francois Moine | c675e79 | 2009-01-26 05:29:06 -0300 | [diff] [blame] | 5668 | /*		{0x66, 0xed, 0xed, 0xed, 0x66, 0xed, 0xed, 0xed, 0x66}; */ | 
|  | 5669 | /*ms-win*/ | 
|  | 5670 | {0x74, 0xed, 0xed, 0xed, 0x74, 0xed, 0xed, 0xed, 0x74}; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5671 | static const u8 gc0305_matrix[9] = | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5672 | {0x50, 0xf8, 0xf8, 0xf8, 0x50, 0xf8, 0xf8, 0xf8, 0x50}; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5673 | static const u8 ov7620_matrix[9] = | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5674 | {0x58, 0xf4, 0xf4, 0xf4, 0x58, 0xf4, 0xf4, 0xf4, 0x58}; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5675 | static const u8 pas202b_matrix[9] = | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 5676 | {0x4c, 0xf5, 0xff, 0xf9, 0x51, 0xf5, 0xfb, 0xed, 0x5f}; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5677 | static const u8 po2030_matrix[9] = | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5678 | {0x60, 0xf0, 0xf0, 0xf0, 0x60, 0xf0, 0xf0, 0xf0, 0x60}; | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 5679 | static const u8 tas5130c_matrix[9] = | 
|  | 5680 | {0x68, 0xec, 0xec, 0xec, 0x68, 0xec, 0xec, 0xec, 0x68}; | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 5681 | static const u8 gc0303_matrix[9] = | 
| Jean-François Moine | 885f3ca | 2011-11-30 06:48:38 -0300 | [diff] [blame] | 5682 | {0x6c, 0xea, 0xea, 0xea, 0x6c, 0xea, 0xea, 0xea, 0x6c}; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5683 | static const u8 *matrix_tb[SENSOR_MAX] = { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5684 | [SENSOR_ADCM2700] =	adcm2700_matrix, | 
|  | 5685 | [SENSOR_CS2102] =	ov7620_matrix, | 
|  | 5686 | [SENSOR_CS2102K] =	NULL, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 5687 | [SENSOR_GC0303] =	gc0303_matrix, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5688 | [SENSOR_GC0305] =	gc0305_matrix, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 5689 | [SENSOR_HDCS2020] =	NULL, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5690 | [SENSOR_HV7131B] =	NULL, | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 5691 | [SENSOR_HV7131R] =	po2030_matrix, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5692 | [SENSOR_ICM105A] =	po2030_matrix, | 
|  | 5693 | [SENSOR_MC501CB] =	NULL, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 5694 | [SENSOR_MT9V111_1] =	gc0305_matrix, | 
|  | 5695 | [SENSOR_MT9V111_3] =	gc0305_matrix, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5696 | [SENSOR_OV7620] =	ov7620_matrix, | 
|  | 5697 | [SENSOR_OV7630C] =	NULL, | 
|  | 5698 | [SENSOR_PAS106] =	NULL, | 
|  | 5699 | [SENSOR_PAS202B] =	pas202b_matrix, | 
|  | 5700 | [SENSOR_PB0330] =	gc0305_matrix, | 
|  | 5701 | [SENSOR_PO2030] =	po2030_matrix, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5702 | [SENSOR_TAS5130C] =	tas5130c_matrix, | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 5703 | }; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5704 |  | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 5705 | matrix = matrix_tb[sd->sensor]; | 
|  | 5706 | if (matrix == NULL) | 
|  | 5707 | return;		/* matrix already loaded */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5708 | for (i = 0; i < ARRAY_SIZE(ov7620_matrix); i++) | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5709 | reg_w(gspca_dev, matrix[i], 0x010a + i); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5710 | } | 
|  | 5711 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5712 | static void setsharpness(struct gspca_dev *gspca_dev, s32 val) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5713 | { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5714 | static const u8 sharpness_tb[][2] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5715 | {0x02, 0x03}, | 
|  | 5716 | {0x04, 0x07}, | 
|  | 5717 | {0x08, 0x0f}, | 
|  | 5718 | {0x10, 0x1e} | 
|  | 5719 | }; | 
|  | 5720 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5721 | reg_w(gspca_dev, sharpness_tb[val][0], 0x01c6); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 5722 | reg_r(gspca_dev, 0x01c8); | 
|  | 5723 | reg_r(gspca_dev, 0x01c9); | 
|  | 5724 | reg_r(gspca_dev, 0x01ca); | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5725 | reg_w(gspca_dev, sharpness_tb[val][1], 0x01cb); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5726 | } | 
|  | 5727 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5728 | static void setcontrast(struct gspca_dev *gspca_dev, | 
|  | 5729 | s32 gamma, s32 brightness, s32 contrast) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5730 | { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5731 | const u8 *Tgamma; | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5732 | int g, i, adj, gp1, gp2; | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5733 | u8 gr[16]; | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5734 | static const u8 delta_b[16] =		/* delta for brightness */ | 
|  | 5735 | {0x50, 0x38, 0x2d, 0x28, 0x24, 0x21, 0x1e, 0x1d, | 
|  | 5736 | 0x1d, 0x1b, 0x1b, 0x1b, 0x19, 0x18, 0x18, 0x18}; | 
|  | 5737 | static const u8 delta_c[16] =		/* delta for contrast */ | 
| Jean-François Moine | a856753 | 2010-04-25 15:25:42 -0300 | [diff] [blame] | 5738 | {0x2c, 0x1a, 0x12, 0x0c, 0x0a, 0x06, 0x06, 0x06, | 
|  | 5739 | 0x04, 0x06, 0x04, 0x04, 0x03, 0x03, 0x02, 0x02}; | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5740 | static const u8 gamma_tb[6][16] = { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5741 | {0x00, 0x00, 0x03, 0x0d, 0x1b, 0x2e, 0x45, 0x5f, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5742 | 0x79, 0x93, 0xab, 0xc1, 0xd4, 0xe5, 0xf3, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5743 | {0x01, 0x0c, 0x1f, 0x3a, 0x53, 0x6d, 0x85, 0x9c, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5744 | 0xb0, 0xc2, 0xd1, 0xde, 0xe9, 0xf2, 0xf9, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5745 | {0x04, 0x16, 0x30, 0x4e, 0x68, 0x81, 0x98, 0xac, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5746 | 0xbe, 0xcd, 0xda, 0xe4, 0xed, 0xf5, 0xfb, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5747 | {0x13, 0x38, 0x59, 0x79, 0x92, 0xa7, 0xb9, 0xc8, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5748 | 0xd4, 0xdf, 0xe7, 0xee, 0xf4, 0xf9, 0xfc, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5749 | {0x20, 0x4b, 0x6e, 0x8d, 0xa3, 0xb5, 0xc5, 0xd2, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5750 | 0xdc, 0xe5, 0xec, 0xf2, 0xf6, 0xfa, 0xfd, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5751 | {0x24, 0x44, 0x64, 0x84, 0x9d, 0xb2, 0xc4, 0xd3, | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5752 | 0xe0, 0xeb, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5753 | }; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5754 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5755 | Tgamma = gamma_tb[gamma - 1]; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5756 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5757 | contrast -= 128; /* -128 / 127 */ | 
|  | 5758 | brightness -= 128; /* -128 / 92 */ | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5759 | adj = 0; | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5760 | gp1 = gp2 = 0; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5761 | for (i = 0; i < 16; i++) { | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5762 | g = Tgamma[i] + delta_b[i] * brightness / 256 | 
|  | 5763 | - delta_c[i] * contrast / 256 - adj / 2; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5764 | if (g > 0xff) | 
|  | 5765 | g = 0xff; | 
| Jean-François Moine | a856753 | 2010-04-25 15:25:42 -0300 | [diff] [blame] | 5766 | else if (g < 0) | 
|  | 5767 | g = 0; | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5768 | reg_w(gspca_dev, g, 0x0120 + i);	/* gamma */ | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5769 | if (contrast > 0) | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5770 | adj--; | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5771 | else if (contrast < 0) | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5772 | adj++; | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5773 | if (i > 1) | 
|  | 5774 | gr[i - 1] = (g - gp2) / 2; | 
|  | 5775 | else if (i != 0) | 
|  | 5776 | gr[0] = gp1 == 0 ? 0 : (g - gp1); | 
|  | 5777 | gp2 = gp1; | 
|  | 5778 | gp1 = g; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5779 | } | 
| Jean-François Moine | a9dfc01 | 2010-06-04 06:21:48 -0300 | [diff] [blame] | 5780 | gr[15] = (0xff - gp2) / 2; | 
| Jean-Francois Moine | fd18046 | 2010-01-04 15:54:59 -0300 | [diff] [blame] | 5781 | for (i = 0; i < 16; i++) | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5782 | reg_w(gspca_dev, gr[i], 0x0130 + i);	/* gradient */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5783 | } | 
|  | 5784 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5785 | static s32 getexposure(struct gspca_dev *gspca_dev) | 
| Jean-François Moine | 590f216 | 2011-03-22 06:47:56 -0300 | [diff] [blame] | 5786 | { | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5787 | return (i2c_read(gspca_dev, 0x25) << 9) | 
| Jean-François Moine | 590f216 | 2011-03-22 06:47:56 -0300 | [diff] [blame] | 5788 | | (i2c_read(gspca_dev, 0x26) << 1) | 
|  | 5789 | | (i2c_read(gspca_dev, 0x27) >> 7); | 
|  | 5790 | } | 
|  | 5791 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5792 | static void setexposure(struct gspca_dev *gspca_dev, s32 val) | 
| Jean-François Moine | 590f216 | 2011-03-22 06:47:56 -0300 | [diff] [blame] | 5793 | { | 
| Jean-François Moine | 590f216 | 2011-03-22 06:47:56 -0300 | [diff] [blame] | 5794 | i2c_write(gspca_dev, 0x25, val >> 9, 0x00); | 
|  | 5795 | i2c_write(gspca_dev, 0x26, val >> 1, 0x00); | 
|  | 5796 | i2c_write(gspca_dev, 0x27, val << 7, 0x00); | 
|  | 5797 | } | 
|  | 5798 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5799 | static void setquality(struct gspca_dev *gspca_dev) | 
|  | 5800 | { | 
|  | 5801 | struct sd *sd = (struct sd *) gspca_dev; | 
| Hans de Goede | 83fb2e2 | 2012-05-06 09:28:24 -0300 | [diff] [blame] | 5802 | jpeg_set_qual(sd->jpeg_hdr, jpeg_qual[sd->reg08 >> 1]); | 
| Jean-François Moine | 30c73d4 | 2012-02-27 07:26:30 -0300 | [diff] [blame] | 5803 | reg_w(gspca_dev, sd->reg08, ZC3XX_R008_CLOCKSETTING); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5804 | } | 
|  | 5805 |  | 
|  | 5806 | /* Matches the sensor's internal frame rate to the lighting frequency. | 
|  | 5807 | * Valid frequencies are: | 
|  | 5808 | *	50Hz, for European and Asian lighting (default) | 
|  | 5809 | *	60Hz, for American lighting | 
|  | 5810 | *	0 = No Fliker (for outdoore usage) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5811 | */ | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5812 | static void setlightfreq(struct gspca_dev *gspca_dev, s32 val) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5813 | { | 
|  | 5814 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 5815 | int i, mode; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 5816 | const struct usb_action *zc3_freq; | 
|  | 5817 | static const struct usb_action *freq_tb[SENSOR_MAX][6] = { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5818 | [SENSOR_ADCM2700] = | 
| Jean-Francois Moine | c314b53 | 2009-01-20 10:02:35 -0300 | [diff] [blame] | 5819 | {adcm2700_NoFliker, adcm2700_NoFliker, | 
|  | 5820 | adcm2700_50HZ, adcm2700_50HZ, | 
|  | 5821 | adcm2700_60HZ, adcm2700_60HZ}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5822 | [SENSOR_CS2102] = | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5823 | {cs2102_NoFliker, cs2102_NoFlikerScale, | 
|  | 5824 | cs2102_50HZ, cs2102_50HZScale, | 
|  | 5825 | cs2102_60HZ, cs2102_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5826 | [SENSOR_CS2102K] = | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5827 | {cs2102_NoFliker, cs2102_NoFlikerScale, | 
| Costantino Leandro | 5be8b73e | 2008-09-09 04:32:46 -0300 | [diff] [blame] | 5828 | NULL, NULL, /* currently disabled */ | 
|  | 5829 | NULL, NULL}, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 5830 | [SENSOR_GC0303] = | 
|  | 5831 | {gc0303_NoFliker, gc0303_NoFlikerScale, | 
|  | 5832 | gc0303_50HZ, gc0303_50HZScale, | 
|  | 5833 | gc0303_60HZ, gc0303_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5834 | [SENSOR_GC0305] = | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5835 | {gc0305_NoFliker, gc0305_NoFliker, | 
|  | 5836 | gc0305_50HZ, gc0305_50HZ, | 
|  | 5837 | gc0305_60HZ, gc0305_60HZ}, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 5838 | [SENSOR_HDCS2020] = | 
|  | 5839 | {hdcs2020_NoFliker, hdcs2020_NoFliker, | 
|  | 5840 | hdcs2020_50HZ, hdcs2020_50HZ, | 
|  | 5841 | hdcs2020_60HZ, hdcs2020_60HZ}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5842 | [SENSOR_HV7131B] = | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5843 | {hv7131b_NoFliker, hv7131b_NoFlikerScale, | 
|  | 5844 | hv7131b_50HZ, hv7131b_50HZScale, | 
|  | 5845 | hv7131b_60HZ, hv7131b_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5846 | [SENSOR_HV7131R] = | 
| Jean-François Moine | 2af0b4c | 2010-08-04 07:12:57 -0300 | [diff] [blame] | 5847 | {hv7131r_NoFliker, hv7131r_NoFlikerScale, | 
|  | 5848 | hv7131r_50HZ, hv7131r_50HZScale, | 
|  | 5849 | hv7131r_60HZ, hv7131r_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5850 | [SENSOR_ICM105A] = | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5851 | {icm105a_NoFliker, icm105a_NoFlikerScale, | 
|  | 5852 | icm105a_50HZ, icm105a_50HZScale, | 
|  | 5853 | icm105a_60HZ, icm105a_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5854 | [SENSOR_MC501CB] = | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5855 | {mc501cb_NoFliker, mc501cb_NoFlikerScale, | 
|  | 5856 | mc501cb_50HZ, mc501cb_50HZScale, | 
|  | 5857 | mc501cb_60HZ, mc501cb_60HZScale}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 5858 | [SENSOR_MT9V111_1] = | 
|  | 5859 | {mt9v111_1_AENoFliker, mt9v111_1_AENoFlikerScale, | 
|  | 5860 | mt9v111_1_AE50HZ, mt9v111_1_AE50HZScale, | 
|  | 5861 | mt9v111_1_AE60HZ, mt9v111_1_AE60HZScale}, | 
|  | 5862 | [SENSOR_MT9V111_3] = | 
|  | 5863 | {mt9v111_3_AENoFliker, mt9v111_3_AENoFlikerScale, | 
|  | 5864 | mt9v111_3_AE50HZ, mt9v111_3_AE50HZScale, | 
|  | 5865 | mt9v111_3_AE60HZ, mt9v111_3_AE60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5866 | [SENSOR_OV7620] = | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5867 | {ov7620_NoFliker, ov7620_NoFliker, | 
|  | 5868 | ov7620_50HZ, ov7620_50HZ, | 
|  | 5869 | ov7620_60HZ, ov7620_60HZ}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5870 | [SENSOR_OV7630C] = | 
| Harvey Harrison | efab821 | 2008-07-05 06:12:47 -0300 | [diff] [blame] | 5871 | {NULL, NULL, | 
|  | 5872 | NULL, NULL, | 
|  | 5873 | NULL, NULL}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5874 | [SENSOR_PAS106] = | 
| Jean-Francois Moine | 6a7eba2 | 2008-06-30 15:50:11 -0300 | [diff] [blame] | 5875 | {pas106b_NoFliker, pas106b_NoFliker, | 
|  | 5876 | pas106b_50HZ, pas106b_50HZ, | 
|  | 5877 | pas106b_60HZ, pas106b_60HZ}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5878 | [SENSOR_PAS202B] = | 
| Jean-François Moine | a6a86f0d | 2010-04-25 14:57:10 -0300 | [diff] [blame] | 5879 | {pas202b_NoFliker, pas202b_NoFlikerScale, | 
|  | 5880 | pas202b_50HZ, pas202b_50HZScale, | 
|  | 5881 | pas202b_60HZ, pas202b_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5882 | [SENSOR_PB0330] = | 
| Jean-François Moine | a6a86f0d | 2010-04-25 14:57:10 -0300 | [diff] [blame] | 5883 | {pb0330_NoFliker, pb0330_NoFlikerScale, | 
|  | 5884 | pb0330_50HZ, pb0330_50HZScale, | 
|  | 5885 | pb0330_60HZ, pb0330_60HZScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5886 | [SENSOR_PO2030] = | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5887 | {po2030_NoFliker, po2030_NoFliker, | 
|  | 5888 | po2030_50HZ, po2030_50HZ, | 
|  | 5889 | po2030_60HZ, po2030_60HZ}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5890 | [SENSOR_TAS5130C] = | 
|  | 5891 | {tas5130c_NoFliker, tas5130c_NoFlikerScale, | 
|  | 5892 | tas5130c_50HZ, tas5130c_50HZScale, | 
|  | 5893 | tas5130c_60HZ, tas5130c_60HZScale}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5894 | }; | 
|  | 5895 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5896 | i = val * 2; | 
| Jean-François Moine | 49fb5e6 | 2010-12-28 07:09:34 -0300 | [diff] [blame] | 5897 | mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; | 
| Jean-Francois Moine | 1cb6d7b1 | 2010-01-08 07:06:06 -0300 | [diff] [blame] | 5898 | if (mode) | 
|  | 5899 | i++;			/* 320x240 */ | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 5900 | zc3_freq = freq_tb[sd->sensor][i]; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5901 | if (zc3_freq == NULL) | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5902 | return; | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5903 | usb_exchange(gspca_dev, zc3_freq); | 
|  | 5904 | switch (sd->sensor) { | 
|  | 5905 | case SENSOR_GC0305: | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5906 | if (mode		/* if 320x240 */ | 
|  | 5907 | && val == 1)	/* and 50Hz */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5908 | reg_w(gspca_dev, 0x85, 0x018d); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5909 | /* win: 0x80, 0x018d */ | 
|  | 5910 | break; | 
|  | 5911 | case SENSOR_OV7620: | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5912 | if (!mode) {		/* if 640x480 */ | 
|  | 5913 | if (val != 0)	/* and filter */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5914 | reg_w(gspca_dev, 0x40, 0x0002); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5915 | else | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5916 | reg_w(gspca_dev, 0x44, 0x0002); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5917 | } | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5918 | break; | 
|  | 5919 | case SENSOR_PAS202B: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5920 | reg_w(gspca_dev, 0x00, 0x01a7); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 5921 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5922 | } | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5923 | } | 
|  | 5924 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5925 | static void setautogain(struct gspca_dev *gspca_dev, s32 val) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5926 | { | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 5927 | reg_w(gspca_dev, val ? 0x42 : 0x02, 0x0180); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 5928 | } | 
|  | 5929 |  | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5930 | /* | 
|  | 5931 | * Update the transfer parameters. | 
|  | 5932 | * This function is executed from a work queue. | 
|  | 5933 | */ | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5934 | static void transfer_update(struct work_struct *work) | 
|  | 5935 | { | 
|  | 5936 | struct sd *sd = container_of(work, struct sd, work); | 
|  | 5937 | struct gspca_dev *gspca_dev = &sd->gspca_dev; | 
|  | 5938 | int change, good; | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5939 | u8 reg07, reg11; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5940 |  | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5941 | /* reg07 gets set to 0 by sd_start before starting us */ | 
|  | 5942 | reg07 = 0; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5943 |  | 
|  | 5944 | good = 0; | 
|  | 5945 | for (;;) { | 
|  | 5946 | msleep(100); | 
|  | 5947 |  | 
| Hans de Goede | 844db45 | 2012-09-09 07:30:02 -0300 | [diff] [blame] | 5948 | /* To protect gspca_dev->usb_buf and gspca_dev->usb_err */ | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5949 | mutex_lock(&gspca_dev->usb_lock); | 
| Hans Verkuil | 4ad34da | 2012-05-18 08:40:42 -0300 | [diff] [blame] | 5950 | #ifdef CONFIG_PM | 
|  | 5951 | if (gspca_dev->frozen) | 
|  | 5952 | goto err; | 
|  | 5953 | #endif | 
| Hans de Goede | 345321d | 2012-09-09 06:30:02 -0300 | [diff] [blame] | 5954 | if (!gspca_dev->present || !gspca_dev->streaming) | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5955 | goto err; | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5956 |  | 
|  | 5957 | /* Bit 0 of register 11 indicates FIFO overflow */ | 
|  | 5958 | gspca_dev->usb_err = 0; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5959 | reg11 = reg_r(gspca_dev, 0x0011); | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5960 | if (gspca_dev->usb_err) | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5961 | goto err; | 
|  | 5962 |  | 
|  | 5963 | change = reg11 & 0x01; | 
|  | 5964 | if (change) {				/* overflow */ | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5965 | good = 0; | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5966 |  | 
|  | 5967 | if (reg07 == 0) /* Bit Rate Control not enabled? */ | 
|  | 5968 | reg07 = 0x32; /* Allow 98 bytes / unit */ | 
|  | 5969 | else if (reg07 > 2) | 
|  | 5970 | reg07 -= 2; /* Decrease allowed bytes / unit */ | 
|  | 5971 | else | 
|  | 5972 | change = 0; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5973 | } else {				/* no overflow */ | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5974 | good++; | 
|  | 5975 | if (good >= 10) { | 
|  | 5976 | good = 0; | 
|  | 5977 | if (reg07) { /* BRC enabled? */ | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5978 | change = 1; | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5979 | if (reg07 < 0x32) | 
|  | 5980 | reg07 += 2; | 
|  | 5981 | else | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5982 | reg07 = 0; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5983 | } | 
|  | 5984 | } | 
|  | 5985 | } | 
|  | 5986 | if (change) { | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 5987 | gspca_dev->usb_err = 0; | 
|  | 5988 | reg_w(gspca_dev, reg07, 0x0007); | 
|  | 5989 | if (gspca_dev->usb_err) | 
|  | 5990 | goto err; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 5991 | } | 
|  | 5992 | mutex_unlock(&gspca_dev->usb_lock); | 
|  | 5993 | } | 
|  | 5994 | return; | 
|  | 5995 | err: | 
|  | 5996 | mutex_unlock(&gspca_dev->usb_lock); | 
|  | 5997 | } | 
|  | 5998 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 5999 | static void send_unknown(struct gspca_dev *gspca_dev, int sensor) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6000 | { | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6001 | reg_w(gspca_dev, 0x01, 0x0000);		/* bridge reset */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6002 | switch (sensor) { | 
|  | 6003 | case SENSOR_PAS106: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6004 | reg_w(gspca_dev, 0x03, 0x003a); | 
|  | 6005 | reg_w(gspca_dev, 0x0c, 0x003b); | 
|  | 6006 | reg_w(gspca_dev, 0x08, 0x0038); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6007 | break; | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6008 | case SENSOR_ADCM2700: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6009 | case SENSOR_GC0305: | 
|  | 6010 | case SENSOR_OV7620: | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6011 | case SENSOR_MT9V111_1: | 
|  | 6012 | case SENSOR_MT9V111_3: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6013 | case SENSOR_PB0330: | 
|  | 6014 | case SENSOR_PO2030: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6015 | reg_w(gspca_dev, 0x0d, 0x003a); | 
|  | 6016 | reg_w(gspca_dev, 0x02, 0x003b); | 
|  | 6017 | reg_w(gspca_dev, 0x00, 0x0038); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6018 | break; | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6019 | case SENSOR_HV7131R: | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6020 | case SENSOR_PAS202B: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6021 | reg_w(gspca_dev, 0x03, 0x003b); | 
|  | 6022 | reg_w(gspca_dev, 0x0c, 0x003a); | 
|  | 6023 | reg_w(gspca_dev, 0x0b, 0x0039); | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6024 | if (sensor == SENSOR_PAS202B) | 
|  | 6025 | reg_w(gspca_dev, 0x0b, 0x0038); | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6026 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6027 | } | 
|  | 6028 | } | 
|  | 6029 |  | 
|  | 6030 | /* start probe 2 wires */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6031 | static void start_2wr_probe(struct gspca_dev *gspca_dev, int sensor) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6032 | { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6033 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6034 | reg_w(gspca_dev, sensor, 0x0010); | 
|  | 6035 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6036 | reg_w(gspca_dev, 0x03, 0x0012); | 
|  | 6037 | reg_w(gspca_dev, 0x01, 0x0012); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6038 | /*	msleep(2); */ | 
|  | 6039 | } | 
|  | 6040 |  | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6041 | static int sif_probe(struct gspca_dev *gspca_dev) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6042 | { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 6043 | u16 checkword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6044 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6045 | start_2wr_probe(gspca_dev, 0x0f);		/* PAS106 */ | 
|  | 6046 | reg_w(gspca_dev, 0x08, 0x008d); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6047 | msleep(150); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6048 | checkword = ((i2c_read(gspca_dev, 0x00) & 0x0f) << 4) | 
|  | 6049 | | ((i2c_read(gspca_dev, 0x01) & 0xf0) >> 4); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6050 | PDEBUG(D_PROBE, "probe sif 0x%04x", checkword); | 
|  | 6051 | if (checkword == 0x0007) { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6052 | send_unknown(gspca_dev, SENSOR_PAS106); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6053 | return 0x0f;			/* PAS106 */ | 
|  | 6054 | } | 
|  | 6055 | return -1; | 
|  | 6056 | } | 
|  | 6057 |  | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6058 | static int vga_2wr_probe(struct gspca_dev *gspca_dev) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6059 | { | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6060 | u16 retword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6061 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6062 | start_2wr_probe(gspca_dev, 0x00);	/* HV7131B */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6063 | i2c_write(gspca_dev, 0x01, 0xaa, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6064 | retword = i2c_read(gspca_dev, 0x01); | 
|  | 6065 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6066 | return 0x00;			/* HV7131B */ | 
|  | 6067 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6068 | start_2wr_probe(gspca_dev, 0x04);	/* CS2102 */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6069 | i2c_write(gspca_dev, 0x01, 0xaa, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6070 | retword = i2c_read(gspca_dev, 0x01); | 
|  | 6071 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6072 | return 0x04;			/* CS2102 */ | 
|  | 6073 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6074 | start_2wr_probe(gspca_dev, 0x06);	/* OmniVision */ | 
|  | 6075 | reg_w(gspca_dev, 0x08, 0x008d); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6076 | i2c_write(gspca_dev, 0x11, 0xaa, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6077 | retword = i2c_read(gspca_dev, 0x11); | 
|  | 6078 | if (retword != 0) { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6079 | /* (should have returned 0xaa) --> Omnivision? */ | 
|  | 6080 | /* reg_r 0x10 -> 0x06 -->  */ | 
|  | 6081 | goto ov_check; | 
|  | 6082 | } | 
|  | 6083 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6084 | start_2wr_probe(gspca_dev, 0x08);	/* HDCS2020 */ | 
| Jean-Francois Moine | 1eed40a | 2010-01-08 08:01:43 -0300 | [diff] [blame] | 6085 | i2c_write(gspca_dev, 0x1c, 0x00, 0x00); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6086 | i2c_write(gspca_dev, 0x15, 0xaa, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6087 | retword = i2c_read(gspca_dev, 0x15); | 
|  | 6088 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6089 | return 0x08;			/* HDCS2020 */ | 
|  | 6090 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6091 | start_2wr_probe(gspca_dev, 0x0a);	/* PB0330 */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6092 | i2c_write(gspca_dev, 0x07, 0xaa, 0xaa); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6093 | retword = i2c_read(gspca_dev, 0x07); | 
|  | 6094 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6095 | return 0x0a;			/* PB0330 */ | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6096 | retword = i2c_read(gspca_dev, 0x03); | 
|  | 6097 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6098 | return 0x0a;			/* PB0330 ?? */ | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6099 | retword = i2c_read(gspca_dev, 0x04); | 
|  | 6100 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6101 | return 0x0a;			/* PB0330 ?? */ | 
|  | 6102 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6103 | start_2wr_probe(gspca_dev, 0x0c);	/* ICM105A */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6104 | i2c_write(gspca_dev, 0x01, 0x11, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6105 | retword = i2c_read(gspca_dev, 0x01); | 
|  | 6106 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6107 | return 0x0c;			/* ICM105A */ | 
|  | 6108 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6109 | start_2wr_probe(gspca_dev, 0x0e);	/* PAS202BCB */ | 
|  | 6110 | reg_w(gspca_dev, 0x08, 0x008d); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6111 | i2c_write(gspca_dev, 0x03, 0xaa, 0x00); | 
| Jean-Francois Moine | 721ecbc | 2009-10-20 05:25:16 -0300 | [diff] [blame] | 6112 | msleep(50); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6113 | retword = i2c_read(gspca_dev, 0x03); | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6114 | if (retword != 0) { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6115 | send_unknown(gspca_dev, SENSOR_PAS202B); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6116 | return 0x0e;			/* PAS202BCB */ | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6117 | } | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6118 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6119 | start_2wr_probe(gspca_dev, 0x02);	/* TAS5130C */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6120 | i2c_write(gspca_dev, 0x01, 0xaa, 0x00); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6121 | retword = i2c_read(gspca_dev, 0x01); | 
|  | 6122 | if (retword != 0) | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6123 | return 0x02;			/* TAS5130C */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6124 | ov_check: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6125 | reg_r(gspca_dev, 0x0010);		/* ?? */ | 
|  | 6126 | reg_r(gspca_dev, 0x0010); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6127 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6128 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6129 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6130 | reg_w(gspca_dev, 0x06, 0x0010);		/* OmniVision */ | 
|  | 6131 | reg_w(gspca_dev, 0xa1, 0x008b); | 
|  | 6132 | reg_w(gspca_dev, 0x08, 0x008d); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6133 | msleep(500); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6134 | reg_w(gspca_dev, 0x01, 0x0012); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6135 | i2c_write(gspca_dev, 0x12, 0x80, 0x00);	/* sensor reset */ | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6136 | retword = i2c_read(gspca_dev, 0x0a) << 8; | 
|  | 6137 | retword |= i2c_read(gspca_dev, 0x0b); | 
|  | 6138 | PDEBUG(D_PROBE, "probe 2wr ov vga 0x%04x", retword); | 
|  | 6139 | switch (retword) { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6140 | case 0x7631:				/* OV7630C */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6141 | reg_w(gspca_dev, 0x06, 0x0010); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6142 | break; | 
|  | 6143 | case 0x7620:				/* OV7620 */ | 
|  | 6144 | case 0x7648:				/* OV7648 */ | 
|  | 6145 | break; | 
|  | 6146 | default: | 
|  | 6147 | return -1;			/* not OmniVision */ | 
|  | 6148 | } | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6149 | return retword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6150 | } | 
|  | 6151 |  | 
|  | 6152 | struct sensor_by_chipset_revision { | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 6153 | u16 revision; | 
|  | 6154 | u8 internal_sensor_id; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6155 | }; | 
|  | 6156 | static const struct sensor_by_chipset_revision chipset_revision_sensor[] = { | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 6157 | {0xc000, 0x12},		/* TAS5130C */ | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6158 | {0xc001, 0x13},		/* MT9V111 */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6159 | {0xe001, 0x13}, | 
|  | 6160 | {0x8001, 0x13}, | 
|  | 6161 | {0x8000, 0x14},		/* CS2102K */ | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6162 | {0x8400, 0x15},		/* MT9V111 */ | 
| Luis Maia | 658604e | 2009-12-15 13:40:44 -0300 | [diff] [blame] | 6163 | {0xe400, 0x15}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6164 | }; | 
|  | 6165 |  | 
|  | 6166 | static int vga_3wr_probe(struct gspca_dev *gspca_dev) | 
|  | 6167 | { | 
|  | 6168 | struct sd *sd = (struct sd *) gspca_dev; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6169 | int i; | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6170 | u16 retword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6171 |  | 
|  | 6172 | /*fixme: lack of 8b=b3 (11,12)-> 10, 8b=e0 (14,15,16)-> 12 found in gspcav1*/ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6173 | reg_w(gspca_dev, 0x02, 0x0010); | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 6174 | reg_r(gspca_dev, 0x0010); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6175 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6176 | reg_w(gspca_dev, 0x00, 0x0010); | 
|  | 6177 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6178 | reg_w(gspca_dev, 0x91, 0x008b); | 
|  | 6179 | reg_w(gspca_dev, 0x03, 0x0012); | 
|  | 6180 | reg_w(gspca_dev, 0x01, 0x0012); | 
|  | 6181 | reg_w(gspca_dev, 0x05, 0x0012); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6182 | retword = i2c_read(gspca_dev, 0x14); | 
|  | 6183 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6184 | return 0x11;			/* HV7131R */ | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6185 | retword = i2c_read(gspca_dev, 0x15); | 
|  | 6186 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6187 | return 0x11;			/* HV7131R */ | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6188 | retword = i2c_read(gspca_dev, 0x16); | 
|  | 6189 | if (retword != 0) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6190 | return 0x11;			/* HV7131R */ | 
|  | 6191 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6192 | reg_w(gspca_dev, 0x02, 0x0010); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6193 | retword = reg_r(gspca_dev, 0x000b) << 8; | 
|  | 6194 | retword |= reg_r(gspca_dev, 0x000a); | 
|  | 6195 | PDEBUG(D_PROBE, "probe 3wr vga 1 0x%04x", retword); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6196 | reg_r(gspca_dev, 0x0010); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6197 | if ((retword & 0xff00) == 0x6400) | 
|  | 6198 | return 0x02;		/* TAS5130C */ | 
|  | 6199 | for (i = 0; i < ARRAY_SIZE(chipset_revision_sensor); i++) { | 
|  | 6200 | if (chipset_revision_sensor[i].revision == retword) { | 
|  | 6201 | sd->chip_revision = retword; | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6202 | send_unknown(gspca_dev, SENSOR_PB0330); | 
| Jean-François Moine | 780e312 | 2010-10-19 04:29:10 -0300 | [diff] [blame] | 6203 | return chipset_revision_sensor[i].internal_sensor_id; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6204 | } | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6205 | } | 
|  | 6206 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6207 | reg_w(gspca_dev, 0x01, 0x0000);	/* check PB0330 */ | 
|  | 6208 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6209 | reg_w(gspca_dev, 0xdd, 0x008b); | 
|  | 6210 | reg_w(gspca_dev, 0x0a, 0x0010); | 
|  | 6211 | reg_w(gspca_dev, 0x03, 0x0012); | 
|  | 6212 | reg_w(gspca_dev, 0x01, 0x0012); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6213 | retword = i2c_read(gspca_dev, 0x00); | 
|  | 6214 | if (retword != 0) { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6215 | PDEBUG(D_PROBE, "probe 3wr vga type 0a"); | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6216 | return 0x0a;			/* PB0330 */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6217 | } | 
|  | 6218 |  | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6219 | /* probe gc0303 / gc0305 */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6220 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6221 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6222 | reg_w(gspca_dev, 0x98, 0x008b); | 
|  | 6223 | reg_w(gspca_dev, 0x01, 0x0010); | 
|  | 6224 | reg_w(gspca_dev, 0x03, 0x0012); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6225 | msleep(2); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6226 | reg_w(gspca_dev, 0x01, 0x0012); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6227 | retword = i2c_read(gspca_dev, 0x00); | 
|  | 6228 | if (retword != 0) { | 
|  | 6229 | PDEBUG(D_PROBE, "probe 3wr vga type %02x", retword); | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6230 | if (retword == 0x0011)			/* gc0303 */ | 
|  | 6231 | return 0x0303; | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6232 | if (retword == 0x0029)			/* gc0305 */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6233 | send_unknown(gspca_dev, SENSOR_GC0305); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6234 | return retword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6235 | } | 
|  | 6236 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6237 | reg_w(gspca_dev, 0x01, 0x0000);	/* check OmniVision */ | 
|  | 6238 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6239 | reg_w(gspca_dev, 0xa1, 0x008b); | 
|  | 6240 | reg_w(gspca_dev, 0x08, 0x008d); | 
|  | 6241 | reg_w(gspca_dev, 0x06, 0x0010); | 
|  | 6242 | reg_w(gspca_dev, 0x01, 0x0012); | 
|  | 6243 | reg_w(gspca_dev, 0x05, 0x0012); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6244 | if (i2c_read(gspca_dev, 0x1c) == 0x007f	/* OV7610 - manufacturer ID */ | 
|  | 6245 | && i2c_read(gspca_dev, 0x1d) == 0x00a2) { | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6246 | send_unknown(gspca_dev, SENSOR_OV7620); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6247 | return 0x06;		/* OmniVision confirm ? */ | 
|  | 6248 | } | 
|  | 6249 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6250 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6251 | reg_w(gspca_dev, 0x00, 0x0002); | 
|  | 6252 | reg_w(gspca_dev, 0x01, 0x0010); | 
|  | 6253 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6254 | reg_w(gspca_dev, 0xee, 0x008b); | 
|  | 6255 | reg_w(gspca_dev, 0x03, 0x0012); | 
|  | 6256 | reg_w(gspca_dev, 0x01, 0x0012); | 
|  | 6257 | reg_w(gspca_dev, 0x05, 0x0012); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6258 | retword = i2c_read(gspca_dev, 0x00) << 8;	/* ID 0 */ | 
|  | 6259 | retword |= i2c_read(gspca_dev, 0x01);		/* ID 1 */ | 
|  | 6260 | PDEBUG(D_PROBE, "probe 3wr vga 2 0x%04x", retword); | 
|  | 6261 | if (retword == 0x2030) { | 
| Jean-François Moine | bd62bbc | 2011-05-17 05:08:59 -0300 | [diff] [blame] | 6262 | u8 retbyte; | 
|  | 6263 |  | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6264 | retbyte = i2c_read(gspca_dev, 0x02);	/* revision number */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6265 | PDEBUG(D_PROBE, "sensor PO2030 rev 0x%02x", retbyte); | 
| Theodore Kilgore | c93396e | 2013-02-04 13:17:55 -0300 | [diff] [blame^] | 6266 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6267 | send_unknown(gspca_dev, SENSOR_PO2030); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6268 | return retword; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6269 | } | 
|  | 6270 |  | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6271 | reg_w(gspca_dev, 0x01, 0x0000); | 
|  | 6272 | reg_w(gspca_dev, 0x0a, 0x0010); | 
|  | 6273 | reg_w(gspca_dev, 0xd3, 0x008b); | 
|  | 6274 | reg_w(gspca_dev, 0x01, 0x0001); | 
|  | 6275 | reg_w(gspca_dev, 0x03, 0x0012); | 
|  | 6276 | reg_w(gspca_dev, 0x01, 0x0012); | 
|  | 6277 | reg_w(gspca_dev, 0x05, 0x0012); | 
|  | 6278 | reg_w(gspca_dev, 0xd3, 0x008b); | 
| Jean-Francois Moine | 3ab67ba | 2009-01-08 09:38:45 -0300 | [diff] [blame] | 6279 | retword = i2c_read(gspca_dev, 0x01); | 
|  | 6280 | if (retword != 0) { | 
|  | 6281 | PDEBUG(D_PROBE, "probe 3wr vga type 0a ? ret: %04x", retword); | 
| Jean-Francois Moine | 881cd41 | 2009-04-05 04:01:13 -0300 | [diff] [blame] | 6282 | return 0x16;			/* adcm2700 (6100/6200) */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6283 | } | 
|  | 6284 | return -1; | 
|  | 6285 | } | 
|  | 6286 |  | 
|  | 6287 | static int zcxx_probeSensor(struct gspca_dev *gspca_dev) | 
|  | 6288 | { | 
|  | 6289 | struct sd *sd = (struct sd *) gspca_dev; | 
| Jean-Francois Moine | 603538a | 2009-02-19 15:38:31 -0300 | [diff] [blame] | 6290 | int sensor; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6291 |  | 
|  | 6292 | switch (sd->sensor) { | 
|  | 6293 | case SENSOR_MC501CB: | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 6294 | return -1;		/* don't probe */ | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6295 | case SENSOR_GC0303: | 
| Hans de Goede | 34662342 | 2008-09-03 16:47:28 -0300 | [diff] [blame] | 6296 | /* may probe but with no write in reg 0x0010 */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6297 | return -1;		/* don't probe */ | 
| Hans de Goede | 34662342 | 2008-09-03 16:47:28 -0300 | [diff] [blame] | 6298 | case SENSOR_PAS106: | 
|  | 6299 | sensor =  sif_probe(gspca_dev); | 
|  | 6300 | if (sensor >= 0) | 
|  | 6301 | return sensor; | 
|  | 6302 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6303 | } | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6304 | sensor = vga_2wr_probe(gspca_dev); | 
| Jean-Francois Moine | 603538a | 2009-02-19 15:38:31 -0300 | [diff] [blame] | 6305 | if (sensor >= 0) | 
| Hans de Goede | 34662342 | 2008-09-03 16:47:28 -0300 | [diff] [blame] | 6306 | return sensor; | 
| Jean-Francois Moine | 603538a | 2009-02-19 15:38:31 -0300 | [diff] [blame] | 6307 | return vga_3wr_probe(gspca_dev); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6308 | } | 
|  | 6309 |  | 
|  | 6310 | /* this function is called at probe time */ | 
|  | 6311 | static int sd_config(struct gspca_dev *gspca_dev, | 
|  | 6312 | const struct usb_device_id *id) | 
|  | 6313 | { | 
|  | 6314 | struct sd *sd = (struct sd *) gspca_dev; | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6315 |  | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6316 | if (id->idProduct == 0x301b) | 
|  | 6317 | sd->bridge = BRIDGE_ZC301; | 
|  | 6318 | else | 
|  | 6319 | sd->bridge = BRIDGE_ZC303; | 
|  | 6320 |  | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6321 | /* define some sensors from the vendor/product */ | 
|  | 6322 | sd->sensor = id->driver_info; | 
|  | 6323 |  | 
| Jean-François Moine | 30c73d4 | 2012-02-27 07:26:30 -0300 | [diff] [blame] | 6324 | sd->reg08 = REG08_DEF; | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6325 |  | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 6326 | INIT_WORK(&sd->work, transfer_update); | 
|  | 6327 |  | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6328 | return 0; | 
|  | 6329 | } | 
|  | 6330 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6331 | static int zcxx_g_volatile_ctrl(struct v4l2_ctrl *ctrl) | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6332 | { | 
| Hans de Goede | a8a4786 | 2012-05-09 11:19:00 -0300 | [diff] [blame] | 6333 | struct gspca_dev *gspca_dev = | 
|  | 6334 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | 
|  | 6335 | struct sd *sd = (struct sd *)gspca_dev; | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6336 |  | 
|  | 6337 | switch (ctrl->id) { | 
|  | 6338 | case V4L2_CID_AUTOGAIN: | 
|  | 6339 | gspca_dev->usb_err = 0; | 
|  | 6340 | if (ctrl->val && sd->exposure && gspca_dev->streaming) | 
|  | 6341 | sd->exposure->val = getexposure(gspca_dev); | 
|  | 6342 | return gspca_dev->usb_err; | 
|  | 6343 | } | 
|  | 6344 | return -EINVAL; | 
|  | 6345 | } | 
|  | 6346 |  | 
|  | 6347 | static int zcxx_s_ctrl(struct v4l2_ctrl *ctrl) | 
|  | 6348 | { | 
| Hans de Goede | a8a4786 | 2012-05-09 11:19:00 -0300 | [diff] [blame] | 6349 | struct gspca_dev *gspca_dev = | 
|  | 6350 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | 
|  | 6351 | struct sd *sd = (struct sd *)gspca_dev; | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6352 | int i, qual; | 
|  | 6353 |  | 
|  | 6354 | gspca_dev->usb_err = 0; | 
|  | 6355 |  | 
|  | 6356 | if (ctrl->id == V4L2_CID_JPEG_COMPRESSION_QUALITY) { | 
|  | 6357 | qual = sd->reg08 >> 1; | 
|  | 6358 |  | 
|  | 6359 | for (i = 0; i < ARRAY_SIZE(jpeg_qual); i++) { | 
|  | 6360 | if (ctrl->val <= jpeg_qual[i]) | 
|  | 6361 | break; | 
|  | 6362 | } | 
|  | 6363 | if (i > 0 && i == qual && ctrl->val < jpeg_qual[i]) | 
|  | 6364 | i--; | 
|  | 6365 |  | 
|  | 6366 | /* With high quality settings we need max bandwidth */ | 
|  | 6367 | if (i >= 2 && gspca_dev->streaming && | 
|  | 6368 | !gspca_dev->cam.needs_full_bandwidth) | 
|  | 6369 | return -EBUSY; | 
|  | 6370 |  | 
|  | 6371 | sd->reg08 = (i << 1) | 1; | 
|  | 6372 | ctrl->val = jpeg_qual[i]; | 
|  | 6373 | } | 
|  | 6374 |  | 
|  | 6375 | if (!gspca_dev->streaming) | 
|  | 6376 | return 0; | 
|  | 6377 |  | 
|  | 6378 | switch (ctrl->id) { | 
|  | 6379 | /* gamma/brightness/contrast cluster */ | 
|  | 6380 | case V4L2_CID_GAMMA: | 
|  | 6381 | setcontrast(gspca_dev, sd->gamma->val, | 
|  | 6382 | sd->brightness->val, sd->contrast->val); | 
|  | 6383 | break; | 
|  | 6384 | /* autogain/exposure cluster */ | 
|  | 6385 | case V4L2_CID_AUTOGAIN: | 
|  | 6386 | setautogain(gspca_dev, ctrl->val); | 
|  | 6387 | if (!gspca_dev->usb_err && !ctrl->val && sd->exposure) | 
|  | 6388 | setexposure(gspca_dev, sd->exposure->val); | 
|  | 6389 | break; | 
|  | 6390 | case V4L2_CID_POWER_LINE_FREQUENCY: | 
|  | 6391 | setlightfreq(gspca_dev, ctrl->val); | 
|  | 6392 | break; | 
|  | 6393 | case V4L2_CID_SHARPNESS: | 
|  | 6394 | setsharpness(gspca_dev, ctrl->val); | 
|  | 6395 | break; | 
|  | 6396 | case V4L2_CID_JPEG_COMPRESSION_QUALITY: | 
|  | 6397 | setquality(gspca_dev); | 
|  | 6398 | break; | 
|  | 6399 | } | 
|  | 6400 | return gspca_dev->usb_err; | 
|  | 6401 | } | 
|  | 6402 |  | 
|  | 6403 | static const struct v4l2_ctrl_ops zcxx_ctrl_ops = { | 
|  | 6404 | .g_volatile_ctrl = zcxx_g_volatile_ctrl, | 
|  | 6405 | .s_ctrl = zcxx_s_ctrl, | 
|  | 6406 | }; | 
|  | 6407 |  | 
|  | 6408 | static int sd_init_controls(struct gspca_dev *gspca_dev) | 
|  | 6409 | { | 
|  | 6410 | struct sd *sd = (struct sd *)gspca_dev; | 
| Hans de Goede | a8a4786 | 2012-05-09 11:19:00 -0300 | [diff] [blame] | 6411 | struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; | 
| Jean-Francois Moine | 47c83392 | 2010-01-07 15:59:12 -0300 | [diff] [blame] | 6412 | static const u8 gamma[SENSOR_MAX] = { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6413 | [SENSOR_ADCM2700] =	4, | 
|  | 6414 | [SENSOR_CS2102] =	4, | 
|  | 6415 | [SENSOR_CS2102K] =	5, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6416 | [SENSOR_GC0303] =	3, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6417 | [SENSOR_GC0305] =	4, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6418 | [SENSOR_HDCS2020] =	4, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6419 | [SENSOR_HV7131B] =	4, | 
|  | 6420 | [SENSOR_HV7131R] =	4, | 
|  | 6421 | [SENSOR_ICM105A] =	4, | 
|  | 6422 | [SENSOR_MC501CB] =	4, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6423 | [SENSOR_MT9V111_1] =	4, | 
|  | 6424 | [SENSOR_MT9V111_3] =	4, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6425 | [SENSOR_OV7620] =	3, | 
|  | 6426 | [SENSOR_OV7630C] =	4, | 
|  | 6427 | [SENSOR_PAS106] =	4, | 
|  | 6428 | [SENSOR_PAS202B] =	4, | 
|  | 6429 | [SENSOR_PB0330] =	4, | 
|  | 6430 | [SENSOR_PO2030] =	4, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6431 | [SENSOR_TAS5130C] =	3, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6432 | }; | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6433 |  | 
|  | 6434 | gspca_dev->vdev.ctrl_handler = hdl; | 
|  | 6435 | v4l2_ctrl_handler_init(hdl, 8); | 
|  | 6436 | sd->brightness = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6437 | V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); | 
|  | 6438 | sd->contrast = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6439 | V4L2_CID_CONTRAST, 0, 255, 1, 128); | 
|  | 6440 | sd->gamma = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6441 | V4L2_CID_GAMMA, 1, 6, 1, gamma[sd->sensor]); | 
|  | 6442 | if (sd->sensor == SENSOR_HV7131R) | 
|  | 6443 | sd->exposure = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6444 | V4L2_CID_EXPOSURE, 0x30d, 0x493e, 1, 0x927); | 
|  | 6445 | sd->autogain = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6446 | V4L2_CID_AUTOGAIN, 0, 1, 1, 1); | 
|  | 6447 | if (sd->sensor != SENSOR_OV7630C) | 
|  | 6448 | sd->plfreq = v4l2_ctrl_new_std_menu(hdl, &zcxx_ctrl_ops, | 
|  | 6449 | V4L2_CID_POWER_LINE_FREQUENCY, | 
|  | 6450 | V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, | 
|  | 6451 | V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); | 
|  | 6452 | sd->sharpness = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6453 | V4L2_CID_SHARPNESS, 0, 3, 1, | 
|  | 6454 | sd->sensor == SENSOR_PO2030 ? 0 : 2); | 
|  | 6455 | sd->jpegqual = v4l2_ctrl_new_std(hdl, &zcxx_ctrl_ops, | 
|  | 6456 | V4L2_CID_JPEG_COMPRESSION_QUALITY, | 
|  | 6457 | jpeg_qual[0], jpeg_qual[ARRAY_SIZE(jpeg_qual) - 1], 1, | 
|  | 6458 | jpeg_qual[REG08_DEF >> 1]); | 
|  | 6459 | if (hdl->error) { | 
|  | 6460 | pr_err("Could not initialize controls\n"); | 
|  | 6461 | return hdl->error; | 
|  | 6462 | } | 
|  | 6463 | v4l2_ctrl_cluster(3, &sd->gamma); | 
|  | 6464 | if (sd->sensor == SENSOR_HV7131R) | 
|  | 6465 | v4l2_ctrl_auto_cluster(2, &sd->autogain, 0, true); | 
|  | 6466 | return 0; | 
|  | 6467 | } | 
|  | 6468 |  | 
|  | 6469 | /* this function is called at probe and resume time */ | 
|  | 6470 | static int sd_init(struct gspca_dev *gspca_dev) | 
|  | 6471 | { | 
|  | 6472 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 6473 | struct cam *cam; | 
|  | 6474 | int sensor; | 
| Hans de Goede | 9919fe8 | 2010-01-13 07:12:28 -0300 | [diff] [blame] | 6475 | static const u8 mode_tb[SENSOR_MAX] = { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6476 | [SENSOR_ADCM2700] =	2, | 
|  | 6477 | [SENSOR_CS2102] =	1, | 
|  | 6478 | [SENSOR_CS2102K] =	1, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6479 | [SENSOR_GC0303] =	1, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6480 | [SENSOR_GC0305] =	1, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6481 | [SENSOR_HDCS2020] =	1, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6482 | [SENSOR_HV7131B] =	1, | 
|  | 6483 | [SENSOR_HV7131R] =	1, | 
|  | 6484 | [SENSOR_ICM105A] =	1, | 
|  | 6485 | [SENSOR_MC501CB] =	2, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6486 | [SENSOR_MT9V111_1] =	1, | 
|  | 6487 | [SENSOR_MT9V111_3] =	1, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6488 | [SENSOR_OV7620] =	2, | 
|  | 6489 | [SENSOR_OV7630C] =	1, | 
|  | 6490 | [SENSOR_PAS106] =	0, | 
|  | 6491 | [SENSOR_PAS202B] =	1, | 
|  | 6492 | [SENSOR_PB0330] =	1, | 
|  | 6493 | [SENSOR_PO2030] =	1, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6494 | [SENSOR_TAS5130C] =	1, | 
| Hans de Goede | 9919fe8 | 2010-01-13 07:12:28 -0300 | [diff] [blame] | 6495 | }; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6496 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6497 | sensor = zcxx_probeSensor(gspca_dev); | 
|  | 6498 | if (sensor >= 0) | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6499 | PDEBUG(D_PROBE, "probe sensor -> %04x", sensor); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6500 | if ((unsigned) force_sensor < SENSOR_MAX) { | 
|  | 6501 | sd->sensor = force_sensor; | 
|  | 6502 | PDEBUG(D_PROBE, "sensor forced to %d", force_sensor); | 
|  | 6503 | } else { | 
|  | 6504 | switch (sensor) { | 
|  | 6505 | case -1: | 
|  | 6506 | switch (sd->sensor) { | 
|  | 6507 | case SENSOR_MC501CB: | 
|  | 6508 | PDEBUG(D_PROBE, "Sensor MC501CB"); | 
|  | 6509 | break; | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6510 | case SENSOR_GC0303: | 
|  | 6511 | PDEBUG(D_PROBE, "Sensor GC0303"); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6512 | break; | 
|  | 6513 | default: | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 6514 | pr_warn("Unknown sensor - set to TAS5130C\n"); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6515 | sd->sensor = SENSOR_TAS5130C; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6516 | } | 
|  | 6517 | break; | 
|  | 6518 | case 0: | 
| Jean-Francois Moine | d754a6c | 2009-12-20 05:07:10 -0300 | [diff] [blame] | 6519 | /* check the sensor type */ | 
|  | 6520 | sensor = i2c_read(gspca_dev, 0x00); | 
|  | 6521 | PDEBUG(D_PROBE, "Sensor hv7131 type %d", sensor); | 
|  | 6522 | switch (sensor) { | 
|  | 6523 | case 0:			/* hv7131b */ | 
|  | 6524 | case 1:			/* hv7131e */ | 
|  | 6525 | PDEBUG(D_PROBE, "Find Sensor HV7131B"); | 
|  | 6526 | sd->sensor = SENSOR_HV7131B; | 
|  | 6527 | break; | 
|  | 6528 | default: | 
|  | 6529 | /*			case 2:			 * hv7131r */ | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6530 | PDEBUG(D_PROBE, "Find Sensor HV7131R"); | 
|  | 6531 | sd->sensor = SENSOR_HV7131R; | 
| Jean-Francois Moine | d754a6c | 2009-12-20 05:07:10 -0300 | [diff] [blame] | 6532 | break; | 
|  | 6533 | } | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6534 | break; | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6535 | case 0x02: | 
|  | 6536 | PDEBUG(D_PROBE, "Sensor TAS5130C"); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6537 | sd->sensor = SENSOR_TAS5130C; | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6538 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6539 | case 0x04: | 
|  | 6540 | PDEBUG(D_PROBE, "Find Sensor CS2102"); | 
|  | 6541 | sd->sensor = SENSOR_CS2102; | 
|  | 6542 | break; | 
|  | 6543 | case 0x08: | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6544 | PDEBUG(D_PROBE, "Find Sensor HDCS2020"); | 
|  | 6545 | sd->sensor = SENSOR_HDCS2020; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6546 | break; | 
|  | 6547 | case 0x0a: | 
|  | 6548 | PDEBUG(D_PROBE, | 
|  | 6549 | "Find Sensor PB0330. Chip revision %x", | 
|  | 6550 | sd->chip_revision); | 
|  | 6551 | sd->sensor = SENSOR_PB0330; | 
|  | 6552 | break; | 
|  | 6553 | case 0x0c: | 
|  | 6554 | PDEBUG(D_PROBE, "Find Sensor ICM105A"); | 
|  | 6555 | sd->sensor = SENSOR_ICM105A; | 
|  | 6556 | break; | 
|  | 6557 | case 0x0e: | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6558 | PDEBUG(D_PROBE, "Find Sensor PAS202B"); | 
|  | 6559 | sd->sensor = SENSOR_PAS202B; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6560 | break; | 
|  | 6561 | case 0x0f: | 
|  | 6562 | PDEBUG(D_PROBE, "Find Sensor PAS106"); | 
|  | 6563 | sd->sensor = SENSOR_PAS106; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6564 | break; | 
|  | 6565 | case 0x10: | 
|  | 6566 | case 0x12: | 
| Jean-Francois Moine | 013db75 | 2009-10-07 05:24:19 -0300 | [diff] [blame] | 6567 | PDEBUG(D_PROBE, "Find Sensor TAS5130C"); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6568 | sd->sensor = SENSOR_TAS5130C; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6569 | break; | 
|  | 6570 | case 0x11: | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6571 | PDEBUG(D_PROBE, "Find Sensor HV7131R"); | 
|  | 6572 | sd->sensor = SENSOR_HV7131R; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6573 | break; | 
|  | 6574 | case 0x13: | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6575 | case 0x15: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6576 | PDEBUG(D_PROBE, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6577 | "Sensor MT9V111. Chip revision %04x", | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6578 | sd->chip_revision); | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6579 | sd->sensor = sd->bridge == BRIDGE_ZC301 | 
|  | 6580 | ? SENSOR_MT9V111_1 | 
|  | 6581 | : SENSOR_MT9V111_3; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6582 | break; | 
|  | 6583 | case 0x14: | 
|  | 6584 | PDEBUG(D_PROBE, | 
|  | 6585 | "Find Sensor CS2102K?. Chip revision %x", | 
|  | 6586 | sd->chip_revision); | 
|  | 6587 | sd->sensor = SENSOR_CS2102K; | 
|  | 6588 | break; | 
| Jean-Francois Moine | 5be2b09 | 2009-01-20 05:12:34 -0300 | [diff] [blame] | 6589 | case 0x16: | 
|  | 6590 | PDEBUG(D_PROBE, "Find Sensor ADCM2700"); | 
|  | 6591 | sd->sensor = SENSOR_ADCM2700; | 
|  | 6592 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6593 | case 0x29: | 
|  | 6594 | PDEBUG(D_PROBE, "Find Sensor GC0305"); | 
|  | 6595 | sd->sensor = SENSOR_GC0305; | 
|  | 6596 | break; | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6597 | case 0x0303: | 
|  | 6598 | PDEBUG(D_PROBE, "Sensor GC0303"); | 
|  | 6599 | sd->sensor =  SENSOR_GC0303; | 
| Jean-Francois Moine | 63fc4a0 | 2008-07-21 05:42:17 -0300 | [diff] [blame] | 6600 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6601 | case 0x2030: | 
|  | 6602 | PDEBUG(D_PROBE, "Find Sensor PO2030"); | 
|  | 6603 | sd->sensor = SENSOR_PO2030; | 
|  | 6604 | break; | 
|  | 6605 | case 0x7620: | 
|  | 6606 | PDEBUG(D_PROBE, "Find Sensor OV7620"); | 
|  | 6607 | sd->sensor = SENSOR_OV7620; | 
|  | 6608 | break; | 
| Jean-Francois Moine | e2d750f | 2009-02-19 15:41:28 -0300 | [diff] [blame] | 6609 | case 0x7631: | 
|  | 6610 | PDEBUG(D_PROBE, "Find Sensor OV7630C"); | 
|  | 6611 | sd->sensor = SENSOR_OV7630C; | 
|  | 6612 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6613 | case 0x7648: | 
|  | 6614 | PDEBUG(D_PROBE, "Find Sensor OV7648"); | 
|  | 6615 | sd->sensor = SENSOR_OV7620;	/* same sensor (?) */ | 
|  | 6616 | break; | 
|  | 6617 | default: | 
| Joe Perches | 133a9fe | 2011-08-21 19:56:57 -0300 | [diff] [blame] | 6618 | pr_err("Unknown sensor %04x\n", sensor); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6619 | return -EINVAL; | 
|  | 6620 | } | 
|  | 6621 | } | 
|  | 6622 | if (sensor < 0x20) { | 
|  | 6623 | if (sensor == -1 || sensor == 0x10 || sensor == 0x12) | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6624 | reg_w(gspca_dev, 0x02, 0x0010); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6625 | reg_r(gspca_dev, 0x0010); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6626 | } | 
|  | 6627 |  | 
|  | 6628 | cam = &gspca_dev->cam; | 
| Hans de Goede | 9919fe8 | 2010-01-13 07:12:28 -0300 | [diff] [blame] | 6629 | switch (mode_tb[sd->sensor]) { | 
|  | 6630 | case 0: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6631 | cam->cam_mode = sif_mode; | 
| Jean-Francois Moine | c41492c | 2008-07-07 08:31:16 -0300 | [diff] [blame] | 6632 | cam->nmodes = ARRAY_SIZE(sif_mode); | 
| Hans de Goede | 9919fe8 | 2010-01-13 07:12:28 -0300 | [diff] [blame] | 6633 | break; | 
|  | 6634 | case 1: | 
|  | 6635 | cam->cam_mode = vga_mode; | 
|  | 6636 | cam->nmodes = ARRAY_SIZE(vga_mode); | 
|  | 6637 | break; | 
|  | 6638 | default: | 
|  | 6639 | /*	case 2: */ | 
|  | 6640 | cam->cam_mode = broken_vga_mode; | 
|  | 6641 | cam->nmodes = ARRAY_SIZE(broken_vga_mode); | 
|  | 6642 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6643 | } | 
| Jean-François Moine | 49fb5e6 | 2010-12-28 07:09:34 -0300 | [diff] [blame] | 6644 |  | 
| Jean-Francois Moine | 77880ba3 | 2010-01-08 08:04:21 -0300 | [diff] [blame] | 6645 | /* switch off the led */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6646 | reg_w(gspca_dev, 0x01, 0x0000); | 
| Jean-François Moine | c39da6a | 2010-08-04 06:07:23 -0300 | [diff] [blame] | 6647 | return gspca_dev->usb_err; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6648 | } | 
|  | 6649 |  | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 6650 | static int sd_pre_start(struct gspca_dev *gspca_dev) | 
|  | 6651 | { | 
|  | 6652 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 6653 | gspca_dev->cam.needs_full_bandwidth = (sd->reg08 >= 4) ? 1 : 0; | 
|  | 6654 | return 0; | 
|  | 6655 | } | 
|  | 6656 |  | 
| Jean-Francois Moine | 72ab97c | 2008-09-20 06:39:08 -0300 | [diff] [blame] | 6657 | static int sd_start(struct gspca_dev *gspca_dev) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6658 | { | 
|  | 6659 | struct sd *sd = (struct sd *) gspca_dev; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6660 | int mode; | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 6661 | static const struct usb_action *init_tb[SENSOR_MAX][2] = { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6662 | [SENSOR_ADCM2700] = | 
|  | 6663 | {adcm2700_Initial, adcm2700_InitialScale}, | 
|  | 6664 | [SENSOR_CS2102]	= | 
|  | 6665 | {cs2102_Initial, cs2102_InitialScale}, | 
|  | 6666 | [SENSOR_CS2102K] = | 
|  | 6667 | {cs2102K_Initial, cs2102K_InitialScale}, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6668 | [SENSOR_GC0303] = | 
|  | 6669 | {gc0303_Initial, gc0303_InitialScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6670 | [SENSOR_GC0305] = | 
|  | 6671 | {gc0305_Initial, gc0305_InitialScale}, | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6672 | [SENSOR_HDCS2020] = | 
|  | 6673 | {hdcs2020_Initial, hdcs2020_InitialScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6674 | [SENSOR_HV7131B] = | 
|  | 6675 | {hv7131b_Initial, hv7131b_InitialScale}, | 
|  | 6676 | [SENSOR_HV7131R] = | 
|  | 6677 | {hv7131r_Initial, hv7131r_InitialScale}, | 
|  | 6678 | [SENSOR_ICM105A] = | 
|  | 6679 | {icm105a_Initial, icm105a_InitialScale}, | 
|  | 6680 | [SENSOR_MC501CB] = | 
|  | 6681 | {mc501cb_Initial, mc501cb_InitialScale}, | 
| Jean-François Moine | a484dd9 | 2010-08-04 07:25:12 -0300 | [diff] [blame] | 6682 | [SENSOR_MT9V111_1] = | 
|  | 6683 | {mt9v111_1_Initial, mt9v111_1_InitialScale}, | 
|  | 6684 | [SENSOR_MT9V111_3] = | 
|  | 6685 | {mt9v111_3_Initial, mt9v111_3_InitialScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6686 | [SENSOR_OV7620] = | 
|  | 6687 | {ov7620_Initial, ov7620_InitialScale}, | 
|  | 6688 | [SENSOR_OV7630C] = | 
|  | 6689 | {ov7630c_Initial, ov7630c_InitialScale}, | 
|  | 6690 | [SENSOR_PAS106] = | 
|  | 6691 | {pas106b_Initial, pas106b_InitialScale}, | 
|  | 6692 | [SENSOR_PAS202B] = | 
|  | 6693 | {pas202b_Initial, pas202b_InitialScale}, | 
|  | 6694 | [SENSOR_PB0330] = | 
|  | 6695 | {pb0330_Initial, pb0330_InitialScale}, | 
|  | 6696 | [SENSOR_PO2030] = | 
|  | 6697 | {po2030_Initial, po2030_InitialScale}, | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6698 | [SENSOR_TAS5130C] = | 
|  | 6699 | {tas5130c_Initial, tas5130c_InitialScale}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6700 | }; | 
|  | 6701 |  | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 6702 | /* create the JPEG header */ | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 6703 | jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width, | 
|  | 6704 | 0x21);		/* JPEG 422 */ | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 6705 |  | 
| Jean-Francois Moine | 5092451 | 2010-01-08 08:08:12 -0300 | [diff] [blame] | 6706 | mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6707 | switch (sd->sensor) { | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6708 | case SENSOR_HV7131R: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6709 | zcxx_probeSensor(gspca_dev); | 
|  | 6710 | break; | 
|  | 6711 | case SENSOR_PAS106: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6712 | usb_exchange(gspca_dev, pas106b_Initial_com); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6713 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6714 | } | 
| Jean-Francois Moine | 5092451 | 2010-01-08 08:08:12 -0300 | [diff] [blame] | 6715 | usb_exchange(gspca_dev, init_tb[sd->sensor][mode]); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6716 |  | 
|  | 6717 | switch (sd->sensor) { | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6718 | case SENSOR_ADCM2700: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6719 | case SENSOR_GC0305: | 
|  | 6720 | case SENSOR_OV7620: | 
|  | 6721 | case SENSOR_PO2030: | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6722 | case SENSOR_TAS5130C: | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6723 | case SENSOR_GC0303: | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6724 | /*		msleep(100);			 * ?? */ | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6725 | reg_r(gspca_dev, 0x0002);	/* --> 0x40 */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6726 | reg_w(gspca_dev, 0x09, 0x01ad);	/* (from win traces) */ | 
|  | 6727 | reg_w(gspca_dev, 0x15, 0x01ae); | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6728 | if (sd->sensor == SENSOR_TAS5130C) | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6729 | break; | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6730 | reg_w(gspca_dev, 0x0d, 0x003a); | 
|  | 6731 | reg_w(gspca_dev, 0x02, 0x003b); | 
|  | 6732 | reg_w(gspca_dev, 0x00, 0x0038); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6733 | break; | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6734 | case SENSOR_HV7131R: | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6735 | case SENSOR_PAS202B: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6736 | reg_w(gspca_dev, 0x03, 0x003b); | 
|  | 6737 | reg_w(gspca_dev, 0x0c, 0x003a); | 
|  | 6738 | reg_w(gspca_dev, 0x0b, 0x0039); | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6739 | if (sd->sensor == SENSOR_HV7131R) | 
|  | 6740 | reg_w(gspca_dev, 0x50, ZC3XX_R11D_GLOBALGAIN); | 
| Jean-Francois Moine | 38719d4 | 2010-01-04 16:09:47 -0300 | [diff] [blame] | 6741 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6742 | } | 
|  | 6743 |  | 
|  | 6744 | setmatrix(gspca_dev); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6745 | switch (sd->sensor) { | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6746 | case SENSOR_ADCM2700: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6747 | case SENSOR_OV7620: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6748 | reg_r(gspca_dev, 0x0008); | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6749 | reg_w(gspca_dev, 0x00, 0x0008); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6750 | break; | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6751 | case SENSOR_PAS202B: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6752 | case SENSOR_GC0305: | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6753 | case SENSOR_HV7131R: | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6754 | case SENSOR_TAS5130C: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6755 | reg_r(gspca_dev, 0x0008); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6756 | /* fall thru */ | 
|  | 6757 | case SENSOR_PO2030: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6758 | reg_w(gspca_dev, 0x03, 0x0008); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6759 | break; | 
|  | 6760 | } | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6761 | setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6762 |  | 
|  | 6763 | /* set the gamma tables when not set */ | 
|  | 6764 | switch (sd->sensor) { | 
| Jean-Francois Moine | 1d76331 | 2009-09-18 05:36:24 -0300 | [diff] [blame] | 6765 | case SENSOR_CS2102K:		/* gamma set in xxx_Initial */ | 
| Jean-François Moine | 4e5144e | 2011-02-26 13:56:20 -0300 | [diff] [blame] | 6766 | case SENSOR_HDCS2020: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6767 | case SENSOR_OV7630C: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6768 | break; | 
|  | 6769 | default: | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6770 | setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma), | 
|  | 6771 | v4l2_ctrl_g_ctrl(sd->brightness), | 
|  | 6772 | v4l2_ctrl_g_ctrl(sd->contrast)); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6773 | break; | 
|  | 6774 | } | 
|  | 6775 | setmatrix(gspca_dev);			/* one more time? */ | 
|  | 6776 | switch (sd->sensor) { | 
|  | 6777 | case SENSOR_OV7620: | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6778 | case SENSOR_PAS202B: | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6779 | reg_r(gspca_dev, 0x0180);	/* from win */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6780 | reg_w(gspca_dev, 0x00, 0x0180); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6781 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6782 | } | 
| Jean-François Moine | 30c73d4 | 2012-02-27 07:26:30 -0300 | [diff] [blame] | 6783 | setquality(gspca_dev); | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 6784 | /* Start with BRC disabled, transfer_update will enable it if needed */ | 
|  | 6785 | reg_w(gspca_dev, 0x00, 0x0007); | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6786 | if (sd->plfreq) | 
|  | 6787 | setlightfreq(gspca_dev, v4l2_ctrl_g_ctrl(sd->plfreq)); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6788 |  | 
|  | 6789 | switch (sd->sensor) { | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6790 | case SENSOR_ADCM2700: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6791 | reg_w(gspca_dev, 0x09, 0x01ad);	/* (from win traces) */ | 
|  | 6792 | reg_w(gspca_dev, 0x15, 0x01ae); | 
|  | 6793 | reg_w(gspca_dev, 0x02, 0x0180); | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6794 | /* ms-win + */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6795 | reg_w(gspca_dev, 0x40, 0x0117); | 
| Jean-Francois Moine | 3d22118 | 2009-01-19 15:18:44 -0300 | [diff] [blame] | 6796 | break; | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6797 | case SENSOR_HV7131R: | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6798 | setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure)); | 
| Jean-François Moine | 3d24406 | 2011-01-24 16:22:11 -0300 | [diff] [blame] | 6799 | reg_w(gspca_dev, 0x00, ZC3XX_R1A7_CALCGLOBALMEAN); | 
|  | 6800 | break; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6801 | case SENSOR_GC0305: | 
| Jean-François Moine | 83d1aa3 | 2010-08-04 05:11:23 -0300 | [diff] [blame] | 6802 | case SENSOR_TAS5130C: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6803 | reg_w(gspca_dev, 0x09, 0x01ad);	/* (from win traces) */ | 
|  | 6804 | reg_w(gspca_dev, 0x15, 0x01ae); | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6805 | /* fall thru */ | 
|  | 6806 | case SENSOR_PAS202B: | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6807 | case SENSOR_PO2030: | 
| Jean-François Moine | 780e312 | 2010-10-19 04:29:10 -0300 | [diff] [blame] | 6808 | /*		reg_w(gspca_dev, 0x40, ZC3XX_R117_GGAIN); in win traces */ | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6809 | reg_r(gspca_dev, 0x0180); | 
|  | 6810 | break; | 
|  | 6811 | case SENSOR_OV7620: | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6812 | reg_w(gspca_dev, 0x09, 0x01ad); | 
|  | 6813 | reg_w(gspca_dev, 0x15, 0x01ae); | 
| Jean-Francois Moine | 7320d6b | 2008-12-08 06:41:04 -0300 | [diff] [blame] | 6814 | i2c_read(gspca_dev, 0x13);	/*fixme: returns 0xa3 */ | 
|  | 6815 | i2c_write(gspca_dev, 0x13, 0xa3, 0x00); | 
| Jean-François Moine | 780e312 | 2010-10-19 04:29:10 -0300 | [diff] [blame] | 6816 | /*fixme: returned value to send? */ | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6817 | reg_w(gspca_dev, 0x40, 0x0117); | 
| Jean-Francois Moine | 739570b | 2008-07-14 09:38:29 -0300 | [diff] [blame] | 6818 | reg_r(gspca_dev, 0x0180); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6819 | break; | 
|  | 6820 | } | 
|  | 6821 |  | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6822 | setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 6823 |  | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 6824 | if (gspca_dev->usb_err < 0) | 
|  | 6825 | return gspca_dev->usb_err; | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 6826 |  | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 6827 | /* Start the transfer parameters update thread */ | 
|  | 6828 | sd->work_thread = create_singlethread_workqueue(KBUILD_MODNAME); | 
|  | 6829 | queue_work(sd->work_thread, &sd->work); | 
|  | 6830 |  | 
|  | 6831 | return 0; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6832 | } | 
|  | 6833 |  | 
| Hans de Goede | 844db45 | 2012-09-09 07:30:02 -0300 | [diff] [blame] | 6834 | /* called on streamoff with alt==0 and on disconnect */ | 
|  | 6835 | /* the usb_lock is held at entry - restore on exit */ | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6836 | static void sd_stop0(struct gspca_dev *gspca_dev) | 
|  | 6837 | { | 
|  | 6838 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 6839 |  | 
| Jean-François Moine | f180190 | 2012-02-27 07:48:32 -0300 | [diff] [blame] | 6840 | if (sd->work_thread != NULL) { | 
|  | 6841 | mutex_unlock(&gspca_dev->usb_lock); | 
|  | 6842 | destroy_workqueue(sd->work_thread); | 
|  | 6843 | mutex_lock(&gspca_dev->usb_lock); | 
|  | 6844 | sd->work_thread = NULL; | 
|  | 6845 | } | 
| Hans de Goede | 345321d | 2012-09-09 06:30:02 -0300 | [diff] [blame] | 6846 | if (!gspca_dev->present) | 
| Jean-Francois Moine | 98522a7 | 2008-11-18 06:33:08 -0300 | [diff] [blame] | 6847 | return; | 
| Jean-François Moine | 6d31450 | 2010-08-04 05:44:13 -0300 | [diff] [blame] | 6848 | send_unknown(gspca_dev, sd->sensor); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6849 | } | 
|  | 6850 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6851 | static void sd_pkt_scan(struct gspca_dev *gspca_dev, | 
| Jean-Francois Moine | 76dd272 | 2009-11-13 09:21:03 -0300 | [diff] [blame] | 6852 | u8 *data, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6853 | int len) | 
|  | 6854 | { | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 6855 | struct sd *sd = (struct sd *) gspca_dev; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6856 |  | 
| Jean-François Moine | a5ecdfb | 2011-01-24 16:31:58 -0300 | [diff] [blame] | 6857 | /* check the JPEG end of frame */ | 
|  | 6858 | if (len >= 3 | 
|  | 6859 | && data[len - 3] == 0xff && data[len - 2] == 0xd9) { | 
|  | 6860 | /*fixme: what does the last byte mean?*/ | 
| Jean-Francois Moine | 76dd272 | 2009-11-13 09:21:03 -0300 | [diff] [blame] | 6861 | gspca_frame_add(gspca_dev, LAST_PACKET, | 
| Jean-François Moine | a5ecdfb | 2011-01-24 16:31:58 -0300 | [diff] [blame] | 6862 | data, len - 1); | 
|  | 6863 | return; | 
|  | 6864 | } | 
|  | 6865 |  | 
|  | 6866 | /* check the JPEG start of a frame */ | 
|  | 6867 | if (data[0] == 0xff && data[1] == 0xd8) { | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6868 | /* put the JPEG header in the new frame */ | 
| Jean-Francois Moine | 76dd272 | 2009-11-13 09:21:03 -0300 | [diff] [blame] | 6869 | gspca_frame_add(gspca_dev, FIRST_PACKET, | 
| Jean-Francois Moine | 71cb276 | 2009-03-03 05:33:41 -0300 | [diff] [blame] | 6870 | sd->jpeg_hdr, JPEG_HDR_SZ); | 
|  | 6871 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6872 | /* remove the webcam's header: | 
|  | 6873 | * ff d8 ff fe 00 0e 00 00 ss ss 00 01 ww ww hh hh pp pp | 
|  | 6874 | *	- 'ss ss' is the frame sequence number (BE) | 
| Jean-François Moine | 780e312 | 2010-10-19 04:29:10 -0300 | [diff] [blame] | 6875 | *	- 'ww ww' and 'hh hh' are the window dimensions (BE) | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6876 | *	- 'pp pp' is the packet sequence number (BE) | 
|  | 6877 | */ | 
|  | 6878 | data += 18; | 
|  | 6879 | len -= 18; | 
|  | 6880 | } | 
| Jean-Francois Moine | 76dd272 | 2009-11-13 09:21:03 -0300 | [diff] [blame] | 6881 | gspca_frame_add(gspca_dev, INTER_PACKET, data, len); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6882 | } | 
|  | 6883 |  | 
| Jean-François Moine | cd7f98f | 2012-03-16 06:47:23 -0300 | [diff] [blame] | 6884 | static int sd_set_jcomp(struct gspca_dev *gspca_dev, | 
| Hans Verkuil | d88aab5 | 2012-09-17 05:05:25 -0300 | [diff] [blame] | 6885 | const struct v4l2_jpegcompression *jcomp) | 
| Jean-François Moine | cd7f98f | 2012-03-16 06:47:23 -0300 | [diff] [blame] | 6886 | { | 
|  | 6887 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 6888 |  | 
| Hans Verkuil | d88aab5 | 2012-09-17 05:05:25 -0300 | [diff] [blame] | 6889 | return v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality); | 
| Jean-Francois Moine | 77ac0ba | 2009-03-02 06:40:52 -0300 | [diff] [blame] | 6890 | } | 
|  | 6891 |  | 
|  | 6892 | static int sd_get_jcomp(struct gspca_dev *gspca_dev, | 
|  | 6893 | struct v4l2_jpegcompression *jcomp) | 
|  | 6894 | { | 
|  | 6895 | struct sd *sd = (struct sd *) gspca_dev; | 
|  | 6896 |  | 
|  | 6897 | memset(jcomp, 0, sizeof *jcomp); | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6898 | jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual); | 
| Jean-Francois Moine | 77ac0ba | 2009-03-02 06:40:52 -0300 | [diff] [blame] | 6899 | jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT | 
|  | 6900 | | V4L2_JPEG_MARKER_DQT; | 
|  | 6901 | return 0; | 
|  | 6902 | } | 
|  | 6903 |  | 
| Peter Senna Tschudin | 78f968f | 2013-01-24 19:29:13 -0300 | [diff] [blame] | 6904 | #if IS_ENABLED(CONFIG_INPUT) | 
| Hans de Goede | 1a35102 | 2010-01-29 11:05:25 -0300 | [diff] [blame] | 6905 | static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, | 
|  | 6906 | u8 *data,		/* interrupt packet data */ | 
|  | 6907 | int len)		/* interrput packet length */ | 
|  | 6908 | { | 
|  | 6909 | if (len == 8 && data[4] == 1) { | 
|  | 6910 | input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); | 
|  | 6911 | input_sync(gspca_dev->input_dev); | 
|  | 6912 | input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); | 
|  | 6913 | input_sync(gspca_dev->input_dev); | 
|  | 6914 | } | 
|  | 6915 |  | 
|  | 6916 | return 0; | 
|  | 6917 | } | 
|  | 6918 | #endif | 
|  | 6919 |  | 
| Jean-Francois Moine | a5ae206 | 2008-07-04 11:16:16 -0300 | [diff] [blame] | 6920 | static const struct sd_desc sd_desc = { | 
| Jean-François Moine | 0b74e2c | 2012-02-27 08:26:05 -0300 | [diff] [blame] | 6921 | .name = KBUILD_MODNAME, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6922 | .config = sd_config, | 
| Jean-Francois Moine | 012d6b0 | 2008-09-03 17:12:16 -0300 | [diff] [blame] | 6923 | .init = sd_init, | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 6924 | .init_controls = sd_init_controls, | 
| Hans de Goede | 55db765 | 2012-05-06 09:28:25 -0300 | [diff] [blame] | 6925 | .isoc_init = sd_pre_start, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6926 | .start = sd_start, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6927 | .stop0 = sd_stop0, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6928 | .pkt_scan = sd_pkt_scan, | 
| Jean-Francois Moine | 77ac0ba | 2009-03-02 06:40:52 -0300 | [diff] [blame] | 6929 | .get_jcomp = sd_get_jcomp, | 
|  | 6930 | .set_jcomp = sd_set_jcomp, | 
| Peter Senna Tschudin | 78f968f | 2013-01-24 19:29:13 -0300 | [diff] [blame] | 6931 | #if IS_ENABLED(CONFIG_INPUT) | 
| Hans de Goede | 1a35102 | 2010-01-29 11:05:25 -0300 | [diff] [blame] | 6932 | .int_pkt_scan = sd_int_pkt_scan, | 
|  | 6933 | #endif | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6934 | }; | 
|  | 6935 |  | 
| Jean-François Moine | 95c967c | 2011-01-13 05:20:29 -0300 | [diff] [blame] | 6936 | static const struct usb_device_id device_table[] = { | 
| Wolfram Sang | e177129 | 2011-09-23 04:47:58 -0300 | [diff] [blame] | 6937 | {USB_DEVICE(0x03f0, 0x1b07)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6938 | {USB_DEVICE(0x041e, 0x041e)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6939 | {USB_DEVICE(0x041e, 0x4017)}, | 
| Hans de Goede | d6db35e | 2008-09-03 17:12:13 -0300 | [diff] [blame] | 6940 | {USB_DEVICE(0x041e, 0x401c), .driver_info = SENSOR_PAS106}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6941 | {USB_DEVICE(0x041e, 0x401e)}, | 
|  | 6942 | {USB_DEVICE(0x041e, 0x401f)}, | 
| Hans de Goede | 222a07f | 2008-09-03 17:12:20 -0300 | [diff] [blame] | 6943 | {USB_DEVICE(0x041e, 0x4022)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6944 | {USB_DEVICE(0x041e, 0x4029)}, | 
| Hans de Goede | d6db35e | 2008-09-03 17:12:13 -0300 | [diff] [blame] | 6945 | {USB_DEVICE(0x041e, 0x4034), .driver_info = SENSOR_PAS106}, | 
|  | 6946 | {USB_DEVICE(0x041e, 0x4035), .driver_info = SENSOR_PAS106}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6947 | {USB_DEVICE(0x041e, 0x4036)}, | 
|  | 6948 | {USB_DEVICE(0x041e, 0x403a)}, | 
| Jean-François Moine | 7fbee99 | 2010-12-28 07:17:40 -0300 | [diff] [blame] | 6949 | {USB_DEVICE(0x041e, 0x4051), .driver_info = SENSOR_GC0303}, | 
|  | 6950 | {USB_DEVICE(0x041e, 0x4053), .driver_info = SENSOR_GC0303}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6951 | {USB_DEVICE(0x0458, 0x7007)}, | 
|  | 6952 | {USB_DEVICE(0x0458, 0x700c)}, | 
|  | 6953 | {USB_DEVICE(0x0458, 0x700f)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6954 | {USB_DEVICE(0x0461, 0x0a00)}, | 
| Fabio Rossi | 88a40cf | 2008-12-26 14:41:48 -0300 | [diff] [blame] | 6955 | {USB_DEVICE(0x046d, 0x089d), .driver_info = SENSOR_MC501CB}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6956 | {USB_DEVICE(0x046d, 0x08a0)}, | 
|  | 6957 | {USB_DEVICE(0x046d, 0x08a1)}, | 
|  | 6958 | {USB_DEVICE(0x046d, 0x08a2)}, | 
|  | 6959 | {USB_DEVICE(0x046d, 0x08a3)}, | 
|  | 6960 | {USB_DEVICE(0x046d, 0x08a6)}, | 
|  | 6961 | {USB_DEVICE(0x046d, 0x08a7)}, | 
|  | 6962 | {USB_DEVICE(0x046d, 0x08a9)}, | 
|  | 6963 | {USB_DEVICE(0x046d, 0x08aa)}, | 
|  | 6964 | {USB_DEVICE(0x046d, 0x08ac)}, | 
|  | 6965 | {USB_DEVICE(0x046d, 0x08ad)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6966 | {USB_DEVICE(0x046d, 0x08ae)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6967 | {USB_DEVICE(0x046d, 0x08af)}, | 
|  | 6968 | {USB_DEVICE(0x046d, 0x08b9)}, | 
|  | 6969 | {USB_DEVICE(0x046d, 0x08d7)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6970 | {USB_DEVICE(0x046d, 0x08d8)}, | 
| Jean-François Moine | 7d55a84 | 2010-12-28 07:02:32 -0300 | [diff] [blame] | 6971 | {USB_DEVICE(0x046d, 0x08d9)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6972 | {USB_DEVICE(0x046d, 0x08da)}, | 
| Hans de Goede | d6db35e | 2008-09-03 17:12:13 -0300 | [diff] [blame] | 6973 | {USB_DEVICE(0x046d, 0x08dd), .driver_info = SENSOR_MC501CB}, | 
|  | 6974 | {USB_DEVICE(0x0471, 0x0325), .driver_info = SENSOR_PAS106}, | 
|  | 6975 | {USB_DEVICE(0x0471, 0x0326), .driver_info = SENSOR_PAS106}, | 
|  | 6976 | {USB_DEVICE(0x0471, 0x032d), .driver_info = SENSOR_PAS106}, | 
|  | 6977 | {USB_DEVICE(0x0471, 0x032e), .driver_info = SENSOR_PAS106}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6978 | {USB_DEVICE(0x055f, 0xc005)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6979 | {USB_DEVICE(0x055f, 0xd003)}, | 
|  | 6980 | {USB_DEVICE(0x055f, 0xd004)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6981 | {USB_DEVICE(0x0698, 0x2003)}, | 
| Hans de Goede | 222a07f | 2008-09-03 17:12:20 -0300 | [diff] [blame] | 6982 | {USB_DEVICE(0x0ac8, 0x0301), .driver_info = SENSOR_PAS106}, | 
| Douglas Schilling Landgraf | d99819d | 2009-03-26 05:10:55 -0300 | [diff] [blame] | 6983 | {USB_DEVICE(0x0ac8, 0x0302), .driver_info = SENSOR_PAS106}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6984 | {USB_DEVICE(0x0ac8, 0x301b)}, | 
|  | 6985 | {USB_DEVICE(0x0ac8, 0x303b)}, | 
| Jean-Francois Moine | 7bd330b | 2009-12-02 06:06:03 -0300 | [diff] [blame] | 6986 | {USB_DEVICE(0x0ac8, 0x305b)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6987 | {USB_DEVICE(0x0ac8, 0x307b)}, | 
|  | 6988 | {USB_DEVICE(0x10fd, 0x0128)}, | 
| Hans de Goede | 222a07f | 2008-09-03 17:12:20 -0300 | [diff] [blame] | 6989 | {USB_DEVICE(0x10fd, 0x804d)}, | 
| Jean-Francois Moine | 9d64fdb | 2008-07-25 08:53:03 -0300 | [diff] [blame] | 6990 | {USB_DEVICE(0x10fd, 0x8050)}, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6991 | {}			/* end of entry */ | 
|  | 6992 | }; | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 6993 | MODULE_DEVICE_TABLE(usb, device_table); | 
|  | 6994 |  | 
|  | 6995 | /* -- device connect -- */ | 
|  | 6996 | static int sd_probe(struct usb_interface *intf, | 
|  | 6997 | const struct usb_device_id *id) | 
|  | 6998 | { | 
|  | 6999 | return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd), | 
|  | 7000 | THIS_MODULE); | 
|  | 7001 | } | 
|  | 7002 |  | 
|  | 7003 | /* USB driver */ | 
|  | 7004 | static struct usb_driver sd_driver = { | 
| Jean-François Moine | 0b74e2c | 2012-02-27 08:26:05 -0300 | [diff] [blame] | 7005 | .name = KBUILD_MODNAME, | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 7006 | .id_table = device_table, | 
|  | 7007 | .probe = sd_probe, | 
|  | 7008 | .disconnect = gspca_disconnect, | 
| Jean-Francois Moine | 6a70974 | 2008-09-03 16:48:10 -0300 | [diff] [blame] | 7009 | #ifdef CONFIG_PM | 
|  | 7010 | .suspend = gspca_suspend, | 
|  | 7011 | .resume = gspca_resume, | 
| Hans Verkuil | c06ba28 | 2012-05-06 09:28:28 -0300 | [diff] [blame] | 7012 | .reset_resume = gspca_resume, | 
| Jean-Francois Moine | 6a70974 | 2008-09-03 16:48:10 -0300 | [diff] [blame] | 7013 | #endif | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 7014 | }; | 
|  | 7015 |  | 
| Greg Kroah-Hartman | ecb3b2b | 2011-11-18 09:46:12 -0800 | [diff] [blame] | 7016 | module_usb_driver(sd_driver); | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 7017 |  | 
| Jean-Francois Moine | d43fa32 | 2008-06-12 10:58:58 -0300 | [diff] [blame] | 7018 | module_param(force_sensor, int, 0644); | 
|  | 7019 | MODULE_PARM_DESC(force_sensor, | 
|  | 7020 | "Force sensor. Only for experts!!!"); |