2 * DivIO nw80x subdriver
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>
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
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.
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
23 #define MODULE_NAME "nw80x"
27 MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>");
28 MODULE_DESCRIPTION("NW80x USB Camera Driver");
29 MODULE_LICENSE("GPL");
38 NCTRLS
/* number of controls */
41 #define AUTOGAIN_DEF 1
43 /* specific webcam descriptor */
45 struct gspca_dev gspca_dev
; /* !! must be the first item */
47 struct gspca_ctrl ctrls
[NCTRLS
];
51 #define AG_CNT_START 13
60 BRIDGE_NW800
, /* and et31x110 */
66 SpaceCam
, /* Trust 120 SpaceCam */
67 SpaceCam2
, /* other Trust 120 SpaceCam */
68 Cvideopro
, /* Conceptronic Video Pro */
79 NWEBCAMS
/* number of webcams */
82 static const u8 webcam_chip
[NWEBCAMS
] = {
83 [Generic800
] = BRIDGE_NW800
, /* 06a5:0000
84 * Typhoon Webcam 100 USB */
86 [SpaceCam
] = BRIDGE_NW800
, /* 06a5:d800
87 * Trust SpaceCam120 or SpaceCam100 PORTABLE */
89 [SpaceCam2
] = BRIDGE_NW800
, /* 06a5:d800 - pas106
90 * other Trust SpaceCam120 or SpaceCam100 PORTABLE */
92 [Cvideopro
] = BRIDGE_NW802
, /* 06a5:d001
93 * Conceptronic Video Pro 'CVIDEOPRO USB Webcam CCD' */
95 [Dlink350c
] = BRIDGE_NW802
, /* 06a5:d001
96 * D-Link NetQam Pro 250plus */
98 [DS3303u
] = BRIDGE_NW801
, /* 06a5:d001
99 * Plustek Opticam 500U or ProLink DS3303u */
101 [Kr651us
] = BRIDGE_NW802
, /* 06a5:d001
102 * Panasonic GP-KR651US */
104 [Kritter
] = BRIDGE_NW802
, /* 06a5:d001
105 * iRez Kritter cam */
107 [Mustek300
] = BRIDGE_NW802
, /* 055f:d001
108 * Mustek Wcam 300 mini */
110 [Proscope
] = BRIDGE_NW802
, /* 06a5:d001
111 * Scalar USB Microscope (ProScope) */
113 [Twinkle
] = BRIDGE_NW800
, /* 06a5:d800 - hv7121b? (seems pas106)
114 * Divio Chicony TwinkleCam
117 [DvcV6
] = BRIDGE_NW802
, /* 0502:d001
120 [P35u
] = BRIDGE_NW801
, /* 052b:d001, 06a5:d001 and 06be:d001
123 [Generic802
] = BRIDGE_NW802
,
128 * Logitech QuickCam Pro (dark focus ring)
132 * D-Link NetQam Pro 250plus
141 * nw800/et31x110 nw801 nw802
142 * 0000..009e 0000..00a1 0000..009e
145 * 0400..0406 (inex) 0400..0406
146 * 0500..0505 0500..0506 (inex)
147 * 0600..061a 0600..0601 0600..0601
149 * 1000..109c 1000..10a1 1000..109a
153 * nw800: 320x240, 352x288
154 * nw801/802: 320x240, 640x480
156 static const struct v4l2_pix_format cif_mode
[] = {
157 {320, 240, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
159 .sizeimage
= 320 * 240 * 4 / 8,
160 .colorspace
= V4L2_COLORSPACE_JPEG
},
161 {352, 288, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
163 .sizeimage
= 352 * 288 * 4 / 8,
164 .colorspace
= V4L2_COLORSPACE_JPEG
}
166 static const struct v4l2_pix_format vga_mode
[] = {
167 {320, 240, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
169 .sizeimage
= 320 * 240 * 4 / 8,
170 .colorspace
= V4L2_COLORSPACE_JPEG
},
171 {640, 480, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
173 .sizeimage
= 640 * 480 * 3 / 8,
174 .colorspace
= V4L2_COLORSPACE_JPEG
},
178 * The sequences below contain:
179 * - 1st and 2nd bytes: either
180 * - register number (BE)
181 * - I2C0 + i2c address
182 * - 3rd byte: data length (=0 for end of sequence)
187 static const u8 nw800_init
[] = {
188 0x04, 0x05, 0x01, 0x61,
189 0x04, 0x04, 0x01, 0x01,
190 0x04, 0x06, 0x01, 0x04,
191 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
192 0x05, 0x05, 0x01, 0x00,
195 static const u8 nw800_start
[] = {
196 0x04, 0x06, 0x01, 0xc0,
197 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
198 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
199 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
200 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
201 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
202 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
203 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
204 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
205 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
206 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
207 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
208 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
209 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
210 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
212 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
213 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
215 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
216 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
217 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
218 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
220 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
221 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
222 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
223 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
232 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
235 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
236 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
237 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
238 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
239 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
240 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
241 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
242 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
243 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
244 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
245 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
246 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
247 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
248 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
249 0x01, 0x60, 0x01, 0x00, 0x00,
251 0x04, 0x04, 0x01, 0xff,
252 0x04, 0x06, 0x01, 0xc4,
254 0x04, 0x06, 0x01, 0xc0,
255 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
256 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
257 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
258 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
259 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
260 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
261 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
262 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
263 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
264 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
265 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
266 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
267 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
268 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
269 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
270 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
271 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
272 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
273 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
274 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
275 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
276 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
278 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
279 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
280 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
281 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
285 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287 0x00, 0x00, 0x00, 0x00, 0x00,
288 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
289 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
290 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
292 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
293 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
294 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
295 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
296 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
297 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
298 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
299 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
300 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
301 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
302 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
303 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
304 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
305 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
306 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
307 0x01, 0x60, 0x01, 0x00, 0x00,
309 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
310 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
312 0x00, 0x80, 0x01, 0xa0,
313 0x10, 0x1a, 0x01, 0x00,
314 0x00, 0x91, 0x02, 0x6c, 0x01,
315 0x00, 0x03, 0x02, 0xc8, 0x01,
316 0x10, 0x1a, 0x01, 0x00,
317 0x10, 0x00, 0x01, 0x83,
318 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
319 0x20, 0x01, 0x60, 0x01,
320 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
321 0x10, 0x1b, 0x02, 0x69, 0x00,
322 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
323 0x05, 0x02, 0x01, 0x02,
324 0x06, 0x00, 0x02, 0x04, 0xd9,
325 0x05, 0x05, 0x01, 0x20,
326 0x05, 0x05, 0x01, 0x21,
327 0x10, 0x0e, 0x01, 0x08,
328 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
329 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
331 0x10, 0x03, 0x01, 0x00,
332 0x10, 0x0f, 0x02, 0x13, 0x13,
333 0x10, 0x03, 0x01, 0x14,
334 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
335 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
337 0x10, 0x0b, 0x01, 0x14,
338 0x10, 0x0d, 0x01, 0x20,
339 0x10, 0x0c, 0x01, 0x34,
340 0x04, 0x06, 0x01, 0xc3,
341 0x04, 0x04, 0x01, 0x00,
342 0x05, 0x02, 0x01, 0x02,
343 0x06, 0x00, 0x02, 0x00, 0x48,
344 0x05, 0x05, 0x01, 0x20,
345 0x05, 0x05, 0x01, 0x21,
349 /* 06a5:d001 - nw801 - Panasonic
351 static const u8 nw801_start_1
[] = {
352 0x05, 0x06, 0x01, 0x04,
353 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
354 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
355 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
356 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
357 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
358 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
359 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
360 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
361 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
362 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
363 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
364 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
365 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
366 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
367 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
368 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
369 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
370 0x00, 0x00, 0x00, 0x00, 0x69, 0xa8, 0x1f, 0x00,
371 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
372 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
374 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
375 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
377 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
378 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
379 0x06, 0x00, 0x02, 0x09, 0x99,
380 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 0x00, 0x00, 0x00, 0x00, 0x00,
383 0x10, 0x00, 0x40, 0x22, 0x02, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x00,
384 0x00, 0x00, 0x00, 0x0a, 0x15, 0x08, 0x08, 0x0a,
385 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
386 0x00, 0x01, 0x35, 0xfd, 0x07, 0x3d, 0x00, 0x00,
387 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x14, 0x02,
388 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
389 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x06,
390 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
391 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
392 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 0xa4,
393 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 0xcf,
394 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
395 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
396 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
397 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
398 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
399 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
400 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00,
401 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x82, 0x02,
402 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
406 static const u8 nw801_start_qvga
[] = {
407 0x02, 0x00, 0x10, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
408 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78,
409 0x02, 0x0f, 0x01, 0x6b,
410 0x10, 0x1a, 0x01, 0x15,
411 0x00, 0x00, 0x01, 0x1e,
412 0x10, 0x00, 0x01, 0x2f,
413 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
414 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
418 static const u8 nw801_start_vga
[] = {
419 0x02, 0x00, 0x10, 0x78, 0xa0, 0x97, 0x78, 0xa0, 0x00, 0x00, 0x00,
420 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xf0,
421 0x02, 0x0f, 0x01, 0xd5,
422 0x10, 0x1a, 0x01, 0x15,
423 0x00, 0x00, 0x01, 0x0e,
424 0x10, 0x00, 0x01, 0x22,
425 0x10, 0x8c, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
426 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
429 static const u8 nw801_start_2
[] = {
430 0x10, 0x04, 0x01, 0x1a,
431 0x10, 0x19, 0x01, 0x09, /* clock */
432 0x10, 0x24, 0x06, 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01,
434 0x00, 0x03, 0x02, 0x92, 0x03,
435 0x00, 0x1d, 0x04, 0xf2, 0x00, 0x24, 0x07,
436 0x00, 0x7b, 0x01, 0xcf,
437 0x10, 0x94, 0x01, 0x07,
438 0x05, 0x05, 0x01, 0x01,
439 0x05, 0x04, 0x01, 0x01,
440 0x10, 0x0e, 0x01, 0x08,
441 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
442 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
444 0x10, 0x03, 0x01, 0x00,
445 0x10, 0x0f, 0x02, 0x0c, 0x0c,
446 0x10, 0x03, 0x01, 0x08,
447 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
448 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
450 0x10, 0x0b, 0x01, 0x0b,
451 0x10, 0x0d, 0x01, 0x0b,
452 0x10, 0x0c, 0x01, 0x1f,
453 0x05, 0x06, 0x01, 0x03,
457 /* nw802 (sharp IR3Y38M?) */
458 static const u8 nw802_start
[] = {
459 0x04, 0x06, 0x01, 0x04,
460 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x4d,
461 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
462 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
463 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
464 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
465 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
466 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
467 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
468 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
469 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
470 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
471 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
472 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
473 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
474 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
475 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
476 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
477 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
478 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
479 0x00, 0x10, 0x06, 0x08, 0x00, 0x18, 0x00,
480 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
481 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
483 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
484 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
485 0x06, 0x00, 0x02, 0x09, 0x99,
486 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
487 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
488 0x00, 0x00, 0x00, 0x00, 0x00,
489 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x1d, 0x00, 0x00, 0x00,
490 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
491 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
492 0x00, 0x49, 0x13, 0xff, 0x01, 0xc0, 0x00, 0x14,
493 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
494 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
495 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
496 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
497 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
498 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
499 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
500 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
501 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
502 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
503 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
504 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
505 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
506 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x82,
507 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
509 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
510 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
512 0x10, 0x1a, 0x01, 0x00,
513 0x10, 0x00, 0x01, 0xad,
514 0x00, 0x00, 0x01, 0x08,
515 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
516 0x10, 0x1b, 0x02, 0x00, 0x00,
517 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
518 0x10, 0x1d, 0x08, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
519 0x10, 0x0e, 0x01, 0x27,
520 0x10, 0x41, 0x11, 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
521 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
523 0x10, 0x03, 0x01, 0x00,
524 0x10, 0x0f, 0x02, 0x14, 0x14,
525 0x10, 0x03, 0x01, 0x0c,
526 0x10, 0x41, 0x11, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 0x74,
527 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 0xf1,
529 /* 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
530 * 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
532 0x10, 0x0b, 0x01, 0x10,
533 0x10, 0x0d, 0x01, 0x11,
534 0x10, 0x0c, 0x01, 0x1c,
535 0x04, 0x06, 0x01, 0x03,
536 0x04, 0x04, 0x01, 0x00,
539 /* et31x110 - Trust 120 SpaceCam */
540 static const u8 spacecam_init
[] = {
541 0x04, 0x05, 0x01, 0x01,
542 0x04, 0x04, 0x01, 0x01,
543 0x04, 0x06, 0x01, 0x04,
544 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
545 0x05, 0x05, 0x01, 0x00,
548 static const u8 spacecam_start
[] = {
549 0x04, 0x06, 0x01, 0x44,
550 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
551 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
552 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
553 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
554 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
555 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
556 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
557 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
558 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
559 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
560 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
561 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
562 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
563 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
564 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
565 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
566 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
567 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
568 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
569 0x00, 0x4b, 0x00, 0x7c, 0x00, 0x80, 0x00,
570 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
571 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
573 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
574 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
575 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
576 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
578 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
581 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
582 0x00, 0x00, 0x00, 0x00, 0x00,
583 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
584 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
585 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
586 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
587 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
588 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
589 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
590 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
591 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
592 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
593 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
594 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
595 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
596 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
597 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
598 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
599 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
600 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
601 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
602 0x01, 0x60, 0x01, 0x00, 0x00,
603 0x04, 0x06, 0x01, 0xc0,
604 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
605 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
606 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
608 0x00, 0x80, 0x01, 0xa0,
609 0x10, 0x1a, 0x01, 0x00,
610 0x00, 0x91, 0x02, 0x32, 0x01,
611 0x00, 0x03, 0x02, 0x08, 0x02,
612 0x10, 0x00, 0x01, 0x83,
613 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
614 0x20, 0x01, 0x60, 0x01,
615 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
616 0x10, 0x0e, 0x01, 0x08,
617 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
618 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
620 0x10, 0x03, 0x01, 0x00,
621 0x10, 0x0f, 0x02, 0x13, 0x13,
622 0x10, 0x03, 0x01, 0x06,
623 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
624 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
626 0x10, 0x0b, 0x01, 0x08,
627 0x10, 0x0d, 0x01, 0x10,
628 0x10, 0x0c, 0x01, 0x1f,
629 0x04, 0x06, 0x01, 0xc3,
630 0x04, 0x05, 0x01, 0x40,
631 0x04, 0x04, 0x01, 0x40,
634 /* et31x110 - pas106 - other Trust SpaceCam120 */
635 static const u8 spacecam2_start
[] = {
636 0x04, 0x06, 0x01, 0x44,
637 0x04, 0x06, 0x01, 0x00,
638 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
639 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
640 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
641 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
642 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
643 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
644 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
645 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
646 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
647 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
648 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
649 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
650 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
651 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
652 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
653 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
654 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
655 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
656 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
657 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
658 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
659 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
661 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
662 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
663 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
664 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
668 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670 0x00, 0x00, 0x00, 0x00, 0x00,
671 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
672 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
673 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
674 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
675 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
676 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
677 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
678 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
679 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
680 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
681 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
682 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
683 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
684 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
685 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
686 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
687 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
689 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
690 0x01, 0x60, 0x01, 0x00, 0x00,
691 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
692 0x04, 0x04, 0x01, 0x40,
693 0x04, 0x04, 0x01, 0x00,
694 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05,
695 0x00, 0x00, 0x05, 0x05,
696 I2C0
, 0x40, 0x02, 0x11, 0x06,
697 I2C0
, 0x40, 0x02, 0x14, 0x00,
698 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
699 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
700 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
702 I2C0
, 0x40, 0x02, 0x02, 0x0c, /* pixel clock */
703 I2C0
, 0x40, 0x02, 0x0f, 0x00,
704 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
705 0x10, 0x00, 0x01, 0x01,
706 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
707 0x20, 0x01, 0x60, 0x01,
708 I2C0
, 0x40, 0x02, 0x05, 0x0f, /* exposure */
709 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
710 I2C0
, 0x40, 0x07, 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00,
712 I2C0
, 0x40, 0x03, 0x12, 0x04, 0x01,
713 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
714 0x10, 0x0e, 0x01, 0x08,
715 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
716 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
718 0x10, 0x03, 0x01, 0x00,
719 0x10, 0x0f, 0x02, 0x13, 0x13,
720 0x10, 0x03, 0x01, 0x06,
721 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
722 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
724 0x10, 0x0b, 0x01, 0x11,
725 0x10, 0x0d, 0x01, 0x10,
726 0x10, 0x0c, 0x01, 0x14,
727 0x04, 0x06, 0x01, 0x03,
728 0x04, 0x05, 0x01, 0x61,
729 0x04, 0x04, 0x01, 0x00,
733 /* nw802 - Conceptronic Video Pro */
734 static const u8 cvideopro_start
[] = {
735 0x04, 0x06, 0x01, 0x04,
736 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
737 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
738 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
739 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
740 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
741 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
742 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
743 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
744 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
745 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
746 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
747 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
748 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
749 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
750 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
751 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
752 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
753 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
754 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
755 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
756 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
757 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
759 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
760 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
761 0x06, 0x00, 0x02, 0x09, 0x99,
762 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
763 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
764 0x00, 0x00, 0x00, 0x00, 0x00,
765 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
766 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
767 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
768 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
769 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
770 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
771 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
772 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
773 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
774 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
775 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
776 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
777 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
778 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
779 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
780 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
781 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
782 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
783 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
785 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
786 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
788 0x10, 0x1a, 0x01, 0x03,
789 0x10, 0x00, 0x01, 0xac,
790 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
791 0x10, 0x1b, 0x02, 0x3b, 0x01,
792 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
793 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
794 0x10, 0x1d, 0x02, 0x40, 0x06,
795 0x10, 0x0e, 0x01, 0x08,
796 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
797 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
799 0x10, 0x03, 0x01, 0x00,
800 0x10, 0x0f, 0x02, 0x12, 0x12,
801 0x10, 0x03, 0x01, 0x0c,
802 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
803 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
805 0x10, 0x0b, 0x01, 0x09,
806 0x10, 0x0d, 0x01, 0x10,
807 0x10, 0x0c, 0x01, 0x2f,
808 0x04, 0x06, 0x01, 0x03,
809 0x04, 0x04, 0x01, 0x00,
813 /* nw802 - D-link dru-350c cam */
814 static const u8 dlink_start
[] = {
815 0x04, 0x06, 0x01, 0x04,
816 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
817 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
818 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
819 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
820 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
821 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
822 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
823 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
824 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
825 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
826 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
827 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
828 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
829 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
830 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
831 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
832 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
833 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
834 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
835 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
836 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
837 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
839 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
840 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
841 0x06, 0x00, 0x02, 0x09, 0x99,
842 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
843 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
844 0x00, 0x00, 0x00, 0x00, 0x00,
845 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
846 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
847 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
848 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
849 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
850 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
851 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
852 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
853 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
854 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
855 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
856 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
857 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
858 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
859 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
860 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
861 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
862 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82,
863 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
865 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
866 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
868 0x10, 0x1a, 0x01, 0x00,
869 0x10, 0x00, 0x01, 0xad,
870 0x00, 0x00, 0x01, 0x08,
871 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
872 0x10, 0x1b, 0x02, 0x00, 0x00,
873 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
874 0x10, 0x1d, 0x08, 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
875 0x10, 0x0e, 0x01, 0x20,
876 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
877 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
879 0x10, 0x03, 0x01, 0x00,
880 0x10, 0x0f, 0x02, 0x11, 0x11,
881 0x10, 0x03, 0x01, 0x10,
882 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
883 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
885 0x10, 0x0b, 0x01, 0x19,
886 0x10, 0x0d, 0x01, 0x10,
887 0x10, 0x0c, 0x01, 0x1e,
888 0x04, 0x06, 0x01, 0x03,
889 0x04, 0x04, 0x01, 0x00,
893 /* 06a5:d001 - nw801 - Sony
894 * Plustek Opticam 500U or ProLink DS3303u (Hitachi HD49322BF) */
895 /*fixme: 320x240 only*/
896 static const u8 ds3303_start
[] = {
897 0x05, 0x06, 0x01, 0x04,
898 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
899 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
900 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
901 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
902 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
903 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
904 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
905 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
906 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
907 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
908 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
909 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
910 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
911 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
912 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
913 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
914 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
915 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00,
916 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
917 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
919 0x02, 0x00, 0x12, 0x03, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
920 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50,
922 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
923 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
924 0x06, 0x00, 0x02, 0x09, 0x99,
925 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
926 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
927 0x00, 0x00, 0x00, 0x00, 0x00,
928 0x10, 0x00, 0x40, 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
929 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
930 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
931 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00,
932 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20,
933 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
934 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03,
935 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
936 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
937 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88,
938 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb,
939 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
940 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
941 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
942 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
943 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
944 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
945 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01,
946 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02,
947 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
950 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
951 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81,
953 0x10, 0x1a, 0x01, 0x15,
954 0x10, 0x00, 0x01, 0x2f,
955 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
956 0x10, 0x1b, 0x02, 0x00, 0x00,
957 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
958 0x10, 0x26, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
959 0x10, 0x24, 0x02, 0x40, 0x06,
960 0x10, 0x0e, 0x01, 0x08,
961 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
962 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
964 0x10, 0x03, 0x01, 0x00,
965 0x10, 0x0f, 0x02, 0x16, 0x16,
966 0x10, 0x03, 0x01, 0x0c,
967 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
968 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
970 0x10, 0x0b, 0x01, 0x26,
971 0x10, 0x0d, 0x01, 0x10,
972 0x10, 0x0c, 0x01, 0x1c,
973 0x05, 0x06, 0x01, 0x03,
974 0x05, 0x04, 0x01, 0x00,
978 /* 06a5:d001 - nw802 - Panasonic
979 * GP-KR651US (Philips TDA8786) */
980 static const u8 kr651_start_1
[] = {
981 0x04, 0x06, 0x01, 0x04,
982 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48,
983 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
984 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
985 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
986 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
987 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
988 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
989 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
990 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
991 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
992 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
993 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
994 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
995 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
996 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
997 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
998 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
999 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1000 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1001 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1002 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1003 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1005 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1006 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1007 0x06, 0x00, 0x02, 0x09, 0x99,
1008 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1009 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1010 0x00, 0x00, 0x00, 0x00, 0x00,
1011 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1012 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1013 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1014 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1015 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1016 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1017 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1018 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1019 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1020 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1021 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1022 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1023 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1024 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1025 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1026 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1027 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1028 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1029 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1033 static const u8 kr651_start_qvga
[] = {
1034 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1035 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1037 0x10, 0x1a, 0x01, 0x03,
1038 0x10, 0x00, 0x01, 0xac,
1039 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1040 0x10, 0x1b, 0x02, 0x00, 0x00,
1041 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
1042 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1043 0x10, 0x1d, 0x02, 0x28, 0x01,
1046 static const u8 kr651_start_vga
[] = {
1047 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1048 0x00, 0xf0, 0x30, 0x03, 0x01, 0x82, 0x82, 0x98,
1050 0x10, 0x1a, 0x01, 0x03,
1051 0x10, 0x00, 0x01, 0xa0,
1052 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1053 0x10, 0x1b, 0x02, 0x00, 0x00,
1054 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
1055 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1056 0x10, 0x1d, 0x02, 0x68, 0x00,
1058 static const u8 kr651_start_2
[] = {
1059 0x10, 0x0e, 0x01, 0x08,
1060 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1061 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1063 0x10, 0x03, 0x01, 0x00,
1064 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1065 0x10, 0x03, 0x01, 0x0c,
1066 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1067 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1069 0x10, 0x0b, 0x01, 0x10,
1070 0x10, 0x0d, 0x01, 0x10,
1071 0x10, 0x0c, 0x01, 0x2d,
1072 0x04, 0x06, 0x01, 0x03,
1073 0x04, 0x04, 0x01, 0x00,
1077 /* nw802 - iRez Kritter cam */
1078 static const u8 kritter_start
[] = {
1079 0x04, 0x06, 0x01, 0x06,
1080 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48,
1081 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19,
1082 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1083 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28,
1084 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1085 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1086 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1087 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1088 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1089 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1090 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1091 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1092 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1093 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1094 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1095 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30,
1096 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1097 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1098 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1099 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1100 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1101 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1103 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1104 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1105 0x06, 0x00, 0x02, 0x09, 0x99,
1106 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1108 0x00, 0x00, 0x00, 0x00, 0x00,
1109 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1110 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1111 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1112 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1113 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1114 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1115 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1116 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1117 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1118 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1119 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1120 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1121 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1122 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1123 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1124 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1125 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82,
1127 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1129 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
1130 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1132 0x10, 0x1a, 0x01, 0x03,
1133 0x10, 0x00, 0x01, 0xaf,
1134 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1135 0x10, 0x1b, 0x02, 0x3b, 0x01,
1136 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1137 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1138 0x10, 0x1d, 0x02, 0x00, 0x00,
1139 0x10, 0x0e, 0x01, 0x08,
1140 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1141 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1143 0x10, 0x03, 0x01, 0x00,
1144 0x10, 0x0f, 0x02, 0x0d, 0x0d,
1145 0x10, 0x03, 0x01, 0x02,
1146 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1147 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1149 0x10, 0x0b, 0x01, 0x17,
1150 0x10, 0x0d, 0x01, 0x10,
1151 0x10, 0x0c, 0x01, 0x1e,
1152 0x04, 0x06, 0x01, 0x03,
1153 0x04, 0x04, 0x01, 0x00,
1157 /* nw802 - Mustek Wcam 300 mini */
1158 static const u8 mustek_start
[] = {
1159 0x04, 0x06, 0x01, 0x04,
1160 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
1161 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1162 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1163 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
1164 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1165 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1166 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1167 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1168 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1169 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1170 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1171 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1172 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1173 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1174 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1175 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1176 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
1177 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1178 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
1179 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06,
1180 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1181 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1183 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1184 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1185 0x06, 0x00, 0x02, 0x09, 0x99,
1186 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1188 0x00, 0x00, 0x00, 0x00, 0x00,
1189 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00,
1190 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1191 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1192 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
1193 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
1194 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1195 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1196 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1197 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1198 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1199 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1200 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1201 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1202 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1203 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1204 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1205 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1206 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82,
1207 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1209 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1210 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1212 0x10, 0x1a, 0x01, 0x00,
1213 0x10, 0x00, 0x01, 0xad,
1214 0x00, 0x00, 0x01, 0x08,
1215 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1216 0x10, 0x1b, 0x02, 0x00, 0x00,
1217 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1218 0x10, 0x1d, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
1219 0x10, 0x0e, 0x01, 0x0f,
1220 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1221 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1223 0x10, 0x0f, 0x02, 0x11, 0x11,
1224 0x10, 0x03, 0x01, 0x0c,
1225 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1226 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1228 0x10, 0x0b, 0x01, 0x1c,
1229 0x10, 0x0d, 0x01, 0x1a,
1230 0x10, 0x0c, 0x01, 0x34,
1231 0x04, 0x05, 0x01, 0x61,
1232 0x04, 0x04, 0x01, 0x40,
1233 0x04, 0x06, 0x01, 0x03,
1237 /* nw802 - Scope USB Microscope M2 (ProScope) (Hitachi HD49322BF) */
1238 static const u8 proscope_init
[] = {
1239 0x04, 0x05, 0x01, 0x21,
1240 0x04, 0x04, 0x01, 0x01,
1243 static const u8 proscope_start_1
[] = {
1244 0x04, 0x06, 0x01, 0x04,
1245 0x00, 0x00, 0x40, 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04,
1246 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1247 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1248 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4,
1249 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1250 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86,
1251 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1252 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1253 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6,
1254 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1255 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1256 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1257 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34,
1258 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1259 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8,
1260 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1261 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00,
1262 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1263 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94,
1264 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
1265 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1266 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1268 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1269 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1270 0x06, 0x00, 0x02, 0x09, 0x99,
1271 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1273 0x00, 0x00, 0x00, 0x00, 0x00,
1274 0x10, 0x00, 0x40, 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1275 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
1276 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
1277 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01,
1278 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00,
1279 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1280 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1281 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1282 0x10, 0x40, 0x40, 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f,
1283 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4,
1284 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1285 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1286 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1287 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1288 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1289 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1290 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f,
1291 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82,
1292 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1296 static const u8 proscope_start_qvga
[] = {
1297 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1298 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1300 0x10, 0x1a, 0x01, 0x06,
1301 0x00, 0x03, 0x02, 0xf9, 0x02,
1302 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1303 0x10, 0x1b, 0x02, 0x00, 0x00,
1304 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1305 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1306 0x10, 0x0e, 0x01, 0x10,
1309 static const u8 proscope_start_vga
[] = {
1310 0x00, 0x03, 0x02, 0xf9, 0x02,
1311 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1312 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1313 0x00, 0xf0, 0x16, 0x00, 0x00, 0x82, 0x84, 0x00,
1315 0x10, 0x1a, 0x01, 0x06,
1316 0x10, 0x00, 0x01, 0xa1,
1317 0x10, 0x1b, 0x02, 0x00, 0x00,
1318 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1319 0x10, 0x11, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1320 0x10, 0x0e, 0x01, 0x10,
1321 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1322 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1324 0x10, 0x03, 0x01, 0x00,
1327 static const u8 proscope_start_2
[] = {
1328 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1329 0x10, 0x03, 0x01, 0x0c,
1330 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1331 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1333 0x10, 0x0b, 0x01, 0x0b,
1334 0x10, 0x0d, 0x01, 0x10,
1335 0x10, 0x0c, 0x01, 0x1b,
1336 0x04, 0x06, 0x01, 0x03,
1337 0x04, 0x05, 0x01, 0x21,
1338 0x04, 0x04, 0x01, 0x00,
1342 /* nw800 - hv7121b? (seems pas106) - Divio Chicony TwinkleCam */
1343 static const u8 twinkle_start
[] = {
1344 0x04, 0x06, 0x01, 0x44,
1345 0x04, 0x06, 0x01, 0x00,
1346 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
1347 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
1348 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1349 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
1350 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1351 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1352 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1353 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1354 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1355 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1356 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1357 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1358 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1359 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1360 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1361 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1362 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
1363 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
1364 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
1365 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
1366 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1367 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1369 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1370 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
1371 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
1372 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1376 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1378 0x00, 0x00, 0x00, 0x00, 0x00,
1379 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
1380 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08,
1381 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1382 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
1383 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1384 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1385 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06,
1386 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80,
1387 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1388 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1389 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1390 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1391 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1392 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1393 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1394 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1395 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
1397 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
1398 0x01, 0x60, 0x01, 0x00, 0x00,
1400 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1401 0x04, 0x04, 0x01, 0x10,
1402 0x04, 0x04, 0x01, 0x00,
1403 0x04, 0x05, 0x01, 0x61,
1404 0x04, 0x04, 0x01, 0x01,
1405 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1406 0x00, 0x00, 0x00, 0x0a,
1407 I2C0
, 0x40, 0x02, 0x11, 0x06,
1408 I2C0
, 0x40, 0x02, 0x14, 0x00,
1409 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
1410 I2C0
, 0x40, 0x02, 0x07, 0x01,
1411 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
1412 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
1414 I2C0
, 0x40, 0x02, 0x02, 0x0c,
1415 I2C0
, 0x40, 0x02, 0x13, 0x01,
1416 0x10, 0x00, 0x01, 0x01,
1417 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
1418 0x20, 0x01, 0x60, 0x01,
1419 I2C0
, 0x40, 0x02, 0x05, 0x0f,
1420 I2C0
, 0x40, 0x02, 0x13, 0x01,
1421 I2C0
, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x17,
1422 I2C0
, 0x40, 0x03, 0x12, 0x00, 0x01,
1423 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1424 I2C0
, 0x40, 0x02, 0x12, 0x00,
1425 I2C0
, 0x40, 0x02, 0x0e, 0x00,
1426 I2C0
, 0x40, 0x02, 0x11, 0x06,
1427 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1428 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1430 0x10, 0x03, 0x01, 0x00,
1431 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1432 0x10, 0x03, 0x01, 0x06,
1433 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1434 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1436 0x10, 0x0b, 0x01, 0x19,
1437 0x10, 0x0d, 0x01, 0x10,
1438 0x10, 0x0c, 0x01, 0x0d,
1439 0x04, 0x06, 0x01, 0x03,
1440 0x04, 0x05, 0x01, 0x61,
1441 0x04, 0x04, 0x01, 0x41,
1446 static const u8 dvcv6_start
[] = {
1447 0x04, 0x06, 0x01, 0x06,
1448 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
1449 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1450 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1451 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
1452 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1453 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1454 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1455 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1456 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1457 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1458 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1459 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1460 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1461 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1463 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
1464 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1465 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1466 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1467 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1468 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1469 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1471 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1472 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1473 0x06, 0x00, 0x02, 0x09, 0x99,
1474 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1475 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1476 0x00, 0x00, 0x00, 0x00, 0x00,
1477 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1478 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1479 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1480 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1481 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1482 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1483 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1484 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1485 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1486 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1487 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1488 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1489 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1490 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1491 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1492 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1493 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1494 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1495 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1497 0x00, 0x03, 0x02, 0x94, 0x03,
1498 0x00, 0x1d, 0x04, 0x0a, 0x01, 0x28, 0x07,
1499 0x00, 0x7b, 0x02, 0xe0, 0x00,
1500 0x10, 0x8d, 0x01, 0x00,
1501 0x00, 0x09, 0x04, 0x1e, 0x00, 0x0c, 0x02,
1502 0x00, 0x91, 0x02, 0x0b, 0x02,
1503 0x10, 0x00, 0x01, 0xaf,
1504 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8f, 0x3c, 0x50, 0x00, 0x00, 0x00,
1505 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1507 0x10, 0x1a, 0x01, 0x02,
1508 0x10, 0x00, 0x01, 0xaf,
1509 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1510 0x10, 0x1b, 0x02, 0x07, 0x01,
1511 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1512 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1513 0x10, 0x1d, 0x02, 0x40, 0x06,
1514 0x10, 0x0e, 0x01, 0x08,
1515 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1516 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1518 0x10, 0x03, 0x01, 0x00,
1519 0x10, 0x0f, 0x02, 0x12, 0x12,
1520 0x10, 0x03, 0x01, 0x11,
1521 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1522 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1524 0x10, 0x0b, 0x01, 0x16,
1525 0x10, 0x0d, 0x01, 0x10,
1526 0x10, 0x0c, 0x01, 0x1a,
1527 0x04, 0x06, 0x01, 0x03,
1528 0x04, 0x04, 0x01, 0x00,
1531 static const u8
*webcam_start
[] = {
1532 [Generic800
] = nw800_start
,
1533 [SpaceCam
] = spacecam_start
,
1534 [SpaceCam2
] = spacecam2_start
,
1535 [Cvideopro
] = cvideopro_start
,
1536 [Dlink350c
] = dlink_start
,
1537 [DS3303u
] = ds3303_start
,
1538 [Kr651us
] = kr651_start_1
,
1539 [Kritter
] = kritter_start
,
1540 [Mustek300
] = mustek_start
,
1541 [Proscope
] = proscope_start_1
,
1542 [Twinkle
] = twinkle_start
,
1543 [DvcV6
] = dvcv6_start
,
1544 [P35u
] = nw801_start_1
,
1545 [Generic802
] = nw802_start
,
1548 /* -- write a register -- */
1549 static void reg_w(struct gspca_dev
*gspca_dev
,
1554 struct usb_device
*dev
= gspca_dev
->dev
;
1557 if (gspca_dev
->usb_err
< 0)
1560 PDEBUG(D_USBO
, "SET 00 0000 %04x %02x", index
, *data
);
1562 PDEBUG(D_USBO
, "SET 00 0000 %04x %02x %02x ...",
1563 index
, *data
, data
[1]);
1564 memcpy(gspca_dev
->usb_buf
, data
, len
);
1565 ret
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1567 USB_DIR_OUT
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1574 err("reg_w err %d", ret
);
1575 gspca_dev
->usb_err
= ret
;
1579 /* -- read registers in usb_buf -- */
1580 static void reg_r(struct gspca_dev
*gspca_dev
,
1584 struct usb_device
*dev
= gspca_dev
->dev
;
1587 if (gspca_dev
->usb_err
< 0)
1589 ret
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1591 USB_DIR_IN
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1593 gspca_dev
->usb_buf
, len
, 500);
1595 err("reg_r err %d", ret
);
1596 gspca_dev
->usb_err
= ret
;
1600 PDEBUG(D_USBI
, "GET 00 0000 %04x %02x",
1601 index
, gspca_dev
->usb_buf
[0]);
1603 PDEBUG(D_USBI
, "GET 00 0000 %04x %02x %02x ..",
1604 index
, gspca_dev
->usb_buf
[0],
1605 gspca_dev
->usb_buf
[1]);
1608 static void i2c_w(struct gspca_dev
*gspca_dev
,
1616 reg_w(gspca_dev
, 0x0600, data
+ 1, len
- 1);
1617 reg_w(gspca_dev
, 0x0600, data
, len
);
1620 reg_w(gspca_dev
, 0x0502, val
, 2);
1622 reg_w(gspca_dev
, 0x0501, val
, 1);
1623 for (i
= 5; --i
>= 0; ) {
1625 reg_r(gspca_dev
, 0x0505, 1);
1626 if (gspca_dev
->usb_err
< 0)
1628 if (gspca_dev
->usb_buf
[0] == 0)
1631 gspca_dev
->usb_err
= -ETIME
;
1634 static void reg_w_buf(struct gspca_dev
*gspca_dev
,
1646 if (cmd
[-3] != I2C0
)
1647 reg_w(gspca_dev
, reg
, cmd
, len
);
1649 i2c_w(gspca_dev
, reg
, cmd
, len
);
1654 static int swap_bits(int v
)
1659 for (i
= 0; i
< 8; i
++) {
1668 static void setgain(struct gspca_dev
*gspca_dev
)
1670 struct sd
*sd
= (struct sd
*) gspca_dev
;
1673 val
= sd
->ctrls
[GAIN
].val
;
1674 switch (sd
->webcam
) {
1676 /* Note the control goes from 0-255 not 0-127, but anything
1677 above 127 just means amplifying noise */
1678 val
>>= 1; /* 0 - 255 -> 0 - 127 */
1679 reg_w(gspca_dev
, 0x1026, &val
, 1);
1683 val
= swap_bits(val
);
1686 reg_w(gspca_dev
, 0x101d, v
, 2); /* SIF reg0/1 (AGC) */
1691 static void setexposure(struct gspca_dev
*gspca_dev
)
1693 struct sd
*sd
= (struct sd
*) gspca_dev
;
1697 val
= sd
->ctrls
[EXPOSURE
].val
;
1698 switch (sd
->webcam
) {
1700 v
[0] = ((9 - val
) << 3) | 0x01;
1701 reg_w(gspca_dev
, 0x1019, v
, 1);
1709 reg_w(gspca_dev
, 0x101b, v
, 2);
1714 static void setautogain(struct gspca_dev
*gspca_dev
)
1716 struct sd
*sd
= (struct sd
*) gspca_dev
;
1719 if (gspca_dev
->ctrl_dis
& (1 << AUTOGAIN
))
1721 if (!sd
->ctrls
[AUTOGAIN
].val
) {
1725 sd
->ag_cnt
= AG_CNT_START
;
1727 reg_r(gspca_dev
, 0x1004, 1);
1728 if (gspca_dev
->usb_buf
[0] & 0x04) { /* if AE_FULL_FRM */
1729 sd
->ae_res
= gspca_dev
->width
* gspca_dev
->height
;
1730 } else { /* get the AE window size */
1731 reg_r(gspca_dev
, 0x1011, 8);
1732 w
= (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0]
1733 - (gspca_dev
->usb_buf
[3] << 8) - gspca_dev
->usb_buf
[2];
1734 h
= (gspca_dev
->usb_buf
[5] << 8) + gspca_dev
->usb_buf
[4]
1735 - (gspca_dev
->usb_buf
[7] << 8) - gspca_dev
->usb_buf
[6];
1737 if (sd
->ae_res
== 0)
1738 sd
->ae_res
= gspca_dev
->width
* gspca_dev
->height
;
1742 static int nw802_test_reg(struct gspca_dev
*gspca_dev
,
1746 /* write the value */
1747 reg_w(gspca_dev
, index
, &value
, 1);
1750 reg_r(gspca_dev
, index
, 1);
1752 return gspca_dev
->usb_buf
[0] == value
;
1755 /* this function is called at probe time */
1756 static int sd_config(struct gspca_dev
*gspca_dev
,
1757 const struct usb_device_id
*id
)
1759 struct sd
*sd
= (struct sd
*) gspca_dev
;
1761 if ((unsigned) webcam
>= NWEBCAMS
)
1763 sd
->webcam
= webcam
;
1764 gspca_dev
->cam
.reverse_alts
= 1;
1765 gspca_dev
->cam
.ctrls
= sd
->ctrls
;
1769 * Autodetect sequence inspired from some log.
1770 * We try to detect what registers exist or not.
1771 * If 0x0500 does not exist => NW802
1772 * If it does, test 0x109b. If it doesn't exist,
1773 * then it's a NW801. Else, a NW800
1774 * If a et31x110 (nw800 and 06a5:d800)
1777 if (!nw802_test_reg(gspca_dev
, 0x0500, 0x55)) {
1778 sd
->bridge
= BRIDGE_NW802
;
1779 if (sd
->webcam
== Generic800
)
1780 sd
->webcam
= Generic802
;
1781 } else if (!nw802_test_reg(gspca_dev
, 0x109b, 0xaa)) {
1782 sd
->bridge
= BRIDGE_NW801
;
1783 if (sd
->webcam
== Generic800
)
1785 } else if (id
->idVendor
== 0x06a5 && id
->idProduct
== 0xd800) {
1786 reg_r(gspca_dev
, 0x0403, 1); /* GPIO */
1787 PDEBUG(D_PROBE
, "et31x110 sensor type %02x",
1788 gspca_dev
->usb_buf
[0]);
1789 switch (gspca_dev
->usb_buf
[0] >> 1) {
1791 if (sd
->webcam
== Generic800
)
1792 sd
->webcam
= SpaceCam
;
1794 case 0x01: /* Hynix? */
1795 if (sd
->webcam
== Generic800
)
1796 sd
->webcam
= Twinkle
;
1798 case 0x0a: /* Pixart */
1799 if (sd
->webcam
== Generic800
)
1800 sd
->webcam
= SpaceCam2
;
1804 if (webcam_chip
[sd
->webcam
] != sd
->bridge
) {
1805 err("Bad webcam type %d for NW80%d", sd
->webcam
, sd
->bridge
);
1806 gspca_dev
->usb_err
= -ENODEV
;
1807 return gspca_dev
->usb_err
;
1809 PDEBUG(D_PROBE
, "Bridge nw80%d - type: %d", sd
->bridge
, sd
->webcam
);
1811 if (sd
->bridge
== BRIDGE_NW800
) {
1812 switch (sd
->webcam
) {
1814 gspca_dev
->cam
.cam_mode
= cif_mode
; /* qvga */
1817 gspca_dev
->cam
.cam_mode
= &cif_mode
[1]; /* cif */
1820 gspca_dev
->cam
.nmodes
= 1;
1822 gspca_dev
->cam
.cam_mode
= vga_mode
;
1823 switch (sd
->webcam
) {
1827 gspca_dev
->cam
.nmodes
= ARRAY_SIZE(vga_mode
);
1830 gspca_dev
->cam
.nmodes
= 1; /* qvga only */
1834 switch (sd
->webcam
) {
1836 /* sd->ctrls[EXPOSURE].max = 9;
1837 * sd->ctrls[EXPOSURE].def = 9; */
1838 /* coarse expo auto gain function gain minimum, to avoid
1839 * a large settings jump the first auto adjustment */
1840 sd
->ctrls
[GAIN
].def
= 255 / 5 * 2;
1845 gspca_dev
->ctrl_dis
= (1 << GAIN
) | (1 << AUTOGAIN
);
1848 sd
->ctrls
[EXPOSURE
].max
= 315;
1849 sd
->ctrls
[EXPOSURE
].def
= 150;
1852 gspca_dev
->ctrl_dis
= (1 << GAIN
) | (1 << EXPOSURE
)
1858 if (!(gspca_dev
->ctrl_dis
& (1 << AUTOGAIN
)))
1859 gspca_dev
->ctrl_inac
= (1 << GAIN
) | (1 << EXPOSURE
);
1861 return gspca_dev
->usb_err
;
1864 /* this function is called at probe and resume time */
1865 static int sd_init(struct gspca_dev
*gspca_dev
)
1867 struct sd
*sd
= (struct sd
*) gspca_dev
;
1869 switch (sd
->bridge
) {
1871 switch (sd
->webcam
) {
1873 reg_w_buf(gspca_dev
, spacecam_init
);
1876 reg_w_buf(gspca_dev
, nw800_init
);
1881 switch (sd
->webcam
) {
1885 reg_w_buf(gspca_dev
, proscope_init
);
1890 return gspca_dev
->usb_err
;
1893 /* -- start the camera -- */
1894 static int sd_start(struct gspca_dev
*gspca_dev
)
1896 struct sd
*sd
= (struct sd
*) gspca_dev
;
1899 cmd
= webcam_start
[sd
->webcam
];
1900 reg_w_buf(gspca_dev
, cmd
);
1901 switch (sd
->webcam
) {
1903 if (gspca_dev
->width
== 320)
1904 reg_w_buf(gspca_dev
, nw801_start_qvga
);
1906 reg_w_buf(gspca_dev
, nw801_start_vga
);
1907 reg_w_buf(gspca_dev
, nw801_start_2
);
1910 if (gspca_dev
->width
== 320)
1911 reg_w_buf(gspca_dev
, kr651_start_qvga
);
1913 reg_w_buf(gspca_dev
, kr651_start_vga
);
1914 reg_w_buf(gspca_dev
, kr651_start_2
);
1917 if (gspca_dev
->width
== 320)
1918 reg_w_buf(gspca_dev
, proscope_start_qvga
);
1920 reg_w_buf(gspca_dev
, proscope_start_vga
);
1921 reg_w_buf(gspca_dev
, proscope_start_2
);
1926 setexposure(gspca_dev
);
1927 setautogain(gspca_dev
);
1928 sd
->exp_too_high_cnt
= 0;
1929 sd
->exp_too_low_cnt
= 0;
1930 return gspca_dev
->usb_err
;
1933 static void sd_stopN(struct gspca_dev
*gspca_dev
)
1935 struct sd
*sd
= (struct sd
*) gspca_dev
;
1939 if (sd
->bridge
!= BRIDGE_NW801
) {
1941 reg_w(gspca_dev
, 0x0406, &value
, 1);
1945 switch (sd
->webcam
) {
1964 reg_w(gspca_dev
, 0x0404, &value
, 1);
1967 static void sd_pkt_scan(struct gspca_dev
*gspca_dev
,
1968 u8
*data
, /* isoc packet */
1969 int len
) /* iso packet length */
1972 * frame header = '00 00 hh ww ss xx ff ff'
1974 * - 'hh': height / 4
1976 * - 'ss': frame sequence number c0..dd
1978 if (data
[0] == 0x00 && data
[1] == 0x00
1979 && data
[6] == 0xff && data
[7] == 0xff) {
1980 gspca_frame_add(gspca_dev
, LAST_PACKET
, NULL
, 0);
1981 gspca_frame_add(gspca_dev
, FIRST_PACKET
, data
+ 8, len
- 8);
1983 gspca_frame_add(gspca_dev
, INTER_PACKET
, data
, len
);
1987 static int sd_setautogain(struct gspca_dev
*gspca_dev
, __s32 val
)
1989 struct sd
*sd
= (struct sd
*) gspca_dev
;
1991 sd
->ctrls
[AUTOGAIN
].val
= val
;
1993 gspca_dev
->ctrl_inac
= (1 << GAIN
) | (1 << EXPOSURE
);
1995 gspca_dev
->ctrl_inac
= 0;
1996 if (gspca_dev
->streaming
)
1997 setautogain(gspca_dev
);
1998 return gspca_dev
->usb_err
;
2001 #include "autogain_functions.h"
2003 static void do_autogain(struct gspca_dev
*gspca_dev
)
2005 struct sd
*sd
= (struct sd
*) gspca_dev
;
2010 if (--sd
->ag_cnt
>= 0)
2012 sd
->ag_cnt
= AG_CNT_START
;
2014 /* get the average luma */
2015 reg_r(gspca_dev
, sd
->bridge
== BRIDGE_NW801
? 0x080d : 0x080c, 4);
2016 luma
= (gspca_dev
->usb_buf
[3] << 24) + (gspca_dev
->usb_buf
[2] << 16)
2017 + (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0];
2020 switch (sd
->webcam
) {
2022 coarse_grained_expo_autogain(gspca_dev
, luma
, 100, 5);
2025 auto_gain_n_exposure(gspca_dev
, luma
, 100, 5, 230, 0);
2030 /* V4L2 controls supported by the driver */
2031 static const struct ctrl sd_ctrls
[NCTRLS
] = {
2034 .id
= V4L2_CID_GAIN
,
2035 .type
= V4L2_CTRL_TYPE_INTEGER
,
2040 .default_value
= 128
2042 .set_control
= setgain
2046 .id
= V4L2_CID_EXPOSURE
,
2047 .type
= V4L2_CTRL_TYPE_INTEGER
,
2054 .set_control
= setexposure
2058 .id
= V4L2_CID_AUTOGAIN
,
2059 .type
= V4L2_CTRL_TYPE_BOOLEAN
,
2060 .name
= "Auto Gain",
2064 .default_value
= AUTOGAIN_DEF
,
2065 .flags
= V4L2_CTRL_FLAG_UPDATE
2067 .set
= sd_setautogain
2071 /* sub-driver description */
2072 static const struct sd_desc sd_desc
= {
2073 .name
= MODULE_NAME
,
2075 .nctrls
= ARRAY_SIZE(sd_ctrls
),
2076 .config
= sd_config
,
2080 .pkt_scan
= sd_pkt_scan
,
2081 .dq_callback
= do_autogain
,
2084 /* -- module initialisation -- */
2085 static const struct usb_device_id device_table
[] = {
2086 {USB_DEVICE(0x046d, 0xd001)},
2087 {USB_DEVICE(0x0502, 0xd001)},
2088 {USB_DEVICE(0x052b, 0xd001)},
2089 {USB_DEVICE(0x055f, 0xd001)},
2090 {USB_DEVICE(0x06a5, 0x0000)},
2091 {USB_DEVICE(0x06a5, 0xd001)},
2092 {USB_DEVICE(0x06a5, 0xd800)},
2093 {USB_DEVICE(0x06be, 0xd001)},
2094 {USB_DEVICE(0x0728, 0xd001)},
2097 MODULE_DEVICE_TABLE(usb
, device_table
);
2099 /* -- device connect -- */
2100 static int sd_probe(struct usb_interface
*intf
,
2101 const struct usb_device_id
*id
)
2103 return gspca_dev_probe(intf
, id
, &sd_desc
, sizeof(struct sd
),
2107 static struct usb_driver sd_driver
= {
2108 .name
= MODULE_NAME
,
2109 .id_table
= device_table
,
2111 .disconnect
= gspca_disconnect
,
2113 .suspend
= gspca_suspend
,
2114 .resume
= gspca_resume
,
2118 /* -- module insert / remove -- */
2119 static int __init
sd_mod_init(void)
2121 return usb_register(&sd_driver
);
2123 static void __exit
sd_mod_exit(void)
2125 usb_deregister(&sd_driver
);
2128 module_init(sd_mod_init
);
2129 module_exit(sd_mod_exit
);
2131 module_param(webcam
, int, 0644);
2132 MODULE_PARM_DESC(webcam
,
2135 "1: Trust 120 SpaceCam\n"
2136 "2: other Trust 120 SpaceCam\n"
2137 "3: Conceptronic Video Pro\n"
2138 "4: D-link dru-350c\n"
2139 "5: Plustek Opticam 500U\n"
2140 "6: Panasonic GP-KR651US\n"
2142 "8: Mustek Wcam 300 mini\n"
2143 "9: Scalar USB Microscope M2 (Proscope)\n"
2144 "10: Divio Chicony TwinkleCam\n"