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 {352, 288, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
159 .sizeimage
= 352 * 288 * 4 / 8,
160 .colorspace
= V4L2_COLORSPACE_JPEG
}
162 static const struct v4l2_pix_format vga_mode
[] = {
163 {320, 240, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
165 .sizeimage
= 320 * 240 * 4 / 8,
166 .colorspace
= V4L2_COLORSPACE_JPEG
},
167 {640, 480, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
169 .sizeimage
= 640 * 480 * 3 / 8,
170 .colorspace
= V4L2_COLORSPACE_JPEG
},
174 * The sequences below contain:
175 * - 1st and 2nd bytes: either
176 * - register number (BE)
177 * - I2C0 + i2c address
178 * - 3rd byte: data length (=0 for end of sequence)
183 static const u8 nw800_init
[] = {
184 0x04, 0x05, 0x01, 0x61,
185 0x04, 0x04, 0x01, 0x01,
186 0x04, 0x06, 0x01, 0x04,
187 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
188 0x05, 0x05, 0x01, 0x00,
191 static const u8 nw800_start
[] = {
192 0x04, 0x06, 0x01, 0xc0,
193 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
194 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
195 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
196 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
197 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
198 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
199 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
200 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
201 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
202 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
203 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
204 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
205 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
206 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
208 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
209 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
210 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
211 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
212 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
213 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
214 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
216 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
217 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
218 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
219 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x00, 0x00, 0x00, 0x00, 0x00,
226 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
228 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
231 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
232 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
233 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
234 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
235 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
236 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
237 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
238 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
239 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
240 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
241 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
242 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
243 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
244 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
245 0x01, 0x60, 0x01, 0x00, 0x00,
247 0x04, 0x04, 0x01, 0xff,
248 0x04, 0x06, 0x01, 0xc4,
250 0x04, 0x06, 0x01, 0xc0,
251 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
252 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
253 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
254 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
255 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
256 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
257 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
258 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
259 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
260 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
261 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
262 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
263 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
264 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
266 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
267 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
268 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
269 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
270 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
271 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
272 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
274 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
275 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
276 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
277 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
278 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
279 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
281 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
283 0x00, 0x00, 0x00, 0x00, 0x00,
284 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
285 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
286 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
287 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
288 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
289 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
290 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
291 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
292 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
293 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
294 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
295 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
296 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
297 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
298 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
299 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
300 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
301 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
302 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
303 0x01, 0x60, 0x01, 0x00, 0x00,
305 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
306 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
308 0x00, 0x80, 0x01, 0xa0,
309 0x10, 0x1a, 0x01, 0x00,
310 0x00, 0x91, 0x02, 0x6c, 0x01,
311 0x00, 0x03, 0x02, 0xc8, 0x01,
312 0x10, 0x1a, 0x01, 0x00,
313 0x10, 0x00, 0x01, 0x83,
314 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
315 0x20, 0x01, 0x60, 0x01,
316 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
317 0x10, 0x1b, 0x02, 0x69, 0x00,
318 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
319 0x05, 0x02, 0x01, 0x02,
320 0x06, 0x00, 0x02, 0x04, 0xd9,
321 0x05, 0x05, 0x01, 0x20,
322 0x05, 0x05, 0x01, 0x21,
323 0x10, 0x0e, 0x01, 0x08,
324 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
325 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
327 0x10, 0x03, 0x01, 0x00,
328 0x10, 0x0f, 0x02, 0x13, 0x13,
329 0x10, 0x03, 0x01, 0x14,
330 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
331 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
333 0x10, 0x0b, 0x01, 0x14,
334 0x10, 0x0d, 0x01, 0x20,
335 0x10, 0x0c, 0x01, 0x34,
336 0x04, 0x06, 0x01, 0xc3,
337 0x04, 0x04, 0x01, 0x00,
338 0x05, 0x02, 0x01, 0x02,
339 0x06, 0x00, 0x02, 0x00, 0x48,
340 0x05, 0x05, 0x01, 0x20,
341 0x05, 0x05, 0x01, 0x21,
345 /* 06a5:d001 - nw801 - Panasonic
347 static const u8 nw801_start_1
[] = {
348 0x05, 0x06, 0x01, 0x04,
349 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
350 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
351 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
352 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
353 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
354 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
355 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
356 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
357 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
358 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
359 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
360 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
361 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
362 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
363 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
364 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
365 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
366 0x00, 0x00, 0x00, 0x00, 0x69, 0xa8, 0x1f, 0x00,
367 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
368 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
370 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
371 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
373 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
374 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
375 0x06, 0x00, 0x02, 0x09, 0x99,
376 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
378 0x00, 0x00, 0x00, 0x00, 0x00,
379 0x10, 0x00, 0x40, 0x22, 0x02, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x00,
380 0x00, 0x00, 0x00, 0x0a, 0x15, 0x08, 0x08, 0x0a,
381 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 0x00, 0x01, 0x35, 0xfd, 0x07, 0x3d, 0x00, 0x00,
383 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x14, 0x02,
384 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
385 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x06,
386 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
387 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
388 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 0xa4,
389 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 0xcf,
390 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
391 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
392 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
393 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
394 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
395 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
396 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00,
397 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x82, 0x02,
398 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
402 static const u8 nw801_start_qvga
[] = {
403 0x02, 0x00, 0x10, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
404 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78,
405 0x02, 0x0f, 0x01, 0x6b,
406 0x10, 0x1a, 0x01, 0x15,
407 0x00, 0x00, 0x01, 0x1e,
408 0x10, 0x00, 0x01, 0x2f,
409 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
410 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
414 static const u8 nw801_start_vga
[] = {
415 0x02, 0x00, 0x10, 0x78, 0xa0, 0x97, 0x78, 0xa0, 0x00, 0x00, 0x00,
416 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xf0,
417 0x02, 0x0f, 0x01, 0xd5,
418 0x10, 0x1a, 0x01, 0x15,
419 0x00, 0x00, 0x01, 0x0e,
420 0x10, 0x00, 0x01, 0x22,
421 0x10, 0x8c, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
422 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
425 static const u8 nw801_start_2
[] = {
426 0x10, 0x04, 0x01, 0x1a,
427 0x10, 0x19, 0x01, 0x09, /* clock */
428 0x10, 0x24, 0x06, 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01,
430 0x00, 0x03, 0x02, 0x92, 0x03,
431 0x00, 0x1d, 0x04, 0xf2, 0x00, 0x24, 0x07,
432 0x00, 0x7b, 0x01, 0xcf,
433 0x10, 0x94, 0x01, 0x07,
434 0x05, 0x05, 0x01, 0x01,
435 0x05, 0x04, 0x01, 0x01,
436 0x10, 0x0e, 0x01, 0x08,
437 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
438 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
440 0x10, 0x03, 0x01, 0x00,
441 0x10, 0x0f, 0x02, 0x0c, 0x0c,
442 0x10, 0x03, 0x01, 0x08,
443 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
444 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
446 0x10, 0x0b, 0x01, 0x0b,
447 0x10, 0x0d, 0x01, 0x0b,
448 0x10, 0x0c, 0x01, 0x1f,
449 0x05, 0x06, 0x01, 0x03,
453 /* nw802 (sharp IR3Y38M?) */
454 static const u8 nw802_start
[] = {
455 0x04, 0x06, 0x01, 0x04,
456 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x4d,
457 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
458 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
459 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
460 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
461 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
462 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
463 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
464 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
465 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
466 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
467 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
468 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
469 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
470 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
471 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
472 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
473 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
474 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
475 0x00, 0x10, 0x06, 0x08, 0x00, 0x18, 0x00,
476 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
477 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
479 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
480 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
481 0x06, 0x00, 0x02, 0x09, 0x99,
482 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
483 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
484 0x00, 0x00, 0x00, 0x00, 0x00,
485 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x1d, 0x00, 0x00, 0x00,
486 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
487 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
488 0x00, 0x49, 0x13, 0xff, 0x01, 0xc0, 0x00, 0x14,
489 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
490 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
491 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
492 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
493 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
494 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
495 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
496 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
497 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
498 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
499 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
500 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
501 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
502 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x82,
503 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
505 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
506 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
508 0x10, 0x1a, 0x01, 0x00,
509 0x10, 0x00, 0x01, 0xad,
510 0x00, 0x00, 0x01, 0x08,
511 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
512 0x10, 0x1b, 0x02, 0x00, 0x00,
513 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
514 0x10, 0x1d, 0x08, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
515 0x10, 0x0e, 0x01, 0x27,
516 0x10, 0x41, 0x11, 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
517 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
519 0x10, 0x03, 0x01, 0x00,
520 0x10, 0x0f, 0x02, 0x14, 0x14,
521 0x10, 0x03, 0x01, 0x0c,
522 0x10, 0x41, 0x11, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 0x74,
523 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 0xf1,
525 /* 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
526 * 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
528 0x10, 0x0b, 0x01, 0x10,
529 0x10, 0x0d, 0x01, 0x11,
530 0x10, 0x0c, 0x01, 0x1c,
531 0x04, 0x06, 0x01, 0x03,
532 0x04, 0x04, 0x01, 0x00,
535 /* et31x110 - Trust 120 SpaceCam */
536 static const u8 spacecam_init
[] = {
537 0x04, 0x05, 0x01, 0x01,
538 0x04, 0x04, 0x01, 0x01,
539 0x04, 0x06, 0x01, 0x04,
540 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
541 0x05, 0x05, 0x01, 0x00,
544 static const u8 spacecam_start
[] = {
545 0x04, 0x06, 0x01, 0x44,
546 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
547 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
548 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
549 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
550 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
551 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
552 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
553 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
554 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
555 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
556 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
557 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
558 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
559 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
560 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
561 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
562 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
563 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
564 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
565 0x00, 0x4b, 0x00, 0x7c, 0x00, 0x80, 0x00,
566 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
567 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
569 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
570 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
571 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
572 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
573 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
574 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
576 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
578 0x00, 0x00, 0x00, 0x00, 0x00,
579 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
580 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
581 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
582 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
583 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
584 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
585 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
586 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
587 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
588 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
589 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
590 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
591 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
592 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
593 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
594 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
595 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
596 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
597 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
598 0x01, 0x60, 0x01, 0x00, 0x00,
599 0x04, 0x06, 0x01, 0xc0,
600 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
601 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
602 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
604 0x00, 0x80, 0x01, 0xa0,
605 0x10, 0x1a, 0x01, 0x00,
606 0x00, 0x91, 0x02, 0x32, 0x01,
607 0x00, 0x03, 0x02, 0x08, 0x02,
608 0x10, 0x00, 0x01, 0x83,
609 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
610 0x20, 0x01, 0x60, 0x01,
611 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
612 0x10, 0x0e, 0x01, 0x08,
613 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
614 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
616 0x10, 0x03, 0x01, 0x00,
617 0x10, 0x0f, 0x02, 0x13, 0x13,
618 0x10, 0x03, 0x01, 0x06,
619 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
620 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
622 0x10, 0x0b, 0x01, 0x08,
623 0x10, 0x0d, 0x01, 0x10,
624 0x10, 0x0c, 0x01, 0x1f,
625 0x04, 0x06, 0x01, 0xc3,
626 0x04, 0x05, 0x01, 0x40,
627 0x04, 0x04, 0x01, 0x40,
630 /* et31x110 - pas106 - other Trust SpaceCam120 */
631 static const u8 spacecam2_start
[] = {
632 0x04, 0x06, 0x01, 0x44,
633 0x04, 0x06, 0x01, 0x00,
634 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
635 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
636 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
637 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
638 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
639 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
640 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
641 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
642 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
643 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
644 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
645 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
646 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
647 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
648 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
649 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
650 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
651 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
652 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
653 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
654 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
655 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
657 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
658 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
659 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
660 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
664 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666 0x00, 0x00, 0x00, 0x00, 0x00,
667 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
668 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
669 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
671 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
672 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
673 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
674 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
675 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
676 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
677 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
678 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
679 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
680 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
681 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
682 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
683 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
684 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
685 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
686 0x01, 0x60, 0x01, 0x00, 0x00,
687 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
688 0x04, 0x04, 0x01, 0x40,
689 0x04, 0x04, 0x01, 0x00,
690 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05,
691 0x00, 0x00, 0x05, 0x05,
692 I2C0
, 0x40, 0x02, 0x11, 0x06,
693 I2C0
, 0x40, 0x02, 0x14, 0x00,
694 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
695 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
696 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
698 I2C0
, 0x40, 0x02, 0x02, 0x0c, /* pixel clock */
699 I2C0
, 0x40, 0x02, 0x0f, 0x00,
700 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
701 0x10, 0x00, 0x01, 0x01,
702 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
703 0x20, 0x01, 0x60, 0x01,
704 I2C0
, 0x40, 0x02, 0x05, 0x0f, /* exposure */
705 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
706 I2C0
, 0x40, 0x07, 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00,
708 I2C0
, 0x40, 0x03, 0x12, 0x04, 0x01,
709 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
710 0x10, 0x0e, 0x01, 0x08,
711 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
712 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
714 0x10, 0x03, 0x01, 0x00,
715 0x10, 0x0f, 0x02, 0x13, 0x13,
716 0x10, 0x03, 0x01, 0x06,
717 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
718 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
720 0x10, 0x0b, 0x01, 0x11,
721 0x10, 0x0d, 0x01, 0x10,
722 0x10, 0x0c, 0x01, 0x14,
723 0x04, 0x06, 0x01, 0x03,
724 0x04, 0x05, 0x01, 0x61,
725 0x04, 0x04, 0x01, 0x00,
729 /* nw802 - Conceptronic Video Pro */
730 static const u8 cvideopro_start
[] = {
731 0x04, 0x06, 0x01, 0x04,
732 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
733 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
734 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
735 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
736 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
737 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
738 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
739 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
740 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
741 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
742 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
743 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
744 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
745 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
746 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
747 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
748 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
749 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
750 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
751 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
752 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
753 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
755 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
756 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
757 0x06, 0x00, 0x02, 0x09, 0x99,
758 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
759 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
760 0x00, 0x00, 0x00, 0x00, 0x00,
761 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
762 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
763 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
764 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
765 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
766 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
767 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
768 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
769 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
770 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
771 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
772 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
773 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
774 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
775 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
776 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
777 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
778 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
779 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
781 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
782 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
784 0x10, 0x1a, 0x01, 0x03,
785 0x10, 0x00, 0x01, 0xac,
786 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
787 0x10, 0x1b, 0x02, 0x3b, 0x01,
788 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
789 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
790 0x10, 0x1d, 0x02, 0x40, 0x06,
791 0x10, 0x0e, 0x01, 0x08,
792 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
793 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
795 0x10, 0x03, 0x01, 0x00,
796 0x10, 0x0f, 0x02, 0x12, 0x12,
797 0x10, 0x03, 0x01, 0x0c,
798 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
799 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
801 0x10, 0x0b, 0x01, 0x09,
802 0x10, 0x0d, 0x01, 0x10,
803 0x10, 0x0c, 0x01, 0x2f,
804 0x04, 0x06, 0x01, 0x03,
805 0x04, 0x04, 0x01, 0x00,
809 /* nw802 - D-link dru-350c cam */
810 static const u8 dlink_start
[] = {
811 0x04, 0x06, 0x01, 0x04,
812 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
813 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
814 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
815 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
816 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
817 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
818 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
819 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
820 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
821 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
822 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
823 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
824 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
825 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
826 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
827 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
828 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
829 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
830 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
831 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
832 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
833 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
835 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
836 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
837 0x06, 0x00, 0x02, 0x09, 0x99,
838 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
839 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
840 0x00, 0x00, 0x00, 0x00, 0x00,
841 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
842 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
843 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
844 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
845 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
846 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
847 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
848 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
849 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
850 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
851 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
852 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
853 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
854 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
855 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
856 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
857 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
858 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82,
859 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
861 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
862 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
864 0x10, 0x1a, 0x01, 0x00,
865 0x10, 0x00, 0x01, 0xad,
866 0x00, 0x00, 0x01, 0x08,
867 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
868 0x10, 0x1b, 0x02, 0x00, 0x00,
869 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
870 0x10, 0x1d, 0x08, 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
871 0x10, 0x0e, 0x01, 0x20,
872 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
873 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
875 0x10, 0x03, 0x01, 0x00,
876 0x10, 0x0f, 0x02, 0x11, 0x11,
877 0x10, 0x03, 0x01, 0x10,
878 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
879 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
881 0x10, 0x0b, 0x01, 0x19,
882 0x10, 0x0d, 0x01, 0x10,
883 0x10, 0x0c, 0x01, 0x1e,
884 0x04, 0x06, 0x01, 0x03,
885 0x04, 0x04, 0x01, 0x00,
889 /* 06a5:d001 - nw801 - Sony
890 * Plustek Opticam 500U or ProLink DS3303u (Hitachi HD49322BF) */
891 /*fixme: 320x240 only*/
892 static const u8 ds3303_start
[] = {
893 0x05, 0x06, 0x01, 0x04,
894 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
895 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
896 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
897 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
898 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
899 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
900 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
901 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
902 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
903 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
904 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
905 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
906 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
907 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
908 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
909 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
910 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
911 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00,
912 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
913 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
915 0x02, 0x00, 0x12, 0x03, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
916 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50,
918 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
919 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
920 0x06, 0x00, 0x02, 0x09, 0x99,
921 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
922 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
923 0x00, 0x00, 0x00, 0x00, 0x00,
924 0x10, 0x00, 0x40, 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
925 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
926 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
927 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00,
928 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20,
929 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
930 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03,
931 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
932 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
933 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88,
934 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb,
935 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
936 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
937 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
938 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
939 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
940 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
941 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01,
942 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02,
943 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
946 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
947 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81,
949 0x10, 0x1a, 0x01, 0x15,
950 0x10, 0x00, 0x01, 0x2f,
951 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
952 0x10, 0x1b, 0x02, 0x00, 0x00,
953 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
954 0x10, 0x26, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
955 0x10, 0x24, 0x02, 0x40, 0x06,
956 0x10, 0x0e, 0x01, 0x08,
957 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
958 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
960 0x10, 0x03, 0x01, 0x00,
961 0x10, 0x0f, 0x02, 0x16, 0x16,
962 0x10, 0x03, 0x01, 0x0c,
963 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
964 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
966 0x10, 0x0b, 0x01, 0x26,
967 0x10, 0x0d, 0x01, 0x10,
968 0x10, 0x0c, 0x01, 0x1c,
969 0x05, 0x06, 0x01, 0x03,
970 0x05, 0x04, 0x01, 0x00,
974 /* 06a5:d001 - nw802 - Panasonic
975 * GP-KR651US (Philips TDA8786) */
976 static const u8 kr651_start_1
[] = {
977 0x04, 0x06, 0x01, 0x04,
978 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48,
979 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
980 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
981 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
982 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
983 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
984 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
985 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
986 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
987 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
988 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
989 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
990 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
991 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
992 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
993 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
994 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
995 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
996 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
997 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
998 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
999 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1001 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1002 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1003 0x06, 0x00, 0x02, 0x09, 0x99,
1004 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1006 0x00, 0x00, 0x00, 0x00, 0x00,
1007 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1008 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1009 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1010 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1011 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1012 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1013 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1014 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1015 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1016 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1017 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1018 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1019 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1020 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1021 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1022 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1023 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1024 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1025 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1029 static const u8 kr651_start_qvga
[] = {
1030 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1031 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1033 0x10, 0x1a, 0x01, 0x03,
1034 0x10, 0x00, 0x01, 0xac,
1035 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1036 0x10, 0x1b, 0x02, 0x00, 0x00,
1037 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
1038 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1039 0x10, 0x1d, 0x02, 0x28, 0x01,
1042 static const u8 kr651_start_vga
[] = {
1043 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1044 0x00, 0xf0, 0x30, 0x03, 0x01, 0x82, 0x82, 0x98,
1046 0x10, 0x1a, 0x01, 0x03,
1047 0x10, 0x00, 0x01, 0xa0,
1048 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1049 0x10, 0x1b, 0x02, 0x00, 0x00,
1050 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
1051 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1052 0x10, 0x1d, 0x02, 0x68, 0x00,
1054 static const u8 kr651_start_2
[] = {
1055 0x10, 0x0e, 0x01, 0x08,
1056 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1057 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1059 0x10, 0x03, 0x01, 0x00,
1060 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1061 0x10, 0x03, 0x01, 0x0c,
1062 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1063 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1065 0x10, 0x0b, 0x01, 0x10,
1066 0x10, 0x0d, 0x01, 0x10,
1067 0x10, 0x0c, 0x01, 0x2d,
1068 0x04, 0x06, 0x01, 0x03,
1069 0x04, 0x04, 0x01, 0x00,
1073 /* nw802 - iRez Kritter cam */
1074 static const u8 kritter_start
[] = {
1075 0x04, 0x06, 0x01, 0x06,
1076 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48,
1077 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19,
1078 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1079 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28,
1080 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1081 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1082 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1083 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1084 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1085 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1086 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1087 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1088 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1089 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1090 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1091 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30,
1092 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1093 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1094 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1095 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1096 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1097 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1099 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1100 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1101 0x06, 0x00, 0x02, 0x09, 0x99,
1102 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1104 0x00, 0x00, 0x00, 0x00, 0x00,
1105 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1106 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1107 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1108 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1109 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1110 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1111 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1112 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1113 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1114 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1115 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1116 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1117 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1118 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1119 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1120 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1121 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82,
1123 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1125 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
1126 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1128 0x10, 0x1a, 0x01, 0x03,
1129 0x10, 0x00, 0x01, 0xaf,
1130 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1131 0x10, 0x1b, 0x02, 0x3b, 0x01,
1132 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1133 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1134 0x10, 0x1d, 0x02, 0x00, 0x00,
1135 0x10, 0x0e, 0x01, 0x08,
1136 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1137 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1139 0x10, 0x03, 0x01, 0x00,
1140 0x10, 0x0f, 0x02, 0x0d, 0x0d,
1141 0x10, 0x03, 0x01, 0x02,
1142 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1143 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1145 0x10, 0x0b, 0x01, 0x17,
1146 0x10, 0x0d, 0x01, 0x10,
1147 0x10, 0x0c, 0x01, 0x1e,
1148 0x04, 0x06, 0x01, 0x03,
1149 0x04, 0x04, 0x01, 0x00,
1153 /* nw802 - Mustek Wcam 300 mini */
1154 static const u8 mustek_start
[] = {
1155 0x04, 0x06, 0x01, 0x04,
1156 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
1157 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1158 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1159 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
1160 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1161 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1162 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1163 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1164 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1165 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1166 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1167 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1168 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1169 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1170 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1171 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1172 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
1173 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1174 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
1175 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06,
1176 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1177 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1179 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1180 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1181 0x06, 0x00, 0x02, 0x09, 0x99,
1182 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1184 0x00, 0x00, 0x00, 0x00, 0x00,
1185 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00,
1186 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1187 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1188 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
1189 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
1190 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1191 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1192 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1193 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1194 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1195 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1196 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1197 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1198 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1199 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1200 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1201 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1202 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82,
1203 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1205 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1206 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1208 0x10, 0x1a, 0x01, 0x00,
1209 0x10, 0x00, 0x01, 0xad,
1210 0x00, 0x00, 0x01, 0x08,
1211 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1212 0x10, 0x1b, 0x02, 0x00, 0x00,
1213 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1214 0x10, 0x1d, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
1215 0x10, 0x0e, 0x01, 0x0f,
1216 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1217 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1219 0x10, 0x0f, 0x02, 0x11, 0x11,
1220 0x10, 0x03, 0x01, 0x0c,
1221 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1222 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1224 0x10, 0x0b, 0x01, 0x1c,
1225 0x10, 0x0d, 0x01, 0x1a,
1226 0x10, 0x0c, 0x01, 0x34,
1227 0x04, 0x05, 0x01, 0x61,
1228 0x04, 0x04, 0x01, 0x40,
1229 0x04, 0x06, 0x01, 0x03,
1233 /* nw802 - Scope USB Microscope M2 (ProScope) (Hitachi HD49322BF) */
1234 static const u8 proscope_init
[] = {
1235 0x04, 0x05, 0x01, 0x21,
1236 0x04, 0x04, 0x01, 0x01,
1239 static const u8 proscope_start_1
[] = {
1240 0x04, 0x06, 0x01, 0x04,
1241 0x00, 0x00, 0x40, 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04,
1242 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1243 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1244 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4,
1245 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1246 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86,
1247 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1248 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1249 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6,
1250 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1251 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1252 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1253 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34,
1254 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8,
1256 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1257 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00,
1258 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1259 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94,
1260 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
1261 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1262 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1264 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1265 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1266 0x06, 0x00, 0x02, 0x09, 0x99,
1267 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1269 0x00, 0x00, 0x00, 0x00, 0x00,
1270 0x10, 0x00, 0x40, 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1271 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
1272 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
1273 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01,
1274 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00,
1275 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1276 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1277 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1278 0x10, 0x40, 0x40, 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f,
1279 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4,
1280 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1281 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1282 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1283 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1284 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1285 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1286 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f,
1287 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82,
1288 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1292 static const u8 proscope_start_qvga
[] = {
1293 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1294 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1296 0x10, 0x1a, 0x01, 0x06,
1297 0x00, 0x03, 0x02, 0xf9, 0x02,
1298 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1299 0x10, 0x1b, 0x02, 0x00, 0x00,
1300 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1301 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1302 0x10, 0x0e, 0x01, 0x10,
1305 static const u8 proscope_start_vga
[] = {
1306 0x00, 0x03, 0x02, 0xf9, 0x02,
1307 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1308 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1309 0x00, 0xf0, 0x16, 0x00, 0x00, 0x82, 0x84, 0x00,
1311 0x10, 0x1a, 0x01, 0x06,
1312 0x10, 0x00, 0x01, 0xa1,
1313 0x10, 0x1b, 0x02, 0x00, 0x00,
1314 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1315 0x10, 0x11, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1316 0x10, 0x0e, 0x01, 0x10,
1317 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1318 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1320 0x10, 0x03, 0x01, 0x00,
1323 static const u8 proscope_start_2
[] = {
1324 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1325 0x10, 0x03, 0x01, 0x0c,
1326 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1327 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1329 0x10, 0x0b, 0x01, 0x0b,
1330 0x10, 0x0d, 0x01, 0x10,
1331 0x10, 0x0c, 0x01, 0x1b,
1332 0x04, 0x06, 0x01, 0x03,
1333 0x04, 0x05, 0x01, 0x21,
1334 0x04, 0x04, 0x01, 0x00,
1338 /* nw800 - hv7121b? (seems pas106) - Divio Chicony TwinkleCam */
1339 static const u8 twinkle_start
[] = {
1340 0x04, 0x06, 0x01, 0x44,
1341 0x04, 0x06, 0x01, 0x00,
1342 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
1343 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
1344 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1345 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
1346 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1347 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1348 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1349 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1350 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1351 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1352 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1353 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1354 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1355 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1356 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1357 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1358 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
1359 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
1360 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
1361 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
1362 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1363 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1365 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1366 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
1367 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
1368 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1372 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1374 0x00, 0x00, 0x00, 0x00, 0x00,
1375 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
1376 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08,
1377 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1378 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
1379 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1380 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1381 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06,
1382 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80,
1383 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1384 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1385 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1386 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1387 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1388 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1389 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1390 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1391 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
1393 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
1394 0x01, 0x60, 0x01, 0x00, 0x00,
1396 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1397 0x04, 0x04, 0x01, 0x10,
1398 0x04, 0x04, 0x01, 0x00,
1399 0x04, 0x05, 0x01, 0x61,
1400 0x04, 0x04, 0x01, 0x01,
1401 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1402 0x00, 0x00, 0x00, 0x0a,
1403 I2C0
, 0x40, 0x02, 0x11, 0x06,
1404 I2C0
, 0x40, 0x02, 0x14, 0x00,
1405 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
1406 I2C0
, 0x40, 0x02, 0x07, 0x01,
1407 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
1408 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
1410 I2C0
, 0x40, 0x02, 0x02, 0x0c,
1411 I2C0
, 0x40, 0x02, 0x13, 0x01,
1412 0x10, 0x00, 0x01, 0x01,
1413 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
1414 0x20, 0x01, 0x60, 0x01,
1415 I2C0
, 0x40, 0x02, 0x05, 0x0f,
1416 I2C0
, 0x40, 0x02, 0x13, 0x01,
1417 I2C0
, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x17,
1418 I2C0
, 0x40, 0x03, 0x12, 0x00, 0x01,
1419 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1420 I2C0
, 0x40, 0x02, 0x12, 0x00,
1421 I2C0
, 0x40, 0x02, 0x0e, 0x00,
1422 I2C0
, 0x40, 0x02, 0x11, 0x06,
1423 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1424 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1426 0x10, 0x03, 0x01, 0x00,
1427 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1428 0x10, 0x03, 0x01, 0x06,
1429 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1430 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1432 0x10, 0x0b, 0x01, 0x19,
1433 0x10, 0x0d, 0x01, 0x10,
1434 0x10, 0x0c, 0x01, 0x0d,
1435 0x04, 0x06, 0x01, 0x03,
1436 0x04, 0x05, 0x01, 0x61,
1437 0x04, 0x04, 0x01, 0x41,
1442 static const u8 dvcv6_start
[] = {
1443 0x04, 0x06, 0x01, 0x06,
1444 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
1445 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1446 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1447 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
1448 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1449 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1450 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1451 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1452 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1453 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1454 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1455 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1456 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1457 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1459 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
1460 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1461 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1462 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1463 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1464 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1465 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1467 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1468 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1469 0x06, 0x00, 0x02, 0x09, 0x99,
1470 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1471 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1472 0x00, 0x00, 0x00, 0x00, 0x00,
1473 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1474 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1475 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1476 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1477 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1478 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1479 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1480 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1481 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1482 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1483 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1484 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1485 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1486 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1487 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1488 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1489 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1490 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1491 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1493 0x00, 0x03, 0x02, 0x94, 0x03,
1494 0x00, 0x1d, 0x04, 0x0a, 0x01, 0x28, 0x07,
1495 0x00, 0x7b, 0x02, 0xe0, 0x00,
1496 0x10, 0x8d, 0x01, 0x00,
1497 0x00, 0x09, 0x04, 0x1e, 0x00, 0x0c, 0x02,
1498 0x00, 0x91, 0x02, 0x0b, 0x02,
1499 0x10, 0x00, 0x01, 0xaf,
1500 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8f, 0x3c, 0x50, 0x00, 0x00, 0x00,
1501 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1503 0x10, 0x1a, 0x01, 0x02,
1504 0x10, 0x00, 0x01, 0xaf,
1505 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1506 0x10, 0x1b, 0x02, 0x07, 0x01,
1507 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1508 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1509 0x10, 0x1d, 0x02, 0x40, 0x06,
1510 0x10, 0x0e, 0x01, 0x08,
1511 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1512 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1514 0x10, 0x03, 0x01, 0x00,
1515 0x10, 0x0f, 0x02, 0x12, 0x12,
1516 0x10, 0x03, 0x01, 0x11,
1517 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1518 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1520 0x10, 0x0b, 0x01, 0x16,
1521 0x10, 0x0d, 0x01, 0x10,
1522 0x10, 0x0c, 0x01, 0x1a,
1523 0x04, 0x06, 0x01, 0x03,
1524 0x04, 0x04, 0x01, 0x00,
1527 static const u8
*webcam_start
[] = {
1528 [Generic800
] = nw800_start
,
1529 [SpaceCam
] = spacecam_start
,
1530 [SpaceCam2
] = spacecam2_start
,
1531 [Cvideopro
] = cvideopro_start
,
1532 [Dlink350c
] = dlink_start
,
1533 [DS3303u
] = ds3303_start
,
1534 [Kr651us
] = kr651_start_1
,
1535 [Kritter
] = kritter_start
,
1536 [Mustek300
] = mustek_start
,
1537 [Proscope
] = proscope_start_1
,
1538 [Twinkle
] = twinkle_start
,
1539 [DvcV6
] = dvcv6_start
,
1540 [P35u
] = nw801_start_1
,
1541 [Generic802
] = nw802_start
,
1544 /* -- write a register -- */
1545 static void reg_w(struct gspca_dev
*gspca_dev
,
1550 struct usb_device
*dev
= gspca_dev
->dev
;
1553 if (gspca_dev
->usb_err
< 0)
1556 PDEBUG(D_USBO
, "SET 00 0000 %04x %02x", index
, *data
);
1558 PDEBUG(D_USBO
, "SET 00 0000 %04x %02x %02x ...",
1559 index
, *data
, data
[1]);
1560 memcpy(gspca_dev
->usb_buf
, data
, len
);
1561 ret
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1563 USB_DIR_OUT
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1570 err("reg_w err %d", ret
);
1571 gspca_dev
->usb_err
= ret
;
1575 /* -- read registers in usb_buf -- */
1576 static void reg_r(struct gspca_dev
*gspca_dev
,
1580 struct usb_device
*dev
= gspca_dev
->dev
;
1583 if (gspca_dev
->usb_err
< 0)
1585 ret
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1587 USB_DIR_IN
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1589 gspca_dev
->usb_buf
, len
, 500);
1591 err("reg_r err %d", ret
);
1592 gspca_dev
->usb_err
= ret
;
1596 PDEBUG(D_USBI
, "GET 00 0000 %04x %02x",
1597 index
, gspca_dev
->usb_buf
[0]);
1599 PDEBUG(D_USBI
, "GET 00 0000 %04x %02x %02x ..",
1600 index
, gspca_dev
->usb_buf
[0],
1601 gspca_dev
->usb_buf
[1]);
1604 static void i2c_w(struct gspca_dev
*gspca_dev
,
1612 reg_w(gspca_dev
, 0x0600, data
+ 1, len
- 1);
1613 reg_w(gspca_dev
, 0x0600, data
, len
);
1616 reg_w(gspca_dev
, 0x0502, val
, 2);
1618 reg_w(gspca_dev
, 0x0501, val
, 1);
1619 for (i
= 5; --i
>= 0; ) {
1621 reg_r(gspca_dev
, 0x0505, 1);
1622 if (gspca_dev
->usb_err
< 0)
1624 if (gspca_dev
->usb_buf
[0] == 0)
1627 gspca_dev
->usb_err
= -ETIME
;
1630 static void reg_w_buf(struct gspca_dev
*gspca_dev
,
1642 if (cmd
[-3] != I2C0
)
1643 reg_w(gspca_dev
, reg
, cmd
, len
);
1645 i2c_w(gspca_dev
, reg
, cmd
, len
);
1650 static int swap_bits(int v
)
1655 for (i
= 0; i
< 8; i
++) {
1664 static void setgain(struct gspca_dev
*gspca_dev
)
1666 struct sd
*sd
= (struct sd
*) gspca_dev
;
1669 val
= sd
->ctrls
[GAIN
].val
;
1670 switch (sd
->webcam
) {
1672 /* Note the control goes from 0-255 not 0-127, but anything
1673 above 127 just means amplifying noise */
1674 val
>>= 1; /* 0 - 255 -> 0 - 127 */
1675 reg_w(gspca_dev
, 0x1026, &val
, 1);
1679 val
= swap_bits(val
);
1682 reg_w(gspca_dev
, 0x101d, v
, 2); /* SIF reg0/1 (AGC) */
1687 static void setexposure(struct gspca_dev
*gspca_dev
)
1689 struct sd
*sd
= (struct sd
*) gspca_dev
;
1693 val
= sd
->ctrls
[EXPOSURE
].val
;
1694 switch (sd
->webcam
) {
1696 v
[0] = ((9 - val
) << 3) | 0x01;
1697 reg_w(gspca_dev
, 0x1019, v
, 1);
1702 reg_w(gspca_dev
, 0x101b, v
, 2);
1707 static void setautogain(struct gspca_dev
*gspca_dev
)
1709 struct sd
*sd
= (struct sd
*) gspca_dev
;
1712 if (gspca_dev
->ctrl_dis
& (1 << AUTOGAIN
))
1714 if (!sd
->ctrls
[AUTOGAIN
].val
) {
1718 sd
->ag_cnt
= AG_CNT_START
;
1720 reg_r(gspca_dev
, 0x1004, 1);
1721 if (gspca_dev
->usb_buf
[0] & 0x04) { /* if AE_FULL_FRM */
1722 sd
->ae_res
= gspca_dev
->width
* gspca_dev
->height
;
1723 } else { /* get the AE window size */
1724 reg_r(gspca_dev
, 0x1011, 8);
1725 w
= (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0]
1726 - (gspca_dev
->usb_buf
[3] << 8) - gspca_dev
->usb_buf
[2];
1727 h
= (gspca_dev
->usb_buf
[5] << 8) + gspca_dev
->usb_buf
[4]
1728 - (gspca_dev
->usb_buf
[7] << 8) - gspca_dev
->usb_buf
[6];
1730 if (sd
->ae_res
== 0)
1731 sd
->ae_res
= gspca_dev
->width
* gspca_dev
->height
;
1735 static int nw802_test_reg(struct gspca_dev
*gspca_dev
,
1739 /* write the value */
1740 reg_w(gspca_dev
, index
, &value
, 1);
1743 reg_r(gspca_dev
, index
, 1);
1745 return gspca_dev
->usb_buf
[0] == value
;
1748 /* this function is called at probe time */
1749 static int sd_config(struct gspca_dev
*gspca_dev
,
1750 const struct usb_device_id
*id
)
1752 struct sd
*sd
= (struct sd
*) gspca_dev
;
1754 if ((unsigned) webcam
>= NWEBCAMS
)
1756 sd
->webcam
= webcam
;
1757 gspca_dev
->cam
.reverse_alts
= 1;
1758 gspca_dev
->cam
.ctrls
= sd
->ctrls
;
1762 * Autodetect sequence inspired from some log.
1763 * We try to detect what registers exist or not.
1764 * If 0x0500 does not exist => NW802
1765 * If it does, test 0x109b. If it doesn't exist,
1766 * then it's a NW801. Else, a NW800
1768 if (!nw802_test_reg(gspca_dev
, 0x0500, 0x55)) {
1769 sd
->bridge
= BRIDGE_NW802
;
1770 if (sd
->webcam
== Generic800
)
1771 sd
->webcam
= Generic802
;
1772 } else if (!nw802_test_reg(gspca_dev
, 0x109b, 0xaa)) {
1773 sd
->bridge
= BRIDGE_NW801
;
1774 if (sd
->webcam
== Generic800
)
1777 if (webcam_chip
[sd
->webcam
] != sd
->bridge
) {
1778 err("Bad webcam type %d for NW80%d", sd
->webcam
, sd
->bridge
);
1779 gspca_dev
->usb_err
= -ENODEV
;
1780 return gspca_dev
->usb_err
;
1782 PDEBUG(D_PROBE
, "Bridge nw80%d - type: %d", sd
->bridge
, sd
->webcam
);
1784 if (sd
->bridge
== BRIDGE_NW800
) {
1785 gspca_dev
->cam
.cam_mode
= cif_mode
;
1786 gspca_dev
->cam
.nmodes
= ARRAY_SIZE(cif_mode
);
1788 gspca_dev
->cam
.cam_mode
= vga_mode
;
1789 switch (sd
->webcam
) {
1794 gspca_dev
->cam
.nmodes
= ARRAY_SIZE(vga_mode
);
1797 gspca_dev
->cam
.nmodes
= 1; /* qvga only */
1801 switch (sd
->webcam
) {
1803 /* sd->ctrls[EXPOSURE].max = 9;
1804 * sd->ctrls[EXPOSURE].def = 9; */
1805 /* coarse expo auto gain function gain minimum, to avoid
1806 * a large settings jump the first auto adjustment */
1807 sd
->ctrls
[GAIN
].def
= 255 / 5 * 2;
1812 gspca_dev
->ctrl_dis
= (1 << GAIN
) | (1 << AUTOGAIN
);
1815 sd
->ctrls
[EXPOSURE
].max
= 315;
1816 sd
->ctrls
[EXPOSURE
].def
= 150;
1819 gspca_dev
->ctrl_dis
= (1 << GAIN
) | (1 << EXPOSURE
)
1825 if (!(gspca_dev
->ctrl_dis
& (1 << AUTOGAIN
)))
1826 gspca_dev
->ctrl_inac
= (1 << GAIN
) | (1 << EXPOSURE
);
1828 return gspca_dev
->usb_err
;
1831 /* this function is called at probe and resume time */
1832 static int sd_init(struct gspca_dev
*gspca_dev
)
1834 struct sd
*sd
= (struct sd
*) gspca_dev
;
1836 switch (sd
->bridge
) {
1838 switch (sd
->webcam
) {
1840 reg_w_buf(gspca_dev
, spacecam_init
);
1843 reg_w_buf(gspca_dev
, nw800_init
);
1848 switch (sd
->webcam
) {
1852 reg_w_buf(gspca_dev
, proscope_init
);
1857 return gspca_dev
->usb_err
;
1860 /* -- start the camera -- */
1861 static int sd_start(struct gspca_dev
*gspca_dev
)
1863 struct sd
*sd
= (struct sd
*) gspca_dev
;
1866 cmd
= webcam_start
[sd
->webcam
];
1867 reg_w_buf(gspca_dev
, cmd
);
1868 switch (sd
->webcam
) {
1870 if (gspca_dev
->width
== 320)
1871 reg_w_buf(gspca_dev
, nw801_start_qvga
);
1873 reg_w_buf(gspca_dev
, nw801_start_vga
);
1874 reg_w_buf(gspca_dev
, nw801_start_2
);
1877 if (gspca_dev
->width
== 320)
1878 reg_w_buf(gspca_dev
, kr651_start_qvga
);
1880 reg_w_buf(gspca_dev
, kr651_start_vga
);
1881 reg_w_buf(gspca_dev
, kr651_start_2
);
1884 if (gspca_dev
->width
== 320)
1885 reg_w_buf(gspca_dev
, proscope_start_qvga
);
1887 reg_w_buf(gspca_dev
, proscope_start_vga
);
1888 reg_w_buf(gspca_dev
, proscope_start_2
);
1893 setexposure(gspca_dev
);
1894 setautogain(gspca_dev
);
1895 sd
->exp_too_high_cnt
= 0;
1896 sd
->exp_too_low_cnt
= 0;
1897 return gspca_dev
->usb_err
;
1900 static void sd_stopN(struct gspca_dev
*gspca_dev
)
1902 struct sd
*sd
= (struct sd
*) gspca_dev
;
1906 if (sd
->bridge
!= BRIDGE_NW801
) {
1908 reg_w(gspca_dev
, 0x0406, &value
, 1);
1912 switch (sd
->webcam
) {
1931 reg_w(gspca_dev
, 0x0404, &value
, 1);
1934 static void sd_pkt_scan(struct gspca_dev
*gspca_dev
,
1935 u8
*data
, /* isoc packet */
1936 int len
) /* iso packet length */
1939 * frame header = '00 00 hh ww ss xx ff ff'
1941 * - 'hh': height / 4
1943 * - 'ss': frame sequence number c0..dd
1945 if (data
[0] == 0x00 && data
[1] == 0x00
1946 && data
[6] == 0xff && data
[7] == 0xff) {
1947 gspca_frame_add(gspca_dev
, LAST_PACKET
, NULL
, 0);
1948 gspca_frame_add(gspca_dev
, FIRST_PACKET
, data
+ 8, len
- 8);
1950 gspca_frame_add(gspca_dev
, INTER_PACKET
, data
, len
);
1954 static int sd_setautogain(struct gspca_dev
*gspca_dev
, __s32 val
)
1956 struct sd
*sd
= (struct sd
*) gspca_dev
;
1958 sd
->ctrls
[AUTOGAIN
].val
= val
;
1960 gspca_dev
->ctrl_inac
= (1 << GAIN
) | (1 << EXPOSURE
);
1962 gspca_dev
->ctrl_inac
= 0;
1963 if (gspca_dev
->streaming
)
1964 setautogain(gspca_dev
);
1965 return gspca_dev
->usb_err
;
1968 #include "autogain_functions.h"
1970 static void do_autogain(struct gspca_dev
*gspca_dev
)
1972 struct sd
*sd
= (struct sd
*) gspca_dev
;
1977 if (--sd
->ag_cnt
>= 0)
1979 sd
->ag_cnt
= AG_CNT_START
;
1981 /* get the average luma */
1982 reg_r(gspca_dev
, sd
->bridge
== BRIDGE_NW801
? 0x080d : 0x080c, 4);
1983 luma
= (gspca_dev
->usb_buf
[3] << 24) + (gspca_dev
->usb_buf
[2] << 16)
1984 + (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0];
1987 switch (sd
->webcam
) {
1989 coarse_grained_expo_autogain(gspca_dev
, luma
, 100, 5);
1992 auto_gain_n_exposure(gspca_dev
, luma
, 100, 5, 230, 0);
1997 /* V4L2 controls supported by the driver */
1998 static const struct ctrl sd_ctrls
[NCTRLS
] = {
2001 .id
= V4L2_CID_GAIN
,
2002 .type
= V4L2_CTRL_TYPE_INTEGER
,
2007 .default_value
= 128
2009 .set_control
= setgain
2013 .id
= V4L2_CID_EXPOSURE
,
2014 .type
= V4L2_CTRL_TYPE_INTEGER
,
2021 .set_control
= setexposure
2025 .id
= V4L2_CID_AUTOGAIN
,
2026 .type
= V4L2_CTRL_TYPE_BOOLEAN
,
2027 .name
= "Auto Gain",
2031 .default_value
= AUTOGAIN_DEF
,
2032 .flags
= V4L2_CTRL_FLAG_UPDATE
2034 .set
= sd_setautogain
2038 /* sub-driver description */
2039 static const struct sd_desc sd_desc
= {
2040 .name
= MODULE_NAME
,
2042 .nctrls
= ARRAY_SIZE(sd_ctrls
),
2043 .config
= sd_config
,
2047 .pkt_scan
= sd_pkt_scan
,
2048 .dq_callback
= do_autogain
,
2051 /* -- module initialisation -- */
2052 static const struct usb_device_id device_table
[] = {
2053 {USB_DEVICE(0x046d, 0xd001)},
2054 {USB_DEVICE(0x0502, 0xd001)},
2055 {USB_DEVICE(0x052b, 0xd001)},
2056 {USB_DEVICE(0x055f, 0xd001)},
2057 {USB_DEVICE(0x06a5, 0x0000)},
2058 {USB_DEVICE(0x06a5, 0xd001)},
2059 {USB_DEVICE(0x06a5, 0xd800)},
2060 {USB_DEVICE(0x06be, 0xd001)},
2061 {USB_DEVICE(0x0728, 0xd001)},
2064 MODULE_DEVICE_TABLE(usb
, device_table
);
2066 /* -- device connect -- */
2067 static int sd_probe(struct usb_interface
*intf
,
2068 const struct usb_device_id
*id
)
2070 return gspca_dev_probe(intf
, id
, &sd_desc
, sizeof(struct sd
),
2074 static struct usb_driver sd_driver
= {
2075 .name
= MODULE_NAME
,
2076 .id_table
= device_table
,
2078 .disconnect
= gspca_disconnect
,
2080 .suspend
= gspca_suspend
,
2081 .resume
= gspca_resume
,
2085 /* -- module insert / remove -- */
2086 static int __init
sd_mod_init(void)
2088 return usb_register(&sd_driver
);
2090 static void __exit
sd_mod_exit(void)
2092 usb_deregister(&sd_driver
);
2095 module_init(sd_mod_init
);
2096 module_exit(sd_mod_exit
);
2098 module_param(webcam
, int, 0644);
2099 MODULE_PARM_DESC(webcam
,
2102 "1: Trust 120 SpaceCam\n"
2103 "2: other Trust 120 SpaceCam\n"
2104 "3: Conceptronic Video Pro\n"
2105 "4: D-link dru-350c\n"
2106 "5: Plustek Opticam 500U\n"
2107 "6: Panasonic GP-KR651US\n"
2109 "8: Mustek Wcam 300 mini\n"
2110 "9: Scalar USB Microscope M2 (Proscope)\n"
2111 "10: Divio Chicony TwinkleCam\n"