1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * DivIO nw80x subdriver
5 * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
6 * Copyright (C) 2003 Sylvain Munaut <tnt@246tNt.com>
7 * Kjell Claesson <keyson@users.sourceforge.net>
10 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
12 #define MODULE_NAME "nw80x"
16 MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>");
17 MODULE_DESCRIPTION("NW80x USB Camera Driver");
18 MODULE_LICENSE("GPL");
22 /* specific webcam descriptor */
24 struct gspca_dev gspca_dev
; /* !! must be the first item */
28 #define AG_CNT_START 13
37 BRIDGE_NW800
, /* and et31x110 */
43 SpaceCam
, /* Trust 120 SpaceCam */
44 SpaceCam2
, /* other Trust 120 SpaceCam */
45 Cvideopro
, /* Conceptronic Video Pro */
56 NWEBCAMS
/* number of webcams */
59 static const u8 webcam_chip
[NWEBCAMS
] = {
60 [Generic800
] = BRIDGE_NW800
, /* 06a5:0000
61 * Typhoon Webcam 100 USB */
63 [SpaceCam
] = BRIDGE_NW800
, /* 06a5:d800
64 * Trust SpaceCam120 or SpaceCam100 PORTABLE */
66 [SpaceCam2
] = BRIDGE_NW800
, /* 06a5:d800 - pas106
67 * other Trust SpaceCam120 or SpaceCam100 PORTABLE */
69 [Cvideopro
] = BRIDGE_NW802
, /* 06a5:d001
70 * Conceptronic Video Pro 'CVIDEOPRO USB Webcam CCD' */
72 [Dlink350c
] = BRIDGE_NW802
, /* 06a5:d001
73 * D-Link NetQam Pro 250plus */
75 [DS3303u
] = BRIDGE_NW801
, /* 06a5:d001
76 * Plustek Opticam 500U or ProLink DS3303u */
78 [Kr651us
] = BRIDGE_NW802
, /* 06a5:d001
79 * Panasonic GP-KR651US */
81 [Kritter
] = BRIDGE_NW802
, /* 06a5:d001
84 [Mustek300
] = BRIDGE_NW802
, /* 055f:d001
85 * Mustek Wcam 300 mini */
87 [Proscope
] = BRIDGE_NW802
, /* 06a5:d001
88 * Scalar USB Microscope (ProScope) */
90 [Twinkle
] = BRIDGE_NW800
, /* 06a5:d800 - hv7121b? (seems pas106)
91 * Divio Chicony TwinkleCam
94 [DvcV6
] = BRIDGE_NW802
, /* 0502:d001
97 [P35u
] = BRIDGE_NW801
, /* 052b:d001, 06a5:d001 and 06be:d001
100 [Generic802
] = BRIDGE_NW802
,
105 * Logitech QuickCam Pro (dark focus ring)
109 * D-Link NetQam Pro 250plus
118 * nw800/et31x110 nw801 nw802
119 * 0000..009e 0000..00a1 0000..009e
122 * 0400..0406 (inex) 0400..0406
123 * 0500..0505 0500..0506 (inex)
124 * 0600..061a 0600..0601 0600..0601
126 * 1000..109c 1000..10a1 1000..109a
130 * nw800: 320x240, 352x288
131 * nw801/802: 320x240, 640x480
133 static const struct v4l2_pix_format cif_mode
[] = {
134 {320, 240, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
136 .sizeimage
= 320 * 240 * 4 / 8,
137 .colorspace
= V4L2_COLORSPACE_JPEG
},
138 {352, 288, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
140 .sizeimage
= 352 * 288 * 4 / 8,
141 .colorspace
= V4L2_COLORSPACE_JPEG
}
143 static const struct v4l2_pix_format vga_mode
[] = {
144 {320, 240, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
146 .sizeimage
= 320 * 240 * 4 / 8,
147 .colorspace
= V4L2_COLORSPACE_JPEG
},
148 {640, 480, V4L2_PIX_FMT_JPGL
, V4L2_FIELD_NONE
,
150 .sizeimage
= 640 * 480 * 3 / 8,
151 .colorspace
= V4L2_COLORSPACE_JPEG
},
155 * The sequences below contain:
156 * - 1st and 2nd bytes: either
157 * - register number (BE)
158 * - I2C0 + i2c address
159 * - 3rd byte: data length (=0 for end of sequence)
164 static const u8 nw800_init
[] = {
165 0x04, 0x05, 0x01, 0x61,
166 0x04, 0x04, 0x01, 0x01,
167 0x04, 0x06, 0x01, 0x04,
168 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
169 0x05, 0x05, 0x01, 0x00,
172 static const u8 nw800_start
[] = {
173 0x04, 0x06, 0x01, 0xc0,
174 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
175 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
176 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
177 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
178 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
179 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
180 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
181 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
182 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
183 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
184 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
185 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
186 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
187 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
189 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
190 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
192 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
193 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
194 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
195 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
197 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
198 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
199 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
200 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
204 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0x00, 0x00, 0x00, 0x00, 0x00,
207 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
209 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
212 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
213 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
214 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
215 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
216 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
217 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
218 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
219 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
220 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
221 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
222 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
223 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
225 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
226 0x01, 0x60, 0x01, 0x00, 0x00,
228 0x04, 0x04, 0x01, 0xff,
229 0x04, 0x06, 0x01, 0xc4,
231 0x04, 0x06, 0x01, 0xc0,
232 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
233 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
234 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
235 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
236 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
237 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
238 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
239 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
240 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
241 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
242 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
243 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
244 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
245 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
247 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
248 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
249 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
250 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
251 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
252 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
253 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
255 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
256 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0xc0,
257 0x05, 0x00, 0x06, 0xe8, 0x00, 0x00, 0x00, 0x20, 0x20,
258 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
262 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
264 0x00, 0x00, 0x00, 0x00, 0x00,
265 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
266 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
267 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
268 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
270 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
271 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
272 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
273 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
274 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
275 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
276 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
277 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
278 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
279 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
280 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
281 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
282 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
283 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
284 0x01, 0x60, 0x01, 0x00, 0x00,
286 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
287 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
289 0x00, 0x80, 0x01, 0xa0,
290 0x10, 0x1a, 0x01, 0x00,
291 0x00, 0x91, 0x02, 0x6c, 0x01,
292 0x00, 0x03, 0x02, 0xc8, 0x01,
293 0x10, 0x1a, 0x01, 0x00,
294 0x10, 0x00, 0x01, 0x83,
295 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
296 0x20, 0x01, 0x60, 0x01,
297 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
298 0x10, 0x1b, 0x02, 0x69, 0x00,
299 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
300 0x05, 0x02, 0x01, 0x02,
301 0x06, 0x00, 0x02, 0x04, 0xd9,
302 0x05, 0x05, 0x01, 0x20,
303 0x05, 0x05, 0x01, 0x21,
304 0x10, 0x0e, 0x01, 0x08,
305 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
306 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
308 0x10, 0x03, 0x01, 0x00,
309 0x10, 0x0f, 0x02, 0x13, 0x13,
310 0x10, 0x03, 0x01, 0x14,
311 0x10, 0x41, 0x11, 0x00, 0x08, 0x21, 0x3d, 0x52, 0x63, 0x75, 0x83,
312 0x91, 0x9e, 0xaa, 0xb6, 0xc1, 0xcc, 0xd6, 0xe0,
314 0x10, 0x0b, 0x01, 0x14,
315 0x10, 0x0d, 0x01, 0x20,
316 0x10, 0x0c, 0x01, 0x34,
317 0x04, 0x06, 0x01, 0xc3,
318 0x04, 0x04, 0x01, 0x00,
319 0x05, 0x02, 0x01, 0x02,
320 0x06, 0x00, 0x02, 0x00, 0x48,
321 0x05, 0x05, 0x01, 0x20,
322 0x05, 0x05, 0x01, 0x21,
326 /* 06a5:d001 - nw801 - Panasonic
328 static const u8 nw801_start_1
[] = {
329 0x05, 0x06, 0x01, 0x04,
330 0x00, 0x00, 0x40, 0x0e, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
331 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
332 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
333 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
334 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
335 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
336 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
337 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
338 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
339 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
340 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
341 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
342 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
343 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
344 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
345 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
346 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
347 0x00, 0x00, 0x00, 0x00, 0x69, 0xa8, 0x1f, 0x00,
348 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
349 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
351 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
352 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
354 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
355 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
356 0x06, 0x00, 0x02, 0x09, 0x99,
357 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
359 0x00, 0x00, 0x00, 0x00, 0x00,
360 0x10, 0x00, 0x40, 0x22, 0x02, 0x80, 0x00, 0x1e, 0x00, 0x00, 0x00,
361 0x00, 0x00, 0x00, 0x0a, 0x15, 0x08, 0x08, 0x0a,
362 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
363 0x00, 0x01, 0x35, 0xfd, 0x07, 0x3d, 0x00, 0x00,
364 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x14, 0x02,
365 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
366 0x40, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x06,
367 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
368 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
369 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99, 0xa4,
370 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc, 0xcf,
371 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
372 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
373 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
374 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
375 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
376 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
377 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00, 0x00,
378 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x82, 0x02,
379 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
383 static const u8 nw801_start_qvga
[] = {
384 0x02, 0x00, 0x10, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
385 0x00, 0x78, 0x18, 0x0b, 0x06, 0xa2, 0x86, 0x78,
386 0x02, 0x0f, 0x01, 0x6b,
387 0x10, 0x1a, 0x01, 0x15,
388 0x00, 0x00, 0x01, 0x1e,
389 0x10, 0x00, 0x01, 0x2f,
390 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
391 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
395 static const u8 nw801_start_vga
[] = {
396 0x02, 0x00, 0x10, 0x78, 0xa0, 0x97, 0x78, 0xa0, 0x00, 0x00, 0x00,
397 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xf0,
398 0x02, 0x0f, 0x01, 0xd5,
399 0x10, 0x1a, 0x01, 0x15,
400 0x00, 0x00, 0x01, 0x0e,
401 0x10, 0x00, 0x01, 0x22,
402 0x10, 0x8c, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
403 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
406 static const u8 nw801_start_2
[] = {
407 0x10, 0x04, 0x01, 0x1a,
408 0x10, 0x19, 0x01, 0x09, /* clock */
409 0x10, 0x24, 0x06, 0xc0, 0x00, 0x3f, 0x02, 0x00, 0x01,
411 0x00, 0x03, 0x02, 0x92, 0x03,
412 0x00, 0x1d, 0x04, 0xf2, 0x00, 0x24, 0x07,
413 0x00, 0x7b, 0x01, 0xcf,
414 0x10, 0x94, 0x01, 0x07,
415 0x05, 0x05, 0x01, 0x01,
416 0x05, 0x04, 0x01, 0x01,
417 0x10, 0x0e, 0x01, 0x08,
418 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
419 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
421 0x10, 0x03, 0x01, 0x00,
422 0x10, 0x0f, 0x02, 0x0c, 0x0c,
423 0x10, 0x03, 0x01, 0x08,
424 0x10, 0x48, 0x11, 0x00, 0x37, 0x55, 0x6b, 0x7d, 0x8d, 0x9b, 0xa8,
425 0xb4, 0xbf, 0xca, 0xd4, 0xdd, 0xe6, 0xef, 0xf0,
427 0x10, 0x0b, 0x01, 0x0b,
428 0x10, 0x0d, 0x01, 0x0b,
429 0x10, 0x0c, 0x01, 0x1f,
430 0x05, 0x06, 0x01, 0x03,
434 /* nw802 (sharp IR3Y38M?) */
435 static const u8 nw802_start
[] = {
436 0x04, 0x06, 0x01, 0x04,
437 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x4d,
438 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
439 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
440 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
441 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
442 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
443 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
444 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
445 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
446 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
447 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
448 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
449 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
450 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
451 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
452 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
453 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
454 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
455 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
456 0x00, 0x10, 0x06, 0x08, 0x00, 0x18, 0x00,
457 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
458 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
460 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
461 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
462 0x06, 0x00, 0x02, 0x09, 0x99,
463 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
465 0x00, 0x00, 0x00, 0x00, 0x00,
466 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x1d, 0x00, 0x00, 0x00,
467 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
468 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
469 0x00, 0x49, 0x13, 0xff, 0x01, 0xc0, 0x00, 0x14,
470 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
471 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
472 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
473 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
474 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
475 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
476 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
477 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
478 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
479 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
480 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
481 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
482 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
483 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x05, 0x82,
484 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
486 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
487 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
489 0x10, 0x1a, 0x01, 0x00,
490 0x10, 0x00, 0x01, 0xad,
491 0x00, 0x00, 0x01, 0x08,
492 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
493 0x10, 0x1b, 0x02, 0x00, 0x00,
494 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
495 0x10, 0x1d, 0x08, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0,
496 0x10, 0x0e, 0x01, 0x27,
497 0x10, 0x41, 0x11, 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
498 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
500 0x10, 0x03, 0x01, 0x00,
501 0x10, 0x0f, 0x02, 0x14, 0x14,
502 0x10, 0x03, 0x01, 0x0c,
503 0x10, 0x41, 0x11, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64, 0x74,
504 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2, 0xf1,
506 /* 0x00, 0x0e, 0x35, 0x4f, 0x62, 0x71, 0x7f, 0x8b,
507 * 0x96, 0xa0, 0xa9, 0xb2, 0xbb, 0xc3, 0xca, 0xd2,
509 0x10, 0x0b, 0x01, 0x10,
510 0x10, 0x0d, 0x01, 0x11,
511 0x10, 0x0c, 0x01, 0x1c,
512 0x04, 0x06, 0x01, 0x03,
513 0x04, 0x04, 0x01, 0x00,
516 /* et31x110 - Trust 120 SpaceCam */
517 static const u8 spacecam_init
[] = {
518 0x04, 0x05, 0x01, 0x01,
519 0x04, 0x04, 0x01, 0x01,
520 0x04, 0x06, 0x01, 0x04,
521 0x04, 0x04, 0x03, 0x00, 0x00, 0x00,
522 0x05, 0x05, 0x01, 0x00,
525 static const u8 spacecam_start
[] = {
526 0x04, 0x06, 0x01, 0x44,
527 0x00, 0x00, 0x40, 0x10, 0x43, 0x00, 0xb4, 0x01, 0x10, 0x00, 0x4f,
528 0xef, 0x0e, 0x00, 0x74, 0x01, 0x01, 0x00, 0x19,
529 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
530 0x00, 0x01, 0x00, 0x19, 0x00, 0x3e, 0x00, 0x24,
531 0x03, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
532 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
533 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
534 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
535 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
536 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
537 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
538 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
539 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
540 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
541 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
542 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
543 0x00, 0x80, 0x1f, 0xa0, 0x48, 0xc3, 0x02, 0x88, 0x0c, 0x68, 0x00,
544 0x00, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x08,
545 0x00, 0x32, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
546 0x00, 0x4b, 0x00, 0x7c, 0x00, 0x80, 0x00,
547 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
548 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
550 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
551 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
552 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
553 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
557 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
559 0x00, 0x00, 0x00, 0x00, 0x00,
560 0x10, 0x00, 0x40, 0x83, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
561 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
562 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
563 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
564 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
565 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
566 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
567 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
568 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
569 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
570 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
571 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
572 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
573 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
574 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
575 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
576 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
577 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x62,
578 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
579 0x01, 0x60, 0x01, 0x00, 0x00,
580 0x04, 0x06, 0x01, 0xc0,
581 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
582 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
583 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
585 0x00, 0x80, 0x01, 0xa0,
586 0x10, 0x1a, 0x01, 0x00,
587 0x00, 0x91, 0x02, 0x32, 0x01,
588 0x00, 0x03, 0x02, 0x08, 0x02,
589 0x10, 0x00, 0x01, 0x83,
590 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
591 0x20, 0x01, 0x60, 0x01,
592 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
593 0x10, 0x0e, 0x01, 0x08,
594 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
595 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
597 0x10, 0x03, 0x01, 0x00,
598 0x10, 0x0f, 0x02, 0x13, 0x13,
599 0x10, 0x03, 0x01, 0x06,
600 0x10, 0x41, 0x11, 0x00, 0x64, 0x99, 0xc0, 0xe2, 0xf9, 0xf9, 0xf9,
601 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
603 0x10, 0x0b, 0x01, 0x08,
604 0x10, 0x0d, 0x01, 0x10,
605 0x10, 0x0c, 0x01, 0x1f,
606 0x04, 0x06, 0x01, 0xc3,
607 0x04, 0x05, 0x01, 0x40,
608 0x04, 0x04, 0x01, 0x40,
611 /* et31x110 - pas106 - other Trust SpaceCam120 */
612 static const u8 spacecam2_start
[] = {
613 0x04, 0x06, 0x01, 0x44,
614 0x04, 0x06, 0x01, 0x00,
615 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
616 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
617 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
618 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
619 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
620 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
621 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
622 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
623 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
624 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
625 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
626 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
627 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
628 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
629 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
630 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
631 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
632 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
633 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
634 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
635 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
636 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
638 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
639 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
640 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
641 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
642 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
643 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
645 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
646 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
647 0x00, 0x00, 0x00, 0x00, 0x00,
648 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x13, 0x00, 0x00, 0x00,
649 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
650 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
651 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
652 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
653 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
654 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
655 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
656 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
657 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
658 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
659 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
660 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
661 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
662 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
663 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
664 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
666 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
667 0x01, 0x60, 0x01, 0x00, 0x00,
668 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
669 0x04, 0x04, 0x01, 0x40,
670 0x04, 0x04, 0x01, 0x00,
671 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x05,
672 0x00, 0x00, 0x05, 0x05,
673 I2C0
, 0x40, 0x02, 0x11, 0x06,
674 I2C0
, 0x40, 0x02, 0x14, 0x00,
675 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
676 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
677 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
679 I2C0
, 0x40, 0x02, 0x02, 0x0c, /* pixel clock */
680 I2C0
, 0x40, 0x02, 0x0f, 0x00,
681 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
682 0x10, 0x00, 0x01, 0x01,
683 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
684 0x20, 0x01, 0x60, 0x01,
685 I2C0
, 0x40, 0x02, 0x05, 0x0f, /* exposure */
686 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
687 I2C0
, 0x40, 0x07, 0x09, 0x0b, 0x0f, 0x05, 0x05, 0x0f, 0x00,
689 I2C0
, 0x40, 0x03, 0x12, 0x04, 0x01,
690 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
691 0x10, 0x0e, 0x01, 0x08,
692 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
693 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
695 0x10, 0x03, 0x01, 0x00,
696 0x10, 0x0f, 0x02, 0x13, 0x13,
697 0x10, 0x03, 0x01, 0x06,
698 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
699 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
701 0x10, 0x0b, 0x01, 0x11,
702 0x10, 0x0d, 0x01, 0x10,
703 0x10, 0x0c, 0x01, 0x14,
704 0x04, 0x06, 0x01, 0x03,
705 0x04, 0x05, 0x01, 0x61,
706 0x04, 0x04, 0x01, 0x00,
710 /* nw802 - Conceptronic Video Pro */
711 static const u8 cvideopro_start
[] = {
712 0x04, 0x06, 0x01, 0x04,
713 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
714 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
715 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
716 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
717 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
718 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
719 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
720 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
721 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
722 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
723 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
724 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
725 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
726 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
727 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
728 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
729 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
730 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
731 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
732 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
733 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
734 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
736 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
737 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
738 0x06, 0x00, 0x02, 0x09, 0x99,
739 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741 0x00, 0x00, 0x00, 0x00, 0x00,
742 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
743 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
744 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
745 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
746 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
747 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
748 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
749 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
750 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
751 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
752 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
753 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
754 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
755 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
756 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
757 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
758 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
759 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
760 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
762 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
763 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
765 0x10, 0x1a, 0x01, 0x03,
766 0x10, 0x00, 0x01, 0xac,
767 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
768 0x10, 0x1b, 0x02, 0x3b, 0x01,
769 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
770 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
771 0x10, 0x1d, 0x02, 0x40, 0x06,
772 0x10, 0x0e, 0x01, 0x08,
773 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
774 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
776 0x10, 0x03, 0x01, 0x00,
777 0x10, 0x0f, 0x02, 0x12, 0x12,
778 0x10, 0x03, 0x01, 0x0c,
779 0x10, 0x41, 0x11, 0x00, 0x0f, 0x46, 0x62, 0x76, 0x86, 0x94, 0xa0,
780 0xab, 0xb6, 0xbf, 0xc8, 0xcf, 0xd7, 0xdc, 0xdc,
782 0x10, 0x0b, 0x01, 0x09,
783 0x10, 0x0d, 0x01, 0x10,
784 0x10, 0x0c, 0x01, 0x2f,
785 0x04, 0x06, 0x01, 0x03,
786 0x04, 0x04, 0x01, 0x00,
790 /* nw802 - D-link dru-350c cam */
791 static const u8 dlink_start
[] = {
792 0x04, 0x06, 0x01, 0x04,
793 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
794 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
795 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
796 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
797 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
798 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
799 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
800 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
801 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
802 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
803 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
804 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
805 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
806 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
807 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
808 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
809 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
810 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
811 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
812 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
813 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
814 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
816 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
817 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
818 0x06, 0x00, 0x02, 0x09, 0x99,
819 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
820 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
821 0x00, 0x00, 0x00, 0x00, 0x00,
822 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
823 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
824 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
825 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
826 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
827 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
828 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
829 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
830 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
831 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
832 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
833 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
834 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
835 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
836 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
837 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
838 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
839 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x82,
840 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
842 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
843 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
845 0x10, 0x1a, 0x01, 0x00,
846 0x10, 0x00, 0x01, 0xad,
847 0x00, 0x00, 0x01, 0x08,
848 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
849 0x10, 0x1b, 0x02, 0x00, 0x00,
850 0x10, 0x11, 0x08, 0x51, 0x00, 0xf0, 0x00, 0x3d, 0x00, 0xb4, 0x00,
851 0x10, 0x1d, 0x08, 0x40, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
852 0x10, 0x0e, 0x01, 0x20,
853 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
854 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
856 0x10, 0x03, 0x01, 0x00,
857 0x10, 0x0f, 0x02, 0x11, 0x11,
858 0x10, 0x03, 0x01, 0x10,
859 0x10, 0x41, 0x11, 0x00, 0x07, 0x1e, 0x38, 0x4d, 0x60, 0x70, 0x7f,
860 0x8e, 0x9b, 0xa8, 0xb4, 0xbf, 0xca, 0xd5, 0xdf,
862 0x10, 0x0b, 0x01, 0x19,
863 0x10, 0x0d, 0x01, 0x10,
864 0x10, 0x0c, 0x01, 0x1e,
865 0x04, 0x06, 0x01, 0x03,
866 0x04, 0x04, 0x01, 0x00,
870 /* 06a5:d001 - nw801 - Sony
871 * Plustek Opticam 500U or ProLink DS3303u (Hitachi HD49322BF) */
872 /*fixme: 320x240 only*/
873 static const u8 ds3303_start
[] = {
874 0x05, 0x06, 0x01, 0x04,
875 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0xf9, 0x02, 0x11, 0x00, 0x0e,
876 0x01, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
877 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
878 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
879 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
880 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
881 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
882 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
883 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
884 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
885 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
886 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
887 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
888 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
889 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
890 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
891 0x00, 0x80, 0x22, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x08, 0x00,
892 0x00, 0x00, 0x00, 0x00, 0xa9, 0xa8, 0x1f, 0x00,
893 0x0d, 0x02, 0x07, 0x00, 0x01, 0x00, 0x19, 0x00,
894 0xf2, 0x00, 0x18, 0x06, 0x10, 0x06, 0x10, 0x00,
896 0x02, 0x00, 0x12, 0x03, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
897 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0x50,
899 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
900 0x05, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
901 0x06, 0x00, 0x02, 0x09, 0x99,
902 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
903 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
904 0x00, 0x00, 0x00, 0x00, 0x00,
905 0x10, 0x00, 0x40, 0x2f, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
906 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
907 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
908 0x00, 0x01, 0x15, 0xfd, 0x07, 0x3d, 0x00, 0x00,
909 0x00, 0x00, 0x00, 0x00, 0x8c, 0x04, 0x01, 0x20,
910 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
911 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x03,
912 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06, 0xf7,
913 0x10, 0x40, 0x40, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80, 0x80,
914 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f, 0x88,
915 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4, 0xcb,
916 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54, 0x64,
917 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2, 0xe2,
918 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
919 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
920 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
921 0x10, 0x80, 0x22, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
922 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f, 0x01,
923 0x00, 0x00, 0xef, 0x00, 0x02, 0x0a, 0x82, 0x02,
924 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40, 0x01,
927 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
928 0x00, 0x78, 0x3f, 0x3f, 0x00, 0xf2, 0x8f, 0x81,
930 0x10, 0x1a, 0x01, 0x15,
931 0x10, 0x00, 0x01, 0x2f,
932 0x10, 0x8c, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
933 0x10, 0x1b, 0x02, 0x00, 0x00,
934 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
935 0x10, 0x26, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
936 0x10, 0x24, 0x02, 0x40, 0x06,
937 0x10, 0x0e, 0x01, 0x08,
938 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
939 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
941 0x10, 0x03, 0x01, 0x00,
942 0x10, 0x0f, 0x02, 0x16, 0x16,
943 0x10, 0x03, 0x01, 0x0c,
944 0x10, 0x48, 0x11, 0x00, 0x15, 0x40, 0x67, 0x84, 0x9d, 0xb2, 0xc6,
945 0xd6, 0xe7, 0xf6, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
947 0x10, 0x0b, 0x01, 0x26,
948 0x10, 0x0d, 0x01, 0x10,
949 0x10, 0x0c, 0x01, 0x1c,
950 0x05, 0x06, 0x01, 0x03,
951 0x05, 0x04, 0x01, 0x00,
955 /* 06a5:d001 - nw802 - Panasonic
956 * GP-KR651US (Philips TDA8786) */
957 static const u8 kr651_start_1
[] = {
958 0x04, 0x06, 0x01, 0x04,
959 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x48,
960 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
961 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
962 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
963 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
964 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
965 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
966 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
967 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
968 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
969 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
970 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
971 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
972 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
973 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
974 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
975 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
976 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
977 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
978 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
979 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
980 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
982 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
983 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
984 0x06, 0x00, 0x02, 0x09, 0x99,
985 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
986 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
987 0x00, 0x00, 0x00, 0x00, 0x00,
988 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
989 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
990 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
991 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
992 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
993 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
994 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
995 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
996 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
997 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
998 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
999 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1000 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1001 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1002 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1003 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1004 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1005 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1006 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1010 static const u8 kr651_start_qvga
[] = {
1011 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1012 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1014 0x10, 0x1a, 0x01, 0x03,
1015 0x10, 0x00, 0x01, 0xac,
1016 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1017 0x10, 0x1b, 0x02, 0x00, 0x00,
1018 0x10, 0x11, 0x08, 0x29, 0x00, 0x18, 0x01, 0x1f, 0x00, 0xd2, 0x00,
1019 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1020 0x10, 0x1d, 0x02, 0x28, 0x01,
1023 static const u8 kr651_start_vga
[] = {
1024 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1025 0x00, 0xf0, 0x30, 0x03, 0x01, 0x82, 0x82, 0x98,
1027 0x10, 0x1a, 0x01, 0x03,
1028 0x10, 0x00, 0x01, 0xa0,
1029 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1030 0x10, 0x1b, 0x02, 0x00, 0x00,
1031 0x10, 0x11, 0x08, 0x51, 0x00, 0x30, 0x02, 0x3d, 0x00, 0xa4, 0x01,
1032 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1033 0x10, 0x1d, 0x02, 0x68, 0x00,
1035 static const u8 kr651_start_2
[] = {
1036 0x10, 0x0e, 0x01, 0x08,
1037 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1038 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1040 0x10, 0x03, 0x01, 0x00,
1041 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1042 0x10, 0x03, 0x01, 0x0c,
1043 0x10, 0x41, 0x11, 0x00, 0x11, 0x3c, 0x5c, 0x74, 0x88, 0x99, 0xa8,
1044 0xb7, 0xc4, 0xd0, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
1046 0x10, 0x0b, 0x01, 0x10,
1047 0x10, 0x0d, 0x01, 0x10,
1048 0x10, 0x0c, 0x01, 0x2d,
1049 0x04, 0x06, 0x01, 0x03,
1050 0x04, 0x04, 0x01, 0x00,
1054 /* nw802 - iRez Kritter cam */
1055 static const u8 kritter_start
[] = {
1056 0x04, 0x06, 0x01, 0x06,
1057 0x00, 0x00, 0x40, 0x44, 0x96, 0x98, 0x94, 0x03, 0x18, 0x00, 0x48,
1058 0x0f, 0x1e, 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19,
1059 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1060 0x00, 0x0b, 0x00, 0x1b, 0x00, 0x0a, 0x01, 0x28,
1061 0x07, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1062 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1063 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1064 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1065 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1066 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1067 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1068 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1069 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1070 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1071 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1072 0x00, 0x5d, 0x00, 0x0e, 0x00, 0x7e, 0x00, 0x30,
1073 0x00, 0x80, 0x1f, 0x18, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1074 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1075 0x00, 0x0b, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1076 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1077 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1078 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1080 0x03, 0x00, 0x03, 0x02, 0x00, 0x00,
1081 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1082 0x06, 0x00, 0x02, 0x09, 0x99,
1083 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1084 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1085 0x00, 0x00, 0x00, 0x00, 0x00,
1086 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1087 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1088 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1089 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1090 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1091 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1092 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1093 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1094 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1095 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1096 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1097 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1098 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1099 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1100 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1101 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1102 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x82,
1104 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1106 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8c, 0x3c, 0x50, 0x00, 0x00, 0x00,
1107 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1109 0x10, 0x1a, 0x01, 0x03,
1110 0x10, 0x00, 0x01, 0xaf,
1111 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1112 0x10, 0x1b, 0x02, 0x3b, 0x01,
1113 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1114 0x10, 0x1d, 0x06, 0xe0, 0x00, 0x0c, 0x00, 0x52, 0x00,
1115 0x10, 0x1d, 0x02, 0x00, 0x00,
1116 0x10, 0x0e, 0x01, 0x08,
1117 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1118 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1120 0x10, 0x03, 0x01, 0x00,
1121 0x10, 0x0f, 0x02, 0x0d, 0x0d,
1122 0x10, 0x03, 0x01, 0x02,
1123 0x10, 0x41, 0x11, 0x00, 0x0d, 0x36, 0x4e, 0x60, 0x6f, 0x7b, 0x86,
1124 0x90, 0x98, 0xa1, 0xa9, 0xb1, 0xb7, 0xbe, 0xc4,
1126 0x10, 0x0b, 0x01, 0x17,
1127 0x10, 0x0d, 0x01, 0x10,
1128 0x10, 0x0c, 0x01, 0x1e,
1129 0x04, 0x06, 0x01, 0x03,
1130 0x04, 0x04, 0x01, 0x00,
1134 /* nw802 - Mustek Wcam 300 mini */
1135 static const u8 mustek_start
[] = {
1136 0x04, 0x06, 0x01, 0x04,
1137 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x92, 0x03, 0x10, 0x00, 0x4d,
1138 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1139 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1140 0x00, 0x01, 0x00, 0x19, 0x00, 0xce, 0x00, 0xf4,
1141 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1142 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1143 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1144 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1145 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1146 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1147 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1148 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1149 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1150 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1151 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1152 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1153 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x3f, 0x0f, 0x88, 0x20, 0x68, 0x00,
1154 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1155 0x00, 0x0c, 0x02, 0x01, 0x00, 0x16, 0x00, 0x94,
1156 0x00, 0x10, 0x06, 0xfc, 0x05, 0x0c, 0x06,
1157 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1158 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1160 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1161 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1162 0x06, 0x00, 0x02, 0x09, 0x99,
1163 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1165 0x00, 0x00, 0x00, 0x00, 0x00,
1166 0x10, 0x00, 0x40, 0xa1, 0x02, 0x80, 0x00, 0x13, 0x00, 0x00, 0x00,
1167 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1168 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1169 0x00, 0x49, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x14,
1170 0x02, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00,
1171 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1172 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1173 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1174 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1175 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1176 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1177 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1178 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1179 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1180 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1181 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1182 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1183 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x82,
1184 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1186 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1187 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1189 0x10, 0x1a, 0x01, 0x00,
1190 0x10, 0x00, 0x01, 0xad,
1191 0x00, 0x00, 0x01, 0x08,
1192 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1193 0x10, 0x1b, 0x02, 0x00, 0x00,
1194 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1195 0x10, 0x1d, 0x08, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20,
1196 0x10, 0x0e, 0x01, 0x0f,
1197 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1198 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1200 0x10, 0x0f, 0x02, 0x11, 0x11,
1201 0x10, 0x03, 0x01, 0x0c,
1202 0x10, 0x41, 0x11, 0x00, 0x0f, 0x29, 0x4a, 0x64, 0x7a, 0x8c, 0x9e,
1203 0xad, 0xba, 0xc7, 0xd3, 0xde, 0xe8, 0xf1, 0xf9,
1205 0x10, 0x0b, 0x01, 0x1c,
1206 0x10, 0x0d, 0x01, 0x1a,
1207 0x10, 0x0c, 0x01, 0x34,
1208 0x04, 0x05, 0x01, 0x61,
1209 0x04, 0x04, 0x01, 0x40,
1210 0x04, 0x06, 0x01, 0x03,
1214 /* nw802 - Scope USB Microscope M2 (ProScope) (Hitachi HD49322BF) */
1215 static const u8 proscope_init
[] = {
1216 0x04, 0x05, 0x01, 0x21,
1217 0x04, 0x04, 0x01, 0x01,
1220 static const u8 proscope_start_1
[] = {
1221 0x04, 0x06, 0x01, 0x04,
1222 0x00, 0x00, 0x40, 0x10, 0x01, 0x00, 0xf9, 0x02, 0x10, 0x00, 0x04,
1223 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1224 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1225 0x00, 0x08, 0x00, 0x17, 0x00, 0xce, 0x00, 0xf4,
1226 0x05, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1227 0x00, 0xce, 0x00, 0xf8, 0x03, 0x3e, 0x00, 0x86,
1228 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1229 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1230 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0xb6,
1231 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1232 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1233 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1234 0x00, 0xf6, 0x03, 0x34, 0x04, 0xf6, 0x03, 0x34,
1235 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1236 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe8,
1237 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1238 0x00, 0x80, 0x1f, 0xb4, 0x6f, 0x1f, 0x0f, 0x08, 0x20, 0xa8, 0x00,
1239 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1240 0x00, 0x0c, 0x02, 0x01, 0x00, 0x19, 0x00, 0x94,
1241 0x00, 0x10, 0x06, 0x10, 0x00, 0x36, 0x00,
1242 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1243 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1245 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1246 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00,
1247 0x06, 0x00, 0x02, 0x09, 0x99,
1248 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1250 0x00, 0x00, 0x00, 0x00, 0x00,
1251 0x10, 0x00, 0x40, 0xad, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1252 0x00, 0x00, 0x00, 0x10, 0x1f, 0x10, 0x08, 0x0a,
1253 0x0a, 0x51, 0x00, 0xf1, 0x00, 0x3c, 0x00, 0xb4,
1254 0x00, 0x49, 0x13, 0x00, 0x00, 0x8c, 0x04, 0x01,
1255 0x20, 0x02, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00,
1256 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1257 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1258 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1259 0x10, 0x40, 0x40, 0x80, 0x00, 0x2d, 0x46, 0x58, 0x67, 0x74, 0x7f,
1260 0x88, 0x94, 0x9d, 0xa6, 0xae, 0xb5, 0xbd, 0xc4,
1261 0xcb, 0xd1, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1262 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1263 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1264 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1265 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1266 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1267 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x3f,
1268 0x01, 0x00, 0x00, 0xef, 0x00, 0x09, 0x05, 0x82,
1269 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1273 static const u8 proscope_start_qvga
[] = {
1274 0x02, 0x00, 0x11, 0x3c, 0x50, 0x9e, 0x3c, 0x50, 0x00, 0x00, 0x00,
1275 0x00, 0x78, 0x3f, 0x10, 0x02, 0xf2, 0x8f, 0x78,
1277 0x10, 0x1a, 0x01, 0x06,
1278 0x00, 0x03, 0x02, 0xf9, 0x02,
1279 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1280 0x10, 0x1b, 0x02, 0x00, 0x00,
1281 0x10, 0x11, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1282 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1283 0x10, 0x0e, 0x01, 0x10,
1286 static const u8 proscope_start_vga
[] = {
1287 0x00, 0x03, 0x02, 0xf9, 0x02,
1288 0x10, 0x85, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1289 0x02, 0x00, 0x11, 0x78, 0xa0, 0x8c, 0x78, 0xa0, 0x00, 0x00, 0x00,
1290 0x00, 0xf0, 0x16, 0x00, 0x00, 0x82, 0x84, 0x00,
1292 0x10, 0x1a, 0x01, 0x06,
1293 0x10, 0x00, 0x01, 0xa1,
1294 0x10, 0x1b, 0x02, 0x00, 0x00,
1295 0x10, 0x1d, 0x08, 0xc0, 0x0d, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1296 0x10, 0x11, 0x08, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0xdf, 0x01,
1297 0x10, 0x0e, 0x01, 0x10,
1298 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1299 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1301 0x10, 0x03, 0x01, 0x00,
1304 static const u8 proscope_start_2
[] = {
1305 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1306 0x10, 0x03, 0x01, 0x0c,
1307 0x10, 0x41, 0x11, 0x00, 0x10, 0x51, 0x6e, 0x83, 0x93, 0xa1, 0xae,
1308 0xb9, 0xc3, 0xcc, 0xd4, 0xdd, 0xe4, 0xeb, 0xf2,
1310 0x10, 0x0b, 0x01, 0x0b,
1311 0x10, 0x0d, 0x01, 0x10,
1312 0x10, 0x0c, 0x01, 0x1b,
1313 0x04, 0x06, 0x01, 0x03,
1314 0x04, 0x05, 0x01, 0x21,
1315 0x04, 0x04, 0x01, 0x00,
1319 /* nw800 - hv7121b? (seems pas106) - Divio Chicony TwinkleCam */
1320 static const u8 twinkle_start
[] = {
1321 0x04, 0x06, 0x01, 0x44,
1322 0x04, 0x06, 0x01, 0x00,
1323 0x00, 0x00, 0x40, 0x14, 0x83, 0x00, 0xba, 0x01, 0x10, 0x00, 0x4f,
1324 0xef, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x19,
1325 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1326 0x00, 0x01, 0x00, 0x19, 0x00, 0x06, 0x00, 0xfc,
1327 0x01, 0x3e, 0x00, 0x86, 0x00, 0x3e, 0x00, 0x86,
1328 0x00, 0x3e, 0x00, 0x86, 0x00, 0x01, 0x00, 0x01,
1329 0x00, 0x56, 0x00, 0x9e, 0x00, 0x56, 0x00, 0x9e,
1330 0x00, 0x56, 0x00, 0x9e, 0x00, 0x01, 0x00, 0x01,
1331 0x00, 0x40, 0x40, 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1332 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1333 0x00, 0x6e, 0x00, 0xb6, 0x00, 0x6e, 0x00, 0x78,
1334 0x04, 0x6e, 0x00, 0xb6, 0x00, 0x01, 0x00, 0x01,
1335 0x00, 0xca, 0x03, 0x46, 0x04, 0xca, 0x03, 0x46,
1336 0x04, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1337 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0,
1338 0x00, 0x3e, 0x00, 0xaa, 0x00, 0x88, 0x00, 0x2e,
1339 0x00, 0x80, 0x1f, 0xb8, 0x48, 0x0f, 0x04, 0x88, 0x14, 0x68, 0x00,
1340 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x03,
1341 0x00, 0x24, 0x01, 0x01, 0x00, 0x16, 0x00, 0x04,
1342 0x00, 0x4b, 0x00, 0x76, 0x00, 0x86, 0x00,
1343 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1344 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1346 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1347 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00,
1348 0x05, 0x00, 0x06, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
1349 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1351 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1353 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1355 0x00, 0x00, 0x00, 0x00, 0x00,
1356 0x10, 0x00, 0x40, 0x80, 0x02, 0x20, 0x00, 0x11, 0x00, 0x00, 0x00,
1357 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x08,
1358 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1359 0x00, 0x49, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00,
1360 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1361 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1362 0x03, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x06,
1363 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x00, 0x80,
1364 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1365 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1366 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1367 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1368 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1369 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1370 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1371 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1372 0x10, 0x80, 0x1d, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62,
1374 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01, 0x20,
1375 0x01, 0x60, 0x01, 0x00, 0x00,
1377 0x10, 0x85, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1378 0x04, 0x04, 0x01, 0x10,
1379 0x04, 0x04, 0x01, 0x00,
1380 0x04, 0x05, 0x01, 0x61,
1381 0x04, 0x04, 0x01, 0x01,
1382 I2C0
, 0x40, 0x0c, 0x02, 0x0c, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00,
1383 0x00, 0x00, 0x00, 0x0a,
1384 I2C0
, 0x40, 0x02, 0x11, 0x06,
1385 I2C0
, 0x40, 0x02, 0x14, 0x00,
1386 I2C0
, 0x40, 0x02, 0x13, 0x01, /* i2c end */
1387 I2C0
, 0x40, 0x02, 0x07, 0x01,
1388 0x02, 0x00, 0x11, 0x48, 0x58, 0x9e, 0x48, 0x58, 0x00, 0x00, 0x00,
1389 0x00, 0x84, 0x36, 0x05, 0x01, 0xf2, 0x86, 0x65,
1391 I2C0
, 0x40, 0x02, 0x02, 0x0c,
1392 I2C0
, 0x40, 0x02, 0x13, 0x01,
1393 0x10, 0x00, 0x01, 0x01,
1394 0x10, 0x8f, 0x0c, 0x62, 0x01, 0x24, 0x01, 0x62, 0x01, 0x24, 0x01,
1395 0x20, 0x01, 0x60, 0x01,
1396 I2C0
, 0x40, 0x02, 0x05, 0x0f,
1397 I2C0
, 0x40, 0x02, 0x13, 0x01,
1398 I2C0
, 0x40, 0x08, 0x08, 0x04, 0x0b, 0x01, 0x01, 0x02, 0x00, 0x17,
1399 I2C0
, 0x40, 0x03, 0x12, 0x00, 0x01,
1400 0x10, 0x11, 0x08, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x1f, 0x01,
1401 I2C0
, 0x40, 0x02, 0x12, 0x00,
1402 I2C0
, 0x40, 0x02, 0x0e, 0x00,
1403 I2C0
, 0x40, 0x02, 0x11, 0x06,
1404 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1405 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1407 0x10, 0x03, 0x01, 0x00,
1408 0x10, 0x0f, 0x02, 0x0c, 0x0c,
1409 0x10, 0x03, 0x01, 0x06,
1410 0x10, 0x41, 0x11, 0x00, 0x17, 0x3f, 0x69, 0x7b, 0x8c, 0x9a, 0xa7,
1411 0xb3, 0xbf, 0xc9, 0xd3, 0xdd, 0xe6, 0xef, 0xf7,
1413 0x10, 0x0b, 0x01, 0x19,
1414 0x10, 0x0d, 0x01, 0x10,
1415 0x10, 0x0c, 0x01, 0x0d,
1416 0x04, 0x06, 0x01, 0x03,
1417 0x04, 0x05, 0x01, 0x61,
1418 0x04, 0x04, 0x01, 0x41,
1423 static const u8 dvcv6_start
[] = {
1424 0x04, 0x06, 0x01, 0x06,
1425 0x00, 0x00, 0x40, 0x54, 0x96, 0x98, 0xf9, 0x02, 0x18, 0x00, 0x4c,
1426 0x0f, 0x1f, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x19,
1427 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x19,
1428 0x00, 0x0b, 0x00, 0x1b, 0x00, 0xc8, 0x00, 0xf4,
1429 0x05, 0xb4, 0x00, 0xcc, 0x00, 0x01, 0x00, 0x01,
1430 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1431 0x00, 0xa2, 0x00, 0xc6, 0x00, 0x60, 0x00, 0xc6,
1432 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1433 0x00, 0x40, 0x40, 0x00, 0xae, 0x00, 0xd2, 0x00, 0xae, 0x00, 0xd2,
1434 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1435 0x00, 0xa8, 0x00, 0xc0, 0x00, 0x66, 0x00, 0xc0,
1436 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
1437 0x00, 0x0a, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x54,
1438 0x00, 0x10, 0x00, 0x36, 0x00, 0xd2, 0x00, 0xee,
1439 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
1440 0x00, 0x5d, 0x00, 0xc7, 0x00, 0x7e, 0x00, 0x30,
1441 0x00, 0x80, 0x1f, 0x98, 0x43, 0x3f, 0x0d, 0x88, 0x20, 0x80, 0x3f,
1442 0x47, 0xaf, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x11,
1443 0x00, 0x0c, 0x02, 0x0c, 0x00, 0x1c, 0x00, 0x94,
1444 0x00, 0x10, 0x06, 0x24, 0x00, 0x4a, 0x00,
1445 0x02, 0x00, 0x12, 0x78, 0xa0, 0x9e, 0x78, 0xa0, 0x00, 0x00, 0x00,
1446 0x00, 0xf0, 0x18, 0x0b, 0x06, 0x62, 0x82, 0xa0,
1448 0x03, 0x00, 0x03, 0x03, 0x00, 0x00,
1449 0x04, 0x00, 0x07, 0x01, 0x10, 0x00, 0x00, 0x00, 0xff, 0x00,
1450 0x06, 0x00, 0x02, 0x09, 0x99,
1451 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1453 0x00, 0x00, 0x00, 0x00, 0x00,
1454 0x10, 0x00, 0x40, 0xa0, 0x02, 0x80, 0x00, 0x12, 0x00, 0x00, 0x00,
1455 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x08, 0x0a,
1456 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1457 0x00, 0x49, 0x13, 0x00, 0x00, 0xe0, 0x00, 0x0c,
1458 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
1459 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
1460 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x06,
1461 0xf7, 0xee, 0x1c, 0x1c, 0xe9, 0xfc, 0x10, 0x80,
1462 0x10, 0x40, 0x40, 0x80, 0x00, 0x05, 0x35, 0x5e, 0x78, 0x8b, 0x99,
1463 0xa4, 0xae, 0xb5, 0xbc, 0xc1, 0xc6, 0xc9, 0xcc,
1464 0xcf, 0xd0, 0x00, 0x11, 0x22, 0x32, 0x43, 0x54,
1465 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3, 0xd2,
1466 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32, 0x43,
1467 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3, 0xc3,
1468 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x11, 0x22, 0x32,
1469 0x43, 0x54, 0x64, 0x74, 0x84, 0x94, 0xa4, 0xb3,
1470 0x10, 0x80, 0x1b, 0xc3, 0xd2, 0xe2, 0xf1, 0xff, 0x00, 0x00, 0x00,
1471 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x05, 0x82,
1472 0x02, 0xe4, 0x01, 0x40, 0x01, 0xf0, 0x00, 0x40,
1474 0x00, 0x03, 0x02, 0x94, 0x03,
1475 0x00, 0x1d, 0x04, 0x0a, 0x01, 0x28, 0x07,
1476 0x00, 0x7b, 0x02, 0xe0, 0x00,
1477 0x10, 0x8d, 0x01, 0x00,
1478 0x00, 0x09, 0x04, 0x1e, 0x00, 0x0c, 0x02,
1479 0x00, 0x91, 0x02, 0x0b, 0x02,
1480 0x10, 0x00, 0x01, 0xaf,
1481 0x02, 0x00, 0x11, 0x3c, 0x50, 0x8f, 0x3c, 0x50, 0x00, 0x00, 0x00,
1482 0x00, 0x78, 0x3f, 0x3f, 0x06, 0xf2, 0x8f, 0xf0,
1484 0x10, 0x1a, 0x01, 0x02,
1485 0x10, 0x00, 0x01, 0xaf,
1486 0x10, 0x85, 0x08, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0xef, 0x00,
1487 0x10, 0x1b, 0x02, 0x07, 0x01,
1488 0x10, 0x11, 0x08, 0x61, 0x00, 0xe0, 0x00, 0x49, 0x00, 0xa8, 0x00,
1489 0x10, 0x1f, 0x06, 0x01, 0x20, 0x02, 0xe8, 0x03, 0x00,
1490 0x10, 0x1d, 0x02, 0x40, 0x06,
1491 0x10, 0x0e, 0x01, 0x08,
1492 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1493 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1495 0x10, 0x03, 0x01, 0x00,
1496 0x10, 0x0f, 0x02, 0x12, 0x12,
1497 0x10, 0x03, 0x01, 0x11,
1498 0x10, 0x41, 0x11, 0x00, 0x0f, 0x54, 0x6f, 0x82, 0x91, 0x9f, 0xaa,
1499 0xb4, 0xbd, 0xc5, 0xcd, 0xd5, 0xdb, 0xdc, 0xdc,
1501 0x10, 0x0b, 0x01, 0x16,
1502 0x10, 0x0d, 0x01, 0x10,
1503 0x10, 0x0c, 0x01, 0x1a,
1504 0x04, 0x06, 0x01, 0x03,
1505 0x04, 0x04, 0x01, 0x00,
1508 static const u8
*webcam_start
[] = {
1509 [Generic800
] = nw800_start
,
1510 [SpaceCam
] = spacecam_start
,
1511 [SpaceCam2
] = spacecam2_start
,
1512 [Cvideopro
] = cvideopro_start
,
1513 [Dlink350c
] = dlink_start
,
1514 [DS3303u
] = ds3303_start
,
1515 [Kr651us
] = kr651_start_1
,
1516 [Kritter
] = kritter_start
,
1517 [Mustek300
] = mustek_start
,
1518 [Proscope
] = proscope_start_1
,
1519 [Twinkle
] = twinkle_start
,
1520 [DvcV6
] = dvcv6_start
,
1521 [P35u
] = nw801_start_1
,
1522 [Generic802
] = nw802_start
,
1525 /* -- write a register -- */
1526 static void reg_w(struct gspca_dev
*gspca_dev
,
1531 struct usb_device
*dev
= gspca_dev
->dev
;
1534 if (gspca_dev
->usb_err
< 0)
1537 gspca_dbg(gspca_dev
, D_USBO
, "SET 00 0000 %04x %02x\n",
1540 gspca_dbg(gspca_dev
, D_USBO
, "SET 00 0000 %04x %02x %02x ...\n",
1541 index
, *data
, data
[1]);
1542 memcpy(gspca_dev
->usb_buf
, data
, len
);
1543 ret
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1545 USB_DIR_OUT
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1552 pr_err("reg_w err %d\n", ret
);
1553 gspca_dev
->usb_err
= ret
;
1557 /* -- read registers in usb_buf -- */
1558 static void reg_r(struct gspca_dev
*gspca_dev
,
1562 struct usb_device
*dev
= gspca_dev
->dev
;
1565 if (gspca_dev
->usb_err
< 0)
1567 ret
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1569 USB_DIR_IN
| USB_TYPE_VENDOR
| USB_RECIP_DEVICE
,
1571 gspca_dev
->usb_buf
, len
, 500);
1573 pr_err("reg_r err %d\n", ret
);
1574 gspca_dev
->usb_err
= ret
;
1576 * Make sure the buffer is zeroed to avoid uninitialized
1579 memset(gspca_dev
->usb_buf
, 0, USB_BUF_SZ
);
1583 gspca_dbg(gspca_dev
, D_USBI
, "GET 00 0000 %04x %02x\n",
1584 index
, gspca_dev
->usb_buf
[0]);
1586 gspca_dbg(gspca_dev
, D_USBI
, "GET 00 0000 %04x %02x %02x ..\n",
1587 index
, gspca_dev
->usb_buf
[0],
1588 gspca_dev
->usb_buf
[1]);
1591 static void i2c_w(struct gspca_dev
*gspca_dev
,
1599 reg_w(gspca_dev
, 0x0600, data
+ 1, len
- 1);
1600 reg_w(gspca_dev
, 0x0600, data
, len
);
1603 reg_w(gspca_dev
, 0x0502, val
, 2);
1605 reg_w(gspca_dev
, 0x0501, val
, 1);
1606 for (i
= 5; --i
>= 0; ) {
1608 reg_r(gspca_dev
, 0x0505, 1);
1609 if (gspca_dev
->usb_err
< 0)
1611 if (gspca_dev
->usb_buf
[0] == 0)
1614 gspca_dev
->usb_err
= -ETIME
;
1617 static void reg_w_buf(struct gspca_dev
*gspca_dev
,
1629 if (cmd
[-3] != I2C0
)
1630 reg_w(gspca_dev
, reg
, cmd
, len
);
1632 i2c_w(gspca_dev
, reg
, cmd
, len
);
1637 static int swap_bits(int v
)
1642 for (i
= 0; i
< 8; i
++) {
1651 static void setgain(struct gspca_dev
*gspca_dev
, u8 val
)
1653 struct sd
*sd
= (struct sd
*) gspca_dev
;
1656 switch (sd
->webcam
) {
1658 reg_w(gspca_dev
, 0x1026, &val
, 1);
1662 val
= swap_bits(val
);
1665 reg_w(gspca_dev
, 0x101d, v
, 2); /* SIF reg0/1 (AGC) */
1670 static void setexposure(struct gspca_dev
*gspca_dev
, s32 val
)
1672 struct sd
*sd
= (struct sd
*) gspca_dev
;
1675 switch (sd
->webcam
) {
1677 v
[0] = ((9 - val
) << 3) | 0x01;
1678 reg_w(gspca_dev
, 0x1019, v
, 1);
1686 reg_w(gspca_dev
, 0x101b, v
, 2);
1691 static void setautogain(struct gspca_dev
*gspca_dev
, s32 val
)
1693 struct sd
*sd
= (struct sd
*) gspca_dev
;
1700 sd
->ag_cnt
= AG_CNT_START
;
1702 reg_r(gspca_dev
, 0x1004, 1);
1703 if (gspca_dev
->usb_buf
[0] & 0x04) { /* if AE_FULL_FRM */
1704 sd
->ae_res
= gspca_dev
->pixfmt
.width
* gspca_dev
->pixfmt
.height
;
1705 } else { /* get the AE window size */
1706 reg_r(gspca_dev
, 0x1011, 8);
1707 w
= (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0]
1708 - (gspca_dev
->usb_buf
[3] << 8) - gspca_dev
->usb_buf
[2];
1709 h
= (gspca_dev
->usb_buf
[5] << 8) + gspca_dev
->usb_buf
[4]
1710 - (gspca_dev
->usb_buf
[7] << 8) - gspca_dev
->usb_buf
[6];
1712 if (sd
->ae_res
== 0)
1713 sd
->ae_res
= gspca_dev
->pixfmt
.width
*
1714 gspca_dev
->pixfmt
.height
;
1718 static int nw802_test_reg(struct gspca_dev
*gspca_dev
,
1722 /* write the value */
1723 reg_w(gspca_dev
, index
, &value
, 1);
1726 reg_r(gspca_dev
, index
, 1);
1728 return gspca_dev
->usb_buf
[0] == value
;
1731 /* this function is called at probe time */
1732 static int sd_config(struct gspca_dev
*gspca_dev
,
1733 const struct usb_device_id
*id
)
1735 struct sd
*sd
= (struct sd
*) gspca_dev
;
1737 if ((unsigned) webcam
>= NWEBCAMS
)
1739 sd
->webcam
= webcam
;
1740 gspca_dev
->cam
.needs_full_bandwidth
= 1;
1744 * Autodetect sequence inspired from some log.
1745 * We try to detect what registers exist or not.
1746 * If 0x0500 does not exist => NW802
1747 * If it does, test 0x109b. If it doesn't exist,
1748 * then it's a NW801. Else, a NW800
1749 * If a et31x110 (nw800 and 06a5:d800)
1752 if (!nw802_test_reg(gspca_dev
, 0x0500, 0x55)) {
1753 sd
->bridge
= BRIDGE_NW802
;
1754 if (sd
->webcam
== Generic800
)
1755 sd
->webcam
= Generic802
;
1756 } else if (!nw802_test_reg(gspca_dev
, 0x109b, 0xaa)) {
1757 sd
->bridge
= BRIDGE_NW801
;
1758 if (sd
->webcam
== Generic800
)
1760 } else if (id
->idVendor
== 0x06a5 && id
->idProduct
== 0xd800) {
1761 reg_r(gspca_dev
, 0x0403, 1); /* GPIO */
1762 gspca_dbg(gspca_dev
, D_PROBE
, "et31x110 sensor type %02x\n",
1763 gspca_dev
->usb_buf
[0]);
1764 switch (gspca_dev
->usb_buf
[0] >> 1) {
1766 if (sd
->webcam
== Generic800
)
1767 sd
->webcam
= SpaceCam
;
1769 case 0x01: /* Hynix? */
1770 if (sd
->webcam
== Generic800
)
1771 sd
->webcam
= Twinkle
;
1773 case 0x0a: /* Pixart */
1774 if (sd
->webcam
== Generic800
)
1775 sd
->webcam
= SpaceCam2
;
1779 if (webcam_chip
[sd
->webcam
] != sd
->bridge
) {
1780 pr_err("Bad webcam type %d for NW80%d\n",
1781 sd
->webcam
, sd
->bridge
);
1782 gspca_dev
->usb_err
= -ENODEV
;
1783 return gspca_dev
->usb_err
;
1785 gspca_dbg(gspca_dev
, D_PROBE
, "Bridge nw80%d - type: %d\n",
1786 sd
->bridge
, sd
->webcam
);
1788 if (sd
->bridge
== BRIDGE_NW800
) {
1789 switch (sd
->webcam
) {
1791 gspca_dev
->cam
.cam_mode
= cif_mode
; /* qvga */
1794 gspca_dev
->cam
.cam_mode
= &cif_mode
[1]; /* cif */
1797 gspca_dev
->cam
.nmodes
= 1;
1799 gspca_dev
->cam
.cam_mode
= vga_mode
;
1800 switch (sd
->webcam
) {
1804 gspca_dev
->cam
.nmodes
= ARRAY_SIZE(vga_mode
);
1807 gspca_dev
->cam
.nmodes
= 1; /* qvga only */
1812 return gspca_dev
->usb_err
;
1815 /* this function is called at probe and resume time */
1816 static int sd_init(struct gspca_dev
*gspca_dev
)
1818 struct sd
*sd
= (struct sd
*) gspca_dev
;
1820 switch (sd
->bridge
) {
1822 switch (sd
->webcam
) {
1824 reg_w_buf(gspca_dev
, spacecam_init
);
1827 reg_w_buf(gspca_dev
, nw800_init
);
1832 switch (sd
->webcam
) {
1836 reg_w_buf(gspca_dev
, proscope_init
);
1841 return gspca_dev
->usb_err
;
1844 /* -- start the camera -- */
1845 static int sd_start(struct gspca_dev
*gspca_dev
)
1847 struct sd
*sd
= (struct sd
*) gspca_dev
;
1850 cmd
= webcam_start
[sd
->webcam
];
1851 reg_w_buf(gspca_dev
, cmd
);
1852 switch (sd
->webcam
) {
1854 if (gspca_dev
->pixfmt
.width
== 320)
1855 reg_w_buf(gspca_dev
, nw801_start_qvga
);
1857 reg_w_buf(gspca_dev
, nw801_start_vga
);
1858 reg_w_buf(gspca_dev
, nw801_start_2
);
1861 if (gspca_dev
->pixfmt
.width
== 320)
1862 reg_w_buf(gspca_dev
, kr651_start_qvga
);
1864 reg_w_buf(gspca_dev
, kr651_start_vga
);
1865 reg_w_buf(gspca_dev
, kr651_start_2
);
1868 if (gspca_dev
->pixfmt
.width
== 320)
1869 reg_w_buf(gspca_dev
, proscope_start_qvga
);
1871 reg_w_buf(gspca_dev
, proscope_start_vga
);
1872 reg_w_buf(gspca_dev
, proscope_start_2
);
1876 sd
->exp_too_high_cnt
= 0;
1877 sd
->exp_too_low_cnt
= 0;
1878 return gspca_dev
->usb_err
;
1881 static void sd_stopN(struct gspca_dev
*gspca_dev
)
1883 struct sd
*sd
= (struct sd
*) gspca_dev
;
1887 if (sd
->bridge
!= BRIDGE_NW801
) {
1889 reg_w(gspca_dev
, 0x0406, &value
, 1);
1893 switch (sd
->webcam
) {
1912 reg_w(gspca_dev
, 0x0404, &value
, 1);
1915 static void sd_pkt_scan(struct gspca_dev
*gspca_dev
,
1916 u8
*data
, /* isoc packet */
1917 int len
) /* iso packet length */
1920 * frame header = '00 00 hh ww ss xx ff ff'
1922 * - 'hh': height / 4
1924 * - 'ss': frame sequence number c0..dd
1926 if (data
[0] == 0x00 && data
[1] == 0x00
1927 && data
[6] == 0xff && data
[7] == 0xff) {
1928 gspca_frame_add(gspca_dev
, LAST_PACKET
, NULL
, 0);
1929 gspca_frame_add(gspca_dev
, FIRST_PACKET
, data
+ 8, len
- 8);
1931 gspca_frame_add(gspca_dev
, INTER_PACKET
, data
, len
);
1935 static void do_autogain(struct gspca_dev
*gspca_dev
)
1937 struct sd
*sd
= (struct sd
*) gspca_dev
;
1942 if (--sd
->ag_cnt
>= 0)
1944 sd
->ag_cnt
= AG_CNT_START
;
1946 /* get the average luma */
1947 reg_r(gspca_dev
, sd
->bridge
== BRIDGE_NW801
? 0x080d : 0x080c, 4);
1948 luma
= (gspca_dev
->usb_buf
[3] << 24) + (gspca_dev
->usb_buf
[2] << 16)
1949 + (gspca_dev
->usb_buf
[1] << 8) + gspca_dev
->usb_buf
[0];
1952 switch (sd
->webcam
) {
1954 gspca_coarse_grained_expo_autogain(gspca_dev
, luma
, 100, 5);
1957 gspca_expo_autogain(gspca_dev
, luma
, 100, 5, 230, 0);
1963 static int sd_s_ctrl(struct v4l2_ctrl
*ctrl
)
1965 struct gspca_dev
*gspca_dev
=
1966 container_of(ctrl
->handler
, struct gspca_dev
, ctrl_handler
);
1968 gspca_dev
->usb_err
= 0;
1970 if (!gspca_dev
->streaming
)
1974 /* autogain/gain/exposure control cluster */
1975 case V4L2_CID_AUTOGAIN
:
1977 setautogain(gspca_dev
, ctrl
->val
);
1979 if (gspca_dev
->gain
->is_new
)
1980 setgain(gspca_dev
, gspca_dev
->gain
->val
);
1981 if (gspca_dev
->exposure
->is_new
)
1982 setexposure(gspca_dev
,
1983 gspca_dev
->exposure
->val
);
1986 /* Some webcams only have exposure, so handle that separately from the
1987 autogain/gain/exposure cluster in the previous case. */
1988 case V4L2_CID_EXPOSURE
:
1989 setexposure(gspca_dev
, gspca_dev
->exposure
->val
);
1992 return gspca_dev
->usb_err
;
1995 static const struct v4l2_ctrl_ops sd_ctrl_ops
= {
1996 .s_ctrl
= sd_s_ctrl
,
1999 static int sd_init_controls(struct gspca_dev
*gspca_dev
)
2001 struct sd
*sd
= (struct sd
*)gspca_dev
;
2002 struct v4l2_ctrl_handler
*hdl
= &gspca_dev
->ctrl_handler
;
2004 gspca_dev
->vdev
.ctrl_handler
= hdl
;
2005 v4l2_ctrl_handler_init(hdl
, 3);
2006 switch (sd
->webcam
) {
2008 gspca_dev
->autogain
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2009 V4L2_CID_AUTOGAIN
, 0, 1, 1, 1);
2010 /* For P35u choose coarse expo auto gain function gain minimum,
2011 * to avoid a large settings jump the first auto adjustment */
2012 gspca_dev
->gain
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2013 V4L2_CID_GAIN
, 0, 127, 1, 127 / 5 * 2);
2014 gspca_dev
->exposure
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2015 V4L2_CID_EXPOSURE
, 0, 9, 1, 9);
2018 gspca_dev
->autogain
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2019 V4L2_CID_AUTOGAIN
, 0, 1, 1, 1);
2020 gspca_dev
->gain
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2021 V4L2_CID_GAIN
, 0, 253, 1, 128);
2026 gspca_dev
->exposure
= v4l2_ctrl_new_std(hdl
, &sd_ctrl_ops
,
2027 V4L2_CID_EXPOSURE
, 0, 315, 1, 150);
2034 pr_err("Could not initialize controls\n");
2037 if (gspca_dev
->autogain
)
2038 v4l2_ctrl_auto_cluster(3, &gspca_dev
->autogain
, 0, false);
2042 /* sub-driver description */
2043 static const struct sd_desc sd_desc
= {
2044 .name
= MODULE_NAME
,
2045 .config
= sd_config
,
2047 .init_controls
= sd_init_controls
,
2050 .pkt_scan
= sd_pkt_scan
,
2051 .dq_callback
= do_autogain
,
2054 /* -- module initialisation -- */
2055 static const struct usb_device_id device_table
[] = {
2056 {USB_DEVICE(0x046d, 0xd001)},
2057 {USB_DEVICE(0x0502, 0xd001)},
2058 {USB_DEVICE(0x052b, 0xd001)},
2059 {USB_DEVICE(0x055f, 0xd001)},
2060 {USB_DEVICE(0x06a5, 0x0000)},
2061 {USB_DEVICE(0x06a5, 0xd001)},
2062 {USB_DEVICE(0x06a5, 0xd800)},
2063 {USB_DEVICE(0x06be, 0xd001)},
2064 {USB_DEVICE(0x0728, 0xd001)},
2067 MODULE_DEVICE_TABLE(usb
, device_table
);
2069 /* -- device connect -- */
2070 static int sd_probe(struct usb_interface
*intf
,
2071 const struct usb_device_id
*id
)
2073 return gspca_dev_probe(intf
, id
, &sd_desc
, sizeof(struct sd
),
2077 static struct usb_driver sd_driver
= {
2078 .name
= MODULE_NAME
,
2079 .id_table
= device_table
,
2081 .disconnect
= gspca_disconnect
,
2083 .suspend
= gspca_suspend
,
2084 .resume
= gspca_resume
,
2085 .reset_resume
= gspca_resume
,
2089 module_usb_driver(sd_driver
);
2091 module_param(webcam
, int, 0644);
2092 MODULE_PARM_DESC(webcam
,
2095 "1: Trust 120 SpaceCam\n"
2096 "2: other Trust 120 SpaceCam\n"
2097 "3: Conceptronic Video Pro\n"
2098 "4: D-link dru-350c\n"
2099 "5: Plustek Opticam 500U\n"
2100 "6: Panasonic GP-KR651US\n"
2102 "8: Mustek Wcam 300 mini\n"
2103 "9: Scalar USB Microscope M2 (Proscope)\n"
2104 "10: Divio Chicony TwinkleCam\n"