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"