blob: 831748873884289ab85526ab10ec458d314cda66 [file] [log] [blame]
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001/*
2 * DivIO nw80x subdriver
3 *
4 * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
5 * Copyright (C) 2003 Sylvain Munaut <tnt@246tNt.com>
6 * Kjell Claesson <keyson@users.sourceforge.net>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22
23#define MODULE_NAME "nw80x"
24
25#include "gspca.h"
26
27MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>");
28MODULE_DESCRIPTION("NW80x USB Camera Driver");
29MODULE_LICENSE("GPL");
30
31static int webcam;
32
33/* controls */
34enum e_ctrl {
35 GAIN,
36 EXPOSURE,
37 AUTOGAIN,
38 NCTRLS /* number of controls */
39};
40
41/* specific webcam descriptor */
42struct sd {
43 struct gspca_dev gspca_dev; /* !! must be the first item */
44
45 struct gspca_ctrl ctrls[NCTRLS];
46
47 u32 ae_res;
48 s8 ag_cnt;
49#define AG_CNT_START 13
50
51 u8 bridge;
52 u8 webcam;
53};
54
55enum bridges {
Jean-François Moinec3ee1422011-03-22 05:16:11 -030056 BRIDGE_NW800, /* and et31x110 */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -030057 BRIDGE_NW801,
58 BRIDGE_NW802,
59};
60enum webcams {
61 Generic800,
62 SpaceCam, /* Trust 120 SpaceCam */
63 SpaceCam2, /* other Trust 120 SpaceCam */
64 Cvideopro, /* Conceptronic Video Pro */
65 Dlink350c,
66 DS3303u,
67 Kr651us,
68 Kritter,
69 Mustek300,
70 Proscope,
71 Twinkle,
72 DsbC110,
73 DvcV6,
74 P35u,
75 Generic802,
76 NWEBCAMS /* number of webcams */
77};
78
79/*
80 - webcams:
81 - Typhoon Webcam 100 USB (06a5:0000)
82 nw800
83 - Trust SpaceCam120 or SpaceCam100 PORTABLE (06a5:d800)
84 nw801 SpaceCam.init
85 or trust_space.init if no LED (?)
86 - Divio Chicony TwinkleCam (06a5:d800) ?
87 nw800 Twinkle.init
88 - Plustek Opticam 500U or ProLink DS3303u
89 nw801 DS3303u.init
90 - Logitech QuickCam Pro (dark focus ring) (046d:d001)
91 nw801
92 - EZCam Pro p35u (052b:d001, 06a5:d001 and 06be:d001)
93 nw801 - sensor Sharp IR3Y38M
94 - AVerMedia Camguard (0728:d001)
95 nw801
96 - Panasonic GP-KR651US (06a5:d001)
97 nw802 kr651us.init
98 - iRez Kritter cam
99 nw802 kritter.init
100 - D-link dru-350c cam
101 nw802 d-link-350c.init
102 - The Scope USB Microscope M2 (ProScope)
103 = Divio ProLink DS3303u WebCam (06a5:d001)
104 = Scalar USB Microscope M2 (Proscope)
105 nw802 proscope.init
106 - Conceptronic Video Pro 'CVIDEOPRO USB Webcam CCD' (06a5:d001)
107 nw802 cvideopro.init
108 - Mustek Wcam 300 mini
109 nw802 mustek_300_mini.init
110 - D-Link NetQam Pro 250plus (06a5:d001)
111 - Showcam NGS webcam (065a:d800)
112 - sceptre svc300
113 - DSB-C110 (06a5:d800)
114 et31x110
115 - DVC V6 (0502:d001)
116 nw802
117 - registers
118 nw800/et31x110 nw801 nw802
119 0000..009e 0000..00a1 0000..009e
120 0200..0211 id id
121 0300..0302 id id
122 0400..0406 (inex) 0400..0406
123 0500..0505 0500..0506 (inex)
124 0600..061a 0600..0601 0600..0601
125 0800..0814 id id
126 1000..109c 1000..10a1 1000..109a
127
128 080c: luma (nw800/nw802)
129 080d: luma (nw801)
130 1004: LUT (?)
131 100b: R gain (0..63)
132 100c: B gain
133 100d: G gain
134 100e: Y gain
135 100f: U gain
136 1010: V gain
137 1019: clock (nw801 - bit 0x08: indoor/outdoor)
138 101b: shutter 1 (0..255)
139 101c: shutter 2
140 1026: BP = gain (nw801)
141 1041, 1052, 1063, 1074: LUT base (nw802)
142 1048, 1059, 106a, 107b: LUT base (nw801)
143 - resolutions
144 nw800 352x288
145 nw801/nw802 320x240 - 640x480
146*/
147
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300148static const struct v4l2_pix_format cif_mode[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300149 {352, 288, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE,
150 .bytesperline = 352,
151 .sizeimage = 352 * 288 * 4 / 8,
152 .colorspace = V4L2_COLORSPACE_JPEG}
153};
154static const struct v4l2_pix_format vga_mode[] = {
155 {320, 240, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE,
156 .bytesperline = 320,
157 .sizeimage = 320 * 240 * 4 / 8,
158 .colorspace = V4L2_COLORSPACE_JPEG},
159 {640, 480, V4L2_PIX_FMT_JPGL, V4L2_FIELD_NONE,
160 .bytesperline = 640,
161 .sizeimage = 640 * 480 * 3 / 8,
162 .colorspace = V4L2_COLORSPACE_JPEG},
163};
164
165/*
166 * The sequences below contain:
167 * - 1st and 2nd bytes: either
168 * - register number (BE)
169 * - I2C0 + i2c address
170 * - 3rd byte: data length (=0 for end of sequence)
171 * - n bytes: data
172 */
173#define I2C0 0xff
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300174
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300175static const u8 nw800_init[] = {
176 0x05, 0x00, 0x01, 0x55,
177 0x10, 0x9b, 0x01, 0xaa,
178 0x05, 0x02, 0x01, 0x02,
179 0x06, 0x00, 0x02, 0x04, 0xd9,
180 0x05, 0x05, 0x01, 0x00,
181 0x05, 0x05, 0x01, 0x01,
182 0x04, 0x06, 0x01, 0x04,
183
184 0x04, 0x06, 0x01, 0xc0,
185 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
186 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
187 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
188 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
189 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
190 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
191 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
192 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
193 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
194 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
195 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
196 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
197 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
198 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
200 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
201 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
203 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
204 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
205 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
206 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
207 0x40, 0x20,
208 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
209 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
210 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
211 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00,
215 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217 0x00, 0x00, 0x00, 0x00, 0x00,
218 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
220 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
223 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
224 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
225 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
226 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
227 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
228 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
229 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
230 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
231 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
232 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
233 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
234 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
236 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
237 0x01, 0x60, 0x01, 0x00, 0x00,
238
239 0x04, 0x04, 0x01, 0xff,
240 0x04, 0x06, 0x01, 0xc4,
241
242 0x04, 0x06, 0x01, 0xc0,
243 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
244 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
245 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
246 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
247 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
248 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
249 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
250 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
251 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
252 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
253 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
254 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
255 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
256 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
258 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
259 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
260 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
261 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
262 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
263 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
264 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
265 0x40, 0x20,
266 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
267 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
268 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
269 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
272 0x00, 0x00, 0x00,
273 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
275 0x00, 0x00, 0x00, 0x00, 0x00,
276 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
277 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
278 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
279 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
280 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
281 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
282 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
283 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
284 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
285 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
286 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
287 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
288 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
289 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
290 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
291 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
292 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
293 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
294 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
295 0x01, 0x60, 0x01, 0x00, 0x00,
296
297 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
298 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
299 0x40,
300 0x00, 0x80, 0x01, 0xa0,
301 0x10, 0x1a, 0x01, 0x00,
302 0x00, 0x91, 0x02, 0x6c, 0x01,
303 0x00, 0x03, 0x02, 0xc8, 0x01,
304 0x10, 0x1a, 0x01, 0x00,
305 0x10, 0x00, 0x01, 0x83,
306 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
307 0x20, 0x01, 0x60, 0x01,
308 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
309 0x10, 0x1b, 0x02, 0x69, 0x00,
310 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
311 0x05, 0x02, 0x01, 0x02,
312 0x06, 0x00, 0x02, 0x04, 0xd9,
313 0x05, 0x05, 0x01, 0x20,
314 0x05, 0x05, 0x01, 0x21,
315 0x10, 0x0e, 0x01, 0x08,
316 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
317 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
318 0xea,
319 0x10, 0x03, 0x01, 0x00,
320 0x10, 0x0f, 0x02, 0x13, 0x13,
321 0x10, 0x03, 0x01, 0x14,
322 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
323 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
324 0xea,
325 0x10, 0x0b, 0x01, 0x14,
326 0x10, 0x0d, 0x01, 0x20,
327 0x10, 0x0c, 0x01, 0x34,
328 0x04, 0x06, 0x01, 0xc3,
329 0x04, 0x04, 0x01, 0x00,
330 0x05, 0x02, 0x01, 0x02,
331 0x06, 0x00, 0x02, 0x00, 0x48,
332 0x05, 0x05, 0x01, 0x20,
333 0x05, 0x05, 0x01, 0x21,
334 0, 0, 0
335};
336
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300337/* 06a5:d001 - nw801 - Panasonic
338 * P35u */
339static const u8 nw801_start_1[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300340 0x05, 0x06, 0x01, 0x04,
341 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
342 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
343 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
344 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
345 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
346 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
347 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
348 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
349 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
350 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
351 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
352 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
353 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
354 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
355 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
356 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
357 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
358 0x00, 0x00, 0x00, 0x00, 0x69, 0xa8, 0x1f, 0x00,
359 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
360 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
361 0x36, 0x00,
362 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
363 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
364 0x40, 0x20,
365 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
366 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
367 0x06, 0x00, 0x02, 0x09, 0x99,
368 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370 0x00, 0x00, 0x00, 0x00, 0x00,
371 0x10, 0x00, 0x40, 0x22, 0x02, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x00,
372 0x00, 0x00, 0x00, 0x0a, 0x15, 0x08, 0x08, 0x0a,
373 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374 0x00, 0x01, 0x35, 0xfd, 0x07, 0x3d, 0x00, 0x00,
375 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x14, 0x02,
376 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
377 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x06,
378 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
379 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
380 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 0xa4,
381 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 0xcf,
382 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
383 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
384 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
385 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
386 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
387 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
388 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00,
389 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x82, 0x02,
390 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
391 0xf0, 0x00,
392 0, 0, 0,
393};
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300394static const u8 nw801_start_qvga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300395 0x02, 0x00, 0x10, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
396 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78,
397 0x02, 0x0f, 0x01, 0x6b,
398 0x10, 0x1a, 0x01, 0x15,
399 0x00, 0x00, 0x01, 0x1e,
400 0x10, 0x00, 0x01, 0x2f,
401 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
402 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
403 /* AE window */
404 0, 0, 0,
405};
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300406static const u8 nw801_start_vga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300407 0x02, 0x00, 0x10, 0x78, 0xa0, 0x97, 0x78, 0xa0, 0x00, 0x00, 0x00,
408 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xf0,
409 0x02, 0x0f, 0x01, 0xd5,
410 0x10, 0x1a, 0x01, 0x15,
411 0x00, 0x00, 0x01, 0x0e,
412 0x10, 0x00, 0x01, 0x22,
413 0x10, 0x8c, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
414 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
415 0, 0, 0,
416};
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300417static const u8 nw801_start_2[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300418 0x10, 0x04, 0x01, 0x1a,
419 0x10, 0x19, 0x01, 0x09, /* clock */
420 0x10, 0x24, 0x06, 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01,
421 /* .. gain .. */
422 0x00, 0x03, 0x02, 0x92, 0x03,
423 0x00, 0x1d, 0x04, 0xf2, 0x00, 0x24, 0x07,
424 0x00, 0x7b, 0x01, 0xcf,
425 0x10, 0x94, 0x01, 0x07,
426 0x05, 0x05, 0x01, 0x01,
427 0x05, 0x04, 0x01, 0x01,
428 0x10, 0x0e, 0x01, 0x08,
429 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
430 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
431 0xf0,
432 0x10, 0x03, 0x01, 0x00,
433 0x10, 0x0f, 0x02, 0x0c, 0x0c,
434 0x10, 0x03, 0x01, 0x08,
435 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
436 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
437 0xf0,
438 0x10, 0x0b, 0x01, 0x0b,
439 0x10, 0x0d, 0x01, 0x0b,
440 0x10, 0x0c, 0x01, 0x1f,
441 0x05, 0x06, 0x01, 0x03,
442 0, 0, 0
443};
444
445/* nw802 (sharp IR3Y38M?) */
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300446static const u8 nw802_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300447 0x04, 0x06, 0x01, 0x04,
448 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x4d,
449 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
450 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
451 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
452 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
453 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
454 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
455 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
456 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
457 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
458 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
459 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
460 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
461 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
462 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
463 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
464 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
465 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
466 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
467 0x00, 0x10, 0x06, 0x08, 0x00, 0x18, 0x00,
468 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
469 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
470 0x40, 0x20,
471 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
472 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
473 0x06, 0x00, 0x02, 0x09, 0x99,
474 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
475 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
476 0x00, 0x00, 0x00, 0x00, 0x00,
477 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x1d, 0x00, 0x00, 0x00,
478 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
479 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480 0x00, 0x49, 0x13, 0xff, 0x01, 0xc0, 0x00, 0x14,
481 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
482 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
483 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
484 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
485 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
486 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
487 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
488 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
489 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
490 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
491 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
492 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
493 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
494 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x82,
495 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
496 0x01, 0xf0, 0x00,
497 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
498 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
499 0x40,
500 0x10, 0x1a, 0x01, 0x00,
501 0x10, 0x00, 0x01, 0xad,
502 0x00, 0x00, 0x01, 0x08,
503 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
504 0x10, 0x1b, 0x02, 0x00, 0x00,
505 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
506 0x10, 0x1d, 0x08, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
507 0x10, 0x0e, 0x01, 0x27,
508 0x10, 0x41, 0x11, 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
509 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
510 0xd8,
511 0x10, 0x03, 0x01, 0x00,
512 0x10, 0x0f, 0x02, 0x14, 0x14,
513 0x10, 0x03, 0x01, 0x0c,
514 0x10, 0x41, 0x11, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 0x74,
515 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 0xf1,
516 0xff,
517/* 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
518 * 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
519 * 0xd8, */
520 0x10, 0x0b, 0x01, 0x10,
521 0x10, 0x0d, 0x01, 0x11,
522 0x10, 0x0c, 0x01, 0x1c,
523 0x04, 0x06, 0x01, 0x03,
524 0x04, 0x04, 0x01, 0x00,
525 0, 0, 0
526};
527/* et31x110 - Trust 120 SpaceCam */
528static const u8 spacecam_init[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300529 0x04, 0x05, 0x01, 0x01,
530 0x04, 0x04, 0x01, 0x01,
531 0x04, 0x06, 0x01, 0x04,
532 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
533 0x05, 0x05, 0x01, 0x00,
534/*fixme: add 300ms delay?*/
535/*fixme: at capture start time*/
536 0x04, 0x06, 0x01, 0x44,
537 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
538 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
539 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
540 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
541 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
542 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
543 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
544 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
545 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
546 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
547 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
548 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
549 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
550 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
551 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
552 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
553 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
554 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
555 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
556 0x00, 0x4b, 0x00, 0x7c, 0x00, 0x80, 0x00,
557 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
558 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
559 0x40, 0x20,
560 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
561 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
562 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
563 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
564 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
566 0x00, 0x00, 0x00,
567 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
568 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
569 0x00, 0x00, 0x00, 0x00, 0x00,
570 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
571 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
572 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
573 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
574 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
575 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
576 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
577 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
578 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
579 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
580 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
581 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
582 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
583 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
584 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
585 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
586 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
587 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
588 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
589 0x01, 0x60, 0x01, 0x00, 0x00,
590 0x04, 0x06, 0x01, 0xc0,
591 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
592 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
593 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
594 0x40,
595 0x00, 0x80, 0x01, 0xa0,
596 0x10, 0x1a, 0x01, 0x00,
597 0x00, 0x91, 0x02, 0x32, 0x01,
598 0x00, 0x03, 0x02, 0x08, 0x02,
599 0x10, 0x00, 0x01, 0x83,
600 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
601 0x20, 0x01, 0x60, 0x01,
602 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
603 0x10, 0x0e, 0x01, 0x08,
604 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
605 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
606 0xf9,
607 0x10, 0x03, 0x01, 0x00,
608 0x10, 0x0f, 0x02, 0x13, 0x13,
609 0x10, 0x03, 0x01, 0x06,
610 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
611 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
612 0xf9,
613 0x10, 0x0b, 0x01, 0x08,
614 0x10, 0x0d, 0x01, 0x10,
615 0x10, 0x0c, 0x01, 0x1f,
616 0x04, 0x06, 0x01, 0xc3,
617 0x04, 0x05, 0x01, 0x40,
618 0x04, 0x04, 0x01, 0x40,
619 0, 0, 0
620};
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300621/* et31x110 - pas106 - other Trust SpaceCam120 */
622static const u8 spacecam2_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300623 0x04, 0x06, 0x01, 0x44,
624 0x04, 0x06, 0x01, 0x00,
625 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
626 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
627 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
628 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
629 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
630 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
631 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
632 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
633 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
634 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
635 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
636 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
637 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
638 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
639 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
640 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
641 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
642 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
643 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
644 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
645 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
646 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
647 0x40, 0x20,
648 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
649 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
650 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
651 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
652 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
653 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
654 0x00, 0x00, 0x00,
655 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
656 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
657 0x00, 0x00, 0x00, 0x00, 0x00,
658 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
659 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
660 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
661 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
662 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
663 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
664 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
665 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
666 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
667 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
668 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
669 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
670 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
671 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
672 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
673 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
674 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
675 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
676 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
677 0x01, 0x60, 0x01, 0x00, 0x00,
678 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
679 0x04, 0x04, 0x01, 0x40,
680 0x04, 0x04, 0x01, 0x00,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300681 I2C0, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05,
682 0x00, 0x00, 0x05, 0x05,
683 I2C0, 0x40, 0x02, 0x11, 0x06,
684 I2C0, 0x40, 0x02, 0x14, 0x00,
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300685 I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300686 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
687 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
688 0x40,
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300689 I2C0, 0x40, 0x02, 0x02, 0x0c, /* pixel clock */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300690 I2C0, 0x40, 0x02, 0x0f, 0x00,
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300691 I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300692 0x10, 0x00, 0x01, 0x01,
693 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
694 0x20, 0x01, 0x60, 0x01,
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300695 I2C0, 0x40, 0x02, 0x05, 0x0f, /* exposure */
696 I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300697 I2C0, 0x40, 0x07, 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00,
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300698 /* gains */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300699 I2C0, 0x40, 0x03, 0x12, 0x04, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300700 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
701 0x10, 0x0e, 0x01, 0x08,
702 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
703 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
704 0xf9,
705 0x10, 0x03, 0x01, 0x00,
706 0x10, 0x0f, 0x02, 0x13, 0x13,
707 0x10, 0x03, 0x01, 0x06,
708 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
709 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
710 0xf9,
711 0x10, 0x0b, 0x01, 0x11,
712 0x10, 0x0d, 0x01, 0x10,
713 0x10, 0x0c, 0x01, 0x14,
714 0x04, 0x06, 0x01, 0x03,
715 0x04, 0x05, 0x01, 0x61,
716 0x04, 0x04, 0x01, 0x00,
717 0, 0, 0
718};
719
720/* nw802 - Conceptronic Video Pro */
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300721static const u8 cvideopro_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300722 0x04, 0x06, 0x01, 0x04,
723 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
724 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
725 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
726 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
727 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
728 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
729 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
730 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
731 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
732 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
733 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
734 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
735 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
736 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
738 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
739 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
740 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
741 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
742 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
743 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
744 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
745 0x40, 0x20,
746 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
747 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
748 0x06, 0x00, 0x02, 0x09, 0x99,
749 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
750 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
751 0x00, 0x00, 0x00, 0x00, 0x00,
752 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
753 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
754 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
755 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
756 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
757 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
758 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
759 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
760 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
761 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
762 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
763 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
764 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
765 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
766 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
767 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
768 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
769 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
770 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
771 0x01, 0xf0, 0x00,
772 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
773 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
774 0x40,
775 0x10, 0x1a, 0x01, 0x03,
776 0x10, 0x00, 0x01, 0xac,
777 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
778 0x10, 0x1b, 0x02, 0x3b, 0x01,
779 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
780 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
781 0x10, 0x1d, 0x02, 0x40, 0x06,
782 0x10, 0x0e, 0x01, 0x08,
783 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
784 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
785 0xdc,
786 0x10, 0x03, 0x01, 0x00,
787 0x10, 0x0f, 0x02, 0x12, 0x12,
788 0x10, 0x03, 0x01, 0x0c,
789 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
790 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
791 0xdc,
792 0x10, 0x0b, 0x01, 0x09,
793 0x10, 0x0d, 0x01, 0x10,
794 0x10, 0x0c, 0x01, 0x2f,
795 0x04, 0x06, 0x01, 0x03,
796 0x04, 0x04, 0x01, 0x00,
797 0, 0, 0
798};
799
800/* nw802 - D-link dru-350c cam */
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300801static const u8 dlink_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300802 0x04, 0x06, 0x01, 0x04,
803 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300804 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
805 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
806 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
807 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
808 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
809 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
810 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
811 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
812 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
813 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
814 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
815 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
816 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
817 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
818 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
819 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
820 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
821 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300822 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
823 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
824 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
825 0x40, 0x20,
826 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
827 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
828 0x06, 0x00, 0x02, 0x09, 0x99,
829 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
830 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
831 0x00, 0x00, 0x00, 0x00, 0x00,
832 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
833 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
834 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
835 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
836 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
837 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
838 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
839 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
840 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
841 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
842 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
843 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
844 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
845 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
846 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
847 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
848 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
849 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82,
850 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
851 0x01, 0xf0, 0x00,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300852 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
853 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
854 0x40,
855 0x10, 0x1a, 0x01, 0x00,
856 0x10, 0x00, 0x01, 0xad,
857 0x00, 0x00, 0x01, 0x08,
858 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
859 0x10, 0x1b, 0x02, 0x00, 0x00,
860 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
861 0x10, 0x1d, 0x08, 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
862 0x10, 0x0e, 0x01, 0x20,
863 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
864 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
865 0xea,
866 0x10, 0x03, 0x01, 0x00,
867 0x10, 0x0f, 0x02, 0x11, 0x11,
868 0x10, 0x03, 0x01, 0x10,
869 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
870 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
871 0xea,
872 0x10, 0x0b, 0x01, 0x19,
873 0x10, 0x0d, 0x01, 0x10,
874 0x10, 0x0c, 0x01, 0x1e,
875 0x04, 0x06, 0x01, 0x03,
876 0x04, 0x04, 0x01, 0x00,
877 0, 0, 0
878};
879
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300880/* 06a5:d001 - nw801 - Sony
881 * Plustek Opticam 500U or ProLink DS3303u (Hitachi HD49322BF) */
882/*fixme: 320x240 only*/
883static const u8 ds3303_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300884 0x05, 0x06, 0x01, 0x04,
885 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
886 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
887 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
888 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
889 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
890 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
891 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
892 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
893 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
894 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
895 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
896 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
897 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
898 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
899 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
900 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
901 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
902 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00,
903 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
904 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
905 0x36, 0x00,
906 0x02, 0x00, 0x12, 0x03, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
907 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50,
908 0x40, 0x20,
909 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
910 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
911 0x06, 0x00, 0x02, 0x09, 0x99,
912 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
913 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
914 0x00, 0x00, 0x00, 0x00, 0x00,
915 0x10, 0x00, 0x40, 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
916 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
917 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
918 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00,
919 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20,
920 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
921 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03,
922 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
923 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
924 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88,
925 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb,
926 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
927 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
928 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
929 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
930 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
931 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
932 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01,
933 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02,
934 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
935 0xf0, 0x00,
936
937 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
938 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81,
939 0x40,
940 0x10, 0x1a, 0x01, 0x15,
941 0x10, 0x00, 0x01, 0x2f,
942 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
943 0x10, 0x1b, 0x02, 0x00, 0x00,
944 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
945 0x10, 0x26, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
946 0x10, 0x24, 0x02, 0x40, 0x06,
947 0x10, 0x0e, 0x01, 0x08,
948 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
949 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
950 0xf9,
951 0x10, 0x03, 0x01, 0x00,
952 0x10, 0x0f, 0x02, 0x16, 0x16,
953 0x10, 0x03, 0x01, 0x0c,
954 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
955 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
956 0xf9,
957 0x10, 0x0b, 0x01, 0x26,
958 0x10, 0x0d, 0x01, 0x10,
959 0x10, 0x0c, 0x01, 0x1c,
960 0x05, 0x06, 0x01, 0x03,
961 0x05, 0x04, 0x01, 0x00,
962 0, 0, 0
963};
964
Jean-François Moinec3ee1422011-03-22 05:16:11 -0300965/* 06a5:d001 - nw802 - Panasonic
966 * GP-KR651US (Philips TDA8786) */
967static const u8 kr651_start_1[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -0300968 0x04, 0x06, 0x01, 0x04,
969 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48,
970 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
971 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
972 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
973 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
974 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
975 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
976 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
977 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
978 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
979 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
980 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
981 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
982 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
983 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
984 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
985 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
986 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
987 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
988 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
989 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
990 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
991 0x40, 0x20,
992 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
993 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
994 0x06, 0x00, 0x02, 0x09, 0x99,
995 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
996 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
997 0x00, 0x00, 0x00, 0x00, 0x00,
998 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
999 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1000 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1001 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1002 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1003 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1004 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1005 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1006 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1007 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1008 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1009 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1010 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1011 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1012 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1013 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1014 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1015 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1016 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1017 0x01, 0xf0, 0x00,
1018 0, 0, 0
1019};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001020static const u8 kr651_start_qvga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001021 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1022 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1023 0x40,
1024 0x10, 0x1a, 0x01, 0x03,
1025 0x10, 0x00, 0x01, 0xac,
1026 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1027 0x10, 0x1b, 0x02, 0x00, 0x00,
1028 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
1029 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1030 0x10, 0x1d, 0x02, 0x28, 0x01,
1031 0, 0, 0
1032};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001033static const u8 kr651_start_vga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001034 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1035 0x00, 0xf0, 0x30, 0x03, 0x01, 0x82, 0x82, 0x98,
1036 0x80,
1037 0x10, 0x1a, 0x01, 0x03,
1038 0x10, 0x00, 0x01, 0xa0,
1039 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001040 0x10, 0x1b, 0x02, 0x00, 0x00,
1041 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001042 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1043 0x10, 0x1d, 0x02, 0x68, 0x00,
1044};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001045static const u8 kr651_start_2[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001046 0x10, 0x0e, 0x01, 0x08,
1047 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1048 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1049 0xdc,
1050 0x10, 0x03, 0x01, 0x00,
1051 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1052 0x10, 0x03, 0x01, 0x0c,
1053 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1054 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1055 0xdc,
1056 0x10, 0x0b, 0x01, 0x10,
1057 0x10, 0x0d, 0x01, 0x10,
1058 0x10, 0x0c, 0x01, 0x2d,
1059 0x04, 0x06, 0x01, 0x03,
1060 0x04, 0x04, 0x01, 0x00,
1061 0, 0, 0
1062};
1063
1064/* nw802 - iRez Kritter cam */
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001065static const u8 kritter_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001066 0x04, 0x06, 0x01, 0x06,
1067 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48,
1068 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19,
1069 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1070 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28,
1071 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1072 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1073 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1074 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1075 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1076 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1077 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1078 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1079 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1080 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1081 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1082 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30,
1083 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1084 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1085 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1086 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1087 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1088 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1089 0x40, 0x20,
1090 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1091 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1092 0x06, 0x00, 0x02, 0x09, 0x99,
1093 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1094 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1095 0x00, 0x00, 0x00, 0x00, 0x00,
1096 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1097 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1098 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1099 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1100 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1101 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1102 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1103 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1104 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1105 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1106 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1107 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1108 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1109 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1110 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1111 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1112 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82,
1114 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1115 0x01, 0xf0, 0x00,
1116 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
1117 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1118 0x40,
1119 0x10, 0x1a, 0x01, 0x03,
1120 0x10, 0x00, 0x01, 0xaf,
1121 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1122 0x10, 0x1b, 0x02, 0x3b, 0x01,
1123 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1124 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1125 0x10, 0x1d, 0x02, 0x00, 0x00,
1126 0x10, 0x0e, 0x01, 0x08,
1127 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1128 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1129 0xcb,
1130 0x10, 0x03, 0x01, 0x00,
1131 0x10, 0x0f, 0x02, 0x0d, 0x0d,
1132 0x10, 0x03, 0x01, 0x02,
1133 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1134 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1135 0xcb,
1136 0x10, 0x0b, 0x01, 0x17,
1137 0x10, 0x0d, 0x01, 0x10,
1138 0x10, 0x0c, 0x01, 0x1e,
1139 0x04, 0x06, 0x01, 0x03,
1140 0x04, 0x04, 0x01, 0x00,
1141 0, 0, 0
1142};
1143
1144/* nw802 - Mustek Wcam 300 mini */
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001145static const u8 mustek_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001146 0x04, 0x06, 0x01, 0x04,
1147 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
1148 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1149 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1150 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
1151 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1152 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1153 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1154 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1155 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1156 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1157 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1158 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1159 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1160 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1161 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1162 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1163 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
1164 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1165 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
1166 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06,
1167 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1168 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1169 0x40, 0x20,
1170 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1171 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1172 0x06, 0x00, 0x02, 0x09, 0x99,
1173 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1175 0x00, 0x00, 0x00, 0x00, 0x00,
1176 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00,
1177 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1178 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1179 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
1180 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
1181 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1182 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1183 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1184 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1185 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1186 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1187 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1188 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1189 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1190 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1191 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1192 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1193 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82,
1194 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1195 0x01, 0xf0, 0x00,
1196 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1197 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1198 0x40,
1199 0x10, 0x1a, 0x01, 0x00,
1200 0x10, 0x00, 0x01, 0xad,
1201 0x00, 0x00, 0x01, 0x08,
1202 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1203 0x10, 0x1b, 0x02, 0x00, 0x00,
1204 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1205 0x10, 0x1d, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
1206 0x10, 0x0e, 0x01, 0x0f,
1207 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1208 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1209 0xff,
1210 0x10, 0x0f, 0x02, 0x11, 0x11,
1211 0x10, 0x03, 0x01, 0x0c,
1212 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1213 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1214 0xff,
1215 0x10, 0x0b, 0x01, 0x1c,
1216 0x10, 0x0d, 0x01, 0x1a,
1217 0x10, 0x0c, 0x01, 0x34,
1218 0x04, 0x05, 0x01, 0x61,
1219 0x04, 0x04, 0x01, 0x40,
1220 0x04, 0x06, 0x01, 0x03,
1221 0, 0, 0
1222};
1223
1224/* nw802 - Scope USB Microscope M2 (ProScope) (Hitachi HD49322BF) */
1225static const u8 proscope_init_1[] = {
1226 0x04, 0x05, 0x01, 0x21,
1227 0x04, 0x04, 0x01, 0x01,
1228 0x04, 0x06, 0x01, 0x04,
1229 0x00, 0x00, 0x40, 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04,
1230 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1231 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1232 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4,
1233 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1234 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86,
1235 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1236 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1237 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6,
1238 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1239 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1240 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1241 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34,
1242 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1243 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8,
1244 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1245 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00,
1246 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1247 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94,
1248 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
1249 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1250 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1251 0x40, 0x20,
1252 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1253 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1254 0x06, 0x00, 0x02, 0x09, 0x99,
1255 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1257 0x00, 0x00, 0x00, 0x00, 0x00,
1258 0x10, 0x00, 0x40, 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1259 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
1260 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
1261 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01,
1262 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00,
1263 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1264 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1265 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1266 0x10, 0x40, 0x40, 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f,
1267 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4,
1268 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1269 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1270 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1271 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1272 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1273 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1274 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f,
1275 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82,
1276 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1277 0x01, 0xf0, 0x00,
1278 0, 0, 0
1279};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001280static const u8 proscope_start_qvga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001281 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1282 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1283 0x40,
1284 0x10, 0x1a, 0x01, 0x06,
1285 0x00, 0x03, 0x02, 0xf9, 0x02,
1286 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1287 0x10, 0x1b, 0x02, 0x00, 0x00,
1288 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1289 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1290 0x10, 0x0e, 0x01, 0x10,
1291 0, 0, 0
1292};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001293static const u8 proscope_start_vga[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001294 0x00, 0x03, 0x02, 0xf9, 0x02,
1295 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1296 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1297 0x00, 0xf0, 0x16, 0x00, 0x00, 0x82, 0x84, 0x00,
1298 0x80,
1299 0x10, 0x1a, 0x01, 0x06,
1300 0x10, 0x00, 0x01, 0xa1,
1301 0x10, 0x1b, 0x02, 0x00, 0x00,
1302 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1303 0x10, 0x11, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1304 0x10, 0x0e, 0x01, 0x10,
1305 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1306 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1307 0xf9,
1308 0x10, 0x03, 0x01, 0x00,
1309 0, 0, 0
1310};
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001311static const u8 proscope_start_2[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001312 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1313 0x10, 0x03, 0x01, 0x0c,
1314 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1315 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1316 0xf9,
1317 0x10, 0x0b, 0x01, 0x0b,
1318 0x10, 0x0d, 0x01, 0x10,
1319 0x10, 0x0c, 0x01, 0x1b,
1320 0x04, 0x06, 0x01, 0x03,
1321 0x04, 0x05, 0x01, 0x21,
1322 0x04, 0x04, 0x01, 0x00,
1323 0, 0, 0
1324};
1325
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001326/* nw800 - hv7121b? (seems pas106) - Divio Chicony TwinkleCam */
1327static const u8 twinkle_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001328 0x04, 0x06, 0x01, 0x44,
1329 0x04, 0x06, 0x01, 0x00,
1330 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
1331 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
1332 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1333 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
1334 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1335 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1336 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1337 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1338 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1339 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1340 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1341 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1342 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1343 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1344 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1345 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1346 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
1347 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
1348 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
1349 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
1350 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1351 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1352 0x40, 0x20,
1353 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1354 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
1355 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
1356 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1359 0x00, 0x00, 0x00,
1360 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1361 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1362 0x00, 0x00, 0x00, 0x00, 0x00,
1363 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
1364 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08,
1365 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1366 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
1367 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1368 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1369 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06,
1370 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80,
1371 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1372 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1373 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1374 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1375 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1376 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1377 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1378 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1379 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
1381 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
1382 0x01, 0x60, 0x01, 0x00, 0x00,
1383
1384 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001385 0x04, 0x04, 0x01, 0x10,
1386 0x04, 0x04, 0x01, 0x00,
1387 0x04, 0x05, 0x01, 0x61,
1388 0x04, 0x04, 0x01, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001389 I2C0, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1390 0x00, 0x00, 0x00, 0x0a,
1391 I2C0, 0x40, 0x02, 0x11, 0x06,
1392 I2C0, 0x40, 0x02, 0x14, 0x00,
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001393 I2C0, 0x40, 0x02, 0x13, 0x01, /* i2c end */
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001394 I2C0, 0x40, 0x02, 0x07, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001395 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001396 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001397 0x40,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001398 I2C0, 0x40, 0x02, 0x02, 0x0c,
1399 I2C0, 0x40, 0x02, 0x13, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001400 0x10, 0x00, 0x01, 0x01,
1401 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
1402 0x20, 0x01, 0x60, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001403 I2C0, 0x40, 0x02, 0x05, 0x0f,
1404 I2C0, 0x40, 0x02, 0x13, 0x01,
1405 I2C0, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x17,
1406 I2C0, 0x40, 0x03, 0x12, 0x00, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001407 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001408 I2C0, 0x40, 0x02, 0x12, 0x00,
1409 I2C0, 0x40, 0x02, 0x0e, 0x00,
1410 I2C0, 0x40, 0x02, 0x11, 0x06,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001411 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1412 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1413 0xf9,
1414 0x10, 0x03, 0x01, 0x00,
1415 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1416 0x10, 0x03, 0x01, 0x06,
1417 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1418 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1419 0xf9,
1420 0x10, 0x0b, 0x01, 0x19,
1421 0x10, 0x0d, 0x01, 0x10,
1422 0x10, 0x0c, 0x01, 0x0d,
1423 0x04, 0x06, 0x01, 0x03,
1424 0x04, 0x05, 0x01, 0x61,
1425 0x04, 0x04, 0x01, 0x41,
1426 0, 0, 0
1427};
1428
1429/* et31x110 DSB-C110 */
1430static const u8 dsbc110_init[] = {
1431 0x04, 0x05, 0x01, 0x61,
1432 0x04, 0x04, 0x01, 0x01,
1433 0x04, 0x06, 0x01, 0x04,
1434 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
1435 0x05, 0x05, 0x01, 0x00,
1436
1437 0x04, 0x06, 0x01, 0x44,
1438 0x04, 0x06, 0x01, 0x00,
1439 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
1440 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
1441 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1442 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
1443 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1444 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1445 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1446 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1447 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1448 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1449 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1450 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1451 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1452 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1453 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1454 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1455 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
1456 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
1457 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
1458 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
1459 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1460 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1461 0x40, 0x20,
1462 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1463 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
1464 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
1465 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1468 0x00, 0x00, 0x00,
1469 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1470 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1471 0x00, 0x00, 0x00, 0x00, 0x00,
1472 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
1473 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08,
1474 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1475 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
1476 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1477 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1478 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06,
1479 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80,
1480 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1481 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1482 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1483 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1484 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1485 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1486 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1487 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1488 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1489 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
1490 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
1491 0x01, 0x60, 0x01, 0x00, 0x00,
1492 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1493 0x04, 0x04, 0x01, 0x10,
1494 0x04, 0x04, 0x01, 0x00,
1495 0x04, 0x05, 0x01, 0x61,
1496 0x04, 0x04, 0x01, 0x01,
1497#if 1
1498 I2C0, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1499 0x00, 0x00, 0x00, 0x0a,
1500 I2C0, 0x40, 0x02, 0x11, 0x06,
1501 I2C0, 0x40, 0x02, 0x14, 0x00,
1502 I2C0, 0x40, 0x02, 0x13, 0x01,
1503 I2C0, 0x40, 0x02, 0x07, 0x01,
1504#else
1505 0x06, 0x00, 0x0b, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
1506 0x00, 0x00, 0x0a,
1507 0x06, 0x00, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1508 0x00, 0x00, 0x00, 0x0a,
1509 0x05, 0x02, 0x02, 0x0c, 0x40,
1510 0x05, 0x05, 0x01, 0x01,
1511 0x06, 0x00, 0x01, 0x06,
1512 0x06, 0x00, 0x02, 0x11, 0x06,
1513 0x05, 0x02, 0x02, 0x02, 0x40,
1514 0x05, 0x05, 0x01, 0x01,
1515 0x06, 0x00, 0x01, 0x00,
1516 0x06, 0x00, 0x02, 0x14, 0x00,
1517 0x05, 0x02, 0x02, 0x02, 0x40,
1518 0x05, 0x05, 0x01, 0x01,
1519 0x06, 0x00, 0x01, 0x01,
1520 0x06, 0x00, 0x02, 0x13, 0x01,
1521 0x05, 0x02, 0x02, 0x02, 0x40,
1522 0x05, 0x05, 0x01, 0x01,
1523 0x06, 0x00, 0x01, 0x01,
1524 0x06, 0x00, 0x02, 0x07, 0x01,
1525 0x05, 0x02, 0x02, 0x02, 0x40,
1526 0x05, 0x05, 0x01, 0x01,
1527#endif
1528 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
1529 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xe4,
1530 0x40,
1531#if 1
1532 I2C0, 0x40, 0x02, 0x02, 0x0c,
1533 I2C0, 0x40, 0x02, 0x13, 0x01,
1534#else
1535 0x06, 0x00, 0x01, 0x1c,
1536 0x06, 0x00, 0x02, 0x02, 0x1c,
1537 0x05, 0x02, 0x02, 0x02, 0x40,
1538 0x05, 0x05, 0x01, 0x01,
1539 0x06, 0x00, 0x01, 0x01,
1540 0x06, 0x00, 0x02, 0x13, 0x01,
1541 0x05, 0x02, 0x02, 0x02, 0x40,
1542 0x05, 0x05, 0x01, 0x01,
1543#endif
1544 0x10, 0x00, 0x01, 0x01,
1545 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
1546 0xf0, 0x00, 0x40, 0x01,
1547#if 1
1548 I2C0, 0x40, 0x02, 0x05, 0x23,
1549 I2C0, 0x40, 0x02, 0x13, 0x01,
1550 I2C0, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x00,
1551 I2C0, 0x40, 0x03, 0x12, 0x00, 0x01,
1552#else
1553 0x06, 0x00, 0x01, 0x24,
1554 0x06, 0x00, 0x02, 0x05, 0x24,
1555 0x05, 0x02, 0x02, 0x02, 0x40,
1556 0x05, 0x05, 0x01, 0x01,
1557 0x06, 0x00, 0x01, 0x01,
1558 0x06, 0x00, 0x02, 0x13, 0x01,
1559 0x05, 0x02, 0x02, 0x02, 0x40,
1560 0x05, 0x05, 0x01, 0x01,
1561 0x06, 0x00, 0x07, 0x06, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x00,
1562 0x06, 0x00, 0x08, 0x08, 0x06, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x00,
1563 0x05, 0x02, 0x02, 0x08, 0x40,
1564 0x05, 0x05, 0x01, 0x01,
1565 0x06, 0x00, 0x02, 0x00, 0x01,
1566 0x06, 0x00, 0x03, 0x12, 0x00, 0x01,
1567 0x05, 0x02, 0x02, 0x03, 0x40,
1568 0x05, 0x05, 0x01, 0x01,
1569#endif
1570 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1571#if 1
1572 I2C0, 0x40, 0x02, 0x12, 0x00,
1573 I2C0, 0x40, 0x02, 0x0e, 0x00,
1574 I2C0, 0x40, 0x02, 0x11, 0x06,
1575#else
1576 0x06, 0x00, 0x01, 0x00,
1577 0x06, 0x00, 0x02, 0x12, 0x00,
1578 0x05, 0x02, 0x02, 0x02, 0x40,
1579 0x05, 0x05, 0x01, 0x01,
1580 0x06, 0x00, 0x01, 0x00,
1581 0x06, 0x00, 0x02, 0x0e, 0x00,
1582 0x05, 0x02, 0x02, 0x02, 0x40,
1583 0x05, 0x05, 0x01, 0x01,
1584 0x06, 0x00, 0x01, 0x06,
1585 0x06, 0x00, 0x02, 0x11, 0x06,
1586 0x05, 0x02, 0x02, 0x02, 0x40,
1587 0x05, 0x05, 0x01, 0x01,
1588#endif
1589 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1590 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1591 0xf9,
1592 0x10, 0x03, 0x01, 0x00,
1593 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1594 0x10, 0x03, 0x01, 0x06,
1595 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1596 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1597 0xf9,
1598 0x10, 0x0b, 0x01, 0x14,
1599 0x10, 0x0d, 0x01, 0x10,
1600 0x10, 0x0c, 0x01, 0x1d,
1601 0x04, 0x06, 0x01, 0x03,
1602 0x04, 0x05, 0x01, 0x61,
1603 0x04, 0x04, 0x01, 0x41,
1604};
1605
1606/* nw802 dvc-v6 */
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001607static const u8 dvcv6_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001608 0x04, 0x06, 0x01, 0x06,
1609 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
1610 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1611 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1612 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
1613 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1614 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1615 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1616 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1617 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1618 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1619 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1620 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1621 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1622 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1623 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1624 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
1625 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1626 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1627 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1628 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1629 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1630 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1631 0x40, 0x20,
1632 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1633 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1634 0x06, 0x00, 0x02, 0x09, 0x99,
1635 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1636 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1637 0x00, 0x00, 0x00, 0x00, 0x00,
1638 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1639 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1640 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1641 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1642 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1643 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1644 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1645 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1646 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1647 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1648 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1649 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1650 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1651 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1652 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1653 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1654 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1655 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1656 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1657 0x01, 0xf0, 0x00,
1658 0x00, 0x03, 0x02, 0x94, 0x03,
1659 0x00, 0x1d, 0x04, 0x0a, 0x01, 0x28, 0x07,
1660 0x00, 0x7b, 0x02, 0xe0, 0x00,
1661 0x10, 0x8d, 0x01, 0x00,
1662 0x00, 0x09, 0x04, 0x1e, 0x00, 0x0c, 0x02,
1663 0x00, 0x91, 0x02, 0x0b, 0x02,
1664 0x10, 0x00, 0x01, 0xaf,
1665 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8f, 0x3c, 0x50, 0x00, 0x00, 0x00,
1666 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1667 0x40,
1668 0x10, 0x1a, 0x01, 0x02,
1669 0x10, 0x00, 0x01, 0xaf,
1670 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1671 0x10, 0x1b, 0x02, 0x07, 0x01,
1672 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1673 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1674 0x10, 0x1d, 0x02, 0x40, 0x06,
1675 0x10, 0x0e, 0x01, 0x08,
1676 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1677 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1678 0xdc,
1679 0x10, 0x03, 0x01, 0x00,
1680 0x10, 0x0f, 0x02, 0x12, 0x12,
1681 0x10, 0x03, 0x01, 0x11,
1682 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1683 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1684 0xdc,
1685 0x10, 0x0b, 0x01, 0x16,
1686 0x10, 0x0d, 0x01, 0x10,
1687 0x10, 0x0c, 0x01, 0x1a,
1688 0x04, 0x06, 0x01, 0x03,
1689 0x04, 0x04, 0x01, 0x00,
1690};
1691
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001692static const u8 *webcam_start[] = {
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001693 [Generic800] = nw800_init,
1694 [SpaceCam] = spacecam_init,
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001695 [SpaceCam2] = spacecam2_start,
1696 [Cvideopro] = cvideopro_start,
1697 [Dlink350c] = dlink_start,
1698 [DS3303u] = ds3303_start,
1699 [Kr651us] = kr651_start_1,
1700 [Kritter] = kritter_start,
1701 [Mustek300] = mustek_start,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001702 [Proscope] = proscope_init_1,
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001703 [Twinkle] = twinkle_start,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001704 [DsbC110] = dsbc110_init,
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001705 [DvcV6] = dvcv6_start,
1706 [P35u] = nw801_start_1,
1707 [Generic802] = nw802_start,
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001708};
1709
1710/* -- write a register -- */
1711static void reg_w(struct gspca_dev *gspca_dev,
1712 u16 index,
1713 const u8 *data,
1714 int len)
1715{
1716 struct usb_device *dev = gspca_dev->dev;
1717 int ret;
1718
1719 if (gspca_dev->usb_err < 0)
1720 return;
1721 if (len == 1)
1722 PDEBUG(D_USBO, "SET 00 0000 %04x %02x", index, *data);
1723 else
1724 PDEBUG(D_USBO, "SET 00 0000 %04x %02x %02x ...",
1725 index, *data, data[1]);
1726 memcpy(gspca_dev->usb_buf, data, len);
1727 ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1728 0x00,
1729 USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1730 0x00, /* value */
1731 index,
1732 gspca_dev->usb_buf,
1733 len,
1734 500);
1735 if (ret < 0) {
1736 err("reg_w err %d", ret);
1737 gspca_dev->usb_err = ret;
1738 }
1739}
1740
1741/* -- read registers in usb_buf -- */
1742static void reg_r(struct gspca_dev *gspca_dev,
1743 u16 index,
1744 int len)
1745{
1746 struct usb_device *dev = gspca_dev->dev;
1747 int ret;
1748
1749 if (gspca_dev->usb_err < 0)
1750 return;
1751 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1752 0x00,
1753 USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1754 0x00, index,
1755 gspca_dev->usb_buf, len, 500);
1756 if (ret < 0) {
1757 err("reg_r err %d", ret);
1758 gspca_dev->usb_err = ret;
1759 return;
1760 }
1761 if (len == 1)
1762 PDEBUG(D_USBI, "GET 00 0000 %04x %02x",
1763 index, gspca_dev->usb_buf[0]);
1764 else
1765 PDEBUG(D_USBI, "GET 00 0000 %04x %02x %02x ..",
1766 index, gspca_dev->usb_buf[0],
1767 gspca_dev->usb_buf[1]);
1768}
1769
1770static void i2c_w(struct gspca_dev *gspca_dev,
1771 u8 i2c_addr,
1772 const u8 *data,
1773 int len)
1774{
1775 u8 val[2];
1776 int i;
1777
1778 reg_w(gspca_dev, 0x0600, data + 1, len - 1);
1779 reg_w(gspca_dev, 0x0600, data, len);
1780 val[0] = len;
1781 val[1] = i2c_addr;
1782 reg_w(gspca_dev, 0x0502, val, 2);
1783 val[0] = 0x01;
1784 reg_w(gspca_dev, 0x0501, val, 1);
1785 for (i = 5; --i >= 0; ) {
1786 msleep(4);
1787 reg_r(gspca_dev, 0x0505, 1);
1788 if (gspca_dev->usb_err < 0)
1789 return;
1790 if (gspca_dev->usb_buf[0] == 0)
1791 return;
1792 }
1793 gspca_dev->usb_err = -ETIME;
1794}
1795
1796static void reg_w_buf(struct gspca_dev *gspca_dev,
1797 const u8 *cmd)
1798{
1799 u16 reg;
1800 int len;
1801
1802 for (;;) {
1803 reg = *cmd++ << 8;
1804 reg += *cmd++;
1805 len = *cmd++;
1806 if (len == 0)
1807 break;
1808 if (cmd[-3] != I2C0)
1809 reg_w(gspca_dev, reg, cmd, len);
1810 else
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001811 i2c_w(gspca_dev, reg, cmd, len);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001812 cmd += len;
1813 }
1814}
1815
1816static int swap_6bits(int v)
1817{
1818 int r, i;
1819
1820 r = 0;
1821 for (i = 0; i < 6; i++) {
1822 r <<= 1;
1823 if (v & 1)
1824 r++;
1825 v >>= 1;
1826 }
1827 return r;
1828}
1829
1830static void setgain(struct gspca_dev *gspca_dev)
1831{
1832 struct sd *sd = (struct sd *) gspca_dev;
1833 u8 val, v[2];
1834
1835 val = sd->ctrls[GAIN].val >> 1; /* 0 - 63 -> 0 - 31 */
1836 reg_w(gspca_dev, 0x100e, &val, 1); /* AE Y gain */
1837
1838 switch (sd->webcam) {
1839 case P35u:
1840 /* Note the control goes from 0-255 not 0-127, but anything
1841 above 127 just means amplifying noise */
1842 val = sd->ctrls[GAIN].val << 1; /* 0 - 63 -> 0 - 127 */
1843 reg_w(gspca_dev, 0x1026, &val, 1);
1844 break;
1845 case Kr651us:
1846 /* 0 - 63 -> 0 - 0x37 */
1847 val = (sd->ctrls[GAIN].val * 0x37) / 63;
1848 val = swap_6bits(val);
1849 v[0] = val << 3;
1850 v[1] = val >> 5;
1851 reg_w(gspca_dev, 0x101d, v, 2); /* SIF reg0/1 (AGC) */
1852 break;
1853 }
1854}
1855
1856static void setexposure(struct gspca_dev *gspca_dev)
1857{
1858 struct sd *sd = (struct sd *) gspca_dev;
1859 u8 v[2];
1860
1861 switch (sd->webcam) {
1862 case P35u:
1863 v[0] = (sd->ctrls[EXPOSURE].val << 3) | 0x01;
1864 reg_w(gspca_dev, 0x1019, v, 1);
1865 break;
1866 case Kr651us:
1867 v[0] = sd->ctrls[EXPOSURE].val;
1868 v[1] = sd->ctrls[EXPOSURE].val >> 8;
1869 reg_w(gspca_dev, 0x101b, v, 2);
1870 break;
1871 }
1872}
1873
1874static void setautogain(struct gspca_dev *gspca_dev)
1875{
1876 struct sd *sd = (struct sd *) gspca_dev;
1877 int w, h;
1878
1879 if (gspca_dev->ctrl_dis & (1 << AUTOGAIN))
1880 return;
1881 if (!sd->ctrls[AUTOGAIN].val) {
1882 sd->ag_cnt = -1;
1883 return;
1884 }
1885 sd->ag_cnt = AG_CNT_START;
1886
1887 reg_r(gspca_dev, 0x1004, 1);
1888 if (gspca_dev->usb_buf[0] & 0x04) { /* if AE_FULL_FRM */
1889 sd->ae_res = gspca_dev->width * gspca_dev->height;
1890 } else { /* get the AE window size */
1891 reg_r(gspca_dev, 0x1011, 8);
1892 w = (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0]
1893 - (gspca_dev->usb_buf[3] << 8) - gspca_dev->usb_buf[2];
1894 h = (gspca_dev->usb_buf[5] << 8) + gspca_dev->usb_buf[4]
1895 - (gspca_dev->usb_buf[7] << 8) - gspca_dev->usb_buf[6];
1896 sd->ae_res = h * w;
1897 if (sd->ae_res == 0)
1898 sd->ae_res = gspca_dev->width * gspca_dev->height;
1899 }
1900}
1901
1902/* this function is called at probe time */
1903static int sd_config(struct gspca_dev *gspca_dev,
1904 const struct usb_device_id *id)
1905{
1906 struct sd *sd = (struct sd *) gspca_dev;
1907
1908 if ((unsigned) webcam >= NWEBCAMS)
1909 webcam = 0;
1910 sd->webcam = webcam;
1911 gspca_dev->cam.reverse_alts = 1;
1912 gspca_dev->cam.ctrls = sd->ctrls;
1913 sd->ag_cnt = -1;
1914 return 0;
1915}
1916
1917static int nw802_test_reg(struct gspca_dev *gspca_dev,
1918 u16 index,
1919 u8 value)
1920{
1921 /* write the value */
1922 reg_w(gspca_dev, index, &value, 1);
1923
1924 /* read it */
1925 reg_r(gspca_dev, index, 1);
1926
1927 return gspca_dev->usb_buf[0] == value;
1928}
1929
1930/* this function is called at probe and resume time */
1931static int sd_init(struct gspca_dev *gspca_dev)
1932{
1933 struct sd *sd = (struct sd *) gspca_dev;
1934
1935 /*
1936 * Autodetect sequence inspired from some log.
1937 * We try to detect what registers exist or not.
1938 * If 0x0500 does not exist => NW802
1939 * If it does, test 0x109b. If it doesn't exist,
1940 * then it's a NW801. Else, a NW800
1941 */
1942 if (!nw802_test_reg(gspca_dev, 0x0500, 0x55)) {
1943 sd->bridge = BRIDGE_NW802;
1944 if (sd->webcam == Generic800)
1945 sd->webcam = Generic802;
1946 } else if (!nw802_test_reg(gspca_dev, 0x109b, 0xaa)) {
1947 sd->bridge = BRIDGE_NW801;
1948 if (sd->webcam == Generic800)
1949 sd->webcam = P35u;
1950 }
1951 PDEBUG(D_PROBE, "Bridge nw80%d", sd->bridge);
1952
1953 if (sd->bridge == BRIDGE_NW800) {
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001954 gspca_dev->cam.cam_mode = cif_mode;
1955 gspca_dev->cam.nmodes = ARRAY_SIZE(cif_mode);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001956 } else {
1957 gspca_dev->cam.cam_mode = vga_mode;
1958 switch (sd->webcam) {
1959 case Generic802:
1960 case Kr651us:
1961 case Proscope:
1962 case P35u:
1963 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
1964 break;
1965 default:
1966 gspca_dev->cam.nmodes = 1; /* qvga only */
1967 break;
1968 }
1969 }
1970 switch (sd->webcam) {
1971 case P35u:
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001972/* sd->ctrls[EXPOSURE].max = 9;
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001973 * sd->ctrls[EXPOSURE].def = 1; */
1974 break;
1975 case Kr651us:
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001976 sd->ctrls[EXPOSURE].max = 315;
1977 sd->ctrls[EXPOSURE].def = 150;
1978 break;
1979 default:
1980 gspca_dev->ctrl_dis = ~(1 << GAIN);
1981 break;
1982 }
1983
1984 return gspca_dev->usb_err;
1985}
1986
1987/* -- start the camera -- */
1988static int sd_start(struct gspca_dev *gspca_dev)
1989{
1990 struct sd *sd = (struct sd *) gspca_dev;
1991 const u8 *cmd;
1992
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001993 cmd = webcam_start[sd->webcam];
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001994 reg_w_buf(gspca_dev, cmd);
1995 switch (sd->webcam) {
1996 case P35u:
1997 if (gspca_dev->width == 320)
Jean-François Moinec3ee1422011-03-22 05:16:11 -03001998 reg_w_buf(gspca_dev, nw801_start_qvga);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03001999 else
Jean-François Moinec3ee1422011-03-22 05:16:11 -03002000 reg_w_buf(gspca_dev, nw801_start_vga);
2001 reg_w_buf(gspca_dev, nw801_start_2);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03002002 break;
2003 case Kr651us:
2004 if (gspca_dev->width == 320)
Jean-François Moinec3ee1422011-03-22 05:16:11 -03002005 reg_w_buf(gspca_dev, kr651_start_qvga);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03002006 else
Jean-François Moinec3ee1422011-03-22 05:16:11 -03002007 reg_w_buf(gspca_dev, kr651_start_vga);
2008 reg_w_buf(gspca_dev, kr651_start_2);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03002009 break;
2010 case Proscope:
2011 if (gspca_dev->width == 320)
Jean-François Moinec3ee1422011-03-22 05:16:11 -03002012 reg_w_buf(gspca_dev, proscope_start_qvga);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03002013 else
Jean-François Moinec3ee1422011-03-22 05:16:11 -03002014 reg_w_buf(gspca_dev, proscope_start_vga);
2015 reg_w_buf(gspca_dev, proscope_start_2);
Jean-François Moinece5b2ac2011-03-14 08:49:28 -03002016 break;
2017 }
2018
2019 setgain(gspca_dev);
2020 setexposure(gspca_dev);
2021 setautogain(gspca_dev);
2022 return gspca_dev->usb_err;
2023}
2024
2025static void sd_stopN(struct gspca_dev *gspca_dev)
2026{
2027 struct sd *sd = (struct sd *) gspca_dev;
2028 u8 value;
2029
2030 /* 'go' off */
2031 if (sd->bridge != BRIDGE_NW801) {
2032 value = 0x02;
2033 reg_w(gspca_dev, 0x0406, &value, 1);
2034 }
2035
2036 /* LED off */
2037 switch (sd->webcam) {
2038 case Cvideopro:
2039 case Kr651us:
2040 case DvcV6:
2041 case Kritter:
2042 value = 0xff;
2043 break;
2044 case Dlink350c:
2045 value = 0x21;
2046 break;
2047 case SpaceCam:
2048 case SpaceCam2:
2049 case Proscope:
2050 case Twinkle:
2051 value = 0x01;
2052 break;
2053 default:
2054 return;
2055 }
2056 reg_w(gspca_dev, 0x0404, &value, 1);
2057}
2058
2059static void sd_pkt_scan(struct gspca_dev *gspca_dev,
2060 u8 *data, /* isoc packet */
2061 int len) /* iso packet length */
2062{
2063 /*
2064 * frame header = '00 00 hh ww ss xx ff ff'
2065 * with:
2066 * - 'hh': height / 4
2067 * - 'ww': width / 4
2068 * - 'ss': frame sequence number c0..dd
2069 */
2070 if (data[0] == 0x00 && data[1] == 0x00
2071 && data[6] == 0xff && data[7] == 0xff) {
2072 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
2073 gspca_frame_add(gspca_dev, FIRST_PACKET, data + 8, len - 8);
2074 } else {
2075 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
2076 }
2077}
2078
2079static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val)
2080{
2081 struct sd *sd = (struct sd *) gspca_dev;
2082
2083 sd->ctrls[AUTOGAIN].val = val;
2084 if (val)
2085 gspca_dev->ctrl_inac = (1 << GAIN) | (1 << EXPOSURE);
2086 else
2087 gspca_dev->ctrl_inac = 0;
2088 if (gspca_dev->streaming)
2089 setautogain(gspca_dev);
2090 return gspca_dev->usb_err;
2091}
2092
2093static void do_autogain(struct gspca_dev *gspca_dev)
2094{
2095 struct sd *sd = (struct sd *) gspca_dev;
2096 int luma;
2097 int gain, shutter;
2098
2099 if (sd->ag_cnt < 0)
2100 return;
2101 if (--sd->ag_cnt >= 0)
2102 return;
2103 sd->ag_cnt = AG_CNT_START;
2104
2105 /* get the average luma */
2106 reg_r(gspca_dev, sd->bridge == BRIDGE_NW801 ? 0x080d : 0x080c, 4);
2107 luma = (gspca_dev->usb_buf[3] << 24) + (gspca_dev->usb_buf[2] << 16)
2108 + (gspca_dev->usb_buf[1] << 8) + gspca_dev->usb_buf[0];
2109 luma /= sd->ae_res;
2110
2111 if (sd->webcam == P35u) {
2112 u8 clock;
2113
2114 if (luma > 92 && luma < 108)
2115 return; /* fine */
2116 clock = sd->ctrls[EXPOSURE].val;
2117 gain = sd->ctrls[GAIN].val;
2118 if (luma < 100) {
2119 if (luma < 70 && clock > 0)
2120 clock--;
2121 if (gain > 98 && clock > 0)
2122 clock--;
2123 if (gain <= 50)
2124 gain += 3;
2125 } else {
2126 if (luma > 150 && clock < 9)
2127 clock++;
2128 if (gain < 12 && clock < 9)
2129 clock++;
2130 if (gain >= 5)
2131 gain -= 3;
2132 }
2133 if (gain != sd->ctrls[GAIN].val) {
2134 sd->ctrls[GAIN].val = gain;
2135 setgain(gspca_dev);
2136 }
2137 if (clock != sd->ctrls[EXPOSURE].val) {
2138 sd->ctrls[EXPOSURE].val = clock;
2139 setexposure(gspca_dev);
2140 }
2141 return;
2142 }
2143
2144 /* kr651us */
2145 if (luma > 95 && luma < 105)
2146 return; /* fine */
2147 gain = sd->ctrls[GAIN].val;
2148 shutter = sd->ctrls[EXPOSURE].val;
2149 if (luma < 100) {
2150 if (shutter > 0) {
2151 if (luma < 85 && shutter > 50)
2152 shutter -= 50;
2153 else
2154 shutter--;
2155 } else if (gain < 63) {
2156 if (luma < 85 && gain < 53)
2157 gain += 10;
2158 else
2159 gain++;
2160 }
2161 } else {
2162 if (gain > 0) {
2163 if (luma > 115 && gain > 10)
2164 gain -= 10;
2165 else
2166 gain--;
2167 } else if (shutter < 316) { /* max 0x13b */
2168 if (luma > 115 && shutter < 266)
2169 shutter += 50;
2170 else
2171 shutter++;
2172 }
2173 }
2174 if (gain != sd->ctrls[GAIN].val) {
2175 sd->ctrls[GAIN].val = gain;
2176 setgain(gspca_dev);
2177 }
2178 if (shutter != sd->ctrls[EXPOSURE].val) {
2179 sd->ctrls[EXPOSURE].val = shutter;
2180 setexposure(gspca_dev);
2181 }
2182}
2183
2184/* V4L2 controls supported by the driver */
2185static const struct ctrl sd_ctrls[NCTRLS] = {
2186[GAIN] = {
2187 {
2188 .id = V4L2_CID_GAIN,
2189 .type = V4L2_CTRL_TYPE_INTEGER,
2190 .name = "Gain",
2191 .minimum = 0,
2192 .maximum = 63,
2193 .step = 1,
2194 .default_value = 16
2195 },
2196 .set_control = setgain
2197 },
2198[EXPOSURE] = {
2199 {
2200 .id = V4L2_CID_EXPOSURE,
2201 .type = V4L2_CTRL_TYPE_INTEGER,
2202 .name = "Exposure",
2203 .minimum = 0,
2204 .maximum = 9,
2205 .step = 1,
2206 .default_value = 1
2207 },
2208 .set_control = setexposure
2209 },
2210[AUTOGAIN] = {
2211 {
2212 .id = V4L2_CID_AUTOGAIN,
2213 .type = V4L2_CTRL_TYPE_BOOLEAN,
2214 .name = "Auto Gain",
2215 .minimum = 0,
2216 .maximum = 1,
2217 .step = 1,
2218 .default_value = 1,
2219 .flags = V4L2_CTRL_FLAG_UPDATE
2220 },
2221 .set = sd_setautogain
2222 },
2223};
2224
2225/* sub-driver description */
2226static const struct sd_desc sd_desc = {
2227 .name = MODULE_NAME,
2228 .ctrls = sd_ctrls,
2229 .nctrls = ARRAY_SIZE(sd_ctrls),
2230 .config = sd_config,
2231 .init = sd_init,
2232 .start = sd_start,
2233 .stopN = sd_stopN,
2234 .pkt_scan = sd_pkt_scan,
2235 .dq_callback = do_autogain,
2236};
2237
2238/* -- module initialisation -- */
2239static const struct usb_device_id device_table[] = {
2240 {USB_DEVICE(0x046d, 0xd001)},
2241 {USB_DEVICE(0x0502, 0xd001)},
2242 {USB_DEVICE(0x052b, 0xd001)},
2243 {USB_DEVICE(0x055f, 0xd001)},
2244 {USB_DEVICE(0x06a5, 0x0000)},
2245 {USB_DEVICE(0x06a5, 0xd001)},
2246 {USB_DEVICE(0x06a5, 0xd800)},
2247 {USB_DEVICE(0x06be, 0xd001)},
2248 {USB_DEVICE(0x0728, 0xd001)},
2249 {}
2250};
2251MODULE_DEVICE_TABLE(usb, device_table);
2252
2253/* -- device connect -- */
2254static int sd_probe(struct usb_interface *intf,
2255 const struct usb_device_id *id)
2256{
2257 return gspca_dev_probe(intf, id, &sd_desc, sizeof(struct sd),
2258 THIS_MODULE);
2259}
2260
2261static struct usb_driver sd_driver = {
2262 .name = MODULE_NAME,
2263 .id_table = device_table,
2264 .probe = sd_probe,
2265 .disconnect = gspca_disconnect,
2266#ifdef CONFIG_PM
2267 .suspend = gspca_suspend,
2268 .resume = gspca_resume,
2269#endif
2270};
2271
2272/* -- module insert / remove -- */
2273static int __init sd_mod_init(void)
2274{
2275 return usb_register(&sd_driver);
2276}
2277static void __exit sd_mod_exit(void)
2278{
2279 usb_deregister(&sd_driver);
2280}
2281
2282module_init(sd_mod_init);
2283module_exit(sd_mod_exit);
2284
2285module_param(webcam, int, 0644);
2286MODULE_PARM_DESC(webcam,
2287 "Webcam type\n"
2288 "0: generic\n"
2289 "1: Trust 120 SpaceCam\n"
2290 "2: other Trust 120 SpaceCam\n"
2291 "3: Conceptronic Video Pro\n"
2292 "4: D-link dru-350c\n"
2293 "5: Plustek Opticam 500U\n"
2294 "6: Panasonic GP-KR651US\n"
2295 "7: iRez Kritter\n"
2296 "8: Mustek Wcam 300 mini\n"
2297 "9: Scalar USB Microscope M2 (Proscope)\n"
2298 "10: Divio Chicony TwinkleCam\n"
2299 "11: DSB-C110\n"
2300 "12: DVC-V6\n");